/**** CONFIG ****/

var slideDuration = 300; // in millisekunden pro 100 Pixel

/**** END CONFIG ****/

function start()
{

	$('#navigation > li').each(function(i, value) 
	{
		if (value.className.indexOf('clearBoth') < 0)
		{
			
			value.onmouseover = function(e)
			{ 
				if (!e) e = window.event; 
				if (getTarget(e).nodeName.toLowerCase() != 'div')
				{
					subnaviTrigger = value;
					slideSubnavi(true); 
				}
			}
			value.onmouseout = function(e)
			{ 
				if (!e) e = window.event; 
				subnaviTrigger = value;
				fixOnMouseOut(value, e, 'slideSubnavi(false)');
			}
			
			prepareSubnavi(value);
			
		}
  	});
	
}

var subnaviID = 1;
var subnaviTrigger = null;
var subNaviWidth = null;
var activeSubNavi = null;
var lastSubNavi = null;
function prepareSubnavi(trigger)
{
	
	var childNodes = trigger.getElementsByTagName('ul');

	for (var ci = 0; ci < childNodes.length; ci++)
	{
		var node = childNodes[ci];
		node.style.zIndex = '1';
		
		if (typeof(node.id) == 'undefined' || node.id == null || node.id == '')
		{
			node.id = 'subnavi_' + subnaviID;
			subnaviID++;
			
			// Code zur permanenten Darstellung aktiver Subnavis:
			
			if (node.parentNode.parentNode.className.indexOf('active') < 0) node.slideable = true;
			else {
				node.slideable = false;
				activeSubNavi = node;
			}
			
			// Code zur Gleichbehandlung aller Subnavis:
			//node.slideable = true;

			node.style.display = 'block';
			
			//node.style.height = (node.offsetHeight + 'px';

			if (node.slideable) node.style.top = (-node.offsetHeight) + 'px';			

			node.onmouseout = function(e)
			{ 
				if (!e) e = window.event; 
				subnaviTrigger = node;
				fixOnMouseOut(node, e, 'slideSubnavi(false)');
			}

		}
	}
}

function getTarget(e)
{
	if (typeof(e.target) != 'undefined' && e.target != null)
	{
		return e.target;
	}
	else
	{
		return e.srcElement;
	}
}

function slideSubnavi(state, useNode)
{
	if (subnaviTrigger == null && !useNode) return;
	else if (subnaviTrigger == null) subnaviTrigger = useNode;

	var childNodes = subnaviTrigger.getElementsByTagName('ul');

	for (var ci = 0; ci < childNodes.length; ci++)
	{
		var node = childNodes[ci];
		
		if (node.slideable)
		{
			node.style.zIndex = '1';
			
			var element = $('#' + node.id);
	
			element.stop();
			
			if (state)
			{
				var slideOffset = node.offsetHeight - (node.offsetTop + node.offsetHeight);
				if (slideOffset < 0) slideOffset = 0;
				subnaviTrigger.className = subnaviTrigger.className + ' hovered'
			}
			else 
			{
				var slideOffset = -node.offsetHeight - node.offsetTop;
				if (slideOffset < -node.offsetHeight) slideOffset = -node.offsetHeight;
				if (subnaviTrigger.className.indexOf('active') < 0) subnaviTrigger.className = '';
				else subnaviTrigger.className = 'active';
			}
			
			var currentDuration = slideDuration;
			element.animate({ top : '+=' + slideOffset }, currentDuration);
			
		}
	}
}

/*function slideSubnavi(state, useNode)
{

	if (subnaviTrigger == null && !useNode) return;
	else if (subnaviTrigger == null) subnaviTrigger = useNode;

	var childNodes = subnaviTrigger.getElementsByTagName('ul');

	for (var ci = 0; ci < childNodes.length; ci++)
	{

		var node = childNodes[ci];
		
		if (node.slideable)
		{
			node.style.zIndex = '1';
			
			var element = $('#' + node.id);
	
			element.stop();
	
			if (state)
			{
				if (node.fromRight) 
				{
					var slideOffset = -node.offsetWidth + (subNaviWidth - parseInt(node.style.left.replace(/px/, '')));
				}
				else var slideOffset = - parseInt(node.style.left.replace(/px/, ''));


				var currentDuration = Math.ceil(slideDuration * Math.abs(slideOffset) / 100);
				element.animate({ left : '+=' + slideOffset }, currentDuration);
				if (lastSubNavi!=null && lastSubNavi!=subnaviTrigger)
				{
					slideSubnavi(false, lastSubNavi);
				}
				
				subnaviTrigger.className = subnaviTrigger.className + ' hovered';

				lastSubNavi =  subnaviTrigger;
				
				if (activeSubNavi!=null && node!=activeSubNavi)
				{
					activeSubNavi.style.display = 'none';
				}
			}
			else
			{
				lastSubNavi =  null;
				
				if (subnaviTrigger.className.indexOf('active') < 0) subnaviTrigger.className = '';
				else subnaviTrigger.className = 'active';
				
				if (node.fromRight) 
				{
					var slideOffset = -(subNaviWidth - parseInt(node.style.left.replace(/px/, '')));
				}
				else var slideOffset = node.offsetWidth + parseInt(node.style.left.replace(/px/, ''));
				var currentDuration = (Math.abs(slideOffset) * slideDuration) / node.offsetWidth;
				element.animate({ left : '-=' + slideOffset }, 0);
				if (activeSubNavi!=null && node!=activeSubNavi)
				{
					activeSubNavi.style.display = 'block';
				}
			}
		}
	}

}*/

var onloads = [];
function addOnload(func)
{
	onloads.push(func);
}

function evalOnloads()
{
	var onloadsLength = onloads.length;
	for (var o_i = 0; o_i < onloadsLength; o_i++)
	{
		eval(onloads[o_i]);
	}
}

window.onload = function(e)
{
	evalOnloads();
}

addOnload('start()');

function initializeGoogleMaps()
{
	var mapsElement = document.getElementById("googleMapsBlock");
	if (mapsElement!=null && typeof mapsElement!='undefined')
	{
		var map = new google.maps.Map2(mapsElement);
		/*map.setCenter(new google.maps.LatLng(48.851077, 8.960338), 15);*/
		/* map.setCenter(new google.maps.LatLng(48.824501, 9.065026), 15);*/
		/*map.setCenter(new google.maps.LatLng(48.824616, 9.064491), 15);*/
		map.setCenter(new google.maps.LatLng(48.824265, 9.064986), 15);
		map.addControl(new GSmallMapControl());
		/*var marker = new GMarker(new GLatLng(48.851077, 8.960338));*/
		/*var marker = new GMarker(new GLatLng(48.824501, 9.065026));*/
		/*var marker = new GMarker(new GLatLng(48.824616, 9.064491));*/
		var marker = new GMarker(new GLatLng(48.824265, 9.064986));
		marker.openInfoWindowHtml(googleMapsInfoText);
		map.addOverlay(marker);
	}
}




/***************************************/

function get_object(id) {
	var object = null;
	if( document.layers )	{			
		object = document.layers[id];
	} else if( document.all ) {
		object = document.all[id];
	} else if( document.getElementById ) {
		object = document.getElementById(id);
	}
	return object;
}

function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}

function mouseIntersects(event, element)
{
	var elementPos = getElementPosition(element);
	var eX1 = elementPos.x;
	var eY1 = elementPos.y;
	var eX2 = eX1 + element.offsetWidth;
	var eY2 = eY1 + element.offsetHeight;

	var mX = event.clientX;
	var mY = event.clientY;

	return mX >= eX1 && mX < eX2 && mY >= eY1 && mY < eY2;
}

function fixOnMouseOut(element, event, JavaScript_code) {

	if (navigator.appVersion.indexOf('Safari') >= 0)
	{
		var subnavis = element.getElementsByTagName('ul');
		var subnavi = subnavis[0];
		if (!mouseIntersects(event, element) && !mouseIntersects(event, subnavi))
		{
			eval(JavaScript_code);
		}
		
	}
	else
	{
		var current_mouse_target = null;
		if(event.toElement ) {				
			current_mouse_target 			 = event.toElement;
		} else if( event.relatedTarget ) {				
			current_mouse_target 			 = event.relatedTarget;
		}
		if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
			eval(JavaScript_code);
		}
	}
	
}

function getElementPosition(element) {
	var elem=element,tagname="",x=0,y=0;
	
  	while (elem!=null && (typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
	{
    	y+=elem.offsetTop;
	    x+=elem.offsetLeft;
    	tagname=elem.tagName.toUpperCase();

	    if (tagname=="BODY")
      	elem=0;

    	if (typeof(elem)=="object")
      	if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  } // end while

  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function change_Menge(id, amount){
	var innerHTMLShoppingCartButton = document.getElementById("toShoppingCart_"+id+"").innerHTML;
	var innerHTMLShoppingCartButtonNewAmount = innerHTMLShoppingCartButton.replace(/shop_anzahl=[0-9]*/, "shop_anzahl="+amount);
	document.getElementById("toShoppingCart_"+id+"").innerHTML = innerHTMLShoppingCartButtonNewAmount;
}

function change_wevariant(id, wevariant, site){
	
	// change the ShoppingCart-Button
	var innerHTMLShoppingCartButton = document.getElementById("toShoppingCart_"+id+"").innerHTML;
	if (innerHTMLShoppingCartButton.search(/we_variant=/) == -1){
		var innerHTMLShoppingCartButtonNewAmount = innerHTMLShoppingCartButton.replace(/php\?/, "php?we_variant="+escape(wevariant)+"&");
	}
	else{
		if (innerHTMLShoppingCartButton.search(/we_variant=[^&]*&/) == -1){
			var innerHTMLShoppingCartButtonNewAmount = innerHTMLShoppingCartButton.replace(/we_variant=[^"]*"/, "we_variant="+escape(wevariant)+"\"");
		}
		else{
			var innerHTMLShoppingCartButtonNewAmount = innerHTMLShoppingCartButton.replace(/we_variant=[^&]*&/, "we_variant="+escape(wevariant)+"&");
		}
	}

	document.getElementById("toShoppingCart_"+id+"").innerHTML = innerHTMLShoppingCartButtonNewAmount;
	
	if (site=="uebersicht"){
		// change the link on the Kategorieuebersicht-Page
		var innerHTMLProductTitle = document.getElementById("producttitle_"+id+"").innerHTML;
		if (innerHTMLProductTitle.search(/we_variant=/) == -1){
			var innerHTMLProductTitleNewAmount = innerHTMLProductTitle.replace(/php\?/, "php?we_variant="+escape(wevariant)+"&");
		}
		else{
			if (innerHTMLProductTitle.search(/we_variant=[^&]*&/) == -1){
				var innerHTMLProductTitleNewAmount = innerHTMLProductTitle.replace(/we_variant=[^"]*"/, "we_variant="+escape(wevariant)+"\"");
			}
			else{
				var innerHTMLProductTitleNewAmount = innerHTMLProductTitle.replace(/we_variant=[^&]*&/, "we_variant="+escape(wevariant)+"&");
			}
		}
		document.getElementById("producttitle_"+id+"").innerHTML = innerHTMLProductTitleNewAmount;
	}
}


function make_correct_container_and_price_visible(articlename, id, displaystyle){
	var variants = getElementsByClassName(articlename);
	for (var ci = 0; ci < variants.length; ci++)
	{
		if (ci != id){
			variants[ci].style.display = 'none';	
		}
	}
	variants[id].style.display = displaystyle;
}

function getElementsByClassName(className)
{
	var muster = new RegExp("(^| )" + className + "($| )");
    var alles = document.getElementsByTagName("*");
    var gefunden = new Array();
    var i;

    for (i=0; i < alles.length; i++) {
        if (alles[i] && alles[i].className && alles[i].className != "") {
            if (alles[i].className.match(muster))
                gefunden[gefunden.length] = alles[i];
        }
    }

    return gefunden;
}



function checkOelmuehleOrderForm(){

	var msg="______________________________________\n\n";
	var nfehler=0;
	var efehler=0;


	if (document.getElementById("s[Forename]").value==""){
		msg+="Nachname\n";
		nfehler++;
	}
	
	if (document.getElementById("s[Kontakt_Telefax]").value==""){
		msg+="Telefax\n";
		nfehler++;
	}
	
	if (document.getElementById("s[Kontakt_Ort]").value==""){
		msg+="Ort\n";
		nfehler++;
	}

	if (document.getElementById("s[Kontakt_Telefon]").value==""){
		msg+="Telefon\n";
		nfehler++;
	}
	
	if (document.getElementById("s[Kontakt_Email]").value==""){
		msg+="eMail\n";
		nfehler++;
	}
	
	if (document.getElementsByName("s[Kontakt_Zahlungsweise_Zahlungsart]")[0].value=="Bankeinzug"){
		if (document.getElementById("s[Kontakt_Zahlungsweise_Bank]").value==""){
			msg+="Bank\n";
			nfehler++;
		}
		if (document.getElementById("s[Kontakt_Zahlungsweise_BLZ]").value==""){
			msg+="BLZ\n";
			nfehler++;
		}	
		if (document.getElementById("s[Kontakt_Zahlungsweise_KontoNr]").value==""){
			msg+="Konto-Nr\n";
			nfehler++;
		}		
	}
	
	p_email=document.getElementById("s[Kontakt_Email]").value.toString();
	if ( p_email!="") {
  		t = p_email.indexOf("@");
		k = p_email.indexOf(".");
        if  ( ( k== -1 )||( t == -1 )||( t<1 ) || ( t >p_email.length - 5 ) || ( p_email.charAt(t-1) =="." ) || ( p_email.charAt(t+1) =="." ) ) 
		{
	     efehler=1;
	    };
	};
	
		
	if (document.getElementById("AGB").checked==false){
		msg+="AGB\n";
		nfehler++;
	}
	
	if (document.getElementById("Widerrufsbelehrung").checked==false){
		msg+="Widerrufsbelehrung\n";
		nfehler++;
	} 
	
	if (nfehler==0)   {
		if (efehler==0)	{
		document.forms[0].submit(); 
		return true; 
		}
		else {
			alert ("Die angegebene eMail ist nicht korrekt");
			return false;
		}
		
	}
	else{
		msg = "Bitte tragen sie korrekte Werte in die folgenden Felder ein:\n" +msg;
	}
	msg+="______________________________________\n\n";
	alert (msg);
	
	return false;
}

function showLieferadresse(){
	if (document.getElementById("checkboxlieferadresse").checked==false){
		document.getElementById("s[Kontakt_Lieferadresse_Strasse]").value="";
		document.getElementById("s[Kontakt_Lieferadresse_PLZ]").value="";
		document.getElementById("s[Kontakt_Lieferadresse_Ort]").value="";
		document.getElementById("s[Kontakt_Lieferadresse_Vorname]").value="";
		document.getElementById("s[Kontakt_Lieferadresse_Name]").value="";
		
		
		document.getElementById("LieferadresseStrasseLabel").style.display="none";
		document.getElementById("LieferadresseStrasse").style.display="none";
		document.getElementById("LieferadresseAdresseLabel").style.display="none";
		document.getElementById("LieferadresseAdresse").style.display="none";
		document.getElementById("LieferadresseNameLabel").style.display="none";
		document.getElementById("LieferadresseName").style.display="none";
		
	}
	else{
		document.getElementById("LieferadresseStrasseLabel").style.display="table-row";
		document.getElementById("LieferadresseStrasse").style.display="table-row";
		document.getElementById("LieferadresseAdresseLabel").style.display="table-row";
		document.getElementById("LieferadresseAdresse").style.display="table-row";
		document.getElementById("LieferadresseNameLabel").style.display="table-row";
		document.getElementById("LieferadresseName").style.display="table-row";
	}
}
	

function changeBankdatenVisibility(myvalue){
	
	//alert(document.getElementById("s[Kontakt_Zahlungsweise_Zahlungsart]").value);
	document.getElementsByName("s[Kontakt_Zahlungsweise_Zahlungsart]")[0].value = myvalue;
	if(document.getElementsByName("s[Kontakt_Zahlungsweise_Zahlungsart]")[0].value=="Rechnung"){
			document.getElementById("s[Kontakt_Zahlungsweise_KontoNr]").value="";
			document.getElementById("s[Kontakt_Zahlungsweise_BLZ]").value="";
			document.getElementById("s[Kontakt_Zahlungsweise_Bank]").value="";	
			document.getElementById("Kontakt_Zahlungsweise_KontoNr").style.visibility="hidden";
			document.getElementById("Kontakt_Zahlungsweise_BLZ").style.visibility="hidden";
			document.getElementById("Kontakt_Zahlungsweise_Bank").style.visibility="hidden";
			document.getElementById("Kontakt_Zahlungsweise_KontoNrLabel").style.visibility="hidden";
			document.getElementById("Kontakt_Zahlungsweise_BLZLabel").style.visibility="hidden";
			document.getElementById("Kontakt_Zahlungsweise_BankLabel").style.visibility="hidden";
	}
	else{
			document.getElementById("Kontakt_Zahlungsweise_KontoNr").style.visibility="visible";
			document.getElementById("Kontakt_Zahlungsweise_BLZ").style.visibility="visible";
			document.getElementById("Kontakt_Zahlungsweise_Bank").style.visibility="visible";
			document.getElementById("Kontakt_Zahlungsweise_KontoNrLabel").style.visibility="visible";
			document.getElementById("Kontakt_Zahlungsweise_BLZLabel").style.visibility="visible";
			document.getElementById("Kontakt_Zahlungsweise_BankLabel").style.visibility="visible";
	}					
}

function changeAnrede(){
	if(document.getElementById("checkboxfrau").checked==true){			
		//document.getElementById("checkboxherr").checked=false;
		document.getElementsByName("s[Anrede_Anrede]")[0].value="Frau";
	}else{
		//document.getElementById("checkboxfrau").checked=false;
		document.getElementsByName("s[Anrede_Anrede]")[0].value="Herr";
	}
}

