//**Copyright Mentasolutions 2008************************** //***Class MenusBuilder *********************************** function MTSMenusBuilder(pXmlDoc){ this.XMLMenusDoc=pXmlDoc; var curRootItem=this.XMLMenusDoc.firstChild; while(curRootItem.nodeName!="rootmenus"){ curRootItem=curRootItem.nextSibling; } var RootMenusNode=curRootItem; var RootMenusNodeCurItem=RootMenusNode.firstChild; var virtualRootParentmenu=new Object();//on crée un parent virtuel pour déclencher le hide des menus root virtualRootParentmenu.Show=function(){}; virtualRootParentmenu.Hiding=function(){}; virtualRootParentmenu.Hide=function(){}; while(RootMenusNodeCurItem!=null){ if(RootMenusNodeCurItem.nodeName=="menu"){ var curobj=new MTSMenu(RootMenusNodeCurItem,null); curobj.parentMenu=virtualRootParentmenu; } RootMenusNodeCurItem=RootMenusNodeCurItem.nextSibling; } } //***Class Menu Item*************************************** function MTSMenuItem(pXmlNode,pParentMenu){ this.parentMenu=pParentMenu; this._top=pXmlNode.getAttribute('top'); this._left=pXmlNode.getAttribute('left'); this._width=pXmlNode.getAttribute('width'); this._height=pXmlNode.getAttribute('height'); this._CSSName=pXmlNode.getAttribute('CSSName'); this._div=document.createElement("div"); if(pXmlNode.getAttribute('id')!=null)this._div.id=pXmlNode.getAttribute('id'); this._div.parentObj=this; if(this._top!=null)this._div.style.top=this._top+"px"; if(this._left!=null)this._div.style.left=this._left+"px"; if(this._width!=null)this._div.style.width=this._width+"px"; if(this._height!=null)this._div.style.height=this._height+"px"; if(this._CSSName!=null && this._CSSName!="")this._div.className=this._CSSName; } //***Class Menu******************************************* function MTSMenu(pXmlNode,pParentMenu){ MTSMenuItem.call(this,pXmlNode,pParentMenu); this.id=MTSMenu.Instances.length; MTSMenu.Instances[this.id]=this; this.currentChildMenuDisplayed=null; this._div.style.position="absolute"; this._div.style.display="none"; this._menuCSSName=pXmlNode.getAttribute('menuCSSName'); if(this._menuCSSName!=null && this._menuCSSName!="")this._div.className=this._menuCSSName; this._div.onmouseout=function(){ this.parentObj.Hiding(3000,this.parentObj); } this._div.onmouseover=function(){ this.parentObj.Show(); } this.xmlListItem=pXmlNode; var curItem=this.xmlListItem.firstChild; while(curItem!=null){ if(curItem.nodeName=="link")new MTSLinkItem(curItem,this); if(curItem.nodeName=="menu")new MTSMenuLinkItem(curItem,this); curItem=curItem.nextSibling; } document.body.appendChild(this._div); this.Show=function(pTop,pLeft){ window.clearTimeout(this.hideProcess); this.hideProcess=null; if(typeof(pTop)!='undefined')this._div.style.top=pTop+"px"; if(typeof(pLeft)!='undefined')this._div.style.left=pLeft+"px"; this._div.style.display=""; if(this.parentMenu!=null){ this.parentMenu.Show(); if(this.parentMenu.currentChildMenuDisplayed!=null&&this.parentMenu.currentChildMenuDisplayed!=this)this.parentMenu.currentChildMenuDisplayed.Hide(); this.parentMenu.currentChildMenuDisplayed=this; } } //----- this.Hiding=function(pDelay,pCaller){ if(typeof(pDelay)=='undefined')pDelay=3000; if(pCaller==this&&this.parentMenu!=null)this.parentMenu.Hiding();//cache le menu parent de l'obj si l'appellant et l'obj lui même this.hideProcess=window.setTimeout("MTSMenu.Instances["+this.id+"].Hide();",pDelay); } //----- this.Hide=function(){ this._div.style.display="none"; } } MTSMenu.Instances=new Array(); //**********************************MTSLinkItem Obj************************** function MTSLinkItem(pXMLItem,pParentMenu){ MTSMenuItem.call(this,pXMLItem,pParentMenu); this.id=MTSLinkItem.Instances.length; MTSLinkItem.Instances[this.id]=this; this.itemlabelText=document.createTextNode(pXMLItem.getAttribute("label")); this._div.appendChild(this.itemlabelText); this._div.style.position="relative"; this._linkCSSName=pXMLItem.getAttribute('linkCSSName'); if(this._linkCSSName!=null && this._linkCSSName!="")this._div.className=this._linkCSSName; this.parentMenu._div.appendChild(this._div); this._div.onmouseover=function(){ this.parentObj.parentMenu.Show();//this=the div element } var dataTags=pXMLItem.childNodes; this.onclickstr=""; this._div.onclick=function(){ eval(this.parentObj.onclickstr); } for(t=0;t