var i = 0;
var srcid = '';

/**
 * onLoad-Funktion, die beim Laden der Seite aufgerufen wird.
 * 
 * weist den Event-Handlern bestimmter Elemente einen Zeiger auf eine Funktion zu
 * dem Firefox stehen dann die Eventparameter automatisch zur Verfügung
 * der IE verwendet window.event.clientX - - siehe function dropdown ();
 * es wird [object MouseEvent] übergeben - beinhaltet clientX-Parameter, auf den der FF zugreifen kann !! 
 */ 

// !! eventLoader muss nach innerHTML-Verarbeitungen (z.B. mit komplettem body-tag) erneut durchgeführt werden, da
// zugeweiesene Events verloren gehen !!
function eventLoader() {
  // Popups in Produktlisten
  //if (document.getElementById('prod_image_popup_1')){ // nur durchführen, wenn eine Liste (erstes Element) vorhanden ist
  if (getElementByClass('prodlist')){ // nur durchführen, wenn eine Liste vorhanden ist
    popup_loader();   
  }
	
	// wenn LB-Popup vorhanden, es sich um einen Browser <= IE6 handelt, den Hintergrund der Lightbox anpassen
	if (document.getElementById('popup_bg')){
		if (navigator.userAgent.indexOf('MSIE') != -1){
			var user_agent = navigator.userAgent.substr(navigator.userAgent.indexOf('MSIE '));
			var version = parseInt(user_agent.substr(5, user_agent.indexOf('.')-5));
			//_debug(version);
			
			if (version <= 7){
				// Breite des Hintergrundes
				document.getElementById('popup_bg').style.width = document.documentElement.clientWidth;
				document.getElementById('popup_bg').style.left = -(document.body.offsetLeft);
				
				// Höhe des Hintergrundes
				if (document.body.offsetHeight > document.documentElement.clientHeight){
					document.getElementById('popup_bg').style.height = document.body.offsetHeight; // Höhe der Seite
				}
				else{
					document.getElementById('popup_bg').style.height = document.documentElement.clientHeight; // Höhe des Fensters
				}
				
				// Individuelle Anpassungen
				/* im IE 6 select-Boxen auf unsichtbar setzen, da diese über allen Elementen mit z-index angezeigt werden - oberhalb des Popups */
					// nur, wenn Popup bereits angezeigt wird
				if (version <= 6){
					if (document.getElementById('prodanzahl') && document.getElementById('popup_bg').style.display == 'block'){
						document.getElementById('prodanzahl').style.visibility = 'hidden';
					}
				}
				/* IE 7 kann fixed bereits */
				else{
					document.getElementById('popup_info').style.position = 'fixed';
				}
			}
		}
	}
}

// Test Website Übersetzung / Christian Tool
function domwalk() {
	var domlis = document.getElementById('primnavi').childNodes;
	var domlis = document.getElementById('headerright').childNodes;
	//alert(domlist.childNodes.length);
	//_debug(domlist.childNodes);
	//_debug(domlist);

	domshow(domlis);
}

function domshow(domlis){
	_debug(domlis);
	_debug(domlis.length);
	for (var i=0; i<domlis.length; i++){
		_debug(domlis[i].textContent);
	}
}

// Korrektur der Höhe des Contents
function correctListHeight(height){
  //alert(height);
  
  // Position des unteren Randes der Elemente
  var leftblock = get_offset_top(document.getElementById('leftblock'));
  leftblock = leftblock+document.getElementById('leftblock').offsetHeight;
  
  var rightblock = get_offset_top(getElementByClass('listbox', 'div'));
  //alert(rightblock);
  
  rightblock = rightblock+getElementByClass('listbox', 'div').offsetHeight;// +45, wenn unterkante des footers mit Navi abschließen soll !!
    
  //alert (leftblock);
  //alert (rightblock);
  //alert (navigator.appName);
    
  if (leftblock > rightblock){
    //alert (leftblock-rightblock);
    var listbox = getElementByClass('listbox', 'div'); // gibt Objekt zurück !!
    
    var height_listbox = rightblock - get_offset_top(getElementByClass('listbox', 'div'));

		// Korrektur, wenn sich eine Box unter Navi befindet
		height_listbox -= 4;
		
    //if (navigator.appName == 'Opera'){leftblock = leftblock}; // Opera Anpassung
    if (navigator.appVersion.match(/MSIE/g)){
      height_listbox -= 13; // bei Box unter Navigation
			//height_listbox -= 5; // im IE um weitere 5px verkleinern
    } 
    listbox.style.height = (height_listbox+(leftblock-rightblock)-parseInt(height))+'px';
    //alert (parseInt(height));

  }

}

// Hilfsfunktion für correctList Height - IE7 Anpassung 
// Parameter: Objekt von dem Offset bestimmt werden soll
// 2. Verwendung im produktpopup !!
function get_offset_top(obj){
 if (obj.offsetParent){
  return obj.offsetTop+get_offset_top(obj.offsetParent) //es gibt eine höhere Ebene -> Selbstaufruf
 }
 else{
  return obj.offsetTop; //oberste Ebene erreicht
 }
}

function get_offset_left(obj){
 if (obj.offsetParent){
  return obj.offsetLeft+get_offset_left(obj.offsetParent) //es gibt eine parent-Ebene -> Selbstaufruf
 }
 else{
  return obj.offsetLeft; //oberste Ebene erreicht
 }
}

/* Breite der primnavi korrigieren */
function correctprimnavi(){
  var prim_navi = document.getElementById('primnavi'); /* Variablen Problem im IE primnavi -> Objekt unterstützt Eigenschaft nicht Fehler. */
  var primnavioffset = get_offset_left(prim_navi);
  //var maindiv = get_offset_left(document.getElementById('main'));
  var headerright = get_offset_left(document.getElementById('headerright'));
	
	//alert(maindiv);
  //alert (prim_navi);
  //alert(primnavioffset);

  // gewollter Abstand zum headerrand: 186px
  // Standardbreite des Sprachenlinks: 145px (siehe main.css)
  
  // Neue Breite des Sprachenlinks
  var new_width = primnavioffset-headerright-186+145; //
  document.getElementById('sprachenlink').style.width = new_width+'px';
}

// position = empty() - Korrektur wird automatisch ausgeführt (je nachdem, ob secnavi zu lang etc - siehe unten)
//  1 = Position unter demselben primnavi Element
//2 = Position unter erstem primnavi-Element
//3 = Position am linken Rand (unter SPL-Logo)
 function correctsecnavi(position){

  // 1) Versuch es direkt unter aktiven primnavi-Eintrag zu setzen
  var activeprim = get_offset_left(getElementByClass('rightactive', 'li'));
  //var maindiv = get_offset_left(document.getElementById('main'));
  var headerright = get_offset_left(document.getElementById('headerright'));
	//alert (activeprim);
  
  document.getElementById('secnavifirst').style.marginLeft = (activeprim-headerright)+'px';
  
  // 2) prüfen, ob ein li umgebrochen wurde
  var seclis = document.getElementById('secnavi').getElementsByTagName('li');
  
  //alert(seclis[0]);
  
  var secnavi_shorten = 0; // gibt an, ob secnavi erneut verkürzt werden muss
  for (var a=0; a<seclis.length; a++){
    //alert(navigator.appName);
    
    // da get_offset_left hier nicht geht - hier unterscheidung zwischen Browsern
    if (navigator.appName != 'Microsoft Internet Explorer'){
    //alert(seclis[a].offsetLeft-maindiv);
      abstand = seclis[a].offsetLeft; //-maindiv;   ** headerüb
      if (abstand < 186){
        secnavi_shorten = 1;
      }
    }
    else{
      abstand = seclis[a].offsetLeft;
      if (abstand < 186){
        secnavi_shorten = 1;
      }
    }
  }
  
  // Manuelle Positionierung (Werte aus der Webcontrol)
  if(position == 2 || position == 3){
    secnavi_shorten = 1;
  }
  
  
  // 3) wenn secnavi erneut verkürzt werden muss: auf Abstand des ersten Elementes der primnavi setzen
  if (secnavi_shorten == 1){
     var activeprim = get_offset_left(document.getElementById('primfirst', 'li'));
     //alert (activeprim);  
     document.getElementById('secnavifirst').style.marginLeft = (activeprim-headerright)+'px';
  }
  
  // 4) erneutes Überprüfen, ob secnavi zu lang
  var secnavi_shorten = 0; // gibt an, ob secnavi erneut verkürzt werden muss
  for (var a=0; a<seclis.length; a++){
    //alert(navigator.appName);
    
    // da get_offset_left hier nicht geht - hier unterscheidung zwischen Browsern
    if (navigator.appName != 'Microsoft Internet Explorer'){
    //alert(seclis[a].offsetLeft-maindiv);
      abstand = seclis[a].offsetLeft //-maindiv;   ** headerüb
      if (abstand < 186){
        secnavi_shorten = 1;
      }
    }
    else{
      abstand = seclis[a].offsetLeft;
      if (abstand < 186){
        secnavi_shorten = 1;
      }
    }
  }
  
	// Manuelle Positionierung (Werte aus der Webcontrol)
  if(position == 3){
    secnavi_shorten = 1;
  }
	
  // 5) wenn secnavi erneut verkürzt werden muss: auf Abstand des ersten Elementes auf 0 setzen
  if (secnavi_shorten == 1){
     document.getElementById('secnavifirst').style.marginLeft = '0';
  }
}

/**
 * Gibt Objekt zurück, welches der angegebenen Klasse entspricht
 * Verwendung für primnavi, deshalb:   
 * es gibt nur ein element mit dieser klasse, deshalb Änderung auf einzelnes Objekt; es wird kein array zurückgegeben
 *    
 *
 * param string searchClass - Name der Klasse
 * param string tag         - tags, die diese Klasse beinhalten; tags die durchsucht werden sollen    
 */        
function getElementByClass(searchClass,tag) {
  var i = 0;
	var classElement = new Array();
	var tosearch = document.getElementsByTagName(tag);
	for (i=0; i<tosearch.length; i++){
		if (tosearch[i].className == searchClass){  
		  classElement = tosearch[i];
		  break; // sobald erstes Element mit dieser Klasse gefunden wurde, Schleife abbrechen (da es sowieso nur eins gibt)
		}
	}
	return classElement;
}

/**
 * Gibt Objekte, welche der angegebenen Klasse entsprechen, in einem Array zurück 
 *
 * @param string searchClass - Name der Klasse
 * @param string tag         - tags, die diese Klasse beinhalten; tags die durchsucht werden sollen    
 */      

function getElementsByClass(searchClass,tag) {
	var classElements = new Array();
	var i = 0; var j = 0;
	var tosearch = document.getElementsByTagName(tag);
	
	for (i = 0, j = 0; i < tosearch.length; i++) {
		if (tosearch[i].className == searchClass) {  
			classElements[j] = tosearch[i];
			j++;
		}
	}
	return classElements;
}

/* Funktionen und Variablen für die Flyout-Menüs (Ende) */
/*-------------------------------------------------------------------------------*/



//----------------------------------------------------------------------------------------------
/*
function picfadeOut(objId,opacity,func,para) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity >= 0) {
			setOpacity(objId, opacity);
			opacity -= 10;
			fader = window.setTimeout("picfadeOut('"+objId+"', "+opacity+", "+func+", "+para+")", 10);
		}
		else{
  		func(para[0], para[1], para[2], para[3], para[4])
    }
	}
}

function picfadeIn(objId,opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
			setOpacity(objId, opacity);
			opacity += 10;
			fader = window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 10);
		}
	}
}

/**
 * @param src = Source-Attribut des kleinen Bildes, auf das geklickt wird
 *        id  = Id ...
 *        pad = Komplette Padding-Angabe ...
 *        alt = Alternativtext ...
 *   
 *        bigpad = Komplette Padding-Angabe für das große Bild, wenn dieses verkleinert dargestellt wird
 */  

function picchanger(backg, id, titl){
  //alert(src); alert(id); alert(pad); alert(bigpad);
 // para = new Array(src, id, pad, alt, bigpad);
 // picfadeOut(id, 100, picchanger2, para);
  
  // Bild src und alt des großen Bildes speichern
  var bigsrc = document.getElementById("biglink").style.backgroundImage;
  var bigtitl = document.getElementById("biglink").title;
  //alert (bigsrc);


  // -----------------------------------
  // großes Bild bearbeiten
  var pic = backg.replace(/thumb/, "medium");
  var ref = pic.replace(/medium/, "large");
  

  with(document.getElementById("biglink")){
    style.backgroundImage = pic; // Bild (Hintergrundbild)
    href = ref.substring(4,ref.lastIndexOf(')'));  // Link für Lightbox
    title = titl; // Titel für Lightbox
  }

	
	
	// -----------------------------------
	// Link zum hires-JPG anpassen
	hires_exp = backg.split("/");
	
	// alert(navigator.appName);
	//alert(hires_exp[hires_exp.length-1])
	if (navigator.appName == 'Opera'){
	  bildname = hires_exp[hires_exp.length-1].substring(0, (hires_exp[hires_exp.length-1].length-2));
	}
	else{
	  bildname = hires_exp[hires_exp.length-1].substring(0, (hires_exp[hires_exp.length-1].length-1));
	}
	
	//alert(bildname);
	
	// alert(hires_exp[hires_exp.length-3])
	prod_num = hires_exp[hires_exp.length-3];
	//alert(prod_num);
	
	document.getElementById('hires').href = 'download.php?prod_num='+prod_num+'&bildname='+bildname;
	
	
	// -----------------------------------
	// kleines Bild bearbeiten
  // newsrc des kleinen Bildes
  var newsrc = bigsrc.replace(/medium/, "thumb");
  document.getElementById(id).style.backgroundImage = newsrc;

  // title des kleinen Bildes
  document.getElementById(id).title = bigtitl;
  
  /* alt:
  // onclicks von allen kleinen Bilder verändern (bigpad des neuen großen Bildes)
  paren = getElementByClass('context','p');
  images = paren.getElementsByTagName('a');
  
  //alert (images.length-1);
  for (var i=0; i<=(images.length-1); i++){
    images[i].setAttribute('onclick', 'picchanger(this.style.backgroundImage, this.id, this.alt)'); 
   }
  */
}



// entfernt href-Attribute aus kleinen Bildern, wenn JS aktiv ist
function picchanger_init(){
  paren = document.getElementById('context');
  images = paren.getElementsByTagName('a');
  
  //alert (images.length-1);
  for (var i=0; i<=(images.length-1); i++){
    images[i].removeAttribute('href'); 
   }
   
   
}

// weist den Produktbildern einer Liste das popup-Mausevent zu
function popup_loader(){
  var classElements = getElementsByClass('prod_image_popup_icon', 'img');
  var i=0;
  for (i=0; i<classElements.length; i++){
    classElements[i].onmouseover = produktpopup;
    classElements[i].onmouseout = produktpopdown;
  }
}

// Macht Produktbild sichtbar (HTML-Element erstellen und in DOM einfügen)
function produktpopup(eventParameter){
  // IE(7) - checken, ob Element bereits vorhanden ist
  if (!document.getElementById('produkt_popup')){
    if (window.event){ // IE
      var srcid = window.event.srcElement.id; // Id des Links, der mouseevent auslöst
      var pic = document.getElementById(srcid+'-background').style.backgroundImage;
    }  
    else{  // FF (kennt window.event nicht)
      var srcid = eventParameter.currentTarget.id;
      var pic = document.getElementById(srcid+'-background').style.backgroundImage;
    }
    
		var top = '-146px';
    pic = pic.replace(/prodlist/, "medium");
		if (pic.search(/thumb/) != -1){ // wenn ein thumb-Bild verwendet wird (Warenkob-Liste)
			pic = pic.replace(/thumb/, "medium");
			top = '-197px';
		}
    //alert(pic);
		
    var css = 'z-index:100; display:block; background-image:'+pic+'; left:16px; top:'+top+'; position:absolute;'; 
    createHTMLelement_v2('div', new Array('id','style'), new Array('produkt_popup',css), new Array(srcid+'-background'));
    eventLoader();   
  }
}

// Entfernt vergrößertes Produktbild
function produktpopdown(eventParameter){
	if (window.event){ // IE
		var srcid = window.event.srcElement.id; // Id des Links, der mouseevent auslöst
		var pic = document.getElementById(srcid+'-background').style.backgroundImage;
	}  
	else{  // FF (kennt window.event nicht)
		var srcid = eventParameter.currentTarget.id;
		var pic = document.getElementById(srcid+'-background').style.backgroundImage;
	}

  var popup = document.getElementById('produkt_popup');
  document.getElementById(srcid+'-background').removeChild(popup);
}


// --------------------------------------------------------------------------
// Produktliste

// Produktliste sortieren -> Aufruf 
function new_query(url2){
  //alert(url2);

  url1 = window.location.href;
  url1 = url1.substring(0, url1.lastIndexOf("?"));
  //alert(url1)
  
  //alert(url1+'?'+url2); 
  window.location.href = url1+'?'+url2;
}

// Produktliste sortieren für IE angepasst
function new_query_v2(){
  var options = document.getElementById('sortieren').getElementsByTagName('option');
  for (i=0; i<options.length; i++){
    if (options[i].selected == true){
      //alert(options[i].id);
      url1 = window.location.href;
      url1 = url1.substring(0, url1.lastIndexOf("?"));
      //alert(url1)
      url2 = options[i].id;
      
      //alert(url1+'?'+url2); 
      window.location.href = url1+'?'+url2;
    }
  }
}


// Sortieren Dropdown anzeigen

function show_sort(){
  // Höhe des listheaders anpassen
  getElementByClass('listheader','div').style.height = '44px';
  getElementByClass('listheader_content','div').style.height = '38px';

  // Select Feld für Sortierung sichtbar machen
  var listheader = getElementByClass('listheader_content','div');
  var select = listheader.getElementsByTagName('select');
  select[0].style.display = 'block';
  var span = listheader.getElementsByTagName('span');
  span[1].style.display = 'block';
}

// --------------------------------------------------------------------------
// Suche !!
function suche_einblenden(){ // nur wenn JavaScript eingeblendet ist !!
  document.getElementById('suche_header').style.display = 'block';
  document.getElementById('suche_content').style.display = 'block';
  document.getElementById('suche_footer').style.display = 'block';
  //erweiterte_suche();
}

function erweiterte_suche(){
  document.getElementById('erweitert_block').style.display = 'block';
  document.getElementById('erweitert_link').href = 'javascript:standardsuche();';
  document.getElementById('erweitert_link').id = 'standard_link';
  document.getElementById('erweitert_mem').value = '1';
  
  if (navigator.appVersion.match(/MSIE 7.0/g)){ // IE 7 Korrektur
    document.getElementById('suche_footer').style.marginTop = '0';
  }
}

function standardsuche(){
  document.getElementById('erweitert_block').style.display = 'none';
  document.getElementById('standard_link').href = 'javascript:erweiterte_suche();';
  document.getElementById('standard_link').id = 'erweitert_link';
  document.getElementById('erweitert_mem').value = '0';
  
  if (navigator.appVersion.match(/MSIE 7.0/g)){ // IE 7 Korrektur
    document.getElementById('suche_footer').style.marginTop = '-3px';
  }
}

// An/Abhaken der Supportbereich Checkbox - alle Unterbereich markieren bzw. Markierung entfernen 
function support_subchange(checked_var){
  //alert(checked_var);
  document.getElementById('software').checked = checked_var;
  document.getElementById('anleitungen').checked = checked_var;
  document.getElementById('faq').checked = checked_var;
  
  // IE Fehler - checked-Eigenschaft wird gesetzt aber nicht angezeigt
  //document.getElementById('erweitert_block').innerHTML = document.getElementById('erweitert_block').innerHTML;
}

// An/Abhaken der Unterbereichscheckboxen - gleichzeitige Änderung der Support-Hauptcheckbox
function support_mainchange(){
  //alert(checked_var);
  var subboxes = getElementsByClass('check_support', 'input');

	var trueCount = 0;
	var falseCount = 0;
	for (i=0; i<subboxes.length; i++){
	   if (subboxes[i].checked == true){
		   trueCount++;
		 }
		 else{
		   falseCount++;
		 }
	}
	
	if (trueCount >= 1){
	  document.getElementById('support').checked = true;
	}
	
	if (falseCount == 3){
	  document.getElementById('support').checked = false;
	}
}

function submit_suche(){
  document.suche.submit();
}

// Such-Requests absetzen
// params:  bereich ist ausgewählter Bereich, in dem gesucht werden soll 

function such_request(bereich, begriff){
  //alert (bereich);
  
  /* ----------------------------------------------------------------------------- */
    // XML Request Objekt
    var req = null;

    // Erstellen des Request-Objektes
    if(window.XMLHttpRequest)req = new XMLHttpRequest;
    if(window.ActiveXObject)req = new ActiveXObject("Microsoft.XMLHTTP");

    //alert ("suche.php?bereich="+bereich+"&begriff="+begriff);

    req.open("GET", "suche.php?bereich="+bereich+"&begriff="+begriff, true);
    // encodeURIComponent Funktion wandelt alle Sonderzeichen des string in url-kompatible zeichen (%ASCII-Wert) um (Steuerzeichen, Umlaute, +, &)
   
	  //alert ("Request sent");
    //Festlegen der durchzuführenden Operationen nach Rückgabe des Request-Objektes
    req.onreadystatechange = function(){
   	  //alert ("Request answer processing: State:" + req.readyState);
      if (req.readyState==4){
    	  //alert ("Request answer processing: Status:" + req.status);
        if (req.status==200){
          var xmldoc=req.responseXML;
          //alert(xmldoc);  
          //alert(req);  
          var ergebnis = xmldoc.getElementsByTagName("ergebnis");
					//_debug(ergebnis[0]);
					
					if (ergebnis[0].textContent){
					  // FF
            document.getElementById('suche-'+bereich).innerHTML = decodeURIComponent(ergebnis[0].textContent);
          }
          else{
            // IE (kennt textContent nicht)
            document.getElementById('suche-'+bereich).innerHTML = decodeURIComponent(ergebnis[0].firstChild.nodeValue);
          }
          
          //alert(typeof(ergebnis))
					/*if ((typeof(ergebnis) == "object") && (ergebnis.length > 0)) {
						erg = decodeURIComponent(ergebnis[0].textContent);
						document.getElementById('suche-'+bereich).innerHTML = erg;
						document.getElementById('suche-'+bereich).style.background="none";
					}
				  else {
						erg = decodeURIComponent(ergebnis[0].firstChild.nodeValue);
						document.getElementById('suche-'+bereich).innerHTML = erg;
						document.getElementById('suche-'+bereich).style.background="none";
					}*/
					//popup_loader();
        }
      }
    };
      
    //Abschicken des Request-Objektes mit Post-Variablen
    req.send(null);  
}

// Suche !! (Ende)
// --------------------------------------------------------------------------

function GetObjValues(objvar, prestr) {
	var res = '';
	//res += 'Objekt: '+obj+'\n\n';
	if (navigator.appName.indexOf("Explorer") != -1) {
		res += "id : " + objvar.id + "\r\n";
		res += "name : " + objvar.name + "\r\n";
		res += "value : " + objvar.value + "\r\n";
		res += "innerHTML : " + objvar.innerHTML + "\r\n";
		res += "title : " + objvar.title + "\r\n";
		res += "nodeName : " + objvar.nodeName + "\r\n";
		return res;
	}
	else if ((navigator.appName.indexOf("Explorer") != -1) && (prestr == "")) {
		re = window.open("", "", "");
	}
	for(temp in objvar)	{
			if (navigator.appName.indexOf("Explorer") != -1) {
		    if ((typeof(objvar[temp]) != "function") && (typeof(objvar[temp]) != "object")) {
					re.document.write(prestr + temp + ': ');
					re.document.write((objvar[temp]));
					re.document.write('<br>\r\n');
  				//a = eval(objvar[temp]);
				}
				else if (false && (typeof(objvar[temp]) == "object") && (prestr.length < 3)){
					re.document.write(prestr + temp + ': ');
					re.document.write('<br>\r\n');
          GetObjValues(objvar[temp], prestr + "&nbsp;&nbsp;");
				}
			}
			else {  // nicht internet explorer
		    if ((typeof(objvar[temp]) != "function") && (typeof(objvar[temp]) != "object")) {
      		res += temp +': '+objvar[temp]+'\n';
		    }
			}
	}
	return res;
} 

function _debug (obj) {
	//if (!debug) { return false; }
	if (typeof(obj) == "object") {
		alert(GetObjValues(obj, ""));
	}
	else {
		alert(obj);
	}
}

function _____________prodpic_navi_faker(){}

/**
 * Funktion zur Blättern in der Bildernavigaion unter der Produktansicht
 * 
 * param  act_prod_id  Id des aktuell angezeigten Produktes
 * param  direction    Pfeil auf den geklickt wurde  
 */ 
function prodpic_navi(act_prod_id,direction){
  //alert(act_key);
  prod_ul = document.getElementById('alternativprodukte');
  prod_lis = prod_ul.getElementsByTagName('li');
  
  // --------------------------
  // Aktuelles Produkt aus der Liste entfernen
  if (document.getElementById(act_prod_id)){
    prod_ul.removeChild(document.getElementById(act_prod_id));
  }
  
  // --------------------------
  // Position des ersten bzw. letzten sichtbaren Elements  
  var act_first = 10000; // 10000 ist Ersatzwert, da 0 im Array als Key vorkommt
  var act_last = 10000;
  var vis_count = 0; // zählt sichtbare Listenelemente
  if (direction == 'left'){
    for (i=0; i<prod_lis.length; i++){
     //alert (i+' - '+prod_lis[i].style.display);
     if ((prod_lis[i].style.display == '' || prod_lis[i].style.display == 'block') && act_first == 10000){ 
        act_first = i;
      }
    }
  }
  if (direction == 'right'){
    for (i=0; i<prod_lis.length; i++){
     //alert (i+' - '+prod_lis[i].style.display);
     if ((prod_lis[i].style.display == '' || prod_lis[i].style.display == 'block') && act_first == 10000 && vis_count < 3){ 
        act_last = i;
        vis_count++;
      }
    }
  }
  
  var get_vis = false; // Variable, die angibt, ob ein element sichtbar gemacht werden soll
  var count_vis = 0;   // Anzahl der sichtbar gemachten Elemente
  var new_first = 0;   // neue Position (key) des ersten sichtbaren Listenelementes
  var new_last = 0;    // ... letzten ...
  
  // --------------------------
  // vorherige oder folgende Element sichtbar machen
  // andere Elemente entfernen (auch die bisher sichtbaren)  
  for (i=0; i<prod_lis.length; i++){   
    // ---
    // Anpassungen links
    if (direction == 'left'){
      new_first = act_first-3;
      
      // Korrektur, falls neues erstes Element ausserhalb der Liste liegen würde
      while (new_first < 0){
        new_first++;
      }  
    }
    // ---
    // Anpassungen rechts
    if (direction == 'right'){
      new_last = act_last+3;
      
      // Korrektur, falls neues letztes Element ausserhalb der Liste liegen würde
      while (new_last > (prod_lis.length-1)){
        new_last--;
      }
      
      new_first = new_last-2;    
    }
    
    // ---
    // Neue Elemente sichtbar machen
    if (i == new_first || i == (new_first+1) || i == (new_first+2)){
        get_vis = true;
        if (i == new_first){ // erstes Listenelement = margin auf 0 setzen
          prod_lis[i].style.marginLeft = '0px';
        }
        else{ // andere sichtbare Elemente mit entsprechendem margin versehen
          prod_lis[i].style.marginLeft = '24px';
        }
      }
      else{
        get_vis = false;
      }
    
    if (get_vis == true){  
      prod_lis[i].style.display = 'block';
    }
    else{
      prod_lis[i].style.display = 'none';
    }
    //alert (new_first+' - '+new_last);
    
  }

  // -------------------------
  // Entfernen der Pfeile aus der prodpics-Naviagtion (wenn keine weiteren Produkte vorhanden)
  var imgleft = document.getElementById('alternativlinks');
  var imgright = document.getElementById('alternativrechts');
  var pid = window.location.search.match(/pid=.+&/i);
  //_debug(pid);
  pid = pid[0].substring(4,pid[0].length-1);
  //alert(pid);

  //alert(direction);
  //alert(imgs[1]);
  //alert (new_first+' - '+new_last+' - '+prod_lis.length+' - '+last_id)
  if (direction == 'left' && new_first == 0){ 
    imgleft.style.cursor = 'default';
    imgleft.src = 'pics/buttons/pfeil_links_hoch_inactive.png';
    imgleft.onclick = '';
  }
  else{
    imgleft.style.cursor = 'pointer';
    imgleft.src = 'pics/buttons/pfeil_links_hoch.png';
    imgleft.onclick = function(){prodpic_navi(pid,'left');}; // Einem Mousevent Funktion mit eigenen Parametern zuweisen
  }

  if (direction == 'right' && new_last == (prod_lis.length-1)){  
    imgright.style.cursor = 'default';
    imgright.src = 'pics/buttons/pfeil_rechts_hoch_inactive.png';
    imgright.onclick = '';
  }
  else{
    imgright.style.cursor = 'pointer';
    imgright.src = 'pics/buttons/pfeil_rechts_hoch.png';
    imgright.onclick = function(){prodpic_navi(pid,'right');};
  }
}

function prodpic_navi_einblenden(){ // nur wenn JavaScript vorhanden ist !!
	document.getElementById('produktbildnavigation').style.display = 'block';
}

/**
 *  Navigation der Neuen Produkte
 */
function new_prods(direction){
  //alert(direction);
  prod_ul = getElementByClass('prodpics_navi','ul');
  prod_lis = prod_ul.getElementsByTagName('li');
  
	var iMem = 1000;
	
	// -----------------------
	// nach rechts
  if (direction == 'right'){
	  iMem = 1000;
    for (i=0; i<prod_lis.length; i++){
		  // alert (i+' - '+prod_lis[i].style.display);
			// Unsichtbarmachen des aktuell sichtbaren Listenelements und speichern der Position
      if (prod_lis[i].style.display == '' || prod_lis[i].style.display == 'block'){   
        prod_lis[i].style.display = 'none';
				iMem = i;
      }
		}
		
		// Sichtbarmachen des neuen Listenelements (neue Schleife, da das neue sichtbare Listenelement auch vor dem aktuell sichtbaren liegen kann)
		for (i=0; i<prod_lis.length; i++){
			if (iMem+1 == prod_lis.length){ // Aktuell ist letztes Element markiert;  Beim nach rechts springen, wird erstes Element der Liste sichtbar
			  prod_lis[0].style.display = 'block';
			}
			else if (i == iMem+1){ // Normalfall
			  prod_lis[i].style.display = 'block';
			}
    }
  }
	
	// -----------------------
	// nach links
	if (direction == 'left'){
	  iMem = 1000;
    for (i=0; i<prod_lis.length; i++){
		  // alert (i+' - '+prod_lis[i].style.display);
			// Unsichtbarmachen des aktuell sichtbaren Listenelements und speichern der Position
      if (prod_lis[i].style.display == '' || prod_lis[i].style.display == 'block'){   
        prod_lis[i].style.display = 'none';
				iMem = i;
      }
    }
		
		// Sichtbarmachen des neuen Listenelements
		for (i=0; i<prod_lis.length; i++){
		  if (iMem-1 == -1){ // Aktuell ist 0. Element markiert;  Beim nach links springen, wird letztes Element der Liste sichtbar
			  prod_lis[prod_lis.length-1].style.display = 'block';
			}
			else if (i == iMem-1){ // Normalfall
			  prod_lis[i].style.display = 'block';
			}
		}
  }
}

// imgCount = Anzahl der Bilder im Ordner
// in script-Tag übergeben

// changePic und changePage wirken sich noch nicht aufeinander aus

/**
  * Bildergalerie Navigation
  * dir = 'next' || 'prev'
  */
function changePic(dir){
	var src = document.getElementById('bildgal_main').src;
	var picNo = Number(src.substr(src.length-7, 3));
	//alert(picNo);
	
	// Bildnamen de-/inkrementieren; Anzeige der Bilder erfolgt in umgekehrter Reihenfolge !! (deshalb bei prev, das letzte Bild berücksichtigen etc.)
	if (dir == 'prev'){
	  if (picNo == imgCount){ // letztes Bild
		  picNo = 1;
		}
		else{
		  picNo++;
		}
	}
	else if (dir == 'next'){
	  if (picNo == 1){ // erstes Bild
		  picNo = imgCount;
		}
		else{
		  picNo--;		
		}
	}
  
	// Korrekten String für Bildnamen erzeugen
	picName = '00'+String(picNo);
	picName = picName.substring(picName.length-3); // wieder einkürzen
	document.getElementById('bildgal_main').src = src.substr(0, src.length-7)+picName+'.jpg';
	
	// changePage ausführen, wenn sich aktuelles Bild nicht mehr in aktuellen Ansicht befindet
	var thumbs = getElementsByClass('bildgal_thumb','img');
	var ru = Number(thumbs[7].src.substr(thumbs[7].src.length-7, 3)); // rechts unten
	var lo = Number(thumbs[0].src.substr(thumbs[0].src.length-7, 3)); // links oben
	
	if (picNo == 1){
	  changePage('first');
	}
	else if(picNo == imgCount){
	  changePage('last');
	}
	else if (picNo > lo){
	  changePage('prev');
	}
	else if (picNo < ru){
	  changePage('next');
	}
}

/**
  * Bildergalerie Navigation
  * dir = 'next' || 'prev' ( previous bezeiht sich auf die Darstellung der Bilder, nicht die Reihenfolge der Bildnamen)
  * 'last' || 'first' - zur letzten bzw. ersten Seite springen
  */
function changePage(dir){
  var thumbs = getElementsByClass('bildgal_thumb','img');
	
	if (dir == 'next'){
		// Bildnummer des Bildes rechts unten
		var src = thumbs[7].src;
		var picNo = Number(src.substr(src.length-7, 3));
	  //alert(picNo);
		
		new_picNo = picNo-8;
		if (new_picNo < 1){
		  new_picNo = 1;
		}
		//alert(new_picNo);
		
		// Sources der Thumbs ändern !!		
		for (i=7; i>=0; i--){
		  picName = '00'+String(new_picNo);
	    picName = picName.substring(picName.length-3); 
		  thumbs[i].src = src.substr(0, src.length-7)+picName+'.jpg';
			new_picNo++;
		}
	}
	else if (dir == 'prev'){
		// Bildnummer des Bildes links oben
		var src = thumbs[0].src;
		var picNo = Number(src.substr(src.length-7, 3));
	  //alert(picNo);
		
		new_picNo = picNo+8;
		if (new_picNo > imgCount){
		  new_picNo = imgCount;
		}
		//alert(new_picNo);
		
		// Sources der Thumbs ändern !!		
		for (i=0; i<=7; i++){
		  picName = '00'+String(new_picNo);
	    picName = picName.substring(picName.length-3); 
		  thumbs[i].src = src.substr(0, src.length-7)+picName+'.jpg';
			new_picNo--;
		}
	}
	else if (dir == 'first'){
	  var src = thumbs[0].src;
	  // Zur ersten Seite springen
		new_picNo = 8;
		
		// Sources der Thumbs ändern !!		
		for (i=0; i<=7; i++){
		  picName = '00'+String(new_picNo);
	    picName = picName.substring(picName.length-3); 
		  thumbs[i].src = src.substr(0, src.length-7)+picName+'.jpg';
			new_picNo--;
		}
	}
	else if (dir == 'last'){
		var src = thumbs[7].src;
		// Zur letzten Seite springen
		new_picNo = imgCount;

		// Sources der Thumbs ändern !!		
		// Sources der Thumbs ändern !!		
		for (i=0; i<=7; i++){
		  picName = '00'+String(new_picNo);
	    picName = picName.substring(picName.length-3); 
		  thumbs[i].src = src.substr(0, src.length-7)+picName+'.jpg';
			new_picNo--;
		}
	}
}

// Klick auf ein Thumb - Direktanzeigen des Bildes
// newSrc = src des Thumbs
function showPic(newSrc){
	regexp = new RegExp('thumbs'); // RegExp-Objekt erstellen - Regulärer Ausdruck bzw. Suchbegriff wird übergeben
	ergebnis = regexp.exec(newSrc); // Regulären Ausdruck auf newSrc anwenden
	
	newMainSrc = newSrc.replace(ergebnis, 'fotos');
	//alert(newMainSrc);
	document.getElementById('bildgal_main').src = newMainSrc;
}

// TODO: in global functions eintragen
function ___alg_func_faker(){}

// Mausevent erzeugen
// type = Typ des Mausevents
// obj = DOM-Objekt, auf dem Mausevent ausgelöst werden soll
function fireMouseEvent(type, obj){
	evt = document.createEvent("MouseEvents");
	evt.initMouseEvent(type, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
	// Eigenschaften: http://phrogz.net/ObjJob/method.asp?id=612
	//type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget
	obj.dispatchEvent(evt);
}