if(typeof(Control)=="undefined"){Control={}}var $proc=function(proc){return typeof(proc)=="function"?proc:function(){return proc}};var $value=function(value){return typeof(value)=="function"?value():value};Object.Event={extend:function(object){object._objectEventSetup=function(event_name){this._observers=this._observers||{};this._observers[event_name]=this._observers[event_name]||[]};object.observe=function(event_name,observer){if(typeof(event_name)=="string"&&typeof(observer)!="undefined"){this._objectEventSetup(event_name);if(!this._observers[event_name].include(observer)){this._observers[event_name].push(observer)}}else{for(var e in event_name){this.observe(e,event_name[e])}}};object.stopObserving=function(event_name,observer){this._objectEventSetup(event_name);if(event_name&&observer){this._observers[event_name]=this._observers[event_name].without(observer)}else{if(event_name){this._observers[event_name]=[]}else{this._observers={}}}};object.observeOnce=function(event_name,outer_observer){var inner_observer=function(){outer_observer.apply(this,arguments);this.stopObserving(event_name,inner_observer)}.bind(this);this._objectEventSetup(event_name);this._observers[event_name].push(inner_observer)};object.notify=function(event_name){this._objectEventSetup(event_name);var collected_return_values=[];var args=$A(arguments).slice(1);try{for(var i=0;i<this._observers[event_name].length;++i){collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null)}}catch(e){if(e==$break){return false}else{throw e}}return collected_return_values};if(object.prototype){object.prototype._objectEventSetup=object._objectEventSetup;object.prototype.observe=object.observe;object.prototype.stopObserving=object.stopObserving;object.prototype.observeOnce=object.observeOnce;object.prototype.notify=function(event_name){if(object.notify){var args=$A(arguments).slice(1);args.unshift(this);args.unshift(event_name);object.notify.apply(object,args)}this._objectEventSetup(event_name);var args=$A(arguments).slice(1);var collected_return_values=[];try{if(this.options&&this.options[event_name]&&typeof(this.options[event_name])=="function"){collected_return_values.push(this.options[event_name].apply(this,args)||null)}for(var i=0;i<this._observers[event_name].length;++i){collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null)}}catch(e){if(e==$break){return false}else{throw e}}return collected_return_values}}}};Element.addMethods({observeOnce:function(element,event_name,outer_callback){var inner_callback=function(){outer_callback.apply(this,arguments);Element.stopObserving(element,event_name,inner_callback)};Element.observe(element,event_name,inner_callback)}});(function(){function wheel(event){var delta,element,custom_event;if(event.wheelDelta){delta=event.wheelDelta/120}else{if(event.detail){delta=-event.detail/3}}if(!delta){return}element=Event.extend(event).target;element=Element.extend(element.nodeType===Node.TEXT_NODE?element.parentNode:element);custom_event=element.fire("mouse:wheel",{delta:delta});if(custom_event.stopped){Event.stop(event);return false}}document.observe("mousewheel",wheel);document.observe("DOMMouseScroll",wheel)})();var IframeShim=Class.create({initialize:function(){this.element=new Element("iframe",{style:"position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none",src:"javascript:void(0);",frameborder:0});$(document.body).insert(this.element)},hide:function(){this.element.hide();return this},show:function(){this.element.show();return this},positionUnder:function(element){var element=$(element);var offset=element.cumulativeOffset();var dimensions=element.getDimensions();this.element.setStyle({left:offset[0]+"px",top:offset[1]+"px",width:dimensions.width+"px",height:dimensions.height+"px",zIndex:element.getStyle("zIndex")-1}).show();return this},setBounds:function(bounds){for(prop in bounds){bounds[prop]+="px"}this.element.setStyle(bounds);return this},destroy:function(){if(this.element){this.element.remove()}return this}});
