Element.addMethods({__extend:function(element,hash){return Object.extend($(element),hash);}});if(Object.isUndefined(Proto)){var Proto={}}Proto.Menu=Class.create();Proto.Menu.prototype={initialize:function(options){this.options=Object.extend({selector:'.contextmenu',className:'.protoMenu',pageOffset:25,fade:false,containerId:null},options||{});if(this.options.myOffsetTop&&this.options.myOffsetLeft){this.myOffsetTop=this.options.offsetTop;this.myOffsetLeft=this.options.offsetLeft;}this.options.fade=this.options.fade&&!Object.isUndefined(Effect);this.container=new Element('div',{className:this.options.className,style:'display: none',id:(this.options.containerId?this.options.containerId:null)});this.container.setStyle({position:'absolute',top:'1px',left:'0px'});this.options.menuItems.each(function(item){this.container.insert(new Element('div',{}).insert(new Element('a',{href:'#',title:item.name,className:item.disabled?'disabled':''}).observe('click',this.onClick.bind(this)).__extend({_callback:item.callback}).insert(new Element('span',{className:'item'}).update(item.name).__extend({_callback:item.callback}))));}.bind(this));$('menuContainer').insert(this.container);Event.observe(document,'click',function(e){this.container.hide();}.bind(this));$$(this.options.selector).invoke('observe',Prototype.Browser.Opera?'click':'contextmenu',function(e){if(Prototype.Browser.Opera&&!e.ctrlKey){return;}this.show(e);}.bind(this));this.containerWidth=this.container.getWidth();this.containerHeight=this.container.getHeight();},show:function(e){$A(document.getElementsByClassName('macifSubmenu')).each(function(element){element.hide();});e.stop();var viewport=document.viewport.getDimensions(),offset=document.viewport.getScrollOffsets(),containerWidth=this.container.getWidth(),containerHeight=this.container.getHeight();this.container.setStyle({}).hide();if(this.options.myOffsetTop&&this.options.myOffsetLeft){this.container.setStyle({left:this.options.myOffsetLeft+'px',top:this.options.myOffsetTop+'px'});}this.options.fade?Effect.Appear(this.container,{duration:0.25}):this.container.show();},onClick:function(e){e.stop();if(e.target._callback&&!e.target.hasClassName('disabled')){e.target._callback(e);}}};







