function Array_shift() {
    var A_s = 0;
    var response = this[0];
    for (A_s = 0; A_s < this.length-1; A_s++) {
        this[A_s] = this[A_s + 1]
    }
    this.length--;
    return response;
}

if (typeof (Array.prototype.shift) == "undefined") {
    Array.prototype.shift = Array_shift;
}

var intervals=new Array();

var keepSub = 0;
var keepSubFather = 0;
var e;

function doTrans(subNum , endVal ) {
	subObj = $ ("menuSub"+subNum);
	if (subObj){
		if (subObj.filters[0].opacity < endVal){
			subObj.filters[0].opacity = parseInt (subObj.filters[0].opacity) + 33;
			setTimeout ("doTrans("+subNum+","+endVal+")" , 20);
		}else{
			subObj.filters[0].opacity = endVal;
		}
	}
}

function getSrc(e){
	return (e.srcElement)?(e.srcElement):(e.target);
}

function openSub(subNum,evt){
	if (is_ie5)return;
	var add;
	var subObj = $("menuSub" + subNum);

	if (subObj && allSubs[subNum]){
		clearAllClosings ();
		keepSub = subNum ;
		keepSubFather = allSubs[subNum] ;
		// closes all menus and children, except for keepSub
		closeAllSub();
		if (is_ie && ie55up){
			if (subObj.filters.length>0){
				subObj.filters[0].opacity = 0;
            }
            // set widths of links to width of menu if subNum = 990 (language)
            if (subNum = 990) {
                for (var i = 0; i < subObj.children[0].children.length; i++) {
                    subObj.children[0].children[i].style.width = subObj.offsetWidth - 20 + "px";
                } 
            }        }
		
		subObj.style.visibility = "visible";
		e = (isIE)? (window.event):(evt);
		if (allSubs[subNum]=="0"){
			var add = (!is_opera)?(10):(-20);
			subObj.style.top = ( getOffsetTop ($("menuFather" + subNum)) + add) + "px";

			add = (!is_opera)?(-5):(-200);

			subObj.style.left = (getOffsetLeft (getSrc(e))+add) + "px";
			if (subNum==999)subObj.style.left = (parseInt(subObj.style.left)-46)+"px";

			fatherWidth = $("menuFather" + subNum).scrollWidth;
			fatherWidth = (fatherWidth<130)?(130):(fatherWidth);
			if (is_ie7)fatherWidth=150;
			subObj.style.width =  (fatherWidth ) + "px";
		}else{
			subObj.style.top = getOffsetTop (getSrc(e)) + "px" ;
			subObj.style.left = getOffsetLeft (getSrc(e)) + "px";
		}

		lastSubNum = subNum;

		if (ie55up && subObj.filters){
			if (subObj.filters.length>0){
				doTrans(subNum , 100);
			}
		}
	}
}

function closeAllSub(){
	for (var i in allSubs)
		if ($("menuSub" + i) && i!=keepSub && i!=keepSubFather ) {
			$("menuSub" + i).style.visibility= "hidden";
			var lis = document.getElementsByClassName("menuItem");
			if(lis && lis.length > 0)
				for(var c=0; c<lis.length;c++) lis[c].className = lis[c].className.replace(/open/gi,'');
			var divs = document.getElementsByClassName('submenuSub');
			if(divs && divs.length > 0)
				for(var c=0; c<divs.length;c++) divs[c].style.height="20px";
		}
}

var closeTimeoutAr = [] ;
var lastTimeoutId = 0;
function checkIfClose (num, evt){
	if (is_ie5)return;
	clearAllClosings ();
	e = (isIE)? (window.event):(evt);

	if (e){
		eEl = (isIE)?(e.toElement):(e.relatedTarget);
		// Make sure it isn't a child element of a menu
		var tg = (isIE)?(e.srcElement):e.target;
		if(tg==null || eEl==null) return;
		var reltg = eEl;
		while(reltg != tg && reltg.nodeName != 'BODY' && (reltg.id == null || reltg.id.toLowerCase().indexOf("menu") != 0)) reltg=reltg.parentNode;
		if(reltg==tg || reltg.id.toLowerCase().indexOf("menu") == 0) return;
		
		if (eEl){
			if (eEl.id.toLowerCase().indexOf ("menu")!=0 ){
				keepSub = 0;
				keepSubFather = 0;
				lastTimeoutId = setTimeout (function(){closeAllSub()} ,500 );
				closeTimeoutAr[closeTimeoutAr.length] = lastTimeoutId;
			}
		}
	}
}


function clearAllClosings(){
	do {
		clearTimeout (closeTimeoutAr.shift());
	}
	while (closeTimeoutAr.length>0);
}

function getOffsetLeft (el) {
	if (!el)return ;
    var ol = el.offsetLeft;
    while ((el = el.offsetParent) != null)
        ol += el.offsetLeft;
    return ol;
}


function getOffsetTop (el) {
    if (!el) return;
    var ol = el.offsetTop;
    while ((el = el.offsetParent) != null)
        ol += el.offsetTop;
    return ol;
}

function togglePromo(toHide){
	$("promoBox").className = toHide?"off":"";
}

var dmenuSubItemsHeight=new Array();

DOM.Event("load",function(){
	//Initializes the dropdown submenus
	var divs = document.getElementsByClassName('submenuSub');	
	if(divs && divs.length > 0)
	{
		for(var c=0; c<divs.length; c++)
		{
			if(divs[c].innerHTML.length > 0){
				var theId=divs[c].parentNode.id;
				dmenuSubItemsHeight[theId]=divs[c].clientHeight;
				divs[c].style.height = "20px";
				divs[c].onmouseover=function(e){
					var target;
					if(!e) var e = window.event;
					if(e.target) target = e.target;
					else if(e.srcElement) target = e.srcElement;	
					if(target.nodeType == 3) target = target.parentNode;
					while(target.className.indexOf("submenuSub") == -1) target = target.parentNode;
					if(target.parentNode.className.indexOf("open") == -1){
						if(is_ie && !is_ie7)
						{
							target.style.height = dmenuSubItemsHeight[target.parentNode.id]+"px";
							target.parentNode.className = target.parentNode.className + " open";
						}
						else {
							target.parentNode.className = target.parentNode.className + " open";
							expandElement(target,dmenuSubItemsHeight[target.parentNode.id],25,10);
						}
					}
				};
				divs[c].onmouseout=function(e){
					if(!e) var e = window.event;
					var target = (window.event) ? e.srcElement:e.target;
					var related = (e.relatedTarget) ? e.relatedTarget : e.toElement;					
					while (related != target && related.nodeName != "BODY" && related.className.indexOf("submenuSub") == -1) related = related.parentNode;
					
					if(related == target) return;
					
					while(target.className.indexOf("submenuSub") == -1 && target.nodeName != "BODY") target = target.parentNode;
					
					if(related == target) return;
					
					if(target.className.indexOf("submenuSub") > -1 && target.parentNode.className.indexOf("open") > -1){
						target.parentNode.className = target.parentNode.className.replace("open","");
						target.style.height = "20px";
					}
				};
			}
		}
	}
});

function expandElement(element, targetHeight, increment, delay)
{
	if(element.parentNode.className.indexOf("open") == -1) return;
	var currentHeight = parseInt(element.style.height);
	if((targetHeight-currentHeight)/increment > 20) return;
	if(currentHeight > targetHeight) return;
	if(currentHeight + increment > targetHeight)
	{
		element.style.height = targetHeight;
		return;
	}
	element.style.height = (currentHeight+increment)+'px';
	setTimeout(function(){expandElement(element,targetHeight,increment,delay);},delay);
}