var ips={menus:{},delegate:{}};ips.ticker=Class.create({initialize:function(root,options)
{if(!$(root)){return;}
this.root=root;this.options=Object.extend({duration:4,select:"li"},options||{});this.items=$(root).select(this.options.select);if(!this.items.length){return;}
this.items.invoke('hide').first().show();this.timer=this.nextItem.bind(this).delay(this.options.duration);$(this.root).observe('mouseenter',this.pauseTicker.bindAsEventListener(this));$(this.root).observe('mouseleave',this.unpauseTicker.bindAsEventListener(this));},pauseTicker:function(e)
{clearTimeout(this.timer);},unpauseTicker:function(e)
{this.timer=this.nextItem.bind(this).delay(this.options.duration);},nextItem:function()
{var cur=this.items.find(function(elem){return elem.visible();});var next=$(cur).next(this.options.select);if(Object.isUndefined(next)){next=this.items.first();}
new Effect.Fade($(cur),{duration:0.4,queue:'end',afterFinish:function(){new Effect.Appear($(next),{duration:0.8,queue:'end'});}});this.timer=this.nextItem.bind(this).delay(this.options.duration);}});ips.menu=Class.create({initialize:function(elem,target)
{if(!$(elem)||!$(target)){return;}
this.elem=$(elem);this.target=$(target);$(this.target).hide();document.observe('dom:loaded',function(e){$(elem).observe('mouseover',this.event_mouseover.bindAsEventListener(this));$(elem).observe('mouseout',this.event_mouseout.bindAsEventListener(this));}.bind(this));},doShow:function()
{Debug.write("Showing "+$(this.elem).id);var elemPos=$(this.elem).positionedOffset();var elemDim=$(this.elem).getDimensions();$(this.target).setStyle({position:'absolute',top:(elemPos.top+elemDim.height)+'px',left:(elemPos.left)+'px'});$(this.elem).addClassName('active');$(this.target).show();},doHide:function()
{if($(this.target).visible())
{Debug.write("Hiding "+$(this.elem).id);$(this.elem).removeClassName('active');new Effect.Fade($(this.target),{duration:0.1});}},event_mouseover:function(e)
{window.clearTimeout(this._meventHide);this._meventShow=this.doShow.bind(this).delay(0.1);},event_mouseout:function(e)
{window.clearTimeout(this._meventShow);this._meventHide=this.doHide.bind(this).delay(0.2);}});ips.delegate={store:$A(),initialize:function()
{document.observe('click',function(e){if(Event.isLeftClick(e)||Prototype.Browser.IE)
{var elem=null;var handler=null;var target=ips.delegate.store.find(function(item){elem=e.findElement(item['selector']);if(elem){handler=item;return true;}else{return false;}});if(!Object.isUndefined(target))
{if(handler)
{Debug.write("Firing callback for selector "+handler['selector']);handler['callback'](e,elem,handler['params']);}}}})},register:function(selector,callback,params)
{ips.delegate.store.push({selector:selector,callback:callback,params:params});}}
var Debug={write:function(text){if(jsDebug&&!Object.isUndefined(window.console)){console.log(text);}},dir:function(values){if(jsDebug&&!Object.isUndefined(window.console)){console.dir(values);}},error:function(text){if(jsDebug&&!Object.isUndefined(window.console)){console.error(text);}},warn:function(text){if(jsDebug&&!Object.isUndefined(window.console)){console.warn(text);}},info:function(text){if(jsDebug&&!Object.isUndefined(window.console)){console.info(text);}}}
