//Global Variables
var skm_SelectedMenuStyleInfos=new Object();
var skm_UnselectedMenuStyleInfos=new Object();
var skm_MenuFadeDelays=new Object();
var skm_clockValue=0;
var skm_ticker;
var skm_highlightTopMenus=new Object();
var skm_images=new Array();
var skm_OpenMenuItems=new Array();
var skm_currentPage = "";
var skm_menuID = null;
//Methods to hook menu to global variables
function skm_registerMenu(menuID,selectedStyleInfo,unselectedStyleInfo,menuFadeDelay,highlightTopMenu){
	skm_menuID = menuID;
	skm_SelectedMenuStyleInfos[menuID]=selectedStyleInfo;
	skm_UnselectedMenuStyleInfos[menuID]=unselectedStyleInfo;
	skm_UnselectedMenuStyleInfos[menuID].getStyleInfoFromElement = skm_getStyleInfoFromElement;
	skm_MenuFadeDelays[menuID]=menuFadeDelay;
	skm_highlightTopMenus[menuID]=highlightTopMenu;

	var vMainMenu = document.getElementById(menuID);
	var vTds = vMainMenu.getElementsByTagName("td");
	if(vTds.length){
		skm_UnselectedMenuStyleInfos[menuID].getStyleInfoFromElement(vTds[0]);
	}
	
	if(skm_highlightTopMenus[menuID]){
		var vPathName = window.location.pathname.toLowerCase().split("/");

		var vIndex = 0;
		if(vPathName.length > 1){
			vIndex = 1;
		}
		
		skm_currentPage = vPathName[vIndex];
		skm_setSelectedMenu(menuID);
	}
}
function skm_setSelectedMenu(menuID){
	var vMainMenu = document.getElementById(menuID);
	var vTds = vMainMenu.getElementsByTagName("td");

	if(skm_currentPage == "" || skm_currentPage == window.location.host){
		var vOnClick = vTds[0].onclick.toString().split('\n');
		var vLocation = vOnClick[vOnClick.length-2].toLowerCase().split("/");
		var vCurPage = vLocation[vLocation.length-2].split(" =");
		
		if(vCurPage.length > 1){
			vCurPage = vCurPage[1];
		}
		else{
			vCurPage = vCurPage[0];
		}
		
		if(vCurPage.length == 2){
			delete vTds[0].onmouseout;
			vTds[0].onmouseout = null;
			vTds[0].className = skm_SelectedMenuStyleInfos[menuID].className;
		}
	}
	else{
		for(var n=0;n<vTds.length;n++){
			var vOnClick = vTds[n].onclick.toString().split('\n');
			var vLocation = vOnClick[vOnClick.length-2].toLowerCase().split("/");
			
			if(vLocation[vLocation.length-2] == skm_currentPage){
				vTds[n].onmouseout = null;
				vTds[n].className = skm_SelectedMenuStyleInfos[menuID].className;
			}
		}
	}
}
//Methods & contructor of skm_styleInfo object
function skm_applyStyleInfoToElement(element){
	element.style.backgroundColor=this.backgroundColor;
	element.style.borderColor=this.borderColor;
	element.style.borderStyle=this.borderStyle;
	element.style.borderWidth=this.borderWidth;
	element.style.color=this.color;
	if(this.fontFamily!='')element.style.fontFamily=this.fontFamily;
	element.style.fontSize=this.fontSize;
	element.style.fontStyle=this.fontStyle;
	element.style.fontWeight=this.fontWeight;

	if(this.className!='')element.className=this.className;
}
function skm_getStyleInfoFromElement(element){
	this.backgroundColor = element.style.backgroundColor;
	this.borderColor = element.style.borderColor;
	this.borderStyle = element.style.borderStyle;
	this.borderWidth = element.style.borderWidth;
	this.color = element.style.color;
	this.fontFamily = element.style.fontFamily;
	this.fontSize = element.style.fontSize;
	this.fontStyle = element.style.fontStyle;
	this.fontWeight = element.style.fontWeight;
	this.className = element.className;
}
function skm_styleInfo(backgroundColor,borderColor,borderStyle,borderWidth,color,fontFamily,fontSize,fontStyle,fontWeight,className){
	this.backgroundColor=backgroundColor;
	this.borderColor=borderColor;
	this.borderStyle=borderStyle;
	this.borderWidth=borderWidth;
	this.color=color;
	this.fontFamily=fontFamily;
	this.fontSize=fontSize;
	this.fontStyle=fontStyle;
	this.fontWeight=fontWeight;
	this.className=className;
	this.applyToElement=skm_applyStyleInfoToElement;
}
//MouseEventHandlers
function skm_mousedOverMenu(menuID,elem,parent,displayedVertically,imageSource){
	skm_stopTick();
	skm_closeSubMenus(elem);
	var childID=elem.id+"-subMenu";//Display child if needed
	if(document.getElementById(childID)!=null){//make child visible & specify that its position is absolute

		document.getElementById(childID).style.display='block';
		document.getElementById(childID).style.position='absolute';
		skm_OpenMenuItems=skm_OpenMenuItems.concat(childID);
		if(displayedVertically){//Set child menu left/top according to menu offsets
			/*LS FIX START*/
			var newLeft=(document.all)?skm_getAscendingLefts(parent)+parent.offsetWidth:(skm_getAscendingLefts(parent)+parent.offsetWidth)+'px';
			var newTop=(document.all)?skm_getAscendingTops(elem):skm_getAscendingTops(elem)+'px';
			document.getElementById(childID).style.left=newLeft;
			document.getElementById(childID).style.top=newTop;
			/*LS FIX END*/
			var visibleWidth=parseInt(window.outerWidth?window.outerWidth-9:document.body.clientWidth,10);
			if((parseInt(document.getElementById(childID).offsetLeft,10)+parseInt(document.getElementById(childID).offsetWidth,10))>visibleWidth){
				document.getElementById(childID).style.left=visibleWidth-parseInt(document.getElementById(childID).offsetWidth,10);
			}
		}else{//Set child menu left/top according to the menu offsets
			/*LS FIX START*/
			var newLeft=(document.all)?skm_getAscendingLefts(elem):skm_getAscendingLefts(elem)+'px';
			var newTop=(document.all)?skm_getAscendingTops(parent)+parent.offsetHeight:(skm_getAscendingTops(parent)+parent.offsetHeight)+'px';
			document.getElementById(childID).style.left=newLeft;
			document.getElementById(childID).style.top=newTop;
			/*LS FIX END*/
			if(document.getElementById(childID).offsetWidth<elem.offsetWidth)
				document.getElementById(childID).style.width=elem.offsetWidth;
		}
	}
	if(skm_SelectedMenuStyleInfos[menuID]!=null){
		skm_SelectedMenuStyleInfos[menuID].applyToElement(elem);
	}

	var eId=elem.id+'';
	while(eId.indexOf('-subMenu')>=0){
		eId=eId.substring(0,eId.lastIndexOf('-subMenu'));
	}
	var vMenu = document.getElementById(eId);
	vMenu.className = skm_SelectedMenuStyleInfos[menuID].className;
	try{
		var vImg = vMenu.getElementsByTagName("img")[0];
		var vSrc = vImg?vImg.src.replace('_off', '_on'):"";
		setimage(vMenu, vSrc);
	}
	catch(e){}

	
	if(imageSource!=''){
		setimage(elem, imageSource)
	}
}

function skm_mousedOverClickToOpen(menuID,elem,parent,imageSource){
	skm_stopTick();
	if(skm_SelectedMenuStyleInfos[menuID]!=null){
		skm_SelectedMenuStyleInfos[menuID].applyToElement(elem);
	}

	if(imageSource!=''){
		setimage(elem,imageSource)
	}
}
function skm_mousedOverSpacer(menuID,elem,parent){
	skm_stopTick();
}
function skm_mousedOutMenu(menuID,elem,imageSource){
	skm_doTick(menuID);
	
	if(skm_UnselectedMenuStyleInfos[menuID]!=null){
		skm_UnselectedMenuStyleInfos[menuID].applyToElement(elem);
	}
	
	if(imageSource!='' ){
		setimage(elem,imageSource)
	}
}
function skm_mousedOutSpacer(menuID,elem){
	//skm_doTick(menuID);
}
//Utility Functions
function skm_closeSubMenus(parent){
	if(skm_OpenMenuItems=="undefined")return;
	for(var i=skm_OpenMenuItems.length-1;i>-1;i--){
		if(parent.id.indexOf(skm_OpenMenuItems[i])!=0){
			var eId=skm_OpenMenuItems[i];
			while(eId.indexOf('-subMenu')>=0){
				eId=eId.substring(0,eId.lastIndexOf('-subMenu'));
			}
			var vMenu = document.getElementById(eId);
			try{
				skm_UnselectedMenuStyleInfos[skm_menuID].applyToElement(vMenu);
				var vImg = vMenu.getElementsByTagName("img")[0];
				var vSrc = vImg?vImg.src.replace('_on', '_off'):"";
				setimage(vMenu, vSrc);
			}
			catch(e){}
			
			document.getElementById(skm_OpenMenuItems[i]).style.display='none';
			skm_shimSetVisibility(false,skm_OpenMenuItems[i]);
			skm_OpenMenuItems=new Array().concat(skm_OpenMenuItems.slice(0,i),skm_OpenMenuItems.slice(i+1));
		}
	}
}
function skm_shimSetVisibility(makevisible,tableid){
	var tblRef=document.getElementById(tableid);
	var IfrRef=document.getElementById('shim'+tableid);
	if(tblRef!=null&&IfrRef!=null){
		if(makevisible){
			IfrRef.style.width=tblRef.offsetWidth;
			IfrRef.style.height=tblRef.offsetHeight;
			IfrRef.style.top=tblRef.style.top;
			IfrRef.style.left=tblRef.style.left;
			IfrRef.style.zIndex=tblRef.style.zIndex-1;
			IfrRef.style.display="block";
		}else{
			IfrRef.style.display="none";
		}
	}
}
function skm_IsSubMenu(id){
	if(typeof(skm_subMenuIDs)=='undefined')return false;
	for(var i=0;i<skm_subMenuIDs.length;i++)
		if(id==skm_subMenuIDs[i])return true;
	return false;
}
function skm_getAscendingLefts(elem){
	if(elem==null)
		return 0;
	else{
		if((elem.style.position=='absolute'||elem.style.position=='relative')&&!skm_IsSubMenu(elem.id))return 0;
		return elem.offsetLeft+skm_getAscendingLefts(elem.offsetParent);
	}
}
function skm_getAscendingTops(elem){
	if(elem==null)
		return 0;
	else{
		if((elem.style.position=='absolute'||elem.style.position=='relative')&&!skm_IsSubMenu(elem.id))return 0;
		return elem.offsetTop+skm_getAscendingTops(elem.offsetParent);
	}
}
//Fade Functions
function skm_doTick(menuID){
	if(skm_clockValue>=skm_MenuFadeDelays[menuID]){
		skm_stopTick();
		var vElem = document.getElementById(menuID);
		skm_closeSubMenus( vElem );
	}else{
		skm_clockValue++;
		skm_ticker=setTimeout("skm_doTick('"+menuID+"');",500);
	}
}
function skm_stopTick(){
	skm_clockValue=0;
	clearTimeout(skm_ticker);
}
function preloadimages(){
	for(i=0;i<preloadimages.arguments.length;i++){
		skm_images[i]=new Image();
		skm_images[i].src=preloadimages.arguments[i];
	}
}
function setimage(elem,imageSource){
	try{
		var i=elem.getElementsByTagName("img")[0];
		i.src=imageSource;
	}
	catch(e){}
}

