var currentMenu = null;
// Den menyn som visas för tillfället... Alla parents och ett child visas...
var visibleMenus = new Array();

var strOnImage = null;
var onImages = new Array();
var offImages = new Array();
function preloadPicture(){
	if (document.images){
		offImages["imgHem"] = new Image(64,30);
		offImages["imgHem"].src = "img/nav/hem_off.gif";
		offImages["imgOss"] = new Image(76,30);
		offImages["imgOss"].src = "img/nav/om_oss_off.gif";
		offImages["imgProdukter"] = new Image(92,30);
		offImages["imgProdukter"].src = "img/nav/produkter_off.gif";
		offImages["imgTjanster"] = new Image(85,30);
		offImages["imgTjanster"].src = "img/nav/tjanster_off.gif";
		offImages["imgKunder"] = new Image(76,30);
		offImages["imgKunder"].src = "img/nav/kunder_off.gif";
		offImages["imgKontakt"] = new Image(106,30);
		offImages["imgKontakt"].src = "img/nav/kontakta_oss_off.gif";
		offImages["imgEnglish"] = new Image(59,30);
		offImages["imgEnglish"].src = "img/nav/language_en.gif";

		onImages["imgHem"] = new Image(64,30);
		onImages["imgHem"].src = "img/nav/hem_on.gif";
		onImages["imgOss"] = new Image(76,30);
		onImages["imgOss"].src = "img/nav/om_oss_on.gif";
		onImages["imgProdukter"] = new Image(92,30);
		onImages["imgProdukter"].src = "img/nav/produkter_on.gif";
		onImages["imgTjanster"] = new Image(85,30);
		onImages["imgTjanster"].src = "img/nav/tjanster_on.gif";
		onImages["imgKunder"] = new Image(76,30);
		onImages["imgKunder"].src = "img/nav/kunder_on.gif";
		onImages["imgKontakt"] = new Image(106,30);
		onImages["imgKontakt"].src = "img/nav/kontakta_oss_on.gif";
		onImages["imgEnglish"] = new Image(59,30);
		onImages["imgEnglish"].src = "img/nav/language_en.gif";
	}
}
function imageOn(imgNamn){	
	if (onImages[imgNamn]){
		document.images[imgNamn].src = onImages[imgNamn].src;
	}
}
function imageOff(imgNamn){
	if (offImages[imgNamn]){
		document.images[imgNamn].src = offImages[imgNamn].src;
	}
}
function changeImage(strImgName){
	if (strOnImage) imageOff(strOnImage);
	strOnImage = strImgName;
	imageOn(strImgName);
}
function showMenu(varMenu,strLayerID,objElement,dir,offset){
   if (typeof varMenu == "object") {
	   var objBase = varMenu;
   } else {
	   var objBase = document.getElementById(varMenu);
   }

	// objBase är nu det objekt (bild) som undermenyn ligger i
	// T.ex. bilden imgOss (som ligger i lagret mainNav och har klassen mainNavItem

	if (objBase.currentLink) deactivateNavItem(objBase.currentLink); 
	// Om objektet redan har en currentLink så anropas funktionen deactivateNavItem som ändrar objektets klassnamn

	objBase.currentLink = objElement;
	// objektets currentLink sätts till objElemnt (alltså det object som menyn kommer att visas ifrån)
	
	activateNavItem(objBase.currentLink);
	// Funktionen activateNavItem anropas och ändrar objElemtents klassnamn
	
	visibleMenus[visibleMenus.length] = objBase;
	// Objektet objBase (e.x. bilden imgOss) sparas i arrayen visibleMenu

	objBase.onmouseout = function(){currentMenu = null; setTimeout("hideMenus()",50);};

   if (strLayerID == null && dir == null && offset == null) {
      noSubMenu(pMenu);
      return;
   }
   
   var layMenu = document.getElementById(strLayerID);
   // layMenu är det lagret som ska visas
   
   if (typeof layMenu == "undefined" || layMenu == null ) return;     
   // Om lagret inte är laddat ännu så avbryt
     
   var top = getOffsetProperty(objElement, "Top", "layerNav");   
   var left = getOffsetProperty(objElement, "Left", "layerNav");
   // Här anropas funktionen getOffsetProperty som hämtar avstånd i pixlar relativt olika objekt
   // Kom ihåg: objElement är det object som menyn kommer att visas ifrån
   var width = objElement.offsetWidth;
   var height = objElement.offsetHeight;

   if (top == "NaN" || left == "NaN") return;  

   if (offset == null || typeof offset == "undefined") offset = 0;

   switch(dir) {
      case "b" : {
      	layMenu.style.top  = (top+height+offset)+"px";
        layMenu.style.left = (left)+"px";
        break;
      }      
      case "r" : {
        layMenu.style.top  = (top-offset)+"px";
        layMenu.style.left = (left+width+offset)+"px";
        // mac ie5.2 hack //bad form but it works
        var ua = navigator.userAgent.toLowerCase(); 
        var ieMac    = ((ua.indexOf("msie") != -1) && (ua.indexOf("mac")!=-1)); 
        if (ieMac) layMenu.style.left = (parseInt(layMenu.style.left)-15)+"px";
        break;
	  }
   }
   layMenu.style.visibility='visible';

	if (layMenu.currentLink) {
		deactivateNavItem(layMenu.currentLink);
   		layMenu.currentLink = null;
   	}
   	currentMenu = objBase;
   	objBase.childMenu  = layMenu;
   	layMenu.parentMenu = objBase;
   	visibleMenus[visibleMenus.length] = layMenu;

   	layMenu.onmouseout = function(){currentMenu = null; setTimeout("hideMenus()",50);};
}

function hideMenus() {
   var mTreeBase = currentMenu;
   var resetVisArray = new Array();
   var activeMenuArray = new Array();

   if (mTreeBase != null) {
      do {
      	activeMenuArray[activeMenuArray.length] = mTreeBase;
      	activeMenuArray[activeMenuArray.length] = mTreeBase.shadow;
      	mTreeBase = mTreeBase.parentMenu;
      } while (mTreeBase != null);
	  
      if (currentMenu.childMenu != null) {
      	activeMenuArray[activeMenuArray.length] = currentMenu.childMenu;
      	activeMenuArray[activeMenuArray.length] = currentMenu.childMenu.shadow;
      }
   }

	for (i=visibleMenus.length-1 ; i>=0 ; i--) {
   		var layTemp = visibleMenus[i];
    	if (layTemp == null) continue;
    	var hideIt = true;
        for(j=0;j < activeMenuArray.length;j++) {
        	if(layTemp == activeMenuArray[j]){
            hideIt = false;
            break;
         	}
       	}
    	if (hideIt == true) {
    		if(layTemp.className.indexOf('mainNavItem') < 0) {
				layTemp.style.visibility='hidden';
    		}
    		if(layTemp.currentLink) {
    			deactivateNavItem(layTemp.currentLink);
        		layTemp.currentLink = null;
    		} 
    	} else{
     		resetVisArray[resetVisArray.length] = layTemp;
    	}
   	}
   	visibleMenus = resetVisArray;
	if (visibleMenus.length == 0) {
		imageOff(strOnImage);
		strOnImage = null;
	}
}

function noSubMenu(item) {   
   alert("ingen sub menu");
   if (typeof item == "object") {
      currentMenu = item;
   } else {
      currentMenu = document.getElementById(item);
   }
   currentMenu.childMenu = null;
   hideMenus();
}

function activateNavItem(item) {  
	// Funktionen anropas med argumentet objElemtent (som är det objekt som menyn kommer att visas ifrån)
	// Om klassnamnet för objektet innehåller "mainNavItem" (huvudmenyn) så blir det "mainNavItem topNavActive"
	// Om klassnamnet innehåller "NonActiveItem" så ändras det till "activeItem"
	// Annars blir klassnamnet "activeItem" + det tidigare klassnamnet
	
//   if (item.className.indexOf(topCurrentClassName) >= 0) {
//      return;
//   } else {
   item.doNotDeactivate = false;
//   }
   
   if (item.className.indexOf('mainNavItem') >= 0) {      
        item.className = 'mainNavItem topNavActive';
   } else {
      if (item.className.indexOf('nonActiveItem') > 0) {
 	       item.className = item.className.replace('nonActiveItem','activeItem');
      } else {
         item.className = 'activeItem '+ item.className;
      }
   }
   
}

function deactivateNavItem(item) {
// Kollar upp argumentobjektets klass namn 
// Om klassnamnet innehåller "mainNavItem" (Huvudmenyn) så blir det bara "mainNavItem"
// Om klassnamnet innehåller "activeItem" så ändras det till "nonActiveItem"
// Annars blir klassnamnet "nonActiveItem" + det tidigare klassnamnet

//   if (item.className.indexOf(topCurrentClassName) >= 0) return;
   if (item.className.indexOf('mainNavItem') >= 0) {      
         item.className = 'mainNavItem';
   } else {
      if (item.className.indexOf('activeItem') > 0) {
         item.className = item.className.replace('activeItem','nonActiveItem');
      } else {
        item.className = 'nonActiveItem '+ item.className;
      }
   }
}


/**********************************************************************
   Retrive the offset Left or Top of an elm relative to another
 *********************************************************************/
// Ett anrop kan t.ex se ut: getOffsetProperty(objElement, "Top", "mainNav");

function getOffsetProperty(elementID, property, relativeElmID) {
   	var offset = 0;
   	if (typeof elementID == "object") {
	   	var element = elementID;
   	} else {
		var element = document.getElementById(elementID);
   	}  

	if (typeof element == "undefined" || element == null) {
   		return "NaN";  
   	}
   
   var relativeElm = document.getElementById(relativeElmID);
   if (relativeElm == null || typeof relativeElm == "undefined") relativeElm = document.body;
   
   do {
      offset += eval('element.offset' + property);
      element = element.offsetParent;
      // mac ie5.2 hack //bad form but it works
      var ua = navigator.userAgent.toLowerCase(); 
      var ieMac    = ((ua.indexOf("msie") != -1) && (ua.indexOf("mac")!=-1)); 
      if (ieMac && element == relativeElm) offset -= eval('element.offset' + property)
   } while (element != relativeElm && element != null);
   
   return parseInt(offset);
}

