

function LoadRMFrame(AX, AY, AID, APID, AIID, ACode, AIsURL, ACanMove) {
	$(document.getElementById(AIID)).addClass(GV_MenuHoverClass);
	var lDiv = document.getElementById(AID);
	if (!lDiv) {
		var lHTM = "<div id=" + AID + " style='position:absolute;z-index:100;visibility:hidden;margin:0px;padding:0px;' " +
			"onmouseover='DoFrameOver(" + '"' + AID + '"' + ")' onmouseout='DoFrameOut(" + '"' + AID + '"' + ")'>&nbsp;</div>";
		$("body").append(lHTM);
		//prompt("",ACode);
		if (AIsURL) { $('#' + AID).load(ACode, { xparam: 1 }, function() { DoRMLoad(AX, AY, AID, APID, AIID, ACanMove, true); }); }
		else { DoRMLoad(AX, AY, AID, APID, AIID, ACanMove, true); };
	} else DoRMLoad(AX, AY, AID, APID, AIID, ACanMove, false);
}



function DoRMLoad(AX, AY, AID, APID, AIID, ACanMove, ANew) {
	var lDiv = document.getElementById(APID);
	if (lDiv) lDiv.RMChildID = AID;
	lDiv = document.getElementById(AID);
	if (lDiv) {
		if (ACanMove) {
			lDiv.RMParentID = APID;
			lDiv.RMItemID = AIID;
			var lSize = { 'width': lDiv.offsetWidth, 'height': lDiv.offsetHeight };
			var de = document.documentElement;
			var w = self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
			var h = (self.innerHeight || (de && de.clientHeight) || document.body.clientHeight) + $(document).scrollTop();
			if ((AY + lSize.height) > h) { AY = h - lSize.height; };
		};
		$('#' + AID).css({ left: AX + "px", top: AY + "px", display: 'none', visibility: 'visible' });
//		$('#' + AID).show(200);
		$('#' + AID).show();
		if (ANew) { UpdateMIEvents(); };
	};
}




function HideRMFrame(AID, AMIID) {
	$(document.getElementById(AMIID)).removeClass(GV_MenuHoverClass);
	$('#' + AID).css({ visibility: 'hidden' });
	if (GV_Loading == AID) { GV_Loading = '' };
}




function DoFrameOver(AID) { GV_CurrMR = AID; }



//function DoFrameOut(AID) { GV_CurrMR = ''; setTimeout('RMCheckAndDeleteCP("' + AID + '")', 200); }
function DoFrameOut(AID) { GV_CurrMR = ''; setTimeout('RMCheckAndDeleteCP("' + AID + '")', 1); }



function DoMIOver(AData) {
	GV_CurrMRItem = AData;
	var lSeq = MRIDataToSeq(AData);
	if (GV_Loading != lSeq[0]) {
		GV_Loading = lSeq[0];

		var lPos = 0;
		if (lSeq.length > 3) {
			lPos = lSeq[3];
		}

		var callFunc = "ShowItemSubMenu('" + lSeq[0] + "','" + lSeq[1] + "','" + AData + "','" + lSeq[2] + "'," + lPos + ")";
		//prompt("", callFunc);
//		setTimeout(callFunc, 300);
		setTimeout(callFunc, 1);
	}
}



function DoMIOut(AData) {
	GV_CurrMRItem = '';
	var lSeq = MRIDataToSeq(AData);
	DoFrameOut(lSeq[0]);
}



function RMCheckAndDelete(AID) {
	var lRes = false;
	if (AID != GV_CurrMR) {
		var lDiv = document.getElementById(AID);
		lRes = (!lDiv) || (((lDiv.RMItemID) ? (GV_CurrMRItem != lDiv.RMItemID) : true) &&
			((lDiv.RMChildID) ? RMCheckAndDelete(lDiv.RMChildID) : true));
	};
	if (lRes) HideRMFrame(AID, lDiv.RMItemID);
	return lRes;
}



function RMCheckAndDeleteCP(AID) {
	var lDiv = document.getElementById(AID);
	if (lDiv) {
		var lParent = lDiv.RMParentID;
		var lRes = RMCheckAndDelete(AID);
		if (lRes && lParent) RMCheckAndDeleteParents(lParent);
	};
}



function RMCheckAndDeleteParents(APID) {
	if (APID != GV_CurrMR) {
		var lDiv = document.getElementById(APID);
		if (lDiv) {
			var lParent = lDiv.RMParentID;
			HideRMFrame(APID, lParent);
			if (lParent) RMCheckAndDeleteParents(lParent);
		};
	};
}



function getAbsoluteLeft(objectId){
	o=document.getElementById(objectId);oLeft=o.offsetLeft;
	while(o.offsetParent!=null){oP=o.offsetParent;oLeft+=oP.offsetLeft;o=oP};
	return oLeft;
}




function getAbsoluteTop(objectId){
	o=document.getElementById(objectId);oTop=o.offsetTop;var ST;
	while(o.offsetParent!=null){oP=o.offsetParent;oTop+=oP.offsetTop;ST=oP.scrollTop;oTop-=ST;o=oP};
	return oTop;
}



function ShowItemSubMenu(AID, APID, AIID, ACode, APos) {
	if (GV_CurrMRItem == AIID) {
		var lObj = document.getElementById(AIID);
		if (lObj) {
			var lPos;
			switch (APos) {
				case 1: lPos = { 'x': getAbsoluteLeft(AIID), 'y': getAbsoluteTop(AIID) + lObj.offsetHeight }; break;
				default: lPos = { 'x': getAbsoluteLeft(AIID) + lObj.offsetWidth, 'y': getAbsoluteTop(AIID) };
			};
			LoadRMFrame(lPos.x, lPos.y, AID, APID, AIID, ACode, true, true);
		};
	};
}



function UpdateMIEvents(){
	$(GV_MenuItemClass)
		.hover(function(){DoMIOver(this.id)},function(){DoMIOut(this.id)});
}



function MRIDataToSeq(AData){
	return AData.split('_');//ID_PID_URL_Pos
}



var GV_MenuItemClass='.rmlitem';//класс элемента меню
var GV_MenuHoverClass='hoveritem';//класс наведенного элемента меню
var GV_CurrMR='';//Frame under cursor
var GV_CurrMRItem='';//Menu item under cursor
var GV_Loading='';
//для элементов меню - id='ID-создаваемое меню_PID-родительское меню_URL-чё в меню загружать_Pos-необязательный, показывает как позиционировать'
$(document).ready(UpdateMIEvents);