var hideTmout = null;
var slideTmout = null;
var fadeTime = 1050;
var slideInt = 1;
var slideDeltaConst = 10;
var slideDelta = 5;
var laySize = 300;
var clipHeight = 300;
var active_postfix = "";
var exLayerId = 0;
var imageHeightConst = 20;

var nnLayerWidth=new Array();
var nnLayerHeight=new Array();

nn4 = (document.layers);
dom = (document.getElementById);
ie4 = (document.all && !dom);

function imgX(El) {
	var X = 0;
	if(nn4)
	  X=El.pageX;
	else
	  do { X += El.offsetLeft }while ((El = El.offsetParent) != null && El.tagName!='BODY');
        return X;
}

//Vertical align
function imgY(El) {
	var Y = 0;
	if(nn4)
	  Y=El.pageY;
	else
	  do { Y += El.offsetTop }while ((El = El.offsetParent) != null  && El.tagName!='BODY');
      return Y;
}

function layerShow(lid, ex_lid , InoffsetLeft , InoffSetTop) {
	exLayerId = ex_lid;
	hideAllMenus(0);
	clearTimeout(hideTmout);
	if (document.images["selectmenu" + lid] && active_postfix != "") {
		var lastSlash = document.images["selectmenu" + lid].src.lastIndexOf("/");
		if (lastSlash == -1) { lastSlash = 0; }
		var lastPoint = document.images["selectmenu" + lid].src.lastIndexOf(".");
		var imgPath = document.images["selectmenu" + lid].src.substr(0, lastSlash);
		var imgName = document.images["selectmenu" + lid].src.substr(lastSlash + 1, lastPoint - lastSlash - 1);
		document.images["selectmenu" + lid].src = imgPath + "/" + imgName + active_postfix;
	}

	if (nn4) {
		var lay = document.layers["layer" + lid];
		lay.left = document.images["selectmenu" + lid].x - InoffsetLeft;

		if(nnLayerWidth["selectmenu" + lid]){
			lay.clip.height=nnLayerWidth["selectmenu" + lid];
		}else{
			nnLayerWidth["selectmenu" + lid]=lay.clip.height;
		}

		MoveTopLevelPoint=(window.innerHeight-lay.clip.height);
		lay.top =window.innerHeight-lay.clip.height+window.pageYOffset;
		lay.left = document.images["selectmenu" + lid].x - InoffsetLeft + document.images["selectmenu" + lid].width;
		lay.clip.right=0;

		offSetTop=MoveTopLevelPoint;
		StopLeft= document.images["selectmenu" + lid].x - InoffsetLeft + lay.clip.width;

		lay.visibility = "visible";
		lay.captureEvents(Event.MOUSEOUT | Event.MOUSEOVER);
		lay.onMouseOver = overHandler;
		lay.onMouseOut = outHandler;
		
	}else{
		var lay = ie4?document.all["layer" + lid]:document.getElementById("layer" + lid);
		lay.style.left = imgX(document.images["selectmenu" + lid]) - InoffsetLeft;
		
		MoveTopLevelPoint=(document.body.clientHeight-lay.scrollHeight);
		MoveTopLevelPoint=imgY(document.images["selectmenu" + lid]) - InoffSetTop + document.images["selectmenu" + lid].height ;
		lay.style.left = imgX(document.images["selectmenu" + lid]) - InoffsetLeft + document.images["selectmenu" + lid].width ;
		//lay.style.top =document.body.clientHeight-lay.scrollHeight+document.body.scrollTop;
		lay.style.top=imgY(document.images["selectmenu" + lid]) - InoffSetTop + document.images["selectmenu" + lid].height ;
		lay.style.clip = "rect(0px, 0px, "+lay.scrollHeight+"px, 0px)";
		offSetTop=MoveTopLevelPoint;
		StopLeft= imgX(document.images["selectmenu" + lid]) - InoffsetLeft + lay.scrollWidth;

		lay.style.visibility = "visible";
		lay.onmouseover = ie_overHandler;
		lay.onmouseout = ie_outHandler;
	}

	slideDelta = slideDeltaConst;
	slideTmout = setTimeout('slideLayerHorizont(' + lid + ','+StopLeft+')', slideInt);
}

function slideLayer(lid,offSetTop) {
	if (nn4) {
		document.layers["layer" + lid].moveBy(0, slideDelta);
		document.layers["layer" + lid].clip.top -= slideDelta;
		rest = document.images["selectmenu" + lid].y + imageHeightConst - document.layers["layer" + lid].top;
	} else {
		var lay = ie4?document.all["layer" + lid]:document.getElementById("layer" + lid);
		lay.style.top = Number(lay.style.top.split("px")[0]) + slideDelta;
		clipBy(lay.style, (-1 * slideDelta), 0, 0, 0);
		rest = imgY(document.images["selectmenu" + lid]) - offSetTop + imageHeightConst - Number(lay.style.top.split("px")[0]);
	}
	if (rest >= 0){
		if (rest <= slideDelta && slideDelta > 1) slideDelta = Math.round(slideDelta/2);
		slideTmout = setTimeout('slideLayer(' + lid + ','+offSetTop+')', slideInt);
	}
}

function slideLayerHorizont(lid,inStopLeft) {
	if (nn4) {
		//document.layers["layer" + lid].moveBy(slideDelta,0);
		document.layers["layer" + lid].clip.right += (slideDelta+5);
		if(document.layers["layer" + lid].clip.right<=nnLayerWidth["selectmenu" + lid]+400){
			rest = 1;
		}else{
			rest = -1;
		}
	} else {
		var lay = ie4?document.all["layer" + lid]:document.getElementById("layer" + lid);
		clipBy(lay.style, 0, (5 + slideDelta), 0, 0);
		rest = imgX(document.images["selectmenu" + lid]) + document.images["selectmenu" + lid].width - Number(lay.style.left.split("px")[0]);
	}
	if (rest >= 0) {
		if (rest <= slideDelta && slideDelta > 1) slideDelta = Math.round(slideDelta/2);
		slideTmout = setTimeout('slideLayerHorizont(' + lid + ','+inStopLeft+')', slideInt);		
	}
}

function menuLayerHide(lid) {
	if (document.images["selectmenu" + lid] && active_postfix != "") {
		var lastSlash = document.images["selectmenu" + lid].src.lastIndexOf("/");
		if (lastSlash == -1)  lastSlash = 0;
		var lastPoint = document.images["selectmenu" + lid].src.lastIndexOf(active_postfix);
		if (lastPoint != -1) { //{ lastPoint = document.images["selectmenu" + lid].src.lastIndexOf("."); }
			var imgPath = document.images["selectmenu" + lid].src.substr(0, lastSlash);
			var imgName = document.images["selectmenu" + lid].src.substr(lastSlash + 1, lastPoint - lastSlash - 1);
			document.images["selectmenu" + lid].src = imgPath + "/" + imgName + ".gif";
		}

	}
	

	if (nn4) {
		document.layers["layer" + lid].visibility = "hide";
		document.layers["layer" + lid].releaseEvents(Event.MOUSEOVER);
		document.layers["layer" + lid].releaseEvents(Event.MOUSEOUT);
		document.layers["layer" + lid].onMouseOut = null;
		document.layers["layer" + lid].onMouseOver = null;
	}
	if(ie4) {
		document.all["layer" + lid].style.visibility = "hidden";
		document.all["layer" + lid].onmouseout = null;
		document.all["layer" + lid].onmouseover = null;
	}
	if(dom) {
		document.getElementById("layer" + lid).style.visibility = "hidden";
		document.getElementById("layer" + lid).onmouseout = null;
		document.getElementById("layer" + lid).onmouseover = null;
	}
}

function hideAllMenus(ex_lid) {
	clearTimeout(slideTmout);	
	var re = /^layer(\d+)/;
	if (nn4) {
		for (i = 0;i < document.layers.length; i++) {
			var l_name = document.layers[i].name;
			if (re.exec(l_name)) {
				menuLayerHide(RegExp.$1);
			}
		}
	} else {
		var Divs;
		Divs=ie4?document.all.tags("div"):document.getElementsByTagName('DIV');
		for (i = 0;i < Divs.length; i++) {
			if(l_name = Divs[i].id) {
				if (re.exec(l_name)) {
				if (ex_lid == RegExp.$1 && document.images["selectmenu" + ex_lid]) {
					var lastSlash = document.images["selectmenu" + ex_lid].src.lastIndexOf("/");
					if (lastSlash == -1) { lastSlash = 0; }
					var lastPoint = document.images["selectmenu" + ex_lid].src.lastIndexOf(".");
					var imgPath = document.images["selectmenu" + ex_lid].src.substr(0, lastSlash);
					var imgName = document.images["selectmenu" + ex_lid].src.substr(lastSlash + 1, lastPoint - lastSlash - 1);
					document.images["selectmenu" + ex_lid].src = imgPath + "/" + imgName + active_postfix;
				} else
					menuLayerHide(RegExp.$1);
				}
			}
		}
	}
	
}

function slowHide() {
	hideTmout = setTimeout('hideAllMenus(' + exLayerId + ')', fadeTime);
}

function overHandler(e) {
	if (hideTmout) {
		clearTimeout(hideTmout);
		hideTmout = null;
	}
	return true;
}

function outHandler(e) {
 	if (hideTmout == null) {
		hideTmout = setTimeout('hideAllMenus(' + exLayerId + ')', fadeTime);
	}
	return true;
}

function ie_overHandler() {
	
	if (hideTmout) {
		clearTimeout(hideTmout);
		hideTmout = null;
	}
	return true;
}

function ie_outHandler() {
 	if (hideTmout == null) 	hideTmout = setTimeout('hideAllMenus(' + exLayerId + ')', fadeTime);
	return true;
}

function clipValues(obj,which) {
	if (nn4) {
        	if (which=="t") return obj.clip.top
                if (which=="r") return obj.clip.right
                if (which=="b") return obj.clip.bottom
                if (which=="l") return obj.clip.left
	}
        else if (ie4 || dom) {
        	var clipv = obj.clip.split("rect(")[1].split(")")[0].split("px")
                if (which=="t") return Number(clipv[0])
                if (which=="r") return Number(clipv[1])
                if (which=="b") return Number(clipv[2])
                if (which=="l") return Number(clipv[3])
        }
}

function clipBy(obj,t,r,b,l) {
	if (nn4) {
        	obj.clip.top = clipValues(obj,'t') + t
                obj.clip.right = clipValues(obj,'r') + r
                obj.clip.bottom = clipValues(obj,'b') + b
                obj.clip.left = clipValues(obj,'l') + l
        }
        else if (ie4 || dom) obj.clip = "rect("+(this.clipValues(obj,'t')+t)+"px "+(this.clipValues(obj,'r')+r)+"px "+Number(this.clipValues(obj,'b')+b)+"px "+Number(this.clipValues(obj,'l')+l)+"px)"
}