/* Javascript by Daniel Cohen Gindi (c) danielgindi@gmail.com 054-5655765 */
/* Version: 2010-06-27 */

/* requires: dgTools.js */
function Mlulm(){var a=this;this.init.apply(this,arguments);return this}Mlulm.prototype={init:function(b,d){if(!document.isDomLoaded&&(window.ie&&!(/loaded|complete/.test(document.readyState)))){var c=this;var a=arguments;if(window.ie){dgTools.observe(window,"load",function(){c.init.apply(c,a)})}else{dgTools.observe(document,"dom:onLoad",function(){c.init.apply(c,a)})}return}if(typeof b==typeof""){b=document.getElementById(b)}if(!b){return}if(!d){d={}}this.itemTag=(d.itemTag||"li").toLowerCase();this.menuTag=(d.menuTag||"ul").toLowerCase();this.itemClass=d.itemClass;this.menuClass=d.menuClass;this.timeOut=d.timeOut;this.absolutePositions=d.absolutePositions||[];this._element=b;this._prepareMenuElement(this._element,null,null,-1)},_prepareMenuElement:function(b,g,j,a){if(!b){return}b.$parentMenu=g||null;b.$parentMenuItem=j||null;b.$menuLevel=a==undefined?null:a;if(b.$menuLevel!=-1&&this.absolutePositions[b.$menuLevel]){var f=this.absolutePositions[b.$menuLevel];if(f.mode=="clickable"){if(f.classHover&&j.className==f.classHover){if(!g.$curOpen){g.$curOpen=j}}else{if(f.classHoverAdd){var d=j.className.split(" ");if(d.contains(f.classHoverAdd)){j.$originalClassName=d.remove(f.classHoverAdd).join(" ");if(!g.$curOpen){g.$curOpen=j}else{j.className=j.$originalClassName}}}}if(g.$curOpen!=j){b.style.display="none"}}else{b.style.display="none"}if(f.position&&f.position=="absolute"){var h=b.parentNode;h.removeChild(b);document.body.appendChild(b)}}var i=Array.fromElement(b.getElementsByTagName(this.itemTag));var c=null;var e=null;i.iterate(function(n,k){var o=this;if(this.itemClass&&((this.itemClass.length==0&&n.className&&n.className.length>0)||(this.itemClass.length>0&&!n.className.split(" ").contains(this.itemClass)))){return}e=null;c=n.getElementsByTagName(this.menuTag);if(c&&c.length>0){e=c[0];if(this.menuClass&&!e.className.split(" ").contains(this.menuClass)){e=null}}if(e==null){if(i.length>k+1&&(this.menuClass&&i[k+1].className.split(" ").contains(this.menuClass))&&(this.menuTag==this.itemTag)){e=i[k+1]}}if(e){var l=a+1;var m=this.absolutePositions[l]||null;this._prepareMenuElement(e,b,n,l);n.$subMenu=e;n.$parentMenu=b;if(m.mode=="clickable"){dgTools.observe(n,"click",function(p){o._FItemClick(n,p||event)})}else{dgTools.observe(n,"mouseover",function(p){o._FItemMouseOver(n,p||event)});dgTools.observe(n,"mouseout",function(p){o._FItemMouseOut(n,p||event)});dgTools.observe(e,"mouseover",function(p){o._FMenuMouseOver(n.$subMenu,p||event)});dgTools.observe(e,"mouseout",function(p){o._FMenuMouseOut(n.$subMenu,p||event)})}}},this)},_FItemMouseOver:function(c,a){var b=new dgTools.Event(a);if(c.$parentMenu.$closing){c.$parentMenu.$closing=false}if(b.relatedTarget==c||dgTools.Elm.hasChild(c,b.relatedTarget)){return}b.stop();this._ShowMenu(c);this._NotifyParentMenuOver(c.$parentMenu)},_FItemMouseOut:function(c,a){var b=new dgTools.Event(a);if(b.relatedTarget==c||dgTools.Elm.hasChild(c,b.relatedTarget)){return}b.stop();c.$subMenu.$closing=true;var d=this;c.$subMenu.$timeOut=setTimeout(function(){d._HideMenu(c)},this.timeOut);this._NotifyParentMenuOut(c.$parentMenu)},_FItemClick:function(c,a){var b=new dgTools.Event(a);if(b.relatedTarget==c||dgTools.Elm.hasChild(c,b.relatedTarget)){return}if(dgTools.Elm.hasChild(c.$subMenu,b.target)){return}if(c.$parentMenu.$curOpen){this._HideMenu(c.$parentMenu.$curOpen);this._NotifyParentMenuOut(c.$parentMenu);if(c.$parentMenu.$curOpen==c){c.$parentMenu.$curOpen=null;return}}if(this.absolutePositions[c.$subMenu.$menuLevel]&&this.absolutePositions[c.$subMenu.$menuLevel].suppressFurtherEvents){b.stop()}this._ShowMenu(c);this._NotifyParentMenuOver(c.$parentMenu);c.$parentMenu.$curOpen=c},_FMenuMouseOver:function(c,a){var b=new dgTools.Event(a);if(b.relatedTarget==c||dgTools.Elm.hasChild(c,b.relatedTarget)){return}b.stop();if(c.$closing){c.$closing=false}if(c.$timeOut){clearTimeout(c.$timeOut);c.$timeOut=null}this._NotifyParentMenuOver(c.$parentMenu)},_FMenuMouseOut:function(d,a){var b=new dgTools.Event(a);if(b.relatedTarget==d||dgTools.Elm.hasChild(d,b.relatedTarget)){return}b.stop();d.$closing=true;var c=this;d.$timeOut=setTimeout(function(){c._HideMenu(d.$parentMenuItem)},this.timeOut);this._NotifyParentMenuOut(d.$parentMenu)},_NotifyParentMenuOver:function(a){if(a.$menuLevel==-1){return}a.$subOver=true;if(a.$timeOut){clearTimeout(a.$timeOut);a.$timeOut=null}},_NotifyParentMenuOut:function(a){if(a.$menuLevel==-1){return}a.$subOver=false;if(a.$closing){var b=this;a.$timeOut=setTimeout(function(){b._HideMenu(a.$parentMenuItem)},this.timeOut)}},_ShowMenu:function(c){if(c.$subMenu.$closing){c.$subMenu.$closing=false}if(c.$subMenu.$timeOut){clearTimeout(c.$subMenu.$timeOut);c.$subMenu.$timeOut=null}if(!c.$isShowing){c.$isShowing=true;var b=this.absolutePositions[c.$subMenu.$menuLevel];if(b){if(b.position&&b.position=="absolute"){c.$subMenu.style.position="absolute"}if(!b.offset){b.offset=[b.x,b.y]}var d=dgTools.Elm.offset(c);if(b.absoluteWidth=="100%"){c.$subMenu.style.width=dgTools.Elm.totalWidth(c)+"px"}if(b.halignCenter){var a=b.absoluteWidth;if(a=="100%"){a=null}if(!a){a=dgTools.Elm.totalWidth(c.$subMenu)}if(b.halignRight){c.$subMenu.style.right=((window.getClientWidth()-d[0])-dgTools.Elm.totalWidth(c)-(a-dgTools.Elm.totalWidth(c))/2+b.offset[0])+"px"}else{c.$subMenu.style.left=(d[0]-(a-dgTools.Elm.totalWidth(c))/2)+b.offset[0]+"px"}}else{if(b.halignRight){c.$subMenu.style.right=((window.getClientWidth()-d[0])-dgTools.Elm.totalWidth(c)+b.offset[0])+"px"}else{c.$subMenu.style.left=(d[0]+b.offset[0])+"px"}}if(b.valignBottom){c.$subMenu.style.bottom=((window.getClientHeight()-d[1])+b.offset[1])+"px"}else{c.$subMenu.style.top=(d[1]+b.offset[1])+"px"}c.$subMenu.style.display="";c.$subMenu.style.visibility="visible";c.$subMenu.style.zIndex="5000";if(b.classHover!=null){c.$originalClassName=c.className||"";c.className=b.classHover}else{if(b.classHoverAdd!=null){c.$originalClassName=c.className||"";c.className+=" "+b.classHoverAdd}}}c.$subMenu.style.display=""}},_HideMenu:function(b){var a=b.$subMenu;a.$timeOut=null;a.$parentMenuItem.$isShowing=null;if(a.$subOver){return}a.style.display="none";if(a.$parentMenuItem&&a.$parentMenuItem.$originalClassName!=undefined){a.$parentMenuItem.className=a.$parentMenuItem.$originalClassName}a.$closing=false}};
