﻿<!--
// JScript File
/// <reference path="MicrosoftAjax.js" />
/// <reference path="../WLJQuery/jquery-1.4.1-vsdoc.js" />


//Region 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 wl_GLastSelectedMenuId='';

//var skm_previousMenu;
//EndRegion
//Region Methods to hook up a menu to the global variables
function skm_registerMenu(menuID, selectedStyleInfo, unselectedStyleInfo, menuFadeDelay, highlightTopMenu){
	skm_SelectedMenuStyleInfos[menuID]=selectedStyleInfo;
	skm_UnselectedMenuStyleInfos[menuID]=unselectedStyleInfo;
	skm_MenuFadeDelays[menuID]=menuFadeDelay;
	//skm_highlightTopMenus[menuID]=highlightTopMenu;
    skm_highlightTopMenus[menuID]=true;
}
//Region The methods and contructor of the 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.style.className=this.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;
}

function getPropertyValueFromCss(className, propertyName)
{
    var toReturn = null;
	if (document.styleSheets) {	
    for (var i = 0; i < document.styleSheets.length; i++)
    {
        var cssRules = null;
        //WL:START add a try and catch due to Security error in FF for retrieving widget55.css->? 
        try{
            // IE
            if (document.styleSheets[i].rules) {
                cssRules = document.styleSheets[i].rules;
            }
            // Mozilla and others
            else if (document.styleSheets[i].cssRules) {
                cssRules = document.styleSheets[i].cssRules;
            }
        }
        catch(e){
        if (cssRules != null) {
            for (var j = 0; j < cssRules.length; j++) {
                if (cssRules[j].selectorText == ("." + className) && cssRules[j].style[propertyName] != null)
                {
                    toReturn = cssRules[j].style[propertyName];
                }
            }
        }
        }
    }
    }
    return toReturn;
}

//Region MouseEventHandlers
var lastMenuOpen = null;

function skm_mousedOverMenu(menuID,elem,parent,displayedVertically,imageSource, leftImage, rightImage, overStyle, browser, uniqueId,rtl){

    // = WL: START (Ovverid menu behavior) ==============
    //skm_mousedOverMenuOverride(elem);
    //return;
	// = WL: END (Ovverid menu behavior) ================

	skm_stopTick();
	skm_closeSubMenus(elem);
	
    //wl:start shani 
    var parentElementID = elem.id;
    var menuNum = parentElementID.indexOf("-") + 4;
    var tmpNum = parentElementID.lastIndexOf("-")+ 4;

    parentElementID = parentElementID.substring(0, menuNum);
    if(menuNum != tmpNum)    parentElementID = parentElementID.substring(0, tmpNum);
    
    // set back hightlighted menu when out from submenus
    if(lastMenuOpen != null && lastMenuOpen != parentElementID) $("[id=" + lastMenuOpen +"]").removeClass("CMSMenuHighlightedMenuItem").addClass("CMSMenuItem");
    
    // set the highlighted tab to highlight
    if(currentTabOpen) $("[id=" + currentTabOpen +"]").removeClass("CMSMenuItem").addClass("CMSMenuHighlightedMenuItem");
    
    // set hightlight menu when go over submenus
    $("[id=" + parentElementID +"]").removeClass("CMSMenuItem").addClass("CMSMenuHighlightedMenuItem");
    lastMenuOpen = parentElementID;
    //wl:end shani 
	
	var childID=elem.id+"-subMenu";  // Display child menu if needed
	if (document.getElementById(childID)!=null){  // make the child menu visible and specify that its position is specified in absolute coordinates
		child = document.getElementById(childID);
		if (child.style)
		{
			child = child.style;
		}	
		//child.display='block';
        child.display='';//WL:START - changed to '' by eran
		child.position='absolute';

		// get width of CMSMenu from css stylesheet
		var tableWidth = getPropertyValueFromCss(document.getElementById(childID).className, "width");
		if (tableWidth != null)
		{
			child.width = tableWidth;
		}

		skm_OpenMenuItems = skm_OpenMenuItems.concat(childID);
		if (displayedVertically){ // Set the child menu's left and top attributes according to the menu's offsets
			child.left=(skm_getAscendingLefts(parent)+parent.offsetWidth) + 'px';
			if (rtl)
			{
			    child.left=(skm_getAscendingLefts(parent)-document.getElementById(childID).offsetWidth) + 'px';
			}
			child.top=skm_getAscendingTops(elem) + 'px';
	
			
			var visibleWidth=parseInt(window.outerWidth?window.outerWidth-9:document.body.clientWidth,10);						
			if ( (parseInt(skm_getElementLeft(document.getElementById(childID)),10) + parseInt(document.getElementById(childID).offsetWidth,10))>visibleWidth) {				
				//document.getElementById(childID).style.backgroundColor='red';				
				var oldpos = document.getElementById(childID).offsetLeft;
				var width = parseInt(document.getElementById(childID).offsetWidth,10);
				var newpos = oldpos - parent.offsetWidth - width;
				child.left = newpos + 'px';
				/* due to incorrect movement when not defined width in css stylesheet, it is important to move new submenu
				(displayed on the left from actual submenu) UNDER actual submenu. Otherwise some items from actual submenu
				may be not visible. */
				child.zIndex = skm_getElemZIndex(parent) - 1;
			} else {
				child.zIndex = skm_getElemZIndex(parent) + 10;
			}
		}else{  // Set the child menu's left and top attributes according to the menu's offsets		
			child.left=skm_getAscendingLefts(elem) + 'px';	
			//child.top=(skm_getAscendingTops(parent)-document.getElementById(childID).offsetHeight) + 'px';
            child.top=(skm_getAscendingTops(parent)+parent.offsetHeight) + 'px';
			if (document.getElementById(childID).offsetWidth<elem.offsetWidth)
			{
				child.width=elem.offsetWidth + 'px';			
				}
				else
		    {
		        if (rtl){
		        child.left = skm_getAscendingLefts(elem) - (document.getElementById(childID).offsetWidth - elem.offsetWidth) + 'px';
		        }
		    }
		}
	}
	if (skm_SelectedMenuStyleInfos[menuID] != null) 
        skm_SelectedMenuStyleInfos[menuID].applyToElement(elem);
	if (skm_highlightTopMenus[menuID]){
		var eId=elem.id+'';
		while (eId.indexOf('-subMenu')>=0){
			eId=eId.substring(0, eId.lastIndexOf('-subMenu'));
			skm_SelectedMenuStyleInfos[menuID].applyToElement(document.getElementById(eId));
            
		}
	}	
	//WL: START
    wl_GLastSelectedMenuId = elem.id+"";
    //WL: END
	
	
	var index = 0;
	
	if (leftImage!='')
	{
	    var i=elem.getElementsByTagName("img")[index];
	    if (i != null)
	    {
	        i.src=leftImage;
	        index++;
	    }
	}
	
	
	if (imageSource!=''){
	    var i=elem.getElementsByTagName("img")[index];
	    if (i != null)
	    {
	        i.src=imageSource;
	        index++;
	        }
	
	}
	
	if (rightImage!='')
	{
	    var i=elem.getElementsByTagName("img")[index];
	    if (i != null)
	    {
	        i.src=rightImage;
	        index++;
	    }
	}
	

	
	if (overStyle != '')
	{
	    if (browser == 'IE') 
	    {

	        if (document.styleSheets.length == 0)
	        {
	            document.createStyleSheet('extrastyle.css');  
	        }
    	        document.styleSheets[0].addRule(".OverClass_skm_Menu_CMS" + uniqueId, overStyle);
	    }
	    else
	    {
	        if (elem.attributes['style'] != null)
	        {
	    	    elem.attributes['style'].value =  overStyle + elem.attributes['style'].value;		
    	    }
	        else
	        {
	            elem.attributes['style'].value =  overStyle;
	        }
    	}
	}
	

	
}
function skm_mousedOverClickToOpen(menuID,elem,parent,imageSource){
	skm_stopTick();
	if (skm_SelectedMenuStyleInfos[menuID] != null) skm_SelectedMenuStyleInfos[menuID].applyToElement(elem);
	if (skm_highlightTopMenus[menuID]){
		var eId=elem.id+'';
		while (eId.indexOf('-subMenu')>=0){
			eId=eId.substring(0, eId.lastIndexOf('-subMenu'));
			skm_SelectedMenuStyleInfos[menuID].applyToElement(document.getElementById(eId));
		}
	}	
	if (imageSource!=''){
		setimage(elem,imageSource)
	}
}
function skm_getElemZIndex(elem)
{
	if (elem == null)
	{
		return -1;
	} else if (elem.style.zIndex == undefined){
		return 100;
	} else {
		return elem.style.zIndex;
	}		
}
function skm_mousedOverSpacer(menuID,elem,parent){
	skm_stopTick();
}

function skm_mousedOutMenu(menuID,elem,imageSource,cssClass, defaultStyle, browser, uniqueId, leftImage, rightImage){
    
    // = WL: START (Ovverid menu behavior) ==============
    //skm_mousedOutMenuOverride(elem);
    //return;
	// = WL: END (Ovverid menu behavior) ================

	if (document.getElementById('lastSelectedItemID_' + menuID) != null)
		{
		if (document.getElementById('lastSelectedItemID_' + menuID).value == elem.id)	
			{
			  return;
			}
		}
		
		
	skm_doTick(menuID, elem);
	if (skm_UnselectedMenuStyleInfos[menuID] != null) skm_UnselectedMenuStyleInfos[menuID].applyToElement(elem);
	if (skm_highlightTopMenus[menuID]){
		var eId=elem.id+'';
		while (eId.indexOf('-subMenu')>=0){
			eId=eId.substring(0, eId.lastIndexOf('-subMenu'));
			skm_UnselectedMenuStyleInfos[menuID].applyToElement(document.getElementById(eId));
		}
	}
    //if (elem.id != wl_GLastSelectedMenuId)
	    settd(elem,cssClass);
	
	var index = 0;
	
	if (leftImage!='')
	{
	    var i=elem.getElementsByTagName("img")[index];
	    if (i != null)
	    {
	    i.src=leftImage;
	    index++;
	    }
	}
	
	
	if (imageSource!=''){
	    var i=elem.getElementsByTagName("img")[index];
	    if (i != null)
	    {
	        i.src=imageSource;
	        index++;
	        }
	
	}
	
	if (rightImage!='')
	{
	    var i=elem.getElementsByTagName("img")[index];
	    if (i != null)
	    {
	        i.src=rightImage;
	     index++;
	     }
	}
	
	if (defaultStyle != '')
	{
	    if (browser == 'IE')
	    {
	        if (uniqueId != '')
	        {
	            if (document.styleSheets.length == 0)
	            {
	                document.createStyleSheet('extrastyle.css');  
	            }
	     
    	            document.styleSheets[0].addRule(".OverOut_skm_Menu_CMS_" + uniqueId, defaultStyle);
	        }
        }
	    else
	    {
	            if (elem.attributes['style'] != null)
	            {
	                elem.attributes['style'].value =  defaultStyle + elem.attributes['style'].value;
	            }
	            else
	            { 
	                elem.attributes['style'].value =  defaultStyle;
	            }
    	}
}

}

function skm_mousedOutSpacer(menuID, elem){
	skm_doTick(menuID, elem);

}
//Region 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) {
			if (document.getElementById(skm_OpenMenuItems[i]) != null) {
				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"; 
            IfrRef.style.display="none";//WL:START - Changed to none by eran
		}else{
			IfrRef.style.display="none";
		}
	}
}
function skm_IsSubMenu(id){
	if (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
	{
		var elemPosition = getPropertyValueFromCss(elem.className,'position');
		if ((elemPosition=='absolute' || elemPosition=='relative') && !skm_IsSubMenu(elem.id)) return 0;
		var x = elem.offsetLeft+skm_getAscendingLefts(elem.offsetParent);
		return x;
	}
}
function skm_getElementLeft(elem)
{
	if (elem==null)
	{
		return 0;
	} else {
		return elem.offsetLeft + skm_getElementLeft(elem.offsetParent);
	}	
}
function skm_getAscendingTops(elem){
	if (elem==null)
		return 0;
	else {	
		var elemPosition = getPropertyValueFromCss(elem.className,'position');
		var parent = skm_getAscendingTops(elem.offsetParent);		
        if ((elemPosition=='absolute' || elemPosition=='relative') && !skm_IsSubMenu(elem.id)) return 0;
		return elem.offsetTop + parent;
	}
}
//Region Fade Functions
function skm_doTick(menuID, elem){
    var parentElementID = elem.id;
    var menuNum = parentElementID.indexOf("-") + 4;
    var tmpNum = parentElementID.lastIndexOf("-")+ 4;

    parentElementID = parentElementID.substring(0, menuNum);
    if(menuNum != tmpNum)    parentElementID = parentElementID.substring(0, tmpNum);

	if (skm_clockValue>=skm_MenuFadeDelays[menuID]){
        skm_stopTick();
		skm_closeSubMenus(document.getElementById(menuID));  
        
        // set back hightlighted menu when out from submenus
        $("[id=" + parentElementID +"]").removeClass("CMSMenuHighlightedMenuItem").addClass("CMSMenuItem");
        // set the highlighted tab to highlight
        if(currentTabOpen) $("[id=" + currentTabOpen +"]").removeClass("CMSMenuItem").addClass("CMSMenuHighlightedMenuItem");

	} else {
		skm_clockValue++;
		//skm_ticker=setTimeout("skm_doTick('"+menuID +"');", 500);
        skm_ticker=setTimeout(function(){ skm_doTick(menuID,elem);},200); /*changed - shani*/

	}
}
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){
	var i=elem.getElementsByTagName("img")[0];
	i.src=imageSource;
}
function settd(elem,styleName){
	elem.className=styleName;
		
}
function skm_selectNewItem(menuID, elem, imageSource, normalImageSource, className, normalClassName){
	if (document.getElementById('lastSelectedItemID_' + menuID).value != elem.id)
	{	  
	  //set original values
	  setimage(document.getElementById(document.getElementById('lastSelectedItemID_' + menuID).value), document.getElementById('lastSelectedItemNormalImageSource_' + menuID).value);			
	  settd(document.getElementById(document.getElementById('lastSelectedItemID_' + menuID).value), document.getElementById('lastSelectedItemNormalClassName_' + menuID).value);
	  //store values
	  document.getElementById('lastSelectedItemID_' + menuID).value = elem.id;
	  document.getElementById('lastSelectedItemNormalImageSource_' + menuID).value = normalImageSource;
	  document.getElementById('lastSelectedItemNormalClassName_' + menuID).value = normalClassName;
	  //set new values
	  setimage(elem, imageSource);				  
	  settd(elem, className);
	}
}
//-->
