/* Javascript by Daniel Cohen Gindi (c) danielgindi@gmail.com 054-5655765 */
/* Version: 2011-10-03 */
/* requires: dgTools.js */
function Mlulm(){var a=this;this.init.apply(this,arguments);return this}Mlulm.Animations={none:0,fade:1};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(!$isArray(e)){if(e.absolutePositions){dgTools.extend(e.absolutePositions[0],"itemTag menuTag itemClass menuClass timeOut",e);e=e.absolutePositions}else{e=[e]}}this.params=e;this._element=c;if(e.length&&!e[0].offset){e[0].offset=[e[0].x||0,e[0].y||0]}e[0].animationIn=e[0].animationIn||e[0].animation;e[0].animationOut=e[0].animationOut||e[0].animation;e[0].animationInFps=e[0].animationInFps||e[0].animationFps;e[0].animationOutFps=e[0].animationOutFps||e[0].animationFps;e[0].animationInDuration=e[0].animationInDuration||e[0].animationDuration;e[0].animationOutDuration=e[0].animationOutDuration||e[0].animationDuration;e[0].animationInTransition=e[0].animationInTransition||e[0].animationTransition;e[0].animationOutTransition=e[0].animationOutTransition||e[0].animationTransition;for(var a=1;a<e.length;a++){dgTools.extend(e[a],"itemTag menuTag itemClass menuClass timeOut classHover classHoverAdd position offset halignRight valignBottom absoluteWidth animation animationFps animationDuration animationTransition animationIn animationInFps animationInDuration animationInTransition animationOut animationOutFps animationOutDuration animationOutTransition",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 offset halignRight valignBottom absoluteWidth animation animationFps animationDuration animationTransition animationIn animationInFps animationInDuration animationInTransition animationOut animationOutFps animationOutDuration animationOutTransition",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 offset halignRight valignBottom absoluteWidth animation animationFps animationDuration animationTransition animationIn animationInFps animationInDuration animationInTransition animationOut animationOutFps animationOutDuration animationOutTransition",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(e){var d=e.$subMenu;if(d.$closing){d.$closing=false}if(d.$timeOut){clearTimeout(d.$timeOut);d.$timeOut=null}if(!e.$isShowing){e.$isShowing=true;var a=true;var c=this.params[d.$menuLevel];if(d.animationId){d.animationId.finishNow();d.animationId=null}if(c){if(c.position&&c.position=="absolute"){d.style.position="absolute"}var f=dgTools.Elm.offset(e);if(c.absoluteWidth=="100%"){d.style.width=dgTools.Elm.totalWidth(e)+"px"}if(c.halignCenter){var b=c.absoluteWidth;if(b=="100%"){b=null}if(!b){b=dgTools.Elm.totalWidth(d)}if(c.halignRight){d.style.right=((window.getClientWidth()-f[0])-dgTools.Elm.totalWidth(e)-(b-dgTools.Elm.totalWidth(e))/2+((c.offset[0]=="100%")?dgTools.Elm.totalWidth(e):c.offset[0]))+"px"}else{d.style.left=((f[0]-(b-dgTools.Elm.totalWidth(e))/2)+((c.offset[0]=="100%")?dgTools.Elm.totalWidth(e):c.offset[0]))+"px"}}else{if(c.halignRight){d.style.right=((window.getClientWidth()-f[0])-dgTools.Elm.totalWidth(e)+c.offset[0])+"px"}else{d.style.left=(f[0]+c.offset[0])+"px"}}if(c.valignBottom){d.style.bottom=((window.getClientHeight()-f[1])+c.offset[1])+"px"}else{d.style.top=(f[1]+c.offset[1])+"px"}d.style.zIndex="5000";if(c.classHover!=null){e.$originalClassName=e.className||"";e.className=c.classHover}else{if(c.classHoverAdd!=null){e.$originalClassName=e.className||"";e.className+=" "+c.classHoverAdd}}if(c&&c.animationIn!=Mlulm.Animations.none){if(!c.animationInFps){c.animationInFps=50}if(!c.animationInDuration){c.animationInDuration=200}if(!c.animationInTransition){c.animationInTransition=dgTools.Transitions.sinoidalInOut}switch(c.animationIn){case Mlulm.Animations.fade:a=false;dgTools.Elm.setOpacity(d,0);d.style.display="";d.style.visibility="visible";d.animationId=dgTools.easyAnimate(d,null,{opacity:1},c.animationInDuration,c.animationInFps,null,c.animationInTransition);break}}}if(a){d.style.display="";d.style.visibility="visible"}}d=null},_HideMenu:function(d){var c=d.$subMenu;c.$timeOut=null;d.$isShowing=null;if(c.$subOver){return}if(c.animationId){c.animationId.finishNow();c.animationId=null}var a=true;var b=this.params[c.$menuLevel];if(b&&b.animationOut!=Mlulm.Animations.none){if(!b.animationOutFps){b.animationOutFps=50}if(!b.animationOutDuration){b.animationOutDuration=200}if(!b.animationOutTransition){b.animationOutTransition=dgTools.Transitions.sinoidalInOut}switch(b.animationOut){case Mlulm.Animations.fade:a=false;c.style.zIndex--;c.animationId=dgTools.easyAnimate(c,null,{opacity:0},b.animationOutDuration,b.animationOutFps,function(){dgTools.Elm.setOpacity(c,1).style.display="none"},b.animationOutTransition);break}}if(a){c.style.display="none"}if(c.$parentMenuItem&&c.$parentMenuItem.$originalClassName!=undefined){c.$parentMenuItem.className=c.$parentMenuItem.$originalClassName}c.$closing=false}};
