var zipcode = "";
var zipcodeNextLayer = "";
var zipcodeArticlePK = "";
var zipcodeArticleNo = "";
var zipcodeLinkSuffix = "";
var details;
var cart;
var customerData;

/*************************
 * begin: helpers
 *************************/
function init(zc, nl, pk, no, ls, anchor){
	nav();
	setGlobals(zc, nl, pk, no, ls);
	if (anchor != null && anchor != "" && anchor != "null") {
		location.hash = anchor; 
	}
}

function changeClassName(obj, newClasses){
	obj.className = newClasses;	
}

function setGlobals(zc, nl, pk, no, ls){
	zipcode = (zc != null) ? zc : "";
	zipcodeNextLayer = (nl != null) ? nl : "";
	zipcodeArticlePK = (pk != null) ? pk : "";
	zipcodeArticleNo = (no != null) ? no : "";
	zipcodeLinkSuffix = (ls != null) ? ls : "";
/*	console.log(zipcode + ", " 
				+ zipcodeNextLayer + ", " 
				+ zipcodeArticlePK + ", " 
				+ zipcodeArticleNo + ", " 
				+ zipcodeLinkSuffix);
*/	
	if(details || cart || customerData){ 
		organizeZipcodeLayer(); 
	}
}
/*************************
 * end: helpers
 *************************/

/*************************
 * begin: zip code layer
 *************************/
function organizeZipcodeLayer(){
	if(customerData != null){	
		toggleDisplayOne('zipcodeLayerNotMatching');
	}else{
		var layer;
		if(zipcodeNextLayer == "Yes"){
			layer = "zipcodeLayerYes" + zipcodeArticleNo;
		}else if(zipcodeNextLayer == "No"){
			layer = "zipcodeLayerNo" + zipcodeArticleNo;
		}else if(zipcodeNextLayer == "Invalid"){
			layer = "zipcodeLayerInvalid" + zipcodeArticleNo;
		}
		if(layer != null){
			if(layer != "zipcodeLayerYes" && layer != "zipcodeLayerNo"){
				if(details){
					overlay("layerLink"+zipcodeLinkSuffix, layer, "bottom left", "", "layerLink"+zipcodeLinkSuffix, 'buttonIsLeft', 170);
				}else if(cart){
					overlay("layerLink"+zipcodeLinkSuffix, layer, "bottom left", "", "layerLink"+zipcodeLinkSuffix, 'buttonIsRight', 170);
				}
			}
		}
	} // end: if(customerData != null)
}
/*************************
 * end: zip code layer
 *************************/

/*************************
 * begin: navigation functions
 *************************/ 
function hideLayerNav(objToGet){
	var layerUL = objToGet.getElementsByTagName("UL")[0]; 
	if(layerUL){
		var layer = $(layerUL.id); //layer to be shown		
		var curobj = objToGet; //link
		layer.style.display = "none"; //Effect.Fade(subobj, {duration:0.3, from:1.0, to:0}) 	
		if(curobj.className == "mainCategory selected"){
			changeClassName(curobj, "mainCategory selected");		
		}else{
			changeClassName(curobj, "mainCategory");	
		}
	}
}

function showLayerNav(objToGet){
	//handle layer for navigation
	var layerUL = objToGet.getElementsByTagName("UL")[0];
	var dropdownUL = objToGet.getElementsByTagName("UL")[1];
	if(layerUL && dropdownUL){
		var layer = $(layerUL.id); //layer to be shown		
		var curobj = objToGet; //link	
		
		//show/hide layer (only if dropdown of this category is hidden)
		if(dropdownUL.style.display != "block"){
			layer.style.display = "block"; //Effect.Appear(subobj, {duration:0.3, from:0, to:1.0});
			changeClassName(curobj, "mainCategory active");
			//calculate y position of layer
			var ypos = curobj.offsetTop;	
			var parentEl = curobj.offsetParent;
			while(parentEl){
				ypos += parentEl.offsetTop;
				parentEl = parentEl.offsetParent;
			}
			layer.style.top = (ypos - 2) + "px";	
			layer.style.left = 198 + "px"; // set x position
		}
	}	
}

function showDropdownNav(objToGet){
	//handle dropdown for navigation
	var dropdownUL = objToGet.getElementsByTagName("UL")[1];
	if(dropdownUL){
		var dropdown = $(dropdownUL.id); //dropdown to be shown		
		var curobj = objToGet; //link	
		dropdown.style.display = "block"; //Effect.Appear(subobj, {duration:0.3, from:0, to:1.0});		
	}	
}
 
function nav(){
	if($("branchUL")){
		var branches = $("branchUL").getElementsByClassName("branchCategory"); 
		for(i = 0; i < branches.length; i++){ 
			var leaves = branches[i].getElementsByClassName("mainCategory"); 		
			//add events to every category
			for(j = 0; j < leaves.length; j++){
				leaves[j].onclick = function(){ showDropdownNav(this); }
				leaves[j].onmouseover = function(){ showLayerNav(this); }			
				leaves[j].onmouseout = function(e){ 
						//get cursor and layer position
						var cursorX = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
						var cursorY = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;		
						var layerUL = this.getElementsByTagName("UL")[0];
						if(layerUL){
							var layer = $(layerUL.id); //layer to be shown		
							var layerX = layer.offsetLeft;
							var layerY = layer.offsetTop;
							//check if cursor is not over submenu
							
							if((cursorX+2 < layerX) || (cursorX > (layerX + layer.offsetWidth))
								|| (cursorY < layerY) || (cursorY > (layerY + layer.offsetHeight))){
								hideLayerNav(this); 						
							}
						}
					}				
								
				var layerUL = leaves[j].getElementsByTagName("UL")[0];
				var dropdownUL = leaves[j].getElementsByTagName("UL")[1];
				if(layerUL && dropdownUL){
					var blossomsLayer = layerUL.getElementsByClassName("subCategoryLayer");
					var blossomsDropdown = dropdownUL.getElementsByClassName("subCategory");
					//add events to every subcategory (layer and dropdown)
					for(k = 0; k < blossomsLayer.length; k++){
						blossomsLayer[k].onmouseover = function(){ changeClassName(this, "subCategoryLayer active"); }	
						blossomsLayer[k].onmouseout = function(){ changeClassName(this, "subCategoryLayer"); }
						
						if(blossomsDropdown[k].className != "subCategory selected"){
							blossomsDropdown[k].onmouseover = function(){ changeClassName(this, "subCategory active"); }	
							blossomsDropdown[k].onmouseout = function(){ changeClassName(this, "subCategory"); }
						}						
					}		
				}					
			}
		}
	}	
}


  // Popup-Basisfunktion
  function popup(url,optionen, popupName){
  // falls " newWin" als Popupname übergeben wird über eindeutigen
  // Fenster-(=target) und Javascript-Window-Objekt-Namen
  // immer neues Fenster erzwingen:
    if (popupName == "newWin") popupName =  popupName+Math.round( Math.pow( Math.random(), -10) );
    popupName = window.open(url,popupName,optionen);
    if (popupName)
    {
      if (popupName.focus)
      {
        popupName.focus();
      }
    }
    return false;
  }

  // Hier Popups definieren, EIgenschaften zuweisen (auch inline möglich)
  function kleinPopup(url, name) {
    popup(url, 'width=255,height=350,toolbar=0,menubar=0,resizable=1,scrollbars=no', name );
    return false;
  }
  function mittelPopup(url, name) {
    popup(url, 'width=380,height=490,toolbar=0,menubar=0,resizable=1,scrollbars=yes', name );
    return false;
  }
  function grossPopup(url, name) {
    popup(url, 'width=680,height=550,toolbar=0,menubar=0,resizable=1,scrollbars=no', name );
    return false;
  }
  //-->
 
