


function $(sID){ return sID && document.getElementById(sID) || null };

function $e(obj, type, fn)
{
	if(typeof(obj)=='string') obj=$(obj);
	if(!(obj && type && fn && fn.call))
		return false;

	if(obj.addEventListener){
		obj.addEventListener(type,fn,false);
	}else if(obj.attachEvent){
		obj.attachEvent('on'+type,fn);
	}
}

/**
	dMenu (c) DPP (paul.dovbush@gmail.com)
	Based on Pop-it menu - By Dynamic Drive | http://www.dynamicdrive.com

	@adds:
	[+] opera support
	[+] dropdown positioning (except ns4)
	[+] scroll support for ns6 & opera
	[+] deleted 'width' styles (to support long menu items,
		menu will have the minimal size possible)

	@bugs:
	[-] menu encoding (ex: windows-1251 [ru]) in ns4

	@usage:
	script type="text/javascript"
		var dm=new dMenu();
		dm.dMenuCreate('lnkM1','menu1','down');
		dm.dMenuCreate('lnkM2','menu2','down');
		dm.dMenuCreate('lnkM3','menu3','down');
	/script
**/
function dMenu2()
{
	//: construnctor

	var oCurrentMenu=null;

	//: const
	var DMENU_TIMEOUT=500;


	//: public

	// Associate link with menu
	/// sIDLink - ID of element that will show menu 'onMouseOver'
	/// sIDMenu - ID of menu container (usually DIV); containing any content
	///		- create item higlignting using CSS
	/// sType - menu type: can be 'down' or 'left'
	this.dMenuCreate=function(sIDLink, sIDMenu, sType){
		var oLink=$(sIDLink);
		var oMenu=$(sIDMenu);
		if(!oLink || !oMenu) return;

		oLink.oMenu=oMenu;
		oLink.sType=sType;
		oMenu.dm=this;
		$e(oLink,'mouseover',dMenu,true);
		$e(oLink,'mouseout',dMenuHide,true);
		$e(oMenu,'mouseover',dMenuDiscardHide,true);
		$e(oMenu,'mouseout',dMenuDynamicHide,true);
	};


	//: private

	// Calculate absolute position of oObj element
	/// iDim  : 'x' OR 'y'
	/// sType : 'down' OR 'left'
	function getPos(oObj, iDim, sType){
		if(!oObj) return;

		var iC, iP=oObj.offsetParent;

		if(iDim=='x'){
			iC=oObj.offsetLeft;
			if(sType=='left')
				iC+=oObj.offsetWidth;
		}else{
			iC=oObj.offsetTop;
			if(sType=='down')
				iC+=oObj.offsetHeight -5;
			//else
				//iC+=5;
		}

		while(iP){
			iC+= (iDim=='x') ? iP.offsetLeft : iP.offsetTop;
			iP=iP.offsetParent;
		}

		return iC;
		// return iC+(iDim=='x'?-23:6);
	}

	function dMenu(e){
		var oLink=e.target||e.srcElement;
		while(oLink!=null && oLink.tagName!="A")
			oLink=oLink.parentNode;
		if(!oLink) return;

		if(oCurrentMenu){
			clearTimeout(oCurrentMenu.dMenuTimer);	// dMenuDiscardHide();
			if(oLink.oMenu!=oCurrentMenu){
				oCurrentMenu.style.display='';
				clearTimeout(oCurrentMenu.dMenuTimer);
				// dMenuForceHide(oLink.oMenu);
			}
			if(chained(oLink.oMenu))
				dMenuForceHide(oLink.oMenu);
		}

		oCurrentMenu=oLink.oMenu;

		/*	// Use this if no check of fitting in window neded
			oCurrentMenu.style.left=iPosX+'px';
			oCurrentMenu.style.top=iPosY+'px';
		*/

		var iPosX=getPos(e.target||e.srcElement,'x',oLink.sType);
		var iScrWidth=document.body.clientWidth || window.innerWidth;
		if(iScrWidth-iPosX<oCurrentMenu.offsetWidth)
			oCurrentMenu.style.left=iScrWidth-oCurrentMenu.offsetWidth+'px';
		else
			oCurrentMenu.style.left=iPosX+'px';

		var iPosY=getPos(e.target||e.srcElement,'y',oLink.sType);
		var iScrHeight=document.body.clientHeight || window.innerHeight;
		if(iScrHeight-iPosY<oCurrentMenu.offsetHeight)
			oCurrentMenu.style.top=iScrWidth-oCurrentMenu.offsetHeight+'px';
		else
			oCurrentMenu.style.top=iPosY+'px';

		// var ch=dMenu2.chain;
		// var chained=0;
		// for(var i=ch.length-1; i>=0; i--){
			// if(ch[i]==oCurrentMenu)
				// chained=1;
		// }
		// if(chained)
			// dMenuForceHide();
		oCurrentMenu.style.display='block';
	}

	// Hide current menu after timeout
	function dMenuHide(){
		if(oCurrentMenu)
			oCurrentMenu.dMenuTimer=setTimeout(dMenuForceHide,DMENU_TIMEOUT);
	}

	dMenu2.chain=[];

	// this.hide=function()
	// {
		// dMenuForceHide();
	// }
	// Hide menu (immediately)
	function dMenuForceHide(stop){
		if(oCurrentMenu){
			oCurrentMenu.style.display='';
			clearTimeout(oCurrentMenu.dMenuTimer);
			var ch=dMenu2.chain;
			for(var i=ch.length-1; i>=0; i--){
				if(stop && ch[i].dm==stop.dm)
					break;

				ch[i].style.display='';
				clearTimeout(ch[i].dMenuTimer);
			}
			dMenu2.chain=[];
		}
	}

	// Discard 'Hide after timeout'
	function dMenuDiscardHide(){
		if(oCurrentMenu){
			clearTimeout(oCurrentMenu.dMenuTimer);
			unchain(oCurrentMenu);
		}
	}

	function chainIt(menu)
	{
		if(!chained(menu))
			dMenu2.chain[dMenu2.chain.length]=menu;
	}

	function chained(menu)
	{
		var ch=dMenu2.chain;
		var chained=false;
		for(var i=ch.length-1; i>=0; i--){
			if(ch[i].dm==menu.dm)
				chained=true;
		}
		return chained;
	}

	function unchain(menu)
	{
		var ch=dMenu2.chain;
		for(var i=ch.length-1; i>=0; i--){
			if(ch[i]==menu){
				dMenu2.chain.splice(i,1);
				break;
			}
		}

	}

	// Hide menu if mouse out of menu container
	function dMenuDynamicHide(e){
		var src=e.relatedTarget||e.toElement;
		// if($('submenu_programs')!=oCurrentMenu && src.id=='submenu_programs' || src.parentNode.id=='submenu_programs'){
		// $('log').innerHTML+=src.nodeName+'#'+src.id+' '+src.className+' : '+dMenu2.prototype.isPrototypeOf(src&&(src.dm||src.parentNode.dm)||null)+'<br/>';
		var dm;
		var p=src;
		while(p && p.parentNode && !dm){
			dm=p.dm||null;
			p=p.parentNode;
		}

		if(dMenu2.prototype.isPrototypeOf(dm)){
			dMenuDiscardHide();
			chainIt(oCurrentMenu);
			return;
		}
		if(window.event){	// IE & Opera
			if(!oCurrentMenu.contains(e.toElement))
				dMenuHide();
		}else{	// ns6
			if(e.currentTarget!=e.relatedTarget){
				var a=e.currentTarget, b=e.relatedTarget;
				while(b && b.parentNode){
					if(b==a) return;
					b=b.parentNode;
				}
				dMenuHide();
			}
		}
	}
}

$e(window,'load',function(){
	var dm=new dMenu2();
	dm.dMenuCreate('lm_programs','menu_programs','left');
	dm.dMenuCreate('lm_countries','menu_countries','left');

	var dm2=new dMenu2();



dm2.dMenuCreate('lsm_137','lsm2_137','left');

dm2.dMenuCreate('lsm_136','lsm2_136','left');

dm2.dMenuCreate('lsm_50','lsm2_50','left');

dm2.dMenuCreate('lsm_981','lsm2_981','left');

dm2.dMenuCreate('lsm_52','lsm2_52','left');

dm2.dMenuCreate('lsm_440','lsm2_440','left');

dm2.dMenuCreate('lsm_729','lsm2_729','left');

dm2.dMenuCreate('lsm_53','lsm2_53','left');

dm2.dMenuCreate('lsm_54','lsm2_54','left');

dm2.dMenuCreate('lsm_130','lsm2_130','left');

dm2.dMenuCreate('lsm_140','lsm2_140','left');

dm2.dMenuCreate('lsm_144','lsm2_144','left');

dm2.dMenuCreate('lsm_141','lsm2_141','left');

dm2.dMenuCreate('lsm_138','lsm2_138','left');

dm2.dMenuCreate('lsm_49','lsm2_49','left');

dm2.dMenuCreate('lsm_1009','lsm2_1009','left');

dm2.dMenuCreate('lsm_982','lsm2_982','left');

dm2.dMenuCreate('lsm_51','lsm2_51','left');

dm2.dMenuCreate('lsm_146','lsm2_146','left');

dm2.dMenuCreate('lsm_142','lsm2_142','left');


	// var col=$('menu_programs').getElementsByTagName('A');
	// for(var i=0; i<col.length; i++)
		// dm2.dMenuCreate(col[i].id,'submenu_programs','left');
});
