﻿

var w = window,d = w.document,b = d.body;


var MNS_ACTIVEMODE		= 0x80000000;
var MNS_POPUP			= 0x40000000;
var MNS_RIGHTALIGHN		= 0x20000000;
var MNS_AUTODISMISS		= 0x10000000;
var MNS_VERTICAL 		= 0x8000000;
var MNS_OVERFLOWSCROLL	= 0x4000000;

var MF_UNHILITE=0x0;
var MF_HILITE=0x80;

var m_KillTmr = 0;
var m_SelectTmr = 0;

var m_minClientW=200;
var m_minClientH=40;

var m_minWidth = 140;

var mi_kill=null;
var m_s;//m_scroller
var m_sPX = 150;
var m_sDelay = 35;
var m_sStart;
var m_sTime;
var m_sTmr;
var m_sDelta;

var element;
var BrowserType="IE";
var obj_idMainWinDiv;

// Note: function addEvent,getElement,getAttr... - into file JS/public/IEemulator2.js

////////////////////////////////
if(d.all) BrowserType="IE";
else BrowserType="N";

// first function. calling from template.
function initBar(elementId)
{
	if (!d.firstFlyoutInstance)
	{
		GlobalInit();
		d.firstFlyoutInstance = true;
	}
	element=getElement(elementId)
	if(element)
		RootInit();
}



// obsolete:  this function work with flyOutHorizontal.htc ('behavior' in .css)
function Event_oncontentready()
{
	if (!d.firstFlyoutInstance)
	{
		GlobalInit();
		d.firstFlyoutInstance = true;
	}
	RootInit();
}
//

function GlobalInit()
{
    addEvent(w,"onresize",CloseAll);
    addEvent(w,"onscroll",CloseAll);
    obj_idMainWinDiv=getElement("idMainWinDiv");
    addEvent(obj_idMainWinDiv,"onscroll",CloseAll);
    addEvent(b,"onmousedown",CloseAll);
    addEvent(b,"onkeydown",CloseAll);

   /* if (w.addEventListener) //DOM method for binding an event 
	{
		w.addEventListener("onresize", CloseAll,false);
		w.addEventListener("onscroll", CloseAll,false);
		obj_idMainWinDiv=getElement("idMainWinDiv")
		obj_idMainWinDiv.addEventListener("onscroll", CloseAll,false);
		b.addEventListener("onmousedown", CloseAll,false);
		b.addEventListener("onkeydown", CloseAll,false);
		//BrowserType="N";
	}
	else
	{
	    if(w.attachEvent)//IE exclusive method for binding an event 
	    {
		    w.attachEvent("onresize", CloseAll);
		    w.attachEvent("onscroll", CloseAll);
		    idMainWinDiv.attachEvent("onscroll", CloseAll);
		    obj_idMainWinDiv=d.all["idMainWinDiv"];
		    b.attachEvent("onmousedown", CloseAll);
		    b.attachEvent("onkeydown", CloseAll);
		    //BrowserType="IE";
	    }
	}*/
}


function RootInit()
{
	var mi = new MENUINFO();

	mi.style |= (getAttr(element,"autoDismiss") && getAttr(element,"autoDismiss") == "yes") ? MNS_AUTODISMISS : 0;
	mi.style |= (getAttr(element,"dir") && getAttr(element,"dir") == "rtl") ? MNS_RIGHTALIGHN : 0;
	mi.style |= (getAttr(element,"menuType") && getAttr(element,"menuType") == "vertical") ? MNS_VERTICAL : 0;
	mi.style |= (getAttr(element,"overflowY") && getAttr(element,"overflowY")== "scroll") ? MNS_OVERFLOWSCROLL : 0;

	
	mi.style |= MNS_ACTIVEMODE;

	if(element.all) mi.mits = element.all["nbItem"]; // Even though element.all is not Standard, it works faster, so let IE use it
	else
	{
	
	   var arr=document.getElementsByName("nbItem");
	   var myArr=new Array();
	   var k=0;
	   for(i=0;i<arr.length; i++)
	   {
		   	var obj=arr[i];
		   	if(obj.className=="nbRootItem")
			{
				myArr[k]=arr[i];
			 	k++;
			}
	   }
	   mi.mits =myArr;
	} 

	if (mi.mits && !mi.mits.length) mi.mits = new Array(mi.mits);
	element.mi = mi;
	
	try
	{
		element.sn = new Array();
		
		var nbd =null;
		var nodes=null;
		
		if(d.all) nbd=d.all["data-" + element.dataID];
		else nbd=document.getElementById("data-" + element.attributes.getNamedItem("dataid").value);

		if (nbd)
		{
			nodes = nbd.selectNodes("//node");
		}

		if (nodes)
		{ 
			if(nodes.length)
			for (var i=0; i<nodes.length; i++)
			{
				var n = nodes[i];
				var code = n.attributes.getNamedItem("code").value;
				element.sn[element.sn.length] = code;
			}
		}
	}
	catch(ex)
	{//alert("ex="+ex)
	}
			
	ItemsInit(element);
}

function MenuInit(mit)
{
	var mm ;

    if(typeof(mit)=="undefined")
        return;
        
        
	if(d.all) mm = d.all["nbFlayOut" + mit.code]; // only IE
	else mm=document.getElementById("nbFlayOut" + getAttr(mit,"code"));
		
	if (!mm) return;
	
	var m = mm.cloneNode(true);
	if (!m) return;
	
	b.insertAdjacentElement("afterBegin", m);
	
	mm.removeNode(true)
	if(typeof(element)!="undefined" && typeof(element.mi)!="undefined")
	{
	    m.mi = MenuInfoClone(element.mi);
	    m.mi.style |= MNS_POPUP;
	    m.mi.style ^= MNS_ACTIVEMODE;
	    m.mi.parent = mit;
	    mit.mii.sm = m;
	    if(m.all) m.mi.mits = m.all["nbItem"]; //only IE
	    else
	    {
    			
		    var lst_nbItem = m.getElementsByTagName("span");
    		
		    var myArr=new Array();
   		    var k=0;
		    for (var i = 0; i < lst_nbItem.length; i++) 
		    {
			    if(lst_nbItem[i].className=="nbItem")
			    {
			        myArr[k]=lst_nbItem[i];
				    k++;
			    }
		    }
    		
		    m.mi.mits=myArr;
    	 
	    }
	    if (m.mi.mits && !m.mi.mits.length) m.mi.mits = new Array(m.mi.mits);
		    ItemsInit(m);
	}
}

function ItemsInit(m)
{
	var mits = m.mi.mits;
	if (!mits) return;
	
	for (var i=0; i<mits.length; i++)
	{
		var mii = new MENUITEMINFO();
		var mit = mits[i];
		mit.mii = mii;
		
		/*mit.onmouseover = MI_E_MOver;
		mit.onmouseout = MI_E_MOut;
		mit.onmousedown = MI_E_MDown;
		mit.onmouseup = MI_E_MUp;
		*/

		addEvent(mits[i],"mouseover",MI_E_MOver);
		addEvent(mits[i],"mouseout",MI_E_MOut);
		addEvent(mits[i],"mousedown",MI_E_MDown);
		addEvent(mits[i],"mouseup",MI_E_MUp);
		
        if(typeof(element)!="undefined" && typeof(element.sn)!="undefined")
        {
		    for (var j=0; j<element.sn.length; j++)
		    {
			    if (element.sn[j] == mit.code)
			    {
				    if (mit.className.indexOf("Selected") == -1)
					    mit.className = mit.className + "Selected";
			    }
		    }
		}
	}
}

function MENUINFO()
{
	this.style = 0;
	this.parent = null;
	this.mit = null;
	this.mits = null;
	this.width = 0;
}

function MENUITEMINFO()
{
	this.state = 0;
	this.sm = null;
}

function CloseAll()
{
	M_Hide(m_active);
	m_active = null;
}

function MenuInfoClone(tmi)
{
	var mi = new MENUINFO();
	if(typeof(tmi)=="object")
    {
        mi.style = tmi.style;
	    mi.parent = tmi.parent;
	}
	return mi;
	
}

function TrackPopupMenuEx(m, fl, x, y, cr)
{
	var mi = m.mi; // m=the sub-menu
	var pm = null;
	var bst = 0;
	var bsl = 0;
	var bsw = b.scrollWidth;
	var bow = b.offsetWidth;
	var bcw = b.clientWidth;
	var sw = 0;
	
	m.style.display = "block";
	
    var w=m.offsetWidth;
	
	m.style.width = w + "px";
	
	if (fl & MNS_RIGHTALIGHN)
	{
		x -= w;
	}
	var pw = 0;

	if (mi.parent)
	{
		pm = M_FromElmnt(mi.parent);
		if (pm.mi.style & (MNS_POPUP | MNS_VERTICAL))
			pw = pm.offsetWidth;
		
		if (pm.style.zIndex >= m.style.zIndex)
			m.style.zIndex = pm.style.zIndex + 1;
		
		if (!(pm.mi.style & MNS_POPUP) && obj_idMainWinDiv)
		{
			
			bst = obj_idMainWinDiv.scrollTop; //!!!!!!!!!!
			bsl = obj_idMainWinDiv.scrollLeft; //!!!!!!!!!!
		}
	}
	
	cr.top += bst;
	cr.bottom += bst;
	
	var p = new POINT();
	p.x = x;p.y = y;
	
	var r = new RECT();
	r.left = x;r.right = x + w;
	
	var temp;
	if ((cr.right - cr.left > m_minClientW) && (cr.bottom-cr.top > m_minClientH))
	{	
		if (fl & MNS_RIGHTALIGHN)
		{
			
			if (cr.left > r.left)
			{
				if (pw>0)
					temp=r.right+pw/*+2*/;
				else
					temp=r.right;
				r.left=temp;
				r.right=r.left+w;
				
			}
			if (cr.right<r.right )//&& cr.left!=0
			{
				//r.left=cr.left;if (w>cr.right-cr.left)m.style.width=(cr.right-cr.left)+"px";
			}
			
			p.x=r.left;
		}
		else
		{
			if (cr.right < r.right)
			{
				if (pw>0)temp=r.left-pw/*-2*/;else temp=r.left;r.right=temp;r.left=r.right-w;
			}
			if (cr.left > r.left)
			{
				r.left=cr.right-w;if (w>cr.right-cr.left)m.style.width=(cr.right-cr.left)+"px";
			}
			
			p.x = r.left
		}
		p.x -= (bsw - bcw);
		
		var mits = m.mi.mits;
		
		if (m.mi.style & MNS_OVERFLOWSCROLL)
		{
			if(m.childNodes.item(0).style) m.childNodes.item(0).style.display = "none";
			if(m.childNodes.item(1).style)  m.childNodes.item(1).style.overflow = "visible";
			if(m.childNodes.item(1).scrollTop) m.childNodes.item(1).scrollTop = 0;
			if(m.childNodes.item(2).style) m.childNodes.item(2).style.display = "none";
			
		}
		r.top = y;

		var mh = m.offsetHeight;
			
		r.bottom = r.top + mh;
		if (cr.bottom < r.bottom)
		{
			//alert((m.mi.style & MNS_OVERFLOWSCROLL))
			temp = cr.bottom - mh
			if (temp > cr.top)
				p.y = temp - 5;
			
			else if (m.mi.style & MNS_OVERFLOWSCROLL)
			{
				
				var scr = m.childNodes.item(2);
				scr.style.display = "block";
				m.style.height = (cr.bottom - cr.top) + "px";
				m.childNodes.item(1).style.overflow = "hidden";
				m.childNodes.item(1).style.height = (cr.bottom - cr.top - scr.offsetHeight) + "px";
				p.y = cr.top
			}
		}
		
		m.style.left = (p.x - bsl) + "px" ;
		m.style.top  = (p.y - bst-7) + "px";
		mi.style |= MNS_ACTIVEMODE;
		CkWinEls(m, -1)
	}
	else
	{
		return;
	}
}
function GetOffsetLeft(obj)
{
	if(obj)
	{
		var off=obj.offsetLeft;
		var pObj=obj.offsetParent;
		if(pObj) off+=GetOffsetLeft(pObj);
		return off;
	}
	else return 0;
}

// mouse over of element. activate next line of nav.bar
function MI_E_MOver_()
{
	var mit = mi_active;
	var mit_hc=getAttr(mit,"hc");
	if (mit_hc == "true" && mit.mii.sm == null)
		MenuInit(mit);
	
	var m = M_FromElmnt(mit);
	var mi = m.mi;
	
	var sm;
	if (mi.mit)
	{
		sm = mi.mit.mii.sm;
		if (sm && sm.mi.style & MNS_ACTIVEMODE)
		{
			M_Hide(mi.mit.mii.sm);
		}
	}
	
	M_CheckSelection(m);
	
	sm = mit.mii.sm;

	if (sm && !(sm.mi.style & MNS_ACTIVEMODE))
	{
		var r = MI_Rect(m, mit)
		var x,y;
		var fl = 0;
		var cr = M_ClientRect();
		
		if (((m.mi.style & MNS_VERTICAL) && m.parent==null) || (m.mi.style & MNS_POPUP))
		{
			x = (mi.style & MNS_RIGHTALIGHN) ? r.left : r.right// + 2;
			y = r.top// + 1;// - m.mits.scrollTop;
			if ((m.mi.style & MNS_POPUP) && (m.mi.style & MNS_OVERFLOWSCROLL))
			{
				y -= m.childNodes.item(1).scrollTop
			}
			fl = (mi.style & MNS_RIGHTALIGHN) ? MNS_RIGHTALIGHN : 0;
			fl |= MNS_VERTICAL;
			//window.status += r.left;
		}
		else
		{
			x =(mi.style & MNS_RIGHTALIGHN) ? r.right : r.left;
			y = r.bottom;
			cr.top = y
			fl = (mi.style & MNS_RIGHTALIGHN) ? MNS_RIGHTALIGHN : 0;
		}
		// CHANGE ERRORS. (Lea) 10.06.2007
		// set the "left" of the submenu according to the "left" of the parent menu-item  
		x= GetOffsetLeft(mit);
		if(BrowserType=="IE") x+=mit.offsetWidth+4; // adjust a few needed pixels
		else x+=mit.offsetWidth-4; // (Tonya) !!??
		
		TrackPopupMenuEx(sm, fl , x, y, cr)
	}
	else 
	{
	  	var typeId=getAttr(mit,"typeId");
		if (typeId && (typeId == "scrollUp" || typeId == "scrollDown") && (m.mi.style & MNS_OVERFLOWSCROLL))
		{
			m_s = m.childNodes.item(1);
			m_sStart = m_s.scrollTop;
			m_sTime = M_Time();
			m_sDelta = (typeId  == "scrollUp") ? +1 : -1;
			m_sTmr = window.setInterval(MI_Scroll, m_sDelay);
		}
	}
	
	m_SelectTmr = 0;
	mi.mit = mit;
}

// mouse over of nav. bar element
function MI_E_MOver(e)
{
	 var src_obj;
	 if(BrowserType=="IE") src_obj=event.srcElement;
	 else src_obj=this;
	 
 	var toEl;
	var fromEl;
	if(BrowserType=="IE")  toEl=event.toElement;
	else toEl=e.target;//target if the event is onmouseover,relatedTarget if the event is onmouseout. 
	if(BrowserType=="IE")  fromEl=event.fromElement;
	else fromEl=e.relatedTarget;//relatedTarget if the event is onmouseover, target if the event is onmouseout . 

	var mit = MI_FromElmnt(src_obj);
	
	if (!mit) return;
	var mii = mit.mii;
	var m = M_FromElmnt(mit);
	
	if(BrowserType=="IE") 
	    event.cancelBubble = true;
	else 
	    e.cancelBubble = true;

	M_ClearTimeout(m_KillTmr);
	
	if (m.mi.style & MNS_AUTODISMISS)
	{
		if (m.mi.mit && m.mi.mit != mit)
		{
			M_Hilite(m, m.mi.mit, MF_UNHILITE)
			M_Hide(m.mi.mit.sm)
		}
	}
	
	if (mii.state & MF_HILITE) return;
	if (mit.contains(fromEl)) return;
	
	var rm=element;
	if (m_active && m_active != rm) {M_Hide(m_active);}
	m_active=rm;
	
	if (m.mi.mit != mit)
		M_Hilite(m, m.mi.mit, MF_UNHILITE)
	
	M_Hilite(m, mit, MF_HILITE)
	
	if (m.mi.style & MNS_ACTIVEMODE)
	{
		mi_active = mit;

		var delay = (m.mi.style & MNS_POPUP) ? 100 : 10;
		m_SelectTmr = window.setTimeout(MI_E_MOver_, delay);
	}
	
}

// mouse out. change list of activated elements
function MI_E_MOut(e)
{

	var src_obj;
	if(BrowserType=="IE") src_obj=event.srcElement;
 	else src_obj=this;
 
	var mit = MI_FromElmnt(src_obj);
	var m = M_FromElmnt(mit);
	
	var toEl;
	var fromEl;
	if(BrowserType=="IE")  toEl=event.toElement;
	else toEl=e.relatedTarget;//relatedTarget if the event is onmouseout, target if the event is onmouseover. 
	if(BrowserType=="IE")  fromEl=event.fromElement;
	else fromEl=e.target;//target if the event is onmouseout, relatedTarget if the event is to onmouseover. 
 	 
 
	if (!(mit.mii.state & MF_HILITE)) return;
	if (mit.contains(toEl)) return;
	
	M_ClearTimeout(m_SelectTmr);
	M_ClearInterval(m_sTmr);
	
	var sm=mit.mii.sm;
	var tm;
	var tmi;
	var te=toEl;
	var kill=false;
	
	tm = M_FromElmnt(te)
	if (m.mi.style & MNS_AUTODISMISS)
	{
		if (sm && (sm.mi.style & MNS_ACTIVEMODE));
		else M_Hilite(m, mit, MF_UNHILITE)
		m_KillTmr = window.setTimeout(CloseAll, 300);
		return;
	}
	else if (tmi = MI_FromElmnt(te))
	{
		if (tm == m) kill = true;
	}
	
	if (!kill)
	{
		if (sm && (sm.mi.style & MNS_ACTIVEMODE));
		else if (tmi && m.mi.parent == tmi && sm);
		else kill = true
	}

	if (kill)
	{
		M_Hilite(m, mit, MF_UNHILITE)
		if (sm && (sm.mi.style & MNS_ACTIVEMODE))
		{
			var delay = (m.mi.style & (MNS_POPUP)) ? 200 : 20;
			mi_kill = mit;
			m_KillTmr = window.setTimeout(MI_E_MOut_, delay);return;
		}
		else if (!tm)
		{
			var tsm;
			for (var i=0; i<m.mi.mits.length; i++)
			{
				tsm = m.mi.mits[i].mii.sm;
				if (tsm && tsm.mi.parent!=mit && (tsm.mi.style & MNS_ACTIVEMODE))
				{
					mi_kill = tsm.mi.parent;
					m_KillTmr = window.setTimeout(MI_E_MOut_, 200);return;
				}
			}
		}
	}
}

// mouse out of line 2. change list of activated elements
function MI_E_MOut_(mit)
{
	M_Hide(mi_kill.mii.sm);
}

function MI_E_MDown(e)
{
	if(BrowserType=="IE") event.cancelBubble = true;
	else e.cancelBubble = true;
}

function MI_E_MUp(e)
{
	var src_obj ;
	
	if(BrowserType=="IE") src_obj=event.srcElement;
 	else src_obj=this;
	
	if (src_obj.tagName == "A")
	{
		if(BrowserType=="IE")
		{
			event.cancelBubble = true;
			event.returnValue = true;
		}
		else
		{
			e.cancelBubble = true;
			e.returnValue = true;
		}
		return;
	}
	var mit = MI_FromElmnt(src_obj);
	if (mit)
	{
		var a ;
		if(mit.all) a= mit.all.tags("A")
		else a=mit.getElementsByTagName("A");
		if (a.length > 0 && a[0].href)
		{
			if(a[0].click) a[0].click();
		}
	}
}

// didn't check in Mozilla!!!  
//   if(BrowserType=="IE") e=e.parentElement;
// else e=e.offsetParent;
function MI_Scroll()
{
	var pos=m_sStart+Math.round((M_Time()-m_sTime)*0.001*m_sPX)*m_sDelta;
	m_s.scrollTop=pos;
	
	var pe;
	if(BrowserType=="IE") pe=m_s.parentElement;
	else pe=m_s.offsetParent;
		
	var upst=pe.children(0).style;
	var downst=pe.children(2).style;
	if (pos<=0){upst.display="none";downst.display="block";}
	if (pos>=m_s.scrollHeight-m_s.offsetHeight){upst.display="block";downst.display="none";}
	if (m_s.scrollTop!=pos)M_ClearInterval(m_sTmr);
}

function M_Hide(m)
{
	if(!IsMenu(m))
		return;
	var mit;
	if (m.mi.mits)
	{
		for(var i=0;i<m.mi.mits.length;i++)
		{
			mit=m.mi.mits[i];
			M_Hilite(m,mit,MF_UNHILITE);
			if(mit.mii.sm)
				M_Hide(mit.mii.sm);
		}
	}
	m.mi.mit=null;
	if(m.mi.style&MNS_POPUP)
	{
		CkWinEls(m, +1)
		m.style.display="none";
		if(m.mi.style&MNS_ACTIVEMODE)
			m.mi.style^=MNS_ACTIVEMODE;
	}
	
}

function CkWinEls(m,ch)
{
	WinEleVis("SELECT",ch,m);
	WinEleVis("OBJECT",ch,m);
}
function WinEleVis(tag,ch,m)
{
	var els;
	if(d.all) els=d.all.tags(tag);
	else els=d.getElementsByTagName(tag);
	
	if(!els) return;
	
	for(var i=0;i<els.length;i++)
	{
		var e=els.item(i);
		if(ElOverlap(m,e))
		{
			if (e.visLevel)e.visLevel+=ch;
			else e.visLevel=ch;
			if(e.visLevel==-1)
			{
				if(typeof(e.visSave)=="undefined")e.visSave=e.style.visibility;
				e.style.visibility="hidden";
			}
			else if(e.visLevel==0)e.style.visibility=e.visSave;
		}
	}
}
function ElOverlap(e1, e2)
{
var r1=M_ElementRectOW(e1);
var r2=(e2.style.position=="absolute")?M_ElementRectOW(e2):M_ElementRectCW(e2);
return((r2.left<r1.right)&&(r2.right>r1.left)&&(r2.top<r1.bottom)&&(r2.bottom>r1.top));
}
function M_Hilite(m,mit,fl)
{
	if(!mit)return;
	var cn=mit.className;/*if (cn.indexOf("Selected")>=0)return;*/
	if(fl&MF_HILITE)
	{
		mit.mii.state|=MF_HILITE;
		mit.className=cn+"Over";
	}
	else if(mit.mii.state&MF_HILITE)
	{mit.mii.state^=MF_HILITE;mit.className=cn.replace("Over","");}
}
//**********Menu Handles************************
function IsMenu(m){if(m && m.mi){return 1;}return 0;}
//*********************************
//**********Menu-Item Information***************
function GetMenuItem(m, it, byPos){if (!byPos){it=GetMenuItemPos(m, it)}if (it>=0 && it<GetMenuItemCount(m)){return m.mits.childNodes.item(it)}return null;}
function GetMenuItemCount(m){if (IsMenu(m)){return m.mits.childNodes.length;}return 0;}
function GetMenuItemPos(m, id, mit){var mits=m.mits.childNodes;for(var i=0; i<mits.length; i++){if (mit){if(mit==mits.item(i))return i;}else if(mits.item(i).mii.id==id){return i;}}return -1;}
//*****************************************
function M_CheckSelection(m){if(m&&m.mi.parent){mit=m.mi.parent;if(!(mit.mii.state&MF_HILITE)){m=M_FromElmnt(mit);M_Hilite(m,mit,MF_HILITE);M_CheckSelection(m);}}}
function M_Root(m){if (m && m.mi.parent)return M_Root(M_FromElmnt(m.mi.parent)); else return m;}
function M_FromElmnt(e)
{
    while(e)
    {
        if(e.mi)
        {return e};
        if(BrowserType=="IE") e=e.parentElement;
		else e=e.offsetParent;
    }
    return null;
}
function MI_FromElmnt(e)
{
	while(e)
	{
		if(e.mii){return e};
		
		if(BrowserType=="IE")e=e.parentElement;
		else e=e.offsetParent;
			
	}
	return null;
}
function M_ClientRect()
{
var r=new RECT();
r.left=b.scrollLeft;
r.right=b.clientWidth+r.left;r.top=b.scrollTop;r.bottom=b.clientHeight+r.top;return r;}

function M_ElementXY(e)
{
	var p=new POINT();
	while (e)
	{
		p.x+=e.offsetLeft;
		p.y+=e.offsetTop;
		e=e.offsetParent;
	}
	p.x+=(b.scrollWidth-b.clientWidth);
	return p;
}


function M_ElementRectOW(e)
{
	var r=new RECT();
	r.right=e.offsetWidth;
	r.bottom=e.offsetHeight;
	while(e)
	{
		if(e.tagName.toUpperCase()=="TABLE")
		{
			if(parseInt(e.border)>0)
			{
				r.left+=1;r.top+=1;
			}
		}
		r.left+=e.offsetLeft;
		r.top+=e.offsetTop;
		e=e.offsetParent;
	}
	r.left+=(b.scrollWidth-b.clientWidth);
	r.right+=r.left;
	r.bottom+=r.top;return r;
}
function M_ElementRectCW(e)
{
	var r=new RECT();
	r.right=e.clientWidth;
	r.bottom=e.clientHeight;
	while(e)
	{
		if(e.tagName.toUpperCase()=="TABLE")
		{
			if(parseInt(e.border)>0)
			{r.left+=1;r.top+=1;}
		}
		var clientLeft;
		var clientTop;
		if(e.clientLeft) clientLeft=e.clientLeft;
		else clientLeft=0;
		if(e.clientTop) clientTop=e.clientTop;
		else clientTop=0;
		
		r.left+=e.offsetLeft+clientLeft;
		r.top+=e.offsetTop+clientTop;
		e=e.offsetParent;
	}
	r.left+=(b.scrollWidth-b.clientWidth);
	r.right+=r.left;
	r.bottom+=r.top;return r;
}
function MI_Rect(m, mit, pos)
{
    var r = new RECT();
    if (null==mit)
        mit=GetMenuItem(m, pos);
    if (m.mi.style & MNS_POPUP) 
        return M_ElementRectOW(mit);
    else 
        return M_ElementRectCW(mit);
 }

function M_ClearTimeout(tmr){if (tmr){window.clearTimeout(tmr);tmr=0;}}
function M_ClearInterval(tmr){if (tmr){window.clearInterval(tmr);tmr=0;}}
function RECT(){this.left=0;this.top=0;this.right=0;this.bottom=0;}
function POINT(){this.x=0;this.y=0;}
function M_Time(){var d=new Date();return d.valueOf();}

