
var tempLinkObj = null;

var submenuNode = null;
var submenuLayer = null;

var submenuPos = {x1:0, y1:0, x2:0, y2:0} 
var mousePos = {x:0, y:0};
var t = null;

var timeout = 300;
var menuHeight = 35;
var submenuWidth = 178;
var menuOffsetTop = 119;
var leftOffset = 114;

var prefix = "_a";

var defaultItem = null;
var defaultSubmenuNode = null;

function highlight(img) {
	unhighlight();
	
	tempLinkObj = img;
	tempLinkImgSrc = img.src;
	if(img.src.indexOf(prefix + '.') == -1) {
		img.src = img.src.substring(0,img.src.length-4) + prefix + '.gif';
	}
}

function unhighlight(img) {
	if(img && prefix) {
		img.src = img.src.replace(prefix,'');
	} else if(tempLinkObj) {		
		tempLinkObj.src = tempLinkImgSrc;
	}
}

function show(node) {	
	if(node && node.type) {
		node = this;		
	} else if(!node) {
		node = this;
	}	

	hidePrev();		
	
	if(defaultItem && !node.parentNode.parentNode.getAttribute("DEFAULT")) {		
		hideDef();
	}
	
	highlight(node.getElementsByTagName('IMG')[0]); 
	
	var sTop = (document.body.scrollTop >= 0) ? document.body.scrollTop : window.scrollY;
	var sLeft = (document.body.scrollLeft >= 0) ? document.body.scrollLeft : window.scrollX;
	
	if(node.parentNode.parentNode.getElementsByTagName('DIV')[1]) {

		submenuNode = node.parentNode.parentNode.getElementsByTagName('DIV')[1];		
		submenuNode.style.display = 'block';
						
		submenuPos.x1 = submenuNode.offsetLeft - sLeft;
		submenuPos.y1 = menuOffsetTop - sTop;
		submenuPos.x2 = submenuPos.x1 + submenuWidth;
		submenuPos.y2 = submenuNode.offsetHeight + submenuPos.y1 + menuHeight;
	}	
	else {		

		submenuLayer = node.parentNode.parentNode;
		
		submenuPos.x1 = leftOffset - sLeft;
		submenuPos.y1 = menuOffsetTop - sTop;
		submenuPos.x2 = submenuPos.x1 + submenuLayer.offsetLeft + node.offsetWidth;
		submenuPos.y2 = submenuPos.y1 + menuHeight;
	}		
}

function hidePrev() {	
	if(submenuNode && !submenuNode.parentNode.getAttribute("DEFAULT")) { 
		submenuNode.style.display = 'none';	
		unhighlight();				
		submenuNode = null;			
	}	
	if(submenuLayer && !submenuLayer.getAttribute("DEFAULT")) {
		unhighlight();
		submenuLayer = null;
	}	
}

function hideDef() {	
	if(defaultSubmenuNode) {
		defaultSubmenuNode.style.display = 'none';	
		unhighlight(defaultItem.getElementsByTagName('A')[0].getElementsByTagName('IMG')[0]);				
	}
}

function inRect() {	
	if(((mousePos.x < submenuPos.x1 || mousePos.x > submenuPos.x2) || (mousePos.y < submenuPos.y1 || mousePos.y > submenuPos.y2)) && submenuPos) {
		return false;
	} else {
		return true;
	}
}

function tryHide() {	
	clearTimeout(t);
	t = null;

	if(!inRect()) {
		if(defaultSubmenuNode && defaultSubmenuNode.style.display == 'none') {			
			show(defaultItem.getElementsByTagName('A')[0]);
		} else if(!defaultSubmenuNode && defaultItem && defaultItem.getElementsByTagName('A')[0].getElementsByTagName('IMG')[0].src.indexOf(prefix) == -1) {
			show(defaultItem.getElementsByTagName('A')[0]);
		}
		hidePrev();		
	}	
}

function checkTarget(e) {	
	e = (e) ? e : window.event;
	mousePos.x = e.clientX;
	mousePos.y = e.clientY;
	
	if(!inRect()) {		
		if(!t)	t = setTimeout(tryHide, timeout);
	}
}

function init() {
	document.body.onmousemove = checkTarget;
	
	/*---------- Error Hanlers ----------*/
	function getTimeout() {
		if(menu.getAttribute("TIMEOUT") && parseInt(menu.getAttribute("TIMEOUT"))) {
			return parseInt(menu.getAttribute("TIMEOUT"));
		} else {return 0;}
	}
	function getPrefix() {
		if(menu.getAttribute("PREFIX")) {
			return menu.getAttribute("PREFIX"); alert();
		} else { return '_a'; }	
	}
	function getMenuAttribute(name) {
		var errMsg = "Error getting attribute " + name + " in menu node!\nMenu initialization faild.\n\n";
		if(menu.getAttribute(name)) {	
			var val = menu.getAttribute(name);
			if(parseInt(val) >= 0 && val.indexOf('#') == -1) {			
				return parseInt(menu.getAttribute(name));
			} else if(val.indexOf('#') != -1) {
				try {
					return parseInt(eval(val.replace('#','')));
				} catch(e) {
					throw errMsg + "Can't exec expression.";
				}
			} else {
				throw errMsg + "This attribute must be numeric.";
			}
		} else {
			throw errMsg + "This attribute not found.";
		}				
	}
	/*---------- /Error Hanlers ----------*/	
	
	/*---------- INITIALIZATION ----------*/		
	try {var menu = document.getElementById('menu');}	
	catch(e) { return false; }
	
	var menuNodes = menu.childNodes;
	
	timeout = getTimeout();	
		
    menuHeight = 35; 	
	
	submenuWidth = 735;		
	
	menuOffsetTop = 35; 			
	
	leftOffset = 0;							

	prefix = '_a';			

	for(var i=0; i<menuNodes.length; i++) {		
		if(menuNodes[i].nodeName == 'TD' && menuNodes[i].getElementsByTagName('A')[0]) {		
			menuNodes[i].getElementsByTagName('A')[0].onmouseover = show;

			if(menuNodes[i].getAttribute("DEFAULT")) {
				defaultItem = menuNodes[i];
				if(defaultItem.getElementsByTagName('DIV')[1]) {
					defaultSubmenuNode = defaultItem.getElementsByTagName('DIV')[1];
				}
			}
		}
	}	
	/*---------- /INITIALIZATION ----------*/		
	
	if(defaultItem) {
		show(defaultItem.getElementsByTagName('A')[0]);
	}							
}