/* Javascript by Daniel Cohen Gindi (c) danielgindi@gmail.com 054-5655765 */
/* Version: 2010-11-23 */

/* requires: dgTools.js */
function Mlulm(){var a=this;this.init.apply(this,arguments);return this}Mlulm.prototype={init:function(c,e){if(!document.isDomLoaded&&(window.ie&&!(/loaded|complete/.test(document.readyState)))){var d=this;var b=arguments;if(window.ie){dgTools.observe(window,"load",function(){d.init.apply(d,b)})}else{dgTools.observe(document,"dom:onLoad",function(){d.init.apply(d,b)})}return}if(typeof c==typeof""){c=document.getElementById(c)}if(!c){return}if(!e){e={}}if(e.absolutePositions){dgTools.extend(e.absolutePositions[0],"itemTag menuTag itemClass menuClass timeOut",e);e=e.absolutePositions}this.params=e;this._element=c;for(var a=1;a<e.length;a++){dgTools.extend(e[a],"itemTag menuTag itemClass menuClass timeOut classHover classHoverAdd position",e[a],e[a-1])}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=a==undefined?null:a;if(a!=-1&&this.params[a]){var f=this.params[a];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)}}a++;if(this.params.length<=a){this.params[a]=dgTools.extend({},"itemTag menuTag itemClass menuClass timeOut classHover classHoverAdd position",this.params[a-1])}var i=Array.fromElement(b.getElementsByTagName(this.params[a].itemTag));var c=null;var e=null;i.iterate(function(m,k){var n=this;if(this.params[a].itemClass&&((this.params[a].itemClass.length==0&&m.className&&m.className.length>0)||(this.params[a].itemClass.length>0&&!m.className.split(" ").contains(this.params[a].itemClass)))){return}if(this.params.length<=a+1){this.params[a+1]=dgTools.extend({},"itemTag menuTag itemClass menuClass timeOut classHover classHoverAdd position",this.params[a])}e=null;c=m.getElementsByTagName(this.params[a+1].menuTag);if(c&&c.length>0){e=c[0];if(this.params[a+1].menuClass&&!e.className.split(" ").contains(this.params[a+1].menuClass)){e=null}}if(e==null){if(i.length>k+1&&(this.params[a+1].menuClass&&i[k+1].className.split(" ").contains(this.params[a+1].menuClass))&&(this.params[a+1].menuTag==this.params[a+1].itemTag)){e=i[k+1]}}if(e){var l=this.params[a]||null;this._prepareMenuElement(e,b,m,a);m.$subMenu=e;m.$parentMenu=b;if(l.mode=="clickable"){dgTools.observe(m,"click",function(o){n._FItemClick(m,o||event)})}else{dgTools.observe(m,"mouseover",function(o){n._FItemMouseOver(m,o||event)});dgTools.observe(m,"mouseout",function(o){n._FItemMouseOut(m,o||event)});dgTools.observe(e,"mouseover",function(o){n._FMenuMouseOver(m.$subMenu,o||event)});dgTools.observe(e,"mouseout",function(o){n._FMenuMouseOut(m.$subMenu,o||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.params[c.$subMenu.$menuLevel].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.params[c.$subMenu.$menuLevel]&&this.params[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.params[d.$menuLevel].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.params[a.$menuLevel].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.params[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}};
