var nn4 = (document.layers);
var ie4 = (document.all);
var loaded = false;
var hideTmout = null;
var slideTmout = null;
var fadeTime = 200;
var slideInt = 1;
var slideDeltaConst = 17;
var slideDelta = 14;
var laySize = 200;
var clipHeight = 350;
var active_postfix = "-a.gif";
var exLayerId = 0;
var delta = 10;
var last=0;
var ua = navigator.userAgent.toLowerCase();
isgecko = (ua.indexOf("gecko") != -1);
isopera = (ua.indexOf("opera") != -1);



function imgX(El) {
        var X = 0;
        do { X += El.offsetLeft } while ((El = El.offsetParent) != null);
        return X;
}

function imgY(El) {
        var Y = 0;
        do { Y += El.offsetTop } while ((El = El.offsetParent) != null);
        return Y;
}

function layerShow(lid, ex_lid,lst) {
	//if (!loaded) { return false;};
	//alert ("aaa");
	exLayerId = ex_lid;
	hideAll(0);
	clearTimeout(hideTmout);
	if (document.images["menu" + lid]) {
		var lastSlash = document.images["menu" + lid].src.lastIndexOf("/");
		if (lastSlash == -1) { lastSlash = 0; }
		var lastPoint = document.images["menu" + lid].src.lastIndexOf(".");
		var imgPath = document.images["menu" + lid].src.substr(0, lastSlash);
		var imgName = document.images["menu" + lid].src.substr(lastSlash + 1, lastPoint - lastSlash - 1);
		document.images["menu" + lid].src = imgPath + "/" + imgName + active_postfix;
	}


	if ((isgecko)||(isopera)){

		if (lst==0) {
			lastdelta = 0;
		} else {
			lastdelta = 44;
		};
		var lay = document.getElementById("layer" + lid);
		lay.style.left = imgX(document.images["menu" + lid]) - 11 -lastdelta+"px";
		lay.style.top = imgY(document.images["menu" + lid])+"px";
		lay.style.clip = "rect (" + (laySize + 13 + document.images["menu" + lid].height ) +
				        "px 150px " + (clipHeight +40) + "px 0px)";
		
						
		lay.style.visibility = "visible";
		lay.onmouseover = ie_overHandler;
		lay.onmouseout = ie_outHandler;
		slideDelta = slideDeltaConst;
		slideTmout = setTimeout('slideLayer(' + lid + ')', slideInt);
                

	



	} else {
		if (lst==0) {
			lastdelta = 0;
		} else {
			lastdelta = 44;
		};
		var lay = document.getElementById("layer" + lid);
		lay.style.left = imgX(document.images["menu" + lid]) - 11 -lastdelta+"px";
		lay.style.top = imgY(document.images["menu" + lid]) - laySize-10+"px";
		lay.style.clip = "rect (" + (laySize + 13 + document.images["menu" + lid].height ) +
				        "px 150px " + (clipHeight +60) + "px 0px)";
		
						
		lay.style.visibility = "visible";
		lay.onmouseover = ie_overHandler;
		lay.onmouseout = ie_outHandler;
	}

	slideDelta = slideDeltaConst;
	slideTmout = setTimeout('slideLayer(' + lid + ')', slideInt);
}


function slideLayer(lid) {
	if (nn4) {
		document.layers["layer" + lid].moveBy(0, slideDelta);
		document.layers["layer" + lid].clip.top -= slideDelta;
		rest = document.images["menu" + lid].y + delta - document.layers["layer" + lid].top;
	} else {
		var lay = 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["menu" + lid]) + delta - Number(lay.style.top.split("px")[0]);
	}
	if (rest >= 0) {
		if (rest <= slideDelta && slideDelta > 1) slideDelta = Math.round(slideDelta/2);
		slideTmout = setTimeout('slideLayer(' + lid + ')', slideInt);		
	}	
}

function layerHide(lid) {
	if (document.images["menu" + lid]) {
		var lastSlash = document.images["menu" + lid].src.lastIndexOf("/");
		if (lastSlash == -1)  lastSlash = 0; 
		var lastPoint = document.images["menu" + lid].src.lastIndexOf(active_postfix);
		if (lastPoint != -1) { //{ lastPoint = document.images["menu" + lid].src.lastIndexOf("."); }
			var imgPath = document.images["menu" + lid].src.substr(0, lastSlash);
			var imgName = document.images["menu" + lid].src.substr(lastSlash + 1, lastPoint - lastSlash - 1);
			document.images["menu" + lid].src = imgPath + "/" + imgName + ".gif";
		}

	} 
	

	if (nn4) {
		document.layers["layer" + lid].visibility = "hidden";
		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;
	} else {
		
		var lay = document.getElementById("layer" + lid);
		lay.style.visibility = "hidden";
		lay.onmouseout = null;
		lay.onmouseover= null;


	}
}

function hideAll(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)) {
				layerHide(RegExp.$1);
			}
		}
	} else {
		for (i = 0;i < document.getElementsByTagName("div").length; i++) {
			if(l_name = document.getElementsByTagName("div").item(i).id) {
				if (re.exec(l_name)) {
				if (ex_lid == RegExp.$1 && document.images["menu" + ex_lid]) {
					var lastSlash = document.images["menu" + ex_lid].src.lastIndexOf("/");
					if (lastSlash == -1) { lastSlash = 0; }
					var lastPoint = document.images["menu" + ex_lid].src.lastIndexOf(".");
					var imgPath = document.images["menu" + ex_lid].src.substr(0, lastSlash);
					var imgName = document.images["menu" + ex_lid].src.substr(lastSlash + 1, lastPoint - lastSlash - 1);
					document.images["menu" + ex_lid].src = imgPath + "/" + imgName + active_postfix;
				} else 
					layerHide(RegExp.$1);
				}
			}
		}       
	}
	
}

function slowHide() {
	if (!loaded) {
		return false;
	};
	hideTmout = setTimeout('hideAll(' + exLayerId + ')', fadeTime);
}

function overHandler(e) {
	if (hideTmout) {
		clearTimeout(hideTmout);
		hideTmout = null;
	}
	return true;
}

function outHandler(e) {
 	if (hideTmout == null) {
		hideTmout = setTimeout('hideAll()', fadeTime);
	}
	return true;
}

function ie_overHandler() {
	if (hideTmout) {
		clearTimeout(hideTmout);
		hideTmout = null;
	}
	return true;
}

function ie_outHandler() {
 	if (hideTmout == null) 	hideTmout = setTimeout('hideAll(' + 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) {
        	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) 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)"
}
