function regionSelector_activate()
{
	RegionSelector('RegionList');
}

function RegionSelector(id)
{
	var timer;
	var selector;

	if (!document.getElementById(id))
	{
		return;
	}
	else
	{
		selector = document.getElementById(id);
		Aopener = selector.getElementsByTagName("a")[0];

		Aopener.onclick = showRegionListOnClick;
		selector.onmouseout = hideRegionList;
	}

	function showRegionListOnClick()
	{
		if (selector.className.indexOf('_over') == -1)
		{
			selector.className += ' ' + selector.className + '_over';
		}
		selector.onmouseover = showRegionList;
		return false;
	}


	function showRegionList()
	{
		if (timer)
		{
			clearTimeout(timer);
		}
		if (this.className.indexOf('_over') == -1)
		{
			this.className += ' ' + this.className + '_over';
		}
	}

	function hideRegionList()
	{
		if (this.className.indexOf('_over') != -1)
		{
			var list = this;

			timer = window.setTimeout(function(){list.className = list.className.substr(0, list.className.indexOf(' ')); selector.onmouseover = null;}, 500);
		}
	}

}

function menu_activate()
{
    Menu('ctl00_TopMenu');
}

function Menu(id)
{
	var timer;

	function onovermenu(elem)
	{
		/*Hide all root LI elements to prevent the situation when two or more root LIsts stay opened. It can occur because of clearTimeout and wrong related target definition (depends on browser).*/
		var liElems = document.getElementById(id).getElementsByTagName('li');
			for (i=0; i<liElems.length; i++)
			{
				onoutmenu(liElems[i], "level_over");
			}
		/*end*/
		elem.className += " " + elem.className + "_over";
	}
	function onoutmenu(elem, classSubstr)
	{
		if (!classSubstr)
		{
			var classSubstr = "_over";
		}
		if(elem.className.indexOf(classSubstr) != -1)
			elem.className = elem.className.substr(0, elem.className.indexOf(" "));
	}
	function mouseHandler(e)
	{
		if (!e) e = window.event;
		var relTarget = (e.toElement)? e.toElement : e.relatedTarget;
		var self = this;
		if (e.type == 'mouseover')
		{
			/*clearTimeout to prevent hiding if user goes back to menu during timeout*/
			clearTimeout(timer);
			onovermenu(self);
		}
		else if (e.type == 'mouseout')
		{
			/*timeout starts if related target isn't root menu or menu levels*/
			if (relTarget && relTarget.id && relTarget.id.indexOf('ctl00_TopMenu') == -1 || relTarget && !relTarget.id && relTarget.className.indexOf('level') == -1)
			{
				timer = window.setTimeout(function(){onoutmenu(self);}, 500);
			}
			/*otherwise - standard handler*/
			else
			{
				onoutmenu(self);
			}
		}
	}

    function specHide(elem)
    {
        var hider = document.createElement("div");
        hider.style.height = 0;
        hider.style.overflow = "hidden";
        elem.parentNode.replaceChild(hider,elem);
        hider.appendChild(elem);
        elem.style.display = "block";
    }
    function deHide(elem)
    {
        elem.style.display = "";
        elem.parentNode.parentNode.replaceChild(elem,elem.parentNode);
    }
	function menuLinks(rootElem)
	{
		var menuLinks = rootElem.childNodes[i].getElementsByTagName('a');
		for (j=0; j< menuLinks.length; j++)
		{
			menuLinks[j].className = "menu-level-link";
		}
	}
	function activateTwoLevel2(elem)
    {
        elem.className = "two-level-second";
		elem.style.display = "block";
		for (var i = 0; i < elem.childNodes.length; i++)
			{
				if (elem.childNodes[i].nodeName.toLowerCase() == 'li')
				{
					var liElem = elem.childNodes[i];
					liElem.className = "two-level-second";
					liElem.onmouseover = mouseHandler;
					liElem.onmouseout = mouseHandler;
				}
			}
		elem.style.display = "";
    }
    function activateTwoLevel1(elem, rootElem)
    {
        elem.className = "two-level-first";
        for (var i = 0; i < elem.childNodes.length; i++)
	        if (elem.childNodes[i].nodeName.toLowerCase() == 'li')
	        {
		        var liElem = elem.childNodes[i];
		        var aElem = liElem.getElementsByTagName("a")[0];
                var transpBg = document.createElement("div");
                transpBg.className = "two-level-first-bg";
                liElem.insertBefore(transpBg,liElem.firstChild);
		        liElem.className = "two-level-first"
		        liElem.onmouseover = mouseHandler;
		        liElem.onmouseout = mouseHandler;
		        if (liElem.getElementsByTagName("ul").length > 0)
		        {
		            var childUl = liElem.getElementsByTagName("ul")[0];
					activateTwoLevel2(childUl);
		            var subMenuBg = document.createElement("div");
                    subMenuBg.className = "two-level-second-bg";
                    childUl.style.display = "block";
                    subMenuBg.style.height = liElem.getElementsByTagName("ul")[0].offsetHeight + "px";
                    childUl.style.display = "";
                    liElem.appendChild(subMenuBg);
		        }
				var aElemHeight = aElem.offsetHeight;
				/*aElem.style.display = "inline-block";*/
				aElem.style.paddingTop = (liElem.offsetHeight - aElemHeight) / 2 + "px";
		        aElem.style.paddingBottom = aElem.style.paddingTop;
				/*aElem.style.height = aElemHeight + "px";*/

		    }
		activateBg(elem, rootElem);
    }
    function activateSingleLevel1(elem, rootElem)
    {
        elem.className = "one-level-item";
        for (var i = 0; i < elem.childNodes.length; i++)
	        if (elem.childNodes[i].nodeName.toLowerCase() == 'li')
	        {
		        var liElem = elem.childNodes[i];
                liElem.className = "one-level-item";
		        liElem.onmouseover = mouseHandler;
		        liElem.onmouseout = mouseHandler;

		    }
		activateBg(elem, rootElem);
    }
    function activateTwoLevel(rootElem)
    {
        var childUl = rootElem.getElementsByTagName("ul")[0];
        specHide(childUl);
        rootElem.onmouseover = mouseHandler;
        rootElem.onmouseout = mouseHandler;
        activateTwoLevel1(childUl, rootElem);
        deHide(childUl);
    }
    function activateSingleLevel(rootElem)
    {
        var childUl = rootElem.getElementsByTagName("ul")[0];
        specHide(childUl);
        rootElem.onmouseover = mouseHandler;
        rootElem.onmouseout = mouseHandler;
        activateSingleLevel1(childUl, rootElem);
        deHide(childUl);
    }
	function activateNoLevel(rootElem)
    {
        var childUl = rootElem.getElementsByTagName("a")[0];
        rootElem.onmouseover = mouseHandler;
        rootElem.onmouseout = mouseHandler;
    }
	var rootElem;
	if (!document.getElementById(id))
	{
		return;
	}
	if (document.getElementById(id).nodeName.toLowerCase() != 'ul')
	{
	    if (document.getElementById(id).getElementsByTagName("ul")[0])
		{
		    rootElem = document.getElementById(id).getElementsByTagName("ul")[0];
		}
		else
		{
		    return;
		}
	}
	else
	    rootElem = document.getElementById(id);
	var i = 0;
	for (i = 0; i < rootElem.childNodes.length; i++)
	{
		if(rootElem.childNodes[i].className == 'two-level')
		{
			menuLinks(rootElem);
			activateTwoLevel(rootElem.childNodes[i]);
		}
		else if(rootElem.childNodes[i].className == 'one-level')
		{
			menuLinks(rootElem);
			activateSingleLevel(rootElem.childNodes[i]);
		}
		else if (rootElem.childNodes[i].className == 'no-level')
		{
			menuLinks(rootElem);
			activateNoLevel(rootElem.childNodes[i]);
		}
	}
	return;
}

function activateBg(elem, rootElem)
{
	var elemBg = document.createElement("div");
	var els = elem.getElementsByTagName('li');
	var elsCount = elem.getElementsByTagName('li').length;
	var liHeight;
	for (i=0; i<els.length; i++)
	{
		if (els[i].getElementsByTagName('ul').length >= 1)
		{
			elsCount -= els[i].getElementsByTagName('li').length;
		}
	}
	if (!window.getComputedStyle)
	{
		liHeight = parseInt(els[0].currentStyle.height);
	}
	else
	{
		liStyle = window.getComputedStyle(els[0], "");
		liHeight = parseInt(liStyle.getPropertyValue("height"));
	}
	elemBg.className = elem.className + "-transp-bg";
	elemBg.style.height = elsCount * liHeight + "px";
	rootElem.appendChild(elemBg);
}

function headerSearch_activate()
{
	if (!document.getElementById('SearchText'))
	{
		return;
	}
	else
	{
		var elem = document.getElementById('SearchText');
		elem.className = 'inactive';
		elem.onfocus = onFocusHandler;
		elem.onblur = onBlurHandler;
	}

	function onFocusHandler()
	{
		if (this.value == this.defaultValue)
		{
			this.value='';
			this.className='active';
		}
	}

	function onBlurHandler()
	{
		if (this.value == '')
		{
			this.value = this.defaultValue;
			this.className='inactive';
		}
	}
}

function parseURL(name)
/*works for array of params*/
{
	function getParam()
	{
		var url = new String(window.location);
		place = url.indexOf('?');
		if (place != -1)
		{
			url = url.substr(place+1);
			/*array of substrings, where each substring is one parameter*/
			params = url.split('&');
			x = 0;
			/*quantity of parameters*/
			quantity = params.length;
			/*create new array with keys*/
			var keys = new Array(quantity);
			/*create new array with values*/
			var values = new Array(quantity);
			for (param in params)
			{
					/*get Pair key and value for every param*/
					getPair = params[param].split('=');
					keys[x] = getPair[0];
					values[x] = getPair[1];
					x++;
			}
			var goal = [];
			for (i=0; i<keys.length; i++)
			{
				if (keys[i] == name[i])
				{
					goal[i] = values[i];
				}
			}
			getAction(goal);
		}
		else return;
	}
	getParam(name);
}

function ChangeURLbySelect(selectID,param)
{
	var URLstring = window.location.href;
	if (URLstring)
	{
		var re = new RegExp(param,"ig");
		if (re.test(URLstring.substring(URLstring.indexOf("?")+1, URLstring.length)))
		{
			firstpart = URLstring.substring(0, (URLstring.indexOf(param))-1);
			lastpart = URLstring.substring(URLstring.indexOf(param)+1+param.length);
			if ((lastpart.indexOf("&")+1)==0)
				URLstring = firstpart;
			else
				URLstring = firstpart + lastpart.substring(lastpart.indexOf("&"));
		}
		else
		{
			if ((URLstring.indexOf("?")+1)==0)
				URLstring = URLstring+"?";
		}
		if (URLstring.substr(URLstring.length-2,1)=="?")
			URLstring=URLstring+param+"="+document.getElementById(selectID).options[document.getElementById(selectID).selectedIndex].value;
		else
			URLstring=URLstring+"&"+param+"="+document.getElementById(selectID).options[document.getElementById(selectID).selectedIndex].value;
		return URLstring;
	}
}

function ShowId (id)
{
	if (document.getElementById(id).style.display=="none")
		{document.getElementById(id).style.display=""}
	else{document.getElementById(id).style.display="none"}
}

function openLevel (contentId)
{
	var Level = document.getElementById(contentId);
	var Item = document.getElementById(contentId + '_content');
	if (Item != null && Item.className == 'hidden')
	{
		Item.Class = 'block opened';
		Item.className = 'block opened';
		Level.Class = 'toclose';
		Level.className = 'toclose';
	}
	else
	{
		Item.Class = 'hidden';
		Item.className = 'hidden';
		Level.Class = 'toopen';
		Level.className = 'toopen';
	}
}

function abbyyopenLevel (contentId)
{
	var Level = document.getElementById(contentId);
	var Item = document.getElementById(contentId + '_content');

	var r1 = "#"+contentId+";";
	var r2 = ";"+contentId+";";
	var r3 = "-"+contentId+";";
	var newLoc = window.location.href;

	if (Item != null && Item.className == 'hidden')
	{
		Item.Class = 'displayed opened';
		Item.className = 'displayed opened';
		Level.Class = 'abbyytoclose';
		Level.className = 'abbyytoclose';

		if (newLoc.indexOf(r3) > -1) {
			newLoc = newLoc.substr(0,newLoc.indexOf(r3)) + newLoc.substr(newLoc.indexOf(r3)+r3.length,newLoc.length);

		}
		else if (newLoc.indexOf(r1) == -1 && newLoc.indexOf(r2) == -1) {
			var wlString = String(window.location);
			newLoc += (window.location.hash == '' && wlString.substr(wlString.length-1,wlString.length) != '#') ? "#" : "";
			newLoc += contentId + ";";
		}
	}
	else
	{
		Item.Class = 'hidden';
		Item.className = 'hidden';
		Level.Class = 'abbyytoopen';
		Level.className = 'abbyytoopen';

		if ( newLoc.indexOf('#') > -1 && ( newLoc.indexOf(r1) > -1 || newLoc.indexOf(r2) > -1 ) ) {
			newLoc = (newLoc.indexOf(r1) > -1) ? newLoc.substr(0,newLoc.indexOf(r1)) + "#" + newLoc.substr(newLoc.indexOf(r1)+r1.length,newLoc.length) : newLoc;
			newLoc = (newLoc.indexOf(r2) > -1) ? newLoc.substr(0,newLoc.indexOf(r2)) + ";" + newLoc.substr(newLoc.indexOf(r2)+r2.length,newLoc.length) : newLoc;
		}
		else if (newLoc.indexOf(r3) == -1) {
			newLoc += (newLoc.indexOf('#') > -1)? "" : "#";
			newLoc += r3;
		}
	}
	if (newLoc.substr(newLoc.length-1,1) == "#") newLoc += "n;";
	window.location.replace(newLoc);
}

function onloadOpenLevels() {
	if (window.location.hash.length > 1) {
		var hash = window.location.hash.substr(1,window.location.hash.length);
		var hashArray = hash.split(";");
		for(i=0;i<hashArray.length;i++) {
			if(document.getElementById(hashArray[i]) && document.getElementById(hashArray[i]).className == 'abbyytoopen')
				abbyyopenLevel(hashArray[i]);
			hashPref = hashArray[i].substr(0,1);
			hashBody = hashArray[i].substr(1,hashArray[i].length);
			if( hashPref == "-" && document.getElementById(hashBody) && document.getElementById(hashBody).className == 'abbyytoclose')
				abbyyopenLevel(hashArray[i].substr(1,hashArray[i].length));
		}
	}
}

function getOffset(elem) {
	if (elem.getBoundingClientRect) {
		return _getOffsetRect(elem);
	} else {
		return _getOffsetSum(elem);
	}
}
function _getOffsetSum(elem) {
	var top = 0, left = 0;
	while (elem) {
		top = top + parseInt(elem.offsetTop);
		left = left + parseInt(elem.offsetLeft);
		elem = elem.offsetParent;
	}

	return {
		top : top,
		left : left
	};
}
function _getOffsetRect(elem) {
	var box = elem.getBoundingClientRect();
	var body = document.body;
	var docElem = document.documentElement;
	var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
	var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
	var clientTop = docElem.clientTop || body.clientTop || 0;
	var clientLeft = docElem.clientLeft || body.clientLeft || 0;
	var top = box.top + scrollTop - clientTop;
	var left = box.left + scrollLeft - clientLeft;

	return {
		top : Math.round(top),
		left : Math.round(left)
	};
}

var Geometry = {};
Geometry.getWindowX = function(){
	if (window.screenLeft === undefined) return window.screenLeft;
	else if (window.screenX) return window.screenX;
};
Geometry.getWindowY = function(){
	if (window.screenLeft === undefined) return window.screenTop;
	else if (window.screenX) return window.screenY;
};
Geometry.getViewportWidth = function(){
	if (window.innerWidth) return window.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;
	else if (document.body.clientWidth) return document.body.clientWidth;
};
Geometry.getViewportHeight = function(){
	if (window.innerWidth) return window.innerHeight;
	else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientHeight;
	else if (document.body.clientWidth) return document.body.clientHeight;
};
Geometry.getHorizontalScroll = function(){
	if (window.innerWidth) return window.pageXOffset;
	else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.scrollLeft;
	else if (document.body.clientWidth) return document.body.scrollLeft;
};
Geometry.getVerticalScroll = function(){
	if (window.innerWidth) return window.pageYOffset;
	else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.scrollTop;
	else if (document.body.clientWidth) return document.body.scrollTop;
};
Geometry.getDocumentWidth = function(){
	if (document.documentElement && document.documentElement.scrollWidth) return document.documentElement.scrollWidth;
	else if (document.body.scrollWidth) return document.body.scrollWidth;
};
Geometry.getDocumentHeight = function(){
	if (document.documentElement && document.documentElement.scrollWidth) return document.documentElement.scrollHeight;
	else if (document.body.scrollWidth) return document.body.scrollHeight;
};
