
if(typeof Prototype=='undefined'||!Prototype.Version.match("1.6"))
throw("Prototype-UI library require Prototype library >= 1.6.0");if(Prototype.Browser.WebKit){Prototype.Browser.WebKitVersion=parseFloat(navigator.userAgent.match(/AppleWebKit\/([\d\.\+]*)/)[1]);Prototype.Browser.Safari2=(Prototype.Browser.WebKitVersion<420);}
if(Prototype.Browser.IE){Prototype.Browser.IEVersion=parseFloat(navigator.appVersion.split(';')[1].strip().split(' ')[1]);Prototype.Browser.IE6=Prototype.Browser.IEVersion==6;Prototype.Browser.IE7=Prototype.Browser.IEVersion==7;}
Prototype.falseFunction=function(){return false};Prototype.trueFunction=function(){return true};var UI={Abstract:{},Ajax:{}};Object.extend(Class.Methods,{extend:Object.extend.methodize(),addMethods:Class.Methods.addMethods.wrap(function(proceed,source){if(!source)return this;if(!source.hasOwnProperty('methodsAdded'))
return proceed(source);var callback=source.methodsAdded;delete source.methodsAdded;proceed(source);callback.call(source,this);source.methodsAdded=callback;return this;}),addMethod:function(name,lambda){var methods={};methods[name]=lambda;return this.addMethods(methods);},method:function(name){return this.prototype[name].valueOf();},classMethod:function(){$A(arguments).flatten().each(function(method){this[method]=(function(){return this[method].apply(this,arguments);}).bind(this.prototype);},this);return this;},undefMethod:function(name){this.prototype[name]=undefined;return this;},removeMethod:function(name){delete this.prototype[name];return this;},aliasMethod:function(newName,name){this.prototype[newName]=this.prototype[name];return this;},aliasMethodChain:function(target,feature){feature=feature.camelcase();this.aliasMethod(target+"Without"+feature,target);this.aliasMethod(target,target+"With"+feature);return this;}});Object.extend(Number.prototype,{snap:function(round){return parseInt(round==1?this:(this/round).floor()*round);}});Object.extend(String.prototype,{camelcase:function(){var string=this.dasherize().camelize();return string.charAt(0).toUpperCase()+string.slice(1);},makeElement:function(){var wrapper=new Element('div');wrapper.innerHTML=this;return wrapper.down();}});Object.extend(Array.prototype,{empty:function(){return!this.length;},extractOptions:function(){return this.last().constructor===Object?this.pop():{};},removeAt:function(index){var object=this[index];this.splice(index,1);return object;},remove:function(object){var index;while((index=this.indexOf(object))!=-1)
this.removeAt(index);return object;},insert:function(index){var args=$A(arguments);args.shift();this.splice.apply(this,[index,0].concat(args));return this;}});Element.addMethods({getScrollDimensions:function(element){return{width:element.scrollWidth,height:element.scrollHeight}},getScrollOffset:function(element){return Element._returnOffset(element.scrollLeft,element.scrollTop);},setScrollOffset:function(element,offset){element=$(element);if(arguments.length==3)
offset={left:offset,top:arguments[2]};element.scrollLeft=offset.left;element.scrollTop=offset.top;return element;},getNumStyle:function(element,style){var value=parseFloat($(element).getStyle(style));return isNaN(value)?null:value;},appendText:function(element,text){element=$(element);text=String.interpret(text);element.appendChild(document.createTextNode(text));return element;}});document.whenReady=function(callback){if(document.loaded)
callback.call(document);else
document.observe('dom:loaded',callback);};Object.extend(document.viewport,{getScrollOffset:document.viewport.getScrollOffsets,setScrollOffset:function(offset){Element.setScrollOffset(Prototype.Browser.WebKit?document.body:document.documentElement,offset);},getScrollDimensions:function(){return Element.getScrollDimensions(Prototype.Browser.WebKit?document.body:document.documentElement);}});(function(){UI.Options={methodsAdded:function(klass){klass.classMethod($w(' setOptions allOptions optionsGetter optionsSetter optionsAccessor '));},setOptions:function(options){if(!this.hasOwnProperty('options'))
this.options=this.allOptions();this.options=Object.extend(this.options,options||{});},allOptions:function(){var superclass=this.constructor.superclass,ancestor=superclass&&superclass.prototype;return(ancestor&&ancestor.allOptions)?Object.extend(ancestor.allOptions(),this.options):Object.clone(this.options);},optionsGetter:function(){addOptionsAccessors(this,arguments,false);},optionsSetter:function(){addOptionsAccessors(this,arguments,true);},optionsAccessor:function(){this.optionsGetter.apply(this,arguments);this.optionsSetter.apply(this,arguments);}};function addOptionsAccessors(receiver,names,areSetters){names=$A(names).flatten();if(names.empty())
names=Object.keys(receiver.allOptions());names.each(function(name){var accessorName=(areSetters?'set':'get')+name.camelcase();receiver[accessorName]=receiver[accessorName]||(areSetters?function(value){return this.options[name]=value}:function(){return this.options[name]});});}})();var CSS=(function(){function fixPNG(){parseStylesheet.apply(this,$A(arguments).concat(fixRule));};function parseStylesheet(){var patterns=$A(arguments);var method=patterns.pop();var styleSheets=$A(document.styleSheets);if(patterns.length>1){styleSheets=styleSheets.select(function(css){return patterns.any(function(pattern){return css.href&&css.href.match(pattern)});});}
styleSheets.each(function(styleSheet){fixStylesheet.call(this,styleSheet,method)});};function fixStylesheet(stylesheet,method){if(stylesheet.imports)
$A(stylesheet.imports).each(fixStylesheet);var href=stylesheet.href||document.location.href;var docPath=href.substr(0,href.lastIndexOf('/'));$A(stylesheet.rules||stylesheet.cssRules).each(function(rule){method.call(this,rule,docPath)});};var filterPattern='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="#{src}",sizingMethod="#{method}")';function fixRule(rule,docPath){var bgImg=rule.style.backgroundImage;if(bgImg&&bgImg!='none'&&bgImg.match(/^url[("']+(.*\.png)[)"']+$/i)){var src=RegExp.$1;var bgRepeat=rule.style.backgroundRepeat;if(src[0]!='/')
src=docPath+"/"+src;rule.style.filter=filterPattern.interpolate({src:src,method:bgRepeat=="no-repeat"?"crop":"scale"});rule.style.backgroundImage="none";}};var preloadedImages=new Hash();function preloadRule(rule,docPath){var bgImg=rule.style.backgroundImage;if(bgImg&&bgImg!='none'&&bgImg!='initial'){if(!preloadedImages.get(bgImg)){bgImg.match(/^url[("']+(.*)[)"']+$/i);var src=RegExp.$1;if(!(src[0]=='/'||src.match(/^file:/)||src.match(/^https?:/)))
src=docPath+"/"+src;preloadedImages.set(bgImg,true);var image=new Image();image.src=src;}}}
return{fixPNG:(Prototype.Browser.IE&&Prototype.Browser.IEVersion<7)?fixPNG:Prototype.emptyFunction,addRule:function(css,backwardCompatibility){if(backwardCompatibility)css=css+'{'+backwardCompatibility+'}';var style=new Element('style',{type:'text/css',media:'screen'});$(document.getElementsByTagName('head')[0]).insert(style);if(style.styleSheet)style.styleSheet.cssText=css;else style.appendText(css);return style;},preloadImages:function(){parseStylesheet.apply(this,$A(arguments).concat(preloadRule));}};})();UI.Benchmark={benchmark:function(lambda,iterations){var date=new Date();(iterations||1).times(lambda);return(new Date()-date)/1000;}};(function(){var initPointer,currentDraggable,dragging;document.observe('mousedown',onMousedown);function onMousedown(event){var draggable=event.findElement('[ui:draggable="true"]');if(draggable){event.stop();currentDraggable=draggable;initPointer=event.pointer();document.observe("mousemove",onMousemove).observe("mouseup",onMouseup);}};function onMousemove(event){event.stop();if(dragging)
fire('drag:updated',event);else{dragging=true;fire('drag:started',event);}};function onMouseup(event){document.stopObserving('mousemove',onMousemove).stopObserving('mouseup',onMouseup);if(dragging){dragging=false;fire('drag:ended',event);}};function fire(eventName,mouseEvent){var pointer=mouseEvent.pointer();currentDraggable.fire(eventName,{dx:pointer.x-initPointer.x,dy:pointer.y-initPointer.y,mouseEvent:mouseEvent})};Element.addMethods({enableDrag:function(element){element=$(element);element.writeAttribute('ui:draggable','true');return element;},disableDrag:function(element){element=$(element);element.writeAttribute('ui:draggable',null);return element;},isDraggable:function(element){return $(element).readAttribute('ui:draggable')=='true';}});})();UI.IframeShim=Class.create(UI.Options,{initialize:function(){this.element=new Element('iframe',{style:'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none',src:'javascript:false;',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),offset=element.cumulativeOffset(),dimensions=element.getDimensions(),style={left:offset[0]+'px',top:offset[1]+'px',width:dimensions.width+'px',height:dimensions.height+'px',zIndex:element.getStyle('zIndex')-1};this.element.setStyle(style).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;}});UI.Abstract.Logger=Class.create({level:'debug'});(function(){var levels=$w(" debug info warn error ");levels.each(function(level,index){UI.Abstract.Logger.addMethod(level,function(message){if(index>=levels.indexOf(this.level))
this._log({level:level,message:message,date:new Date()});});});})();UI.NullLogger=Class.create(UI.Abstract.Logger,{_log:Prototype.emptyFunction});UI.MemLogger=Class.create(UI.Abstract.Logger,{initialize:function(){this.logs=[];},_log:function(log){this.logs.push(log);}});UI.ConsoleLogger=Class.create(UI.Abstract.Logger,{_log:function(log){console[log.level||'log'](log.message);}});UI.ElementLogger=Class.create(UI.Abstract.Logger,{initialize:function(element){this.element=$(element);},format:'<p>(<span class="date">#{date}</span>) '+'<span class="level">#{level}</span> : '+'<span class="message">#{message}</span></p>',_log:function(log){var entry=this.format.interpolate({level:log.level.toUpperCase(),message:log.message.escapeHTML(),date:log.date.toLocaleTimeString()});this.element.insert({top:entry});}});document.observe('dom:loaded',function(){if($('log'))UI.logger=new UI.ElementLogger('log');else if(window.console)UI.logger=new UI.ConsoleLogger();else UI.logger=new UI.MemLogger();});UI.Shadow=Class.create(UI.Options,{options:{theme:"mac_shadow",focus:false,zIndex:100},initialize:function(element,options){this.setOptions(options);this.element=$(element);this.create();if(Object.isElement(this.element.parentNode))
this.render();},destroy:function(){if(this.shadow.parentNode)
this.remove();},setPosition:function(top,left){if(this.shadowSize){var shadowStyle=this.shadow.style;shadowStyle.top=parseInt(top)-this.shadowSize.top+this.shadowShift.top+'px';shadowStyle.left=parseInt(left)-this.shadowSize.left+this.shadowShift.left+'px';}
return this;},setSize:function(width,height){if(this.shadowSize){var w=parseInt(width)+this.shadowSize.width-this.shadowShift.width+"px";this.shadow.style.width=w;var h=parseInt(height)-this.shadowShift.height+"px";this.shadowContents[1].childElements().each(function(e){e.style.height=h});this.shadowContents.each(function(item){item.style.width=w});}
return this;},setBounds:function(bounds){return this.setPosition(bounds.top,bounds.left).setSize(bounds.width,bounds.height);},setZIndex:function(zIndex){this.shadow.style.zIndex=zIndex;return this;},show:function(){this.shadow.show();return this;},hide:function(){this.shadow.hide();return this;},remove:function(){this.shadow.remove();return this;},focus:function(){this.options.focus=true;this.updateShadow();return this;},blur:function(){this.options.focus=false;this.updateShadow();return this;},render:function(){if(this.element.parentNode&&!Object.isElement(this.shadow.parentNode)){this.element.parentNode.appendChild(this.shadow);this.computeSize();this.setBounds(Object.extend(this.element.getDimensions(),this.getElementPosition()));this.shadow.show();}
return this;},create:function(){var zIndex=this.element.getStyle('zIndex');if(!zIndex)
this.element.setStyle({zIndex:this.options.zIndex});zIndex=(zIndex||this.options.zIndex)-1;this.shadowContents=new Array(3);this.shadowContents[0]=new Element("div").insert(new Element("div",{className:"shadow_center_wrapper"}).insert(new Element("div",{className:"n_shadow"}))).insert(new Element("div",{className:"shadow_right ne_shadow"})).insert(new Element("div",{className:"shadow_left nw_shadow"}));this.shadowContents[1]=new Element("div").insert(new Element("div",{className:"shadow_center_wrapper c_shadow"})).insert(new Element("div",{className:"shadow_right e_shadow"})).insert(new Element("div",{className:"shadow_left w_shadow"}));this.centerElements=this.shadowContents[1].childElements();this.shadowContents[2]=new Element("div").insert(new Element("div",{className:"shadow_center_wrapper"}).insert(new Element("div",{className:"s_shadow"}))).insert(new Element("div",{className:"shadow_right se_shadow"})).insert(new Element("div",{className:"shadow_left sw_shadow"}));this.shadow=new Element("div",{className:"shadow_container "+this.options.theme,style:"position:absolute; top:-10000px; left:-10000px; display:none; z-index:"+zIndex}).insert(this.shadowContents[0]).insert(this.shadowContents[1]).insert(this.shadowContents[2]);},computeSize:function(){if(this.focusedShadowShift)
return;this.shadow.show();var content=this.shadowContents[1].select("div.c_shadow").first();this.unfocusedShadowShift={};this.focusedShadowShift={};$w("top left bottom right").each(function(pos){this.unfocusedShadowShift[pos]=content.getNumStyle("padding-"+pos)||0}.bind(this));this.unfocusedShadowShift.width=this.unfocusedShadowShift.left+this.unfocusedShadowShift.right;this.unfocusedShadowShift.height=this.unfocusedShadowShift.top+this.unfocusedShadowShift.bottom;$w("top left bottom right").each(function(pos){this.focusedShadowShift[pos]=content.getNumStyle("margin-"+pos)||0}.bind(this));this.focusedShadowShift.width=this.focusedShadowShift.left+this.focusedShadowShift.right;this.focusedShadowShift.height=this.focusedShadowShift.top+this.focusedShadowShift.bottom;this.shadowShift=this.options.focus?this.focusedShadowShift:this.unfocusedShadowShift;this.shadowSize={top:this.shadowContents[0].childElements()[1].getNumStyle("height"),left:this.shadowContents[0].childElements()[1].getNumStyle("width"),bottom:this.shadowContents[2].childElements()[1].getNumStyle("height"),right:this.shadowContents[0].childElements()[2].getNumStyle("width")};this.shadowSize.width=this.shadowSize.left+this.shadowSize.right;this.shadowSize.height=this.shadowSize.top+this.shadowSize.bottom;content.setStyle("padding:0; margin:0");this.shadow.hide();},updateShadow:function(){this.shadowShift=this.options.focus?this.focusedShadowShift:this.unfocusedShadowShift;var shadowStyle=this.shadow.style,pos=this.getElementPosition(),size=this.element.getDimensions();shadowStyle.top=pos.top-this.shadowSize.top+this.shadowShift.top+'px';shadowStyle.left=pos.left-this.shadowSize.left+this.shadowShift.left+'px';shadowStyle.width=size.width+this.shadowSize.width-this.shadowShift.width+"px";var h=size.height-this.shadowShift.height+"px";this.centerElements.each(function(e){e.style.height=h});var w=size.width+this.shadowSize.width-this.shadowShift.width+"px";this.shadowContents.each(function(item){item.style.width=w});},getElementPosition:function(){return{top:this.element.getNumStyle("top"),left:this.element.getNumStyle("left")}}});document.whenReady(function(){CSS.fixPNG("shadow")});UI.Window=Class.create(UI.Options,{options:{theme:null,shadowTheme:null,id:null,windowManager:null,top:null,left:null,width:200,height:300,minHeight:100,minWidth:200,maxHeight:null,maxWidth:null,altitude:"front",resizable:true,draggable:true,wired:false,show:Element.show,hide:Element.hide,superflousEffects:!Object.isUndefined(window.Effect),shadow:false,activeOnClick:true,gridX:1,gridY:1,close:'destroy',minimize:'toggleFold',maximize:'toggleMaximize'},initialize:function(options){this.setOptions(options);this.windowManager=this.options.windowManager||UI.defaultWM;this.create();this.id=this.element.id;this.windowManager.register(this);this.render();if(this.options.activeOnClick)
this.overlay.setStyle({zIndex:this.lastZIndex+1}).show();},destroy:function($super){this.hide();if(this.centerOptions)
Event.stopObserving(this.windowManager.scrollContainer,"scroll",this.centerOptions.handler);this.windowManager.unregister(this);this.fire('destroyed');},fire:function(eventName,memo){memo=memo||{};memo.window=this;return this.element.fire('window:'+eventName,memo);},observe:function(eventName,handler){this.element.observe('window:'+eventName,handler.bind(this));return this;},show:function(modal){if(this.visible)return this;this.fire('showing');this.effect('show');if(modal){this.windowManager.startModalSession(this);this.modalSession=true;}
this.addElements();this.visible=true;new PeriodicalExecuter(function(executer){if(!this.element.visible())return;this.fire('shown');executer.stop();}.bind(this),0.1);return this;},hide:function(){if(!this.visible)return this;this.fire('hiding');this.effect('hide');if(this.modalSession){this.windowManager.endModalSession(this);this.modalSession=false;}
this.windowManager.hide(this);new PeriodicalExecuter(function(executer){if(this.element.visible())return;this.visible=false;this.element.remove();this.fire('hidden');executer.stop();}.bind(this),0.1);return this;},close:function(){return this.action('close');},activate:function(){return this.bringToFront().focus();},bringToFront:function(){return this.setAltitude('front');},sendToBack:function(){return this.setAltitude('back');},focus:function(){if(this.focused)return this;this.windowManager.focus(this);this.overlay.hide();this.element.addClassName(this.options.theme+'_focused');this.focused=true;this.fire('focused');return this;},blur:function(){if(!this.focused)return this;this.windowManager.blur(this);this.element.removeClassName(this.options.theme+'_focused');if(this.options.activeOnClick)
this.overlay.setStyle({zIndex:this.lastZIndex+1}).show();this.focused=false;this.fire('blurred');return this;},maximize:function(){if(this.maximized)return this;var bounds=this.getBounds();if(this.windowManager.maximize(this)){this.disableButton('minimize').setResizable(false).setDraggable(false);this.activate();this.maximized=true;this.savedArea=bounds;var newBounds=Object.extend(this.windowManager.viewport.getDimensions(),{top:0,left:0});this[this.options.superflousEffects&&!Prototype.Browser.IE?"morph":"setBounds"](newBounds);this.fire('maximized');return this;}},restore:function(){if(!this.maximized)return this;if(this.windowManager.restore(this)){this[this.options.superflousEffects&&!Prototype.Browser.IE?"morph":"setBounds"](this.savedArea);this.enableButton("minimize").setResizable(true).setDraggable(true);this.maximized=false;this.fire('restored');return this;}},toggleMaximize:function(){return this.maximized?this.restore():this.maximize();},adapt:function(){var dimensions=this.content.getScrollDimensions();if(this.options.superflousEffects)
this.morph(dimensions,true);else
this.setSize(dimensions.width,dimensions.height,true);return this;},fold:function(){if(!this.folded){var size=this.getSize(true);this.folded=true;this.savedInnerHeight=size.height;if(this.options.superflousEffects)
this.morph({width:size.width,height:0},true);else
this.setSize(size.width,0,true);this.setResizable(false);this.fire("fold");}
return this;},unfold:function(){if(this.folded){var size=this.getSize(true);this.folded=false;if(this.options.superflousEffects)
this.morph({width:size.width,height:this.savedInnerHeight},true);else
this.setSize(size.width,this.savedInnerHeight,true);this.setResizable(true);this.fire("unfold");}
return this;},toggleFold:function(){return this.folded?this.unfold():this.fold();},setHeader:function(header){this.header.update(header);return this;},setContent:function(content){this.content.update(content);return this;},setFooter:function(footer){this.footer.update(footer);return this;},setAjaxContent:function(url,options){Object.keys(options||{}).each(function(name){if(Object.isFunction(options[name]))
options[name]=options[name].bind(this);},this);new Ajax.Updater(this.content,url,options);return this;},getPosition:function(){return{left:this.options.left,top:this.options.top};},setPosition:function(top,left){var pos=this.computePosition(top,left);this.options.top=pos.top;this.options.left=pos.left;var elementStyle=this.element.style;elementStyle.top=pos.top+'px';elementStyle.left=pos.left+'px';this.fire('position:changed');return this;},center:function(options){var size=this.getSize(),windowManager=this.windowManager,viewport=windowManager.viewport;viewportArea=viewport.getDimensions(),offset=viewport.getScrollOffset();if(options&&options.auto){this.centerOptions=Object.extend({handler:this.recenter.bind(this)},options);Event.observe(this.windowManager.scrollContainer,"scroll",this.centerOptions.handler);Event.observe(window,"resize",this.centerOptions.handler);}
options=Object.extend({top:(viewportArea.height-size.height)/2,left:(viewportArea.width-size.width)/2},options||{});return this.setPosition(options.top+offset.top,options.left+offset.left);},getSize:function(innerSize){if(innerSize)
return{width:this.options.width-this.borderSize.width,height:this.options.height-this.borderSize.height};else
return{width:this.options.width,height:this.options.height};},setSize:function(width,height,innerSize){var size=this.computeSize(width,height,innerSize);var elementStyle=this.element.style,contentStyle=this.content.style;this.options.width=size.outerWidth;this.options.height=size.outerHeight;elementStyle.width=size.outerWidth+"px",elementStyle.height=size.outerHeight+"px";contentStyle.width=size.innerWidth+"px",contentStyle.height=size.innerHeight+"px";this.overlay.style.height=size.innerHeight+"px";this.fire('size:changed');return this;},getBounds:function(innerSize){return Object.extend(this.getPosition(),this.getSize(innerSize));},setBounds:function(bounds,innerSize){return this.setPosition(bounds.top,bounds.left).setSize(bounds.width,bounds.height,innerSize);},morph:function(bounds,innerSize){bounds=Object.extend(this.getBounds(innerSize),bounds||{});if(this.centerOptions&&this.centerOptions.auto)
bounds=Object.extend(bounds,this.computeRecenter(bounds));if(innerSize){bounds.width+=this.borderSize.width;bounds.height+=this.borderSize.height;}
this.animating=true;new UI.Window.Effects.Morph(this,bounds,{duration:0.5,afterFinish:function(){this.animating=false}.bind(this)});Object.extend(this.options,bounds);return this;},getAltitude:function(){return this.windowManager.getAltitude(this);},setAltitude:function(altitude){if(this.windowManager.setAltitude(this,altitude))
this.fire('altitude:changed');return this;},setResizable:function(resizable){this.options.resizable=resizable;var toggleClassName=(resizable?'add':'remove')+'ClassName';this.element[toggleClassName]('resizable').select('div:[class*=_sizer]').invoke(resizable?'show':'hide');if(resizable)
this.createResizeHandles();this.element.select('div.se').first()[toggleClassName]('se_resize_handle');return this;},setDraggable:function(draggable){this.options.draggable=draggable;this.element[(draggable?'add':'remove')+'ClassName']('draggable');return this;},getTheme:function(){return this.options.theme||this.windowManager.getTheme();},setTheme:function(theme,windowManagerTheme){this.element.removeClassName(this.getTheme()).addClassName(theme);if(!windowManagerTheme)
this.options.theme=theme;return this;},getShadowTheme:function(){return this.options.shadowTheme||this.windowManager.getShadowTheme();}});UI.Window.addMethods(UI.Window.Buttons);UI.Window.addMethods(UI.Window.Shadow);UI.Window.optionsAccessor($w(" minWidth minHeight maxWidth maxHeight gridX gridY altitude "));UI.Window.addMethods({style:"position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;",action:function(name){var action=this.options[name];if(action)
Object.isString(action)?this[action]():action.call(this,this);},create:function(){function createDiv(className,options){return new Element('div',Object.extend({className:className},options));};this.element=createDiv("ui-window "+this.getTheme(),{id:this.options.id,style:"top:-10000px; left:-10000px"});this.header=createDiv('n move_handle').enableDrag();this.content=createDiv('content').appendText(' ');this.footer=createDiv('s move_handle').enableDrag();var header=createDiv('nw').insert(createDiv('ne').insert(this.header));var content=createDiv('w').insert(createDiv('e',{style:"position:relative"}).insert(this.content));var footer=createDiv('sw').insert(createDiv('se'+(this.options.resizable?" se_resize_handle":"")).insert(this.footer));this.element.insert(header).insert(content).insert(footer).identify('ui-window');this.header.observe('mousedown',this.activate.bind(this));this.setDraggable(this.options.draggable);this.setResizable(this.options.resizable);this.overlay=new Element('div',{style:this.style+"display: none"}).observe('mousedown',this.activate.bind(this));if(this.options.activeOnClick)
this.content.insert({before:this.overlay});},createWiredElement:function(){this.wiredElement=this.wiredElement||new Element("div",{className:this.getTheme()+"_wired",style:"display: none; position: absolute; top: 0; left: 0"});},createResizeHandles:function(){$w(" n  w  e  s  nw  ne  sw  se ").each(function(id){this.insert(new Element("div",{className:id+"_sizer resize_handle",drag_prefix:id}).enableDrag());},this.element);this.createResizeHandles=Prototype.emptyFunction;},render:function(){this.addElements();this.computeBorderSize();this.updateButtonsOrder();this.element.hide().remove();return this.setBounds(this.options);},addElements:function(){this.windowManager.container.appendChild(this.element);},setZIndex:function(zIndex){if(this.zIndex!=zIndex){this.zIndex=zIndex;[this.element].concat(this.element.childElements()).each(function(element){element.style.zIndex=zIndex++;});this.lastZIndex=zIndex;}
return this;},effect:function(name,element,options){var effect=this.options[name]||Prototype.emptyFunction;effect(element||this.element,options||{});},computeBorderSize:function(){if(this.element){if(Prototype.Browser.IEVersion>=7)
this.content.style.width="100%";var dim=this.element.getDimensions(),pos=this.content.positionedOffset();this.borderSize={top:pos[1],bottom:dim.height-pos[1]-this.content.getHeight(),left:pos[0],right:dim.width-pos[0]-this.content.getWidth()};this.borderSize.width=this.borderSize.left+this.borderSize.right;this.borderSize.height=this.borderSize.top+this.borderSize.bottom;if(Prototype.Browser.IEVersion>=7)
this.content.style.width="auto";}},computeSize:function(width,height,innerSize){var innerWidth,innerHeight,outerWidth,outerHeight;if(innerSize){outerWidth=width+this.borderSize.width;outerHeight=height+this.borderSize.height;}else{outerWidth=width;outerHeight=height;}
if(!this.animating){outerWidth=outerWidth.snap(this.options.gridX);outerHeight=outerHeight.snap(this.options.gridY);if(!this.folded){if(outerWidth<this.options.minWidth)
outerWidth=this.options.minWidth;if(outerHeight<this.options.minHeight)
outerHeight=this.options.minHeight;}
if(this.options.maxWidth&&outerWidth>this.options.maxWidth)
outerWidth=this.options.maxWidth;if(this.options.maxHeight&&outerHeight>this.options.maxHeight)
outerHeight=this.options.maxHeight;}
if(this.centerOptions&&this.centerOptions.auto)
this.recenter();innerWidth=outerWidth-this.borderSize.width;innerHeight=outerHeight-this.borderSize.height;return{innerWidth:innerWidth,innerHeight:innerHeight,outerWidth:outerWidth,outerHeight:outerHeight};},computePosition:function(top,left){if(this.centerOptions&&this.centerOptions.auto)
return this.computeRecenter(this.getSize());;return{top:this.animating?top:top.snap(this.options.gridY),left:this.animating?left:left.snap(this.options.gridX)};},computeRecenter:function(size){var viewport=this.windowManager.viewport,area=viewport.getDimensions(),offset=viewport.getScrollOffset(),center={top:Object.isUndefined(this.centerOptions.top)?(area.height-size.height)/2:this.centerOptions.top,left:Object.isUndefined(this.centerOptions.left)?(area.width-size.width)/2:this.centerOptions.left};return{top:parseInt(center.top+offset.top),left:parseInt(center.left+offset.left)};},recenter:function(event){var pos=this.computeRecenter(this.getSize());this.setPosition(pos.top,pos.left);}});UI.URLWindow=Class.create(UI.Window,{options:{url:'about:blank'},afterClassCreate:function(){this.undefMethod('setAjaxContent');},initialize:function($super,options){$super(options);this.setUrl(this.options.url);},destroy:function($super){this.iframe.src=null;$super();},getUrl:function(){return this.iframe.src;},setUrl:function(url,options){this.iframe.src=url;return this;},create:function($super){$super();this.iframe=new Element('iframe',{style:this.style,frameborder:0,src:this.options.url,name:this.element.id+"_frame",id:this.element.id+"_frame"});this.content.insert(this.iframe);}});if(!Object.isUndefined(window.Effect)){UI.Window.Effects=UI.Window.Effects||{};UI.Window.Effects.Morph=Class.create(Effect.Base,{initialize:function(window,bounds){this.window=window;var options=Object.extend({fromBounds:this.window.getBounds(),toBounds:bounds,from:0,to:1},arguments[2]||{});this.start(options);},update:function(position){var t=this.options.fromBounds.top+(this.options.toBounds.top-this.options.fromBounds.top)*position;var l=this.options.fromBounds.left+(this.options.toBounds.left-this.options.fromBounds.left)*position;var ow=this.options.fromBounds.width+(this.options.toBounds.width-this.options.fromBounds.width)*position;var oh=this.options.fromBounds.height+(this.options.toBounds.height-this.options.fromBounds.height)*position;this.window.setBounds({top:t,left:l,width:ow,height:oh})}});}
UI.Window.addMethods({startDrag:function(handle){this.initBounds=this.getBounds();this.activate();if(this.options.wired){this.createWiredElement();this.wiredElement.style.cssText=this.element.style.cssText;this.element.hide();this.saveElement=this.element;this.windowManager.container.appendChild(this.wiredElement);this.element=this.wiredElement;}
handle.hasClassName('resize_handle')?this.startResize(handle):this.startMove();},endDrag:function(){this.element.hasClassName('resized')?this.endResize():this.endMove();if(this.options.wired){this.saveElement.style.cssText=this.wiredElement.style.cssText;this.wiredElement.remove();this.element=this.saveElement;}},startMove:function(){this.drag=this.moveDrag;this.element.addClassName('moved');this.fire('move:started');},endMove:function(){this.element.removeClassName('moved');this.fire('move:ended');},startResize:function(handle){this.drag=this[handle.readAttribute('drag_prefix')+'Drag'];this.element.addClassName('resized');this.fire('resize:started');},endResize:function(){this.element.removeClassName('resized');this.fire('resize:ended');},moveDrag:function(dx,dy){this.setPosition(this.initBounds.top+dy,this.initBounds.left+dx);},swDrag:function(dx,dy){var initBounds=this.initBounds;this.setSize(initBounds.width-dx,initBounds.height+dy).setPosition(initBounds.top,initBounds.left+(initBounds.width-this.getSize().width));},seDrag:function(dx,dy){this.setSize(this.initBounds.width+dx,this.initBounds.height+dy);},nwDrag:function(dx,dy){var initBounds=this.initBounds;this.setSize(initBounds.width-dx,initBounds.height-dy).setPosition(initBounds.top+(initBounds.height-this.getSize().height),initBounds.left+(initBounds.width-this.getSize().width));},neDrag:function(dx,dy){var initBounds=this.initBounds;this.setSize(initBounds.width+dx,initBounds.height-dy).setPosition(initBounds.top+(initBounds.height-this.getSize().height),initBounds.left);},wDrag:function(dx,dy){var initBounds=this.initBounds;this.setSize(initBounds.width-dx,initBounds.height).setPosition(initBounds.top,initBounds.left+(initBounds.width-this.getSize().width));},eDrag:function(dx,dy){this.setSize(this.initBounds.width+dx,this.initBounds.height);},nDrag:function(dx,dy){var initBounds=this.initBounds;this.setSize(initBounds.width,initBounds.height-dy).setPosition(initBounds.top+(initBounds.height-this.getSize().height),initBounds.left);},sDrag:function(dx,dy){this.setSize(this.initBounds.width,this.initBounds.height+dy);}});UI.Window.addMethods({methodsAdded:function(base){base.aliasMethodChain('create','buttons');base.aliasMethodChain('destroy','buttons');},createWithButtons:function(){this.createWithoutButtons();if(!this.options.resizable){this.options.minimize=false;this.options.maximize=false;}
this.buttons=new Element("div",{className:"buttons"}).observe('click',this.onButtonsClick.bind(this)).observe('mouseover',this.onButtonsHover.bind(this)).observe('mouseout',this.onButtonsOut.bind(this));this.element.insert(this.buttons);this.defaultButtons.each(function(button){if(this.options[button]!==false)
this.addButton(button);},this);},destroyWithButtons:function(){this.buttons.stopObserving();this.destroyWithoutButtons();},defaultButtons:$w(' minimize maximize close '),getButtonElement:function(buttonName){return this.buttons.down("."+buttonName);},addButton:function(buttonName,action){this.buttons.insert(new Element("a",{className:buttonName,href:"#"}));if(action)
this.options[buttonName]=action;return this;},removeButton:function(buttonName){this.getButtonElement(buttonName).remove();return this;},disableButton:function(buttonName){this.getButtonElement(buttonName).addClassName("disabled");return this;},enableButton:function(buttonName){this.getButtonElement(buttonName).removeClassName("disabled");return this;},onButtonsClick:function(event){var element=event.findElement('a:not(.disabled)');if(element)this.action(element.className);event.stop();},onButtonsHover:function(event){this.buttons.addClassName("over");},onButtonsOut:function(event){this.buttons.removeClassName("over");},updateButtonsOrder:function(){var buttons=this.buttons.childElements();buttons.inject(new Array(buttons.length),function(array,button){array[parseInt(button.getStyle("padding-top"))]=button.setStyle("padding: 0");return array;}).each(function(button){this.buttons.appendChild(button)},this);}});UI.Window.addMethods({methodsAdded:function(base){(function(methods){$w(methods).each(function(m){base.aliasMethodChain(m,'shadow')});})(' create addElements setZIndex setPosition setSize setBounds ');},showShadow:function(){if(this.shadow){this.shadow.hide();this.effect('show',this.shadow.shadow);}},hideShadow:function(){if(this.shadow)
this.effect('hide',this.shadow.shadow);},removeShadow:function(){if(this.shadow)
this.shadow.remove();},focusShadow:function(){if(this.shadow)
this.shadow.focus();},blurShadow:function(){if(this.shadow)
this.shadow.blur();},createWithShadow:function(){this.createWithoutShadow();this.observe('showing',this.showShadow).observe('hiding',this.hideShadow).observe('hidden',this.removeShadow).observe('focused',this.focusShadow).observe('blurred',this.blurShadow);if(this.options.shadow)
this.shadow=new UI.Shadow(this.element,{theme:this.getShadowTheme()});},addElementsWithShadow:function(){this.addElementsWithoutShadow();if(this.shadow){this.shadow.setBounds(this.options).render();}},setZIndexWithShadow:function(zIndex){if(this.zIndex!=zIndex){if(this.shadow)
this.shadow.setZIndex(zIndex-1);this.setZIndexWithoutShadow(zIndex);this.zIndex=zIndex;}
return this;},setPositionWithShadow:function(top,left){this.setPositionWithoutShadow(top,left);if(this.shadow){var pos=this.getPosition();this.shadow.setPosition(pos.top,pos.left);}
return this;},setSizeWithShadow:function(width,height,innerSize){this.setSizeWithoutShadow(width,height,innerSize);if(this.shadow){var size=this.getSize();this.shadow.setSize(size.width,size.height);}
return this;},setBoundsWithShadow:function(bounds,innerSize){this.setBoundsWithoutShadow(bounds,innerSize);if(this.shadow)
this.shadow.setBounds(this.getBounds());}});UI.WindowManager=Class.create(UI.Options,{options:{container:null,zIndex:0,theme:"alphacube",shadowTheme:"mac_shadow",showOverlay:Element.show,hideOverlay:Element.hide,positionningStrategy:function(win,area){UI.WindowManager.DumbPositionningStrategy(win,area);}},initialize:function(options){this.setOptions(options);this.container=$(this.options.container||document.body);if(this.container===$(document.body)){this.viewport=document.viewport;this.scrollContainer=window;}else{this.viewport=this.scrollContainer=this.container;}
this.container.observe('drag:started',this.onStartDrag.bind(this)).observe('drag:updated',this.onDrag.bind(this)).observe('drag:ended',this.onEndDrag.bind(this));this.stack=new UI.WindowManager.Stack();this.modalSessions=0;this.createOverlays();this.resizeEvent=this.resize.bind(this);Event.observe(window,"resize",this.resizeEvent);},destroy:function(){this.windows().invoke('destroy');this.stack.destroy();Event.stopObserving(window,"resize",this.resizeEvent);},setTheme:function(theme){this.stack.windows.select(function(w){return!w.options.theme;}).invoke('setTheme',theme,true);this.options.theme=theme;return this;},register:function(win){if(this.getWindow(win.id))return;this.handlePosition(win);this.stack.add(win);this.restartZIndexes();},unregister:function(win){this.stack.remove(win);if(win==this.focusedWindow)
this.focusedWindow=null;},getWindow:function(element){element=$(element);if(!element)return;if(!element.hasClassName('ui-window'))
element=element.up('.ui-window');var id=element.id;return this.stack.windows.find(function(win){return win.id==id});},windows:function(){return this.stack.windows.clone();},getFocusedWindow:function(){return this.focusedWindow;},startModalSession:function(win){if(!this.modalSessions){this.removeOverflow();this.modalOverlay.className=win.getTheme()+"_overlay";this.container.appendChild(this.modalOverlay);if(!this.modalOverlay.opacity)
this.modalOverlay.opacity=this.modalOverlay.getOpacity();this.modalOverlay.setStyle("height: "+this.viewport.getHeight()+"px");this.options.showOverlay(this.modalOverlay,{from:0,to:this.modalOverlay.opacity});}
this.modalOverlay.setStyle({zIndex:win.zIndex-1});this.modalSessions++;},endModalSession:function(win){this.modalSessions--;if(this.modalSessions){this.modalOverlay.setStyle({zIndex:this.stack.getPreviousWindow(win).zIndex-1});}else{this.resetOverflow();this.options.hideOverlay(this.modalOverlay,{from:this.modalOverlay.opacity,to:0});}},moveHandleSelector:'.ui-window.draggable .move_handle',resizeHandleSelector:'.ui-window.resizable .resize_handle',onStartDrag:function(event){var handle=event.element(),isMoveHandle=handle.match(this.moveHandleSelector),isResizeHandle=handle.match(this.resizeHandleSelector);if(isResizeHandle||isMoveHandle){event.stop();var win=this.getWindow(event.findElement('.ui-window'));this.container.insert(this.dragOverlay.setStyle({zIndex:this.getLastZIndex()}));win.startDrag(handle);this.draggedWindow=win;}},onDrag:function(event){if(this.draggedWindow){event.stop();this.draggedWindow.drag(event.memo.dx,event.memo.dy);}},onEndDrag:function(event){if(this.draggedWindow){event.stop();this.dragOverlay.remove();this.draggedWindow.endDrag();this.draggedWindow=null;}},maximize:function(win){this.removeOverflow();this.maximizedWindow=win;return true;},restore:function(win){if(this.maximizedWindow){this.resetOverflow();this.maximizedWindow=false;}
return true;},removeOverflow:function(){var container=this.container;container.savedOverflow=container.style.overflow||"auto";container.savedOffset=this.viewport.getScrollOffset();container.style.overflow="hidden";this.viewport.setScrollOffset({top:0,left:0});if(this.container==document.body&&Prototype.Browser.IE)
this.cssRule=CSS.addRule("html { overflow: hidden }");},resetOverflow:function(){var container=this.container;if(container.savedOverflow){if(this.container==document.body&&Prototype.Browser.IE)
this.cssRule.remove();container.style.overflow=container.savedOverflow;this.viewport.setScrollOffset(container.savedOffset);container.savedOffset=container.savedOverflow=null;}},hide:function(win){var previous=this.stack.getPreviousWindow(win);if(previous)previous.focus();},restartZIndexes:function(){var zIndex=this.getZIndex()+1;this.stack.windows.each(function(w){w.setZIndex(zIndex);zIndex=w.lastZIndex+1;});},getLastZIndex:function(){return this.stack.getFrontWindow().lastZIndex+1;},overlayStyle:"position: absolute; top: 0; left: 0; display: none; width: 100%;",createOverlays:function(){this.modalOverlay=new Element("div",{style:this.overlayStyle});this.dragOverlay=new Element("div",{style:this.overlayStyle+"height: 100%"});},focus:function(win){if(this.focusedWindow)
this.focusedWindow.blur();this.focusedWindow=win;},blur:function(win){if(win==this.focusedWindow)
this.focusedWindow=null;},setAltitude:function(win,altitude){var stack=this.stack;if(altitude==="front"){if(stack.getFrontWindow()===win)return;stack.bringToFront(win);}else if(altitude==="back"){if(stack.getBackWindow()===win)return;stack.sendToBack(win);}else{if(stack.getPosition(win)==altitude)return;stack.setPosition(win,altitude);}
this.restartZIndexes();return true;},getAltitude:function(win){return this.stack.getPosition(win);},resize:function(event){var area=this.viewport.getDimensions();if(this.maximizedWindow)
this.maximizedWindow.setSize(area.width,area.height);if(this.modalOverlay.visible())
this.modalOverlay.setStyle("height:"+area.height+"px");},handlePosition:function(win){if(Object.isNumber(win.options.top)&&Object.isNumber(win.options.left))
return;var strategy=this.options.positionningStrategy,area=this.viewport.getDimensions();Object.isFunction(strategy)?strategy(win,area):strategy.position(win,area);}});UI.WindowManager.DumbPositionningStrategy=function(win,area){size=win.getSize();var top=area.height-size.height,left=area.width-size.width;top=top<0?0:Math.random()*top;left=left<0?0:Math.random()*left;win.setPosition(top,left);};UI.WindowManager.optionsAccessor('zIndex','theme','shadowTheme');UI.WindowManager.Stack=Class.create(Enumerable,{initialize:function(){this.windows=[];},each:function(iterator){this.windows.each(iterator);},add:function(win,position){this.windows.splice(position||this.windows.length,0,win);},remove:function(win){this.windows=this.windows.without(win);},sendToBack:function(win){this.remove(win);this.windows.unshift(win);},bringToFront:function(win){this.remove(win);this.windows.push(win);},getPosition:function(win){return this.windows.indexOf(win);},setPosition:function(win,position){this.remove(win);this.windows.splice(position,0,win);},getFrontWindow:function(){return this.windows.last();},getBackWindow:function(){return this.windows.first();},getPreviousWindow:function(win){return(win==this.windows.first())?null:this.windows[this.windows.indexOf(win)-1];}});document.whenReady(function(){UI.defaultWM=new UI.WindowManager();});UI.Carousel=Class.create(UI.Options,{options:{direction:"horizontal",previousButton:".previous_button",nextButton:".next_button",container:".container",scrollInc:"auto",disabledButtonSuffix:'_disabled',overButtonSuffix:'_over'},initialize:function(element,options){this.setOptions(options);this.element=$(element);this.id=this.element.id;this.container=this.element.down(this.options.container).firstDescendant();this.elements=this.container.childElements();this.previousButton=this.options.previousButton==false?null:this.element.down(this.options.previousButton);this.nextButton=this.options.nextButton==false?null:this.element.down(this.options.nextButton);this.posAttribute=(this.options.direction=="horizontal"?"left":"top");this.dimAttribute=(this.options.direction=="horizontal"?"width":"height");this.elementSize=this.computeElementSize();this.nbVisible=this.currentSize()/this.elementSize;var scrollInc=this.options.scrollInc;if(scrollInc=="auto")
scrollInc=Math.floor(this.nbVisible);[this.previousButton,this.nextButton].each(function(button){if(!button)return;var className=(button==this.nextButton?"next_button":"previous_button")+this.options.overButtonSuffix;button.clickHandler=this.scroll.bind(this,(button==this.nextButton?-1:1)*scrollInc*this.elementSize);button.observe("click",button.clickHandler).observe("mouseover",function(){button.addClassName(className)}.bind(this)).observe("mouseout",function(){button.removeClassName(className)}.bind(this));},this);this.updateButtons();},destroy:function($super){[this.previousButton,this.nextButton].each(function(button){if(!button)return;button.stopObserving("click",button.clickHandler);},this);this.element.remove();this.fire('destroyed');},fire:function(eventName,memo){memo=memo||{};memo.carousel=this;return this.element.fire('carousel:'+eventName,memo);},observe:function(eventName,handler){this.element.observe('carousel:'+eventName,handler.bind(this));return this;},stopObserving:function(eventName,handler){this.element.stopObserving('carousel:'+eventName,handler);return this;},checkScroll:function(position,updatePosition){if(position>0)
position=0;else{var limit=this.elements.last().positionedOffset()[this.posAttribute]+this.elementSize;var carouselSize=this.currentSize();if(position+limit<carouselSize)
position+=carouselSize-(position+limit);position=Math.min(position,0);}
if(updatePosition)
this.container.style[this.posAttribute]=position+"px";return position;},scroll:function(deltaPixel){if(this.animating)
return this;var position=this.currentPosition()+deltaPixel;position=this.checkScroll(position,false);deltaPixel=position-this.currentPosition();if(deltaPixel!=0){this.animating=true;this.fire("scroll:started");var that=this;this.container.morph("opacity:0.5",{duration:0.2,afterFinish:function(){that.container.morph(that.posAttribute+": "+position+"px",{duration:0.4,delay:0.2,afterFinish:function(){that.container.morph("opacity:1",{duration:0.2,afterFinish:function(){that.animating=false;that.updateButtons().fire("scroll:ended",{shift:deltaPixel/that.currentSize()});}});}});}});}
return this;},scrollTo:function(index){if(this.animating||index<0||index>this.elements.length||index==this.currentIndex()||isNaN(parseInt(index)))
return this;return this.scroll((this.currentIndex()-index)*this.elementSize);},updateButtons:function(){this.updatePreviousButton();this.updateNextButton();return this;},updatePreviousButton:function(){var position=this.currentPosition();var previousClassName="previous_button"+this.options.disabledButtonSuffix;if(this.previousButton.hasClassName(previousClassName)&&position!=0){this.previousButton.removeClassName(previousClassName);this.fire('previousButton:enabled');}
if(!this.previousButton.hasClassName(previousClassName)&&position==0){this.previousButton.addClassName(previousClassName);this.fire('previousButton:disabled');}},updateNextButton:function(){var lastPosition=this.currentLastPosition();var size=this.currentSize();var nextClassName="next_button"+this.options.disabledButtonSuffix;if(this.nextButton.hasClassName(nextClassName)&&lastPosition!=size){this.nextButton.removeClassName(nextClassName);this.fire('nextButton:enabled');}
if(!this.nextButton.hasClassName(nextClassName)&&lastPosition==size){this.nextButton.addClassName(nextClassName);this.fire('nextButton:disabled');}},computeElementSize:function(){return this.elements.first().getDimensions()[this.dimAttribute];},currentIndex:function(){return-this.currentPosition()/this.elementSize;},currentLastPosition:function(){if(this.container.childElements().empty())
return 0;return this.currentPosition()+
this.elements.last().positionedOffset()[this.posAttribute]+
this.elementSize;},currentPosition:function(){return this.container.getNumStyle(this.posAttribute);},currentSize:function(){return this.container.parentNode.getDimensions()[this.dimAttribute];},updateSize:function(){this.nbVisible=this.currentSize()/this.elementSize;var scrollInc=this.options.scrollInc;if(scrollInc=="auto")
scrollInc=Math.floor(this.nbVisible);[this.previousButton,this.nextButton].each(function(button){if(!button)return;button.stopObserving("click",button.clickHandler);button.clickHandler=this.scroll.bind(this,(button==this.nextButton?-1:1)*scrollInc*this.elementSize);button.observe("click",button.clickHandler);},this);this.checkScroll(this.currentPosition(),true);this.updateButtons().fire('sizeUpdated');return this;}});UI.Ajax.Carousel=Class.create(UI.Carousel,{options:{elementSize:-1,url:null},initialize:function($super,element,options){if(!options.url)
throw("url option is required for UI.Ajax.Carousel");if(!options.elementSize)
throw("elementSize option is required for UI.Ajax.Carousel");$super(element,options);this.endIndex=0;this.hasMore=true;this.updateHandler=this.update.bind(this);this.updateAndScrollHandler=function(nbElements,transport,json){this.update(transport,json);this.scroll(nbElements);}.bind(this);this.runRequest.bind(this).defer({parameters:{from:0,to:Math.ceil(this.nbVisible)-1},onSuccess:this.updateHandler});},runRequest:function(options){this.requestRunning=true;new Ajax.Request(this.options.url,Object.extend({method:"GET"},options));this.fire("request:started");return this;},scroll:function($super,deltaPixel){if(this.animating||this.requestRunning)
return this;var nbElements=(-deltaPixel)/this.elementSize;if(this.hasMore&&nbElements>0&&this.currentIndex()+this.nbVisible+nbElements-1>this.endIndex){var from=this.endIndex+1;var to=Math.ceil(from+this.nbVisible-1);this.runRequest({parameters:{from:from,to:to},onSuccess:this.updateAndScrollHandler.curry(deltaPixel).bind(this)});return this;}
else
$super(deltaPixel);},update:function(transport,json){this.requestRunning=false;this.fire("request:ended");if(!json)
json=transport.responseJSON;this.hasMore=json.more;this.endIndex=Math.max(this.endIndex,json.to);this.elements=this.container.insert({bottom:json.html}).childElements();return this.updateButtons();},computeElementSize:function(){return this.options.elementSize;},updateSize:function($super){var nbVisible=this.nbVisible;$super();if(Math.floor(this.nbVisible)-Math.floor(nbVisible)>=1&&this.hasMore){if(this.currentIndex()+Math.floor(this.nbVisible)>=this.endIndex){var nbNew=Math.floor(this.currentIndex()+Math.floor(this.nbVisible)-this.endIndex);this.runRequest({parameters:{from:this.endIndex+1,to:this.endIndex+nbNew},onSuccess:this.updateHandler});}}
return this;},updateNextButton:function($super){var lastPosition=this.currentLastPosition();var size=this.currentSize();var nextClassName="next_button"+this.options.disabledButtonSuffix;if(this.nextButton.hasClassName(nextClassName)&&lastPosition!=size){this.nextButton.removeClassName(nextClassName);this.fire('nextButton:enabled');}
if(!this.nextButton.hasClassName(nextClassName)&&lastPosition==size&&!this.hasMore){this.nextButton.addClassName(nextClassName);this.fire('nextButton:disabled');}}});