/* 
  +-------------------------------------------------------------------------+
  | Autor: Oliver Prygotzki <http://oliver.prygotzki.de/>                   |
  +-------------------------------------------------------------------------+
*/

/* +++ some lib functions ++++++++++++++++++++++++++++++++++++++++++++++++ */

function getid(id)
{
  if (document.getElementById) {
    return document.getElementById(id); }
  else if (document.all) { 
    return document.all[id]; }
  else if (document.layers) { 
    return document.layers[id]; }
  else { 
    return null; }
}

function addEvent(el, trigger, event)
{
  if (typeof el == 'string') {
    el = getid(el); }
  if (el === null) {
    return; }
  if (typeof el.addEventListener != 'undefined') {
	el.addEventListener(trigger, event, false); }
  else if (el == window && typeof document.addEventListener != 'undefined') {
	document.addEventListener(trigger, event, false); }
  else if (typeof el.attachEvent != 'undefined') {
	el.attachEvent('on'+trigger, event); }
  else {
    var eventChain = (eval('typeof el.on'+trigger) == 'function') ?
      eval('el.on'+trigger) : function() {};
  
    eval('el.on'+trigger+' = function()\n'+
'{\n'+
'eventChain();\n'+
'event();\n'+
'};');
  }
}

function computedstyle(el,style)
{
  if (typeof el == 'string') {
    el = getid(el); }
  if (el === null) {
    return null; }
  var a = null;
  if (window.getComputedStyle) {
    a = window;
  } else if (document.defaultView && document.defaultView.getComputedStyle) {
	a = document.defaultView;
  } else {
    return null;
  }
  return a.getComputedStyle(el, "").getPropertyValue(style.toLowerCase()).toLowerCase();
}

var preloadqueue = new Array();

function preload_next()
{
  if (preloadqueue.length > 0) {
    var img = new Image();
    img.src = preloadqueue.pop();
/*    alert('preloading '+img.src);*/
    img.onload = preload_next;
  }
}

function preload()
{
  /* when called with preload(array); */
  if (typeof arguments[0] == 'object') {
    arguments = arguments[0];
  }
  
  for (var i = arguments.length-1; i >= 0; i--) {
    preloadqueue.push(arguments[i]);
  }

  preload_next();  
}

function absPath(relPath)
{
  var path_info = location.href; 
  
  // Create the absolute path
  var absPath = path_info.substring(0, path_info.lastIndexOf("/")+1);
  absPath += relPath;
  
  // Beautify the path by removing all instances of ./
  // and <some dir>/../ except the case of http://<server>/../
  var parts = absPath.replace(/\/\.\//g, "/").split("/");
  for (var i=4; i<parts.length; i++)
  {
		  if (parts[i] == "..")
		  {
				  for (var j=i+1; j<parts.length; j++)
				  {
						  parts[j-2] = parts[j];
				  }
				  parts.length -= 2;
				  i -= 2;
		  }
  }
  
  absPath = parts.join("/");
  return absPath;
}

/* +++ Preload all IMG with DISPLAY:NONE +++++++++++++++++++++++++++++++++++ */

function preload_hidden_images()
{
  if (!document.getElementsByTagName) {
    return;
  }
  var all_img = document.getElementsByTagName("IMG");
  if (!all_img) {
    return;
  }
  var hidden_img = new Array();
  for (var i = 0; i < all_img.length; i++) {
    if (computedstyle(all_img[i],'display') == 'none') {
      hidden_img.push(all_img[i].src);
    }
  }
  preload(hidden_img);
}

addEvent(window,'load',preload_hidden_images);

/* +++ Support for :hover on IE/Win ++++++++++++++++++++++++++++++++++++++ */

function ieHover(id,tag) 
{
  if (!document.getElementById || !document.getElementsByTagName) {
    return;
  }
  
  id = document.getElementById(id);
  if (!id) {
    return;
  }
  
  var list = id.getElementsByTagName(tag);
  if (!list) {
    return;
  }

  for (var i = 0; i < list.length; i++) {
	list[i].onmouseover = function() {
      this.className += " iehover";
	  this.innerHTML += ''; // Force redraw
	}
	list[i].onmouseout = function() {
	  this.className = this.className.replace(' iehover', '');
	  this.innerHTML += ''; // Force redraw
	}
  }
}

if ((navigator.appVersion.indexOf('MSIE 5') != -1 || navigator.appVersion.indexOf('MSIE 6') != -1) && navigator.appVersion.indexOf('Mac') == -1 && navigator.appVersion.indexOf('Opera') == -1) {
  addEvent(window,"load", function() {
    ieHover("menu1","A");
    ieHover("im_bild","A");
    ieHover("im_bild","DIV");
  } );
}

var nextpage_url, nextpage_title;

/* +++ UL to SELECT ++++++++++++++++++++++++++++++++++++++ */

function convert_ul_to_select(id) {
  if (!document.getElementById || !document.getElementsByTagName || !document.createElement || !document.createTextNode) {
    return;
  }
  
  var ul = document.getElementById(id);
  if (!ul) {
    return;
  }

  if (ul && ul.nodeName && ul.nodeName.toUpperCase() != 'UL') {
    ul = ul.getElementsByTagName('UL').item(0);
  }
  if (!ul) {
    alert('Internal Error');
    return;
  }

  var select = document.createElement("SELECT");
  select.onchange = function()
  {
    if (this[this.selectedIndex].value) {
      location.href = this[this.selectedIndex].value;
    }
  }

  var li = ul.getElementsByTagName('LI');
  var option;
  var label;
  var value;
  var a;
  var ie5mac = (navigator.appVersion.indexOf('MSIE 5') != -1 && navigator.appVersion.indexOf('Mac') != -1);
  var nextpage = null;

  option = document.createElement("OPTION");
  label = 'Bitte wählen...';
  option.value = null;
  option.selected = true;
  
  if (ie5mac) {
    /* just for IE5/Mac, it kills IE5/Win */
    option.text = label;
    select.options[select.options.length] = option; 
  } else {
    option.appendChild(document.createTextNode(label));
    select.appendChild(option);
  }
  
  for (var i = 0; i < li.length; i++) {
    
    a = li[i].getElementsByTagName('A')[0];
    if (a) {
      if (typeof a.firstChild.nodeValue == 'string') {
        label = a.firstChild.nodeValue;
      } else {
        label = '[Internal Error]';
      }
      if (typeof a.href == 'string') {
        value = a.href;
      }
      else {
        value = null;
      }
    } else {
      label = li[i].firstChild.nodeValue;
      value = null;
    }

/*    if (i == 0) alert(label+' \n '+value);*/
//    if (value !== null) { label += ' - '+value;}
          
    option = document.createElement("OPTION");
    option.value = value;
    option.selected = false;
    option.disabled = (value === null || location.href == value);
    if (location.href == value) {
      nextpage = i+1;
    }
    if (nextpage == i) {
      nextpage_url = value;
      nextpage_title = label;
    }
   
	if (ie5mac) {
	  /* just for IE5/Mac, it kills IE5/Win */
	  option.text = label;
	  select.options[select.options.length] = option; 
	} else {
	  option.appendChild(document.createTextNode(label));
	  select.appendChild(option);
	}
  }
  
  ul.parentNode.replaceChild(select, ul);
}

addEvent(window,'load',function() 
{ 
  convert_ul_to_select('menu2'); 
  var menu2 = getid('menu2');
  if (menu2 !== null) {
    menu2.className = menu2.className.replace('menu2_js_off', 'menu2_js_on');
    menu2.style.display = 'block';

    var p = document.createElement("P");
    p.id = 'nextpage';
    nextpage_title = nextpage_title.replace('\n',' ');
    nextpage_title = nextpage_title.replace('\r',' ');
    p.innerHTML = '<strong><a href="'+nextpage_url+
                  '" title="nächste Seite: '+nextpage_title+'"><span class="grau">&raquo;&raquo;&raquo;</span> <span class="rot">Weiterbl&auml;ttern</span></a></strong>';
    menu2.appendChild(p);


/*    
	var match = location.href.match(/\/[^\/]+\/[^\/]+$/);
	if (match && match !== null && match[0] && match[0] !== null)
	{
	  switch (match[0]) {
		case "/trauringe/":                            preload('trauringe-turkesa.jpg');      break;
		case "/trauringe/trauringe-turkesa.html":      preload('trauringe-zweiring.jpg');     break;
		case "/trauringe/trauringe-zweiring.html":     preload('trauringe-utopia.jpg');       break;
		case "/trauringe/trauringe-utopia.html":       preload('trauringe-kerbe.jpg');        break;
		case "/trauringe/trauringe-kerbe.html":        preload('trauringe-wildwasser.jpg');   break;
		case "/trauringe/trauringe-wildwasser.html":   preload('trauringe-rundfacette.jpg');  break;
		case "/trauringe/trauringe-rundfacette.html":  preload('trauringe-princess.jpg');     break;
		case "/trauringe/trauringe-princess.html":     preload('trauringe-aztek.jpg');        break;
		case "/trauringe/trauringe-aztek.html":        preload('weitere-trauringe.jpg');      break;
		case "/trauringe/weitere-trauringe.html":      preload('trauringe-index.jpg');        break;
		default: break;
	  }
	}
*/

  }
});


