﻿function handleMouseOver(e) {
    var el = (e) ? e.target : event.srcElement;
    var menuitem = isMenuItem(el);
    if (menuitem) {
	var vParentUL = null;
	var vParentLI = null;
	var vDoubleParentUL = null;
	var vHideParentUL = null;
	var vHideParentLI = null;
	var vHideDoubleParentUL = null;

	vParentUL = parentUL(menuitem);
	vParentLI = parentLI(menuitem);
	vDoubleParentUL = doubleParentUL(menuitem);
	if (hideSub != null)
	{vHideParentUL = parentUL(hideSub);vHideParentLI = parentLI(hideSub);vHideDoubleParentUL = doubleParentUL(hideSub);
	}
	if (menuitem == hideSub)
	{clearTimeout(menuTime);addStyle(menuitem, "over");hideSub = menuitem;
	}
	else if (hideSub == null)
	{addStyle(menuitem, "over sub");
	}
	else if (vParentUL == vHideParentUL)
	{clearTimeout(menuTime);closetype = 'current';removeStyle(hideSub, "sub");addStyle(menuitem, "over sub");hideSub = menuitem;
	}
	else if ((vParentLI != null) && (vParentLI == hideSub))
	{clearTimeout(menuTime);addStyle(menuitem, "over sub");hideSub = menuitem;
	}
	else if ((vHideParentLI != null) && (vHideParentLI == menuitem))
	{clearTimeout(menuTime);closetype = 'current';removeStyle(hideSub, "sub");addStyle(menuitem, "over");hideSub = menuitem;
	}
	else if ((vHideDoubleParentUL != null) && (vHideDoubleParentUL == vParentUL))
	{clearTimeout(menuTime);closetype = 'current';removeStyle(hideSub, "sub");removeStyle(vHideParentLI, "sub");addStyle(menuitem, "over sub");hideSub = menuitem;
	}
	else
	{clearTimeout(menuTime);closetype = 'all';removeStyle(hideSub, "sub");
	}	

    }
}

function handleMouseOut(e) {
    var el = (e) ? e.target : event.srcElement;
    var toel = (e) ? e.relatedTarget : event.toElement;
    var menuitem = isMenuItem(el);
    if (menuitem && (menuitem != isMenuItem(toel))) {
        removeStyle(menuitem, "over");
        hideSub = menuitem;
	closetype = 'all';
        menuTime = setTimeout('removeStyle(hideSub, "sub")', 200);
    }
}

function handleClick(e) {
    var el = (e) ? e.target : event.srcElement;
    var menuitem = isMenuItem(el);
    if (menuitem && (el.className == "moz")) {
	neededA = el.parentNode.getElementsByTagName("a");
	neededLink = neededA[0].getAttribute('href',2);
	location.assign(neededLink);
    }
}

function handleLoad() {
    
    
    if (navigator.appName.indexOf('Netscape') != -1) {
        var re = new RegExp("(^| )menu($| )");
        var menus = document.getElementsByTagName("ul");
        var mozMenuItem;
        
        for (var i = 0; i < menus.length; i++) {
            if (menus[i].className.search(re) != -1) {
                var menuItems = document.getElementsByTagName("li");
                for (var k = 0; k < menuItems.length; k++) {
                    mozMenuItem = document.createElement("div");
                    mozMenuItem.className = "moz";
                    menuItems[k].appendChild(mozMenuItem);
                }
            }
        }
    }
    
	//Adding validator to forms
	var forms = document.getElementsByTagName("FORM");
        for (var i = 0; i < forms.length; i++) {
            if (forms[i].className.indexOf("contact") != -1) {
		doShow(forms[i]);
            }
        }
    
}

function isMenuItem(obj) {
    while (obj && (obj != document) && (obj.tagName.toLowerCase() != "ul")) {
        if (obj.tagName.toLowerCase() == "li") return obj;
        obj = (obj.parentElement) ? obj.parentElement : obj.parentNode;
    }
    return false;
}

function addStyle(obj, class_name) {
    var cn = obj.className;
    var re = new RegExp("(^| )" + class_name + "($| )");
    if (cn.search(re) != -1) return false;
    if (cn != "" && cn.charAt(cn.length - 1) != " ") cn += " ";
    cn += class_name;
    obj.className = cn;
}

function removeStyle(obj, class_name) {
    if (!obj) return;
    var re = new RegExp(" " + class_name + " ");
    var re1 = new RegExp("(^" + class_name + " )|( " + class_name + "$)|(^"
                           + class_name + "$)");
    if ( closetype == 'all' )
    {
	    while (obj && (obj != document) && (obj.className != "menu")) {
        	if (obj.tagName.toLowerCase() == "li")
		{
		    var cn = obj.className;
		    cn = cn.replace(re, " ");
		    cn = cn.replace(re1, "");
		    obj.className = cn;
		}

	        obj = (obj.parentElement) ? obj.parentElement : obj.parentNode;
	    }
	hideSub = null;
    }
    else
    {
	    var cn = obj.className;
	    cn = cn.replace(re, " ");
	    cn = cn.replace(re1, "");
	    obj.className = cn;
    }
}

function parentUL(obj) {
	parentul = ((obj.parentElement) ? obj.parentElement : obj.parentNode);
	return parentul;
}

function parentLI(obj) {
	parentul = ((obj.parentElement) ? obj.parentElement : obj.parentNode);
	if (parentul.className == "menu") return null;
	parentli = ((parentul.parentElement) ? parentul.parentElement : parentul.parentNode);
	return parentli;
}

function doubleParentUL(obj) {
	parentul = ((obj.parentElement) ? obj.parentElement : obj.parentNode);
	if (parentul.className == "menu") return null;
	doubleparentul = ((parentul.parentElement) ? parentul.parentElement.parentElement : parentul.parentNode.parentNode);
	return doubleparentul;
}

var menuTime;   
var hideSub = null;    
var closetype; 



//MENU
document.onmouseover = handleMouseOver;
document.onmouseout = handleMouseOut;
document.onclick = handleClick;
window.onload = handleLoad;

