var hideTmout = null;
var slideTmout = null;
var fadeTime = 200;
var slideInt = 1;
var slideDeltaConst = 25;
//var slideDeltaConst = 5;
var slideDelta = 15;
var laySize = 600;
var clipHeight = 400;
var active_postfix = "";
var exLayerId = 0;
var imageHeightConst = 1;

var nnLayerWidth=new Array();
var nnLayerHeight=new Array();

nn4 = (document.layers);
dom = (document.getElementById);
ie4 = (document.all && !dom);

//alert(navigator.userAgent);

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 layerShow2(lid, ex_lid , InoffsetLeft , InoffSetTop){
	
	if(navigator.appName=="Microsoft Internet Explorer" && navigator.userAgent.indexOf('Opera') == -1){
		layerShow(lid, ex_lid , InoffsetLeft , InoffSetTop);
		return true;
	}
	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;
	}
	var lay = ie4?document.all["layer" + lid]:document.getElementById("layer" + lid);
	lay.style.left = imgX(document.images["selectmenu" + lid]) - InoffsetLeft;
	lay.style.top = imgY(document.images["selectmenu" + lid]) - InoffSetTop;
	lay.style.visibility = "visible";
	lay.onmouseover = ie_overHandler;
	lay.onmouseout = ie_outHandler;
}

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;
		}

		CurTopLevelPoint=(window.pageYOffset+window.innerHeight)-(document.images["selectmenu" + lid].y+document.images["selectmenu" + lid].height);
		
		if(lay.clip.height>=CurTopLevelPoint){
			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 -= lay.clip.width;
			//alert(lay.clip.width);
			lay.clip.right=0;

			offSetTop=MoveTopLevelPoint;
			StopLeft= document.images["selectmenu" + lid].x - InoffsetLeft + lay.clip.width;
		}else{
			lay.top = document.images["selectmenu" + lid].y - laySize;
			lay.clip.bottom = clipHeight;
			lay.clip.top = laySize + document.images["selectmenu" + lid].height  - InoffSetTop;
			offSetTop=0;
		}

		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;
		
		CurTopLevelPoint=(document.body.scrollTop+document.body.clientHeight)-(imgY(document.images["selectmenu" + lid])+document.images["selectmenu" + lid].height);

		if(lay.scrollHeight>=CurTopLevelPoint){
			MoveTopLevelPoint=(document.body.clientHeight-lay.scrollHeight);
			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.clip = "rect(0px, 0px, "+lay.scrollHeight+"px, 0px)";
			offSetTop=MoveTopLevelPoint;
			StopLeft= imgX(document.images["selectmenu" + lid]) - InoffsetLeft + lay.scrollWidth;
		}else{
			lay.style.top = imgY(document.images["selectmenu" + lid]) - laySize - InoffSetTop;
			lay.style.clip = "rect(" + (laySize + document.images["selectmenu" + lid].height) + "px, 300px, " + clipHeight + "px, 0px)";
			offSetTop=0;
		}
		lay.style.visibility = "visible";
		lay.onmouseover = ie_overHandler;
		lay.onmouseout = ie_outHandler;
	}

	slideDelta = slideDeltaConst;
	if(offSetTop==0){
		slideTmout = setTimeout('slideLayer(' + lid + ','+offSetTop+')', slideInt);
	}else{
		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);
	}else{
		if (nn4) {
			document.layers["layer" + lid].clip.top=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 = imgY(document.images["selectmenu" + lid]);
		}
	}
}

function slideLayerHorizont(lid,inStopLeft) {
	if (nn4) {
		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)"
}