function menu() {
	var delay = 500;
	var chosenClass = 'chosen';
	var normalClass = 'sub';

	var m = document.getElementById('mmenu');
	m.lastOpen = m;

	var hideBranch = function(from) {
		for (var ob = m.lastOpen; ob != from; ob = ob.parentNode.parentNode) {
			ob.style.left = 0;
			ob.style.right = '';
			ob.style.visibility = 'hidden';
			ob.parentNode.style.zIndex = '';
			ob.parentNode.getElementsByTagName('a')[0].className = normalClass;
		}
		m.lastOpen = from;
	}
	
	var setPosition = function(ob) {
		var p = ob.parentNode;
		if (p.parentNode == m) {
			ob.style.top = p.offsetHeight - 1 + 'px';
			ob.style.left = 0;
			ob.rightEdge = p.offsetLeft + ob.offsetWidth;
		}
		else {
			ob.style.top = '-1px';
			var r0 =  p.parentNode.rightEdge;
			if ((document.documentElement.clientWidth||document.body.clientWidth)/2 - r0 + 381 > ob.offsetWidth) {
				ob.style.left = p.offsetWidth + 'px';
				ob.style.right = '';
				ob.rightEdge = r0 + ob.offsetWidth;
			}
			else {
				ob.style.left = '';
				ob.style.right = p.offsetWidth + 'px';
				ob.rightEdge = r0 - p.parentNode.offsetWidth;
			}
		}
	}
	
	var setWidth = function(ob) {
		var width = 0;
		var children = ob.childNodes;
		for (var i=0; children[i]; i++) {
			if (!children[i].tagName) continue;
			if (children[i].getElementsByTagName('ul').length) {
				children[i].getElementsByTagName('a')[0].className = normalClass;
			}
			if (children[i].scrollWidth > width) {
				width = children[i].offsetWidth;
			}
		}
		if (ob.parentNode.parentNode == m && width < ob.parentNode.clientWidth) {
			width = ob.parentNode.offsetWidth + 1;
		}
		ob.style.width = width + 'px';
	}

	var show = function(ob) {
		if ('\v'!='v') setWidth(ob);
		setPosition(ob);
		if ('\v'=='v') setWidth(ob); // IE6-7 needs to do this after positioning, FF1/Opera8 - before it
		m.lastOpen = ob;
		ob.style.visibility = 'visible';
		ob.parentNode.style.zIndex = '1000';
		ob.parentNode.getElementsByTagName('a')[0].className = chosenClass;
	}

	m.onmouseover = function() {
		clearTimeout(m.hideTimer);
		var tgt = (arguments[0] && arguments[0].target) || window.event.srcElement;
		if (tgt.tagName.toLowerCase() == 'span') tgt = tgt.parentNode;
		if (tgt.tagName.toLowerCase() != 'a') return;
		var ul = tgt.parentNode.getElementsByTagName('ul')[0];
		if (m.lastOpen != ul) hideBranch(tgt.parentNode.parentNode);
		if (ul) show(ul);
	}

	m.onmouseout = function() {
		m.hideTimer = setTimeout(function() {hideBranch(m)}, delay);
	}
}

function checkSearchForm(form) {
	form.keyword.value = form.keyword.value.replace(/^\s+|\s+$/, '');
	if (form.keyword.value == '') {
		form.keyword.focus();
		return false;
	}
}

function writeML(name, text, cssClass)
{
    if (text == "") {
        text = name + "@epam.com";
    }
    
    if (cssClass != "") {
        cssClass = " class=\"" + cssClass + "\"";
    }
    document.write("<a href=\"mailto:" + name + "@epam.com" + "\""+ cssClass +">" + text + "</a>");
}

function ClientValidate() {
    var mandataryControls = new Array("ctl00_ContentPlaceHolder_txtFirstName", "ctl00_ContentPlaceHolder_txtLastName", "ctl00_ContentPlaceHolder_txtCompany", "ctl00_ContentPlaceHolder_txtCountry", "ctl00_ContentPlaceHolder_txtCity", "ctl00_ContentPlaceHolder_txtEmail", "ctl00_ContentPlaceHolder_txtContactPhone", "ctl00_ContentPlaceHolder_txtDetails", "ctl00_ContentPlaceHolder_txtSecurityCode");
    var o;
    var isError = false;
    
    for (var i=0;i<mandataryControls.length;i++) {
        o = document.getElementById(mandataryControls[i]);
        o.className = "";
        
        if (o.value == "") {
            o.className = "error";
            
            if(!isError) {
                isError = true;
                o.focus();
            }
        }
    }
    
    if(isError) {
        return false;
    }
    
    return true;
}