    var fadeColor 		= StringToColor("#FF8000");      
    var fadeId 			= new Array();
    var sObj 			= new Array();
	var SubMenu 		= new Array();
	var nObj 			= 0;    
    var macCompat 		= false;      
	var isNS 			= false;
	var isIE 			= false;	
	var flagOver 		= false;
	var flag 			= false;
	var flagWhichLayerActive = 0;
	var t = 0;
	var menuCount = 4;
	var flagNSStopShowingMenus = false;
	    
    fadeId[0] = null;
    
    	    
    document.onmouseover = domouseover;
    document.onmouseout = domouseout;
       
	if (parseInt(navigator.appVersion) >= 4) {
		if (navigator.appName == "Netscape") 
			isNS = true;
		else if(navigator.appName == "Microsoft Internet Explorer")	
			isIE = true;
	}	
	if(isNS) 
		window.onresize = stopShowingMenus;


	function overLink(){
		flag = true;
	}

	function TopMenuOver(MenuID,e){
   		if(flagNSStopShowingMenus) 
   			return
   		flagWhichLayerActive = MenuID;
   		flagOver = true;
   		clearTimeout(t);
   		if(isNS){
      		for(i=0;i < menuCount; i++){
         		if(MenuID == i) 
         			show(SubMenu[i]);
         		else 
         			hide(SubMenu[i]);
      		}
   		}
   		else if(isIE){
      		for(i=0;i < menuCount; i++){
         		if(MenuID == i) {
            		if(SubMenu[i].style.pixelLeft > -500 || SubMenu[i].style.pixelLeft < -500 ) 
            			return;
            		show(SubMenu[i]);
         		}
           		else 
           			hide(SubMenu[i]);
      		}
   		}
	}

	function TopMenuOut(MenuID1,e){
   		flagOver = false;
   		clearTimeout(t)
   		if(isNS) 
   			t = setTimeout("SubMenu[" + MenuID1 + "].style.visibility = 'hidden'",200);
   		else if(isIE) 
   			t = setTimeout("hide(SubMenu[" + MenuID1 + "])",200);
	}

	function hide(MenuObject){
		if(isNS)
			MenuObject.style.left = -500+"px";
		else
   			MenuObject.style.pixelLeft = -500;
	}

	function show(MenuObject){
   		if(isNS)
   			MenuObject.style.left = MenuObject.origLeft+"px";
   		else
   			MenuObject.style.pixelLeft = MenuObject.origLeft;
   		MenuObject.style.visibility = 'visible';
	}

	function submenuOver(e){
   		clearTimeout(t);
   		if(isNS){
   			SubMenu[flagWhichLayerActive].style.visibility = 'visible';
   			routeEvent(e);
   		}
   		else if(isIE) 
   			SubMenu[flagWhichLayerActive].style.visibility = 'visible';
   		
	}

	function submenuOut(e){
   		if(isNS){
   			if(flag){
   				flag=false;
   				return;
   			}
   			else if(flagOver){
   				flagOver = false;
   				return;
   			}
      		SubMenu[flagWhichLayerActive].style.visibility = 'hidden';
      		routeEvent(e);
   		}
   		else if(isIE){
      		if(SubMenu[flagWhichLayerActive].contains(event.toElement)) 
      			return;
      		if(event.toElement == document.all.nav0) 
      			return;
      		hide(SubMenu[flagWhichLayerActive]);
   		}
	}


	function stopShowingMenus(){ 
		flagNSStopShowingMenus = true;
	}

    
    function StringToColor(Color){
        var colorArr = new Array(3);
        var c;       

        Color = Color.toLowerCase();
        for (i1=0,i=1;i< 7;i += 2,i1++){
            for(j=0;j<2;j++){
                c = Color.charCodeAt(i+j);
                if(c > 47 && c < 58)
                    c -= 47;    
                else if(c > 96 && c < 103)
                    c -= 87;
                if(!j)
                    colorArr[i1] = c << 4; 
                else
                    colorArr[i1] += c;
            }
        }               
        return ((colorArr[0] << 16) | (colorArr[1] << 8) | colorArr[2]);
    }
    
    function domouseover() {
        if(!document.all)
            return;
        var srcElement = event.srcElement;
        if (srcElement.tagName != "A" || !srcElement.href)
            return;
        if (!srcElement.startColor)
            srcElement.startColor = (srcElement.style.color) ? srcElement.style.color : srcElement.currentStyle.color;
        var link = (macCompat ? srcElement.name : srcElement.uniqueID);
        if(!link || link == fadeId[0]) 
            return;        
        var s = StringToColor(srcElement.startColor);
        for(var i = 0; i <= 20; i++)
            fadeId[i+1] = setTimeout("setColor("+ s + ","+ fadeColor + "," + link + "," + i + "," + 20 + ");",i*20);
        fadeId[0] = link;
    }
    
    function domouseout() {
        if(!document.all)
            return;
        var srcElement = event.srcElement;
        if (srcElement.tagName != "A" || !srcElement.href)
            return;
        var link = (macCompat ? srcElement.name : srcElement.uniqueID);
        if (!link || fadeId[0] == null || !eval(fadeId[0])) 
            return;
        var orig = eval(fadeId[0]);         
        for(var i=1;i < fadeId.length;i++)
            clearTimeout(fadeId[i]);
        setColor(StringToColor(orig.startColor),StringToColor(orig.startColor),orig,0,20);
        fadeId[0] = null;
    }
    
    function NumberToString(i){
        i += 48;
        if(i > 57)
            i += 7;
        if(i > 70)
            return "F";
        return String.fromCharCode(i);
    }

    function ColorToString(r,g,b){
        var res,i1;

        res = "#";
        if(r < 0)
            res += "00";
        else if(r > 255)
            res += "FF";
        else{
            i1 = (r >> 4); 
            r -= (i1 << 4);
            res = NumberToString(i1);
            res += NumberToString(r);
        }
        if(g < 0)
            res += "00";
        else if(g > 255)
            res += "FF";
        else{
            i1 = (g >> 4); 
            g -= (i1 << 4);
            res += NumberToString(i1);
            res += NumberToString(g);
        }
        if(b < 0)
            res += "00";
        else if(b > 255)
            res += "FF";
        else{
            i1 = (b >> 4); 
            b -= (i1 << 4);
            res += NumberToString(i1);
            res += NumberToString(b);
        }
        return res;
    }

    function setColor(s,e, element,i,step) {
        var r,g,b,i1;

        r = Math.ceil(((e >> 16) & 0xFF) * i / step);
        g = Math.ceil(((e >> 8) & 0xFF) * i / step);
        b = Math.ceil((e & 0xFF) * i / step);
        
        i1 = (step-i);
        r += Math.ceil(((s >> 16) & 0xFF) * i1 / step);
        g += Math.ceil(((s >> 8) & 0xFF) * i1 / step);
        b += Math.ceil((s & 0xFF) * i1 / step);

        element.style.color = ColorToString(r,g,b);
    }
       

