﻿var timerID = new Array();
var mouseIn;
var menuOn = "Mfg";
var bCloseOnLeave = false;
var bMouseoverOn = false;

function SlideMenu(menuID, remainW, remainH, remainO, steps, transTime, transType) {

	var opac = Math.ceil(menuID.style.opacity * 100.0);
	
	opac += remainO / steps;
	opac = Math.max(0, opac);
	opac = Math.min(100, opac);
	if ((steps == 1) && (transType == "off")) menuID.style.visibility = "hidden";
	
	menuID.style.filter = "alpha(Opacity=" + opac + ")";
	menuID.style.KHTMLOpacity = opac / 100.0;    // Konqueror
	menuID.style.opacity = opac / 100.0;    // Mozilla (new)

	menuID.style.width = (parseInt(menuID.style.width) + (remainW / steps)) + "px";
	remainW -= remainW / steps;

	menuID.style.height = (parseInt(menuID.style.height) + (remainH / steps)) + "px";
	remainH -= remainH / steps;

	if (--steps > 0) {
		setTimeout(function() { SlideMenu(menuID, remainW,remainH,remainO,steps,transTime,transType); }, transTime);
	}
}

function isMouseLeave(e, handler) {
	if (e.type != 'mouseout' && e.type != 'mouseover') return false;
	var reltg = e.relatedTarget ? e.relatedTarget :
	e.type == 'mouseout' ? e.toElement : e.fromElement;
	while (reltg && reltg != handler) reltg = reltg.parentNode;
	return (reltg != handler);
}

function PopupLeave(e,handler,divID){
	if (isMouseLeave(e, handler)) {
		if (bCloseOnLeave) {
			if (timerID[divID]) clearTimeout(timerID[divID]);
			timerID[divID] = setTimeout(function() { FastHide(divID); }, 2000);
		}
		else timerID[divID] = null;
	}
	else {
		mouseIn = divID;
		switch(divID){
			case 'DivCategory3': clearTimeout(timerID['DivCategory3']);
								 clearTimeout(timerID['DivCategory2']);
								 clearTimeout(timerID['DivCategory1']);
								 break;
			case 'DivCategory2': clearTimeout(timerID['DivCategory2']);
								 clearTimeout(timerID['DivCategory1']);
								 break;
			case 'DivCategory1': clearTimeout(timerID['DivCategory1']);
								 break;
		}
	}
}

function ShowMenu(event, cat1, cat2, cat3, alignid, transition, x, y, startW, startH, startO, endW, endH, endO, steps, transTime) {
	var basefield,mnLeft,mnTop;

	if (cat1 == '*') basefield = 1;
	else if (cat2 == '*') basefield = 2;
	else basefield = 3;

	var menuid = "DivCategory" + basefield;
	var menuID = document.getElementById(menuid);
	menuID.style.background = "#ff8080";

	if (menuOn == "Mfg") FastHide("DivCategory1");
	menuOn = "Tbc";

	if ((menuID.style.visibility == "visible") && (bMouseoverOn == true)){
		mnLeft = menuID.offsetLeft;
		mnTop = menuID.offsetTop;	
	}	
	else if (alignid != "") {
		var alignID = document.getElementById(alignid);
		mnLeft = alignID.offsetLeft;
		mnTop = alignID.offsetTop + alignID.offsetHeight;
	}
	else {
		if (basefield > 2) {
			var alignID = document.getElementById("DivCategory" + (basefield - 1));
			mnLeft = alignID.offsetLeft + alignID.offsetWidth;
			if ((mnLeft + x + 280) > document.body.clientWidth) mnLeft = alignID.offsetLeft - x - 280;
		}
		else mnLeft = event.clientX + 15;
		mnTop = event.clientY + Math.max(document.body.scrollTop, document.documentElement.scrollTop);
	}
	bMouseoverOn = false;
	
	CategoryMenu(basefield,cat1,cat2,cat3);
	menuID.style.left = mnLeft + x + "px";
	menuID.style.top = mnTop + y + "px";


	if (menuID.style.visibility == "visible") {
		bCancelFade = menuID;
		clearTimeout(timerID[menuid]);
		if (basefield == 2) {
			clearTimeout(timerID['DivCategory3']);
			document.getElementById('DivCategory3').style.visibility = "hidden";
		}
	}

	switch (transition) {
		case "SlideMenu":
			menuID.style.width = startW + "px";
			menuID.style.height = startH + "px";
			menuID.style.visibility = "visible";
			menuID.style.filter = "alpha(Opacity=" + startO + ")";
			menuID.style.opacity = startO / 100.0;
			menuID.style.KHTMLOpacity = startO / 100.0;
			SlideMenu(menuID, (endW - startW), (endH - startH), (endO - startO), steps, transTime, 'on');
			break;
		case "FadeMenu": FastShow(menuid);
						bCloseOnLeave = false;
						 timerID[menuid] = null; //setTimeout(function() { FastHide(menuid); },5000);
						 break;
	}
}

function ShowMfgMenu(event, mfg, alignid, x, y) {
	var basefield,mnLeft,mnTop;

	if (mfg == "") basefield = 1;
	else basefield = 2;
	
	var menuid = "DivCategory" + basefield;
	var menuID = document.getElementById(menuid);

	if (menuOn == "Tbc") FastHide("DivCategory1");
	menuOn = "Mfg";
	
	if (alignid != "") {
		var alignID = document.getElementById(alignid);
		mnLeft = alignID.offsetLeft;
		mnTop = alignID.offsetTop + alignID.offsetHeight;
	}
	else {
		if (basefield == 2) {
			var alignID = document.getElementById("DivCategory" + (basefield - 1));
			mnLeft = alignID.offsetLeft + alignID.offsetWidth;
		}
		else mnLeft = event.clientX + 15;
		mnTop = event.clientY + Math.max(document.body.scrollTop, document.documentElement.scrollTop);
	}
	MfgMenu(mfg);
	menuID.style.left = mnLeft + x + "px";
	menuID.style.top = mnTop + y + "px";

	if (basefield == 1) HideMenu('DivCategory2');
	else if (basefield == 2) HideMenu('DivCategory3');
	if (menuID.style.visibility == "visible") bCancelFade = menuID;

	bCloseOnLeave = false;
	Show(menuid);
}

function HideAllMenu()
{
	bCancelFade = false;
	Hide("DivCategory1");
	Hide("DivCategory2");
	Hide("DivCategory2");
}

function HideMenu(id) {
	var menuID = document.getElementById(id);

	if (id == "DivCategory1") {
		if (document.getElementById("DivCategory2").style.visibility == "visible") return false;
	}
	else if (id == "DivCategory2") {
		if (document.getElementById("DivCategory3").style.visibility == "visible") return false;
	}
	
	Hide(id);
}

function Mouseover(event, cat1, cat2, alignID) {
	var basefield, mnLeft, mnTop;
	var x = 0, y = 0;

	if (cat2 == ' ') basefield = 1;
	else basefield = 2;

	var menuid = "DivCategory" + (basefield+1);
	var menuID = document.getElementById(menuid);

	menuID.style.background = "#efecde";
	menuOn = "Tbc";
	bMouseoverOn = true;

	if (basefield == 1) {
		mnLeft = event.clientX + 15;
		FastHide('DivCategory3');
	}	
	else {
		var alignID = document.getElementById("DivCategory" + basefield);
		mnLeft = alignID.offsetLeft + alignID.offsetWidth;
		if ((mnLeft + x + 280) > document.body.clientWidth) mnLeft = alignID.offsetLeft - x - 280;
	}
	mnTop = event.clientY + Math.max(document.body.scrollTop, document.documentElement.scrollTop);
	
	MouseoverMenu(basefield, cat1, cat2);
	menuID.style.left = mnLeft + x + "px";
	menuID.style.top = mnTop + y + "px";

	if (menuID.style.visibility == "visible") {
		bCancelFade = menuID;
		clearTimeout(timerID[menuid]);
		if (basefield == 2) {
			clearTimeout(timerID['DivCategory3']);
			document.getElementById('DivCategory3').style.visibility = "hidden";
		}
	}

	FastShow(menuid);
	bCloseOnLeave = true;

	if (basefield == 1) {
		if (timerID['DivCategory2']) clearTimeout(timerID['DivCategory2']);
		timerID['DivCategory2'] = setTimeout(function() { FastHide("DivCategory2"); }, 3000);
	}
}
