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