/* FILE ARCHIVED ON 7:07:52 Dec 6, 2014 AND RETRIEVED FROM THE AN OPENWAYBACK INSTANCE ON 22:13:51 Aug 30, 2024. JAVASCRIPT APPENDED BY OPENWAYBACK, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ // script.aculo.us effects.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (https://webarchive.library.unt.edu/dentonfracking/20141206070752/http://script.aculo.us, https://webarchive.library.unt.edu/dentonfracking/20141206070752/http://mir.aculo.us) // Contributors: // Justin Palmer (https://webarchive.library.unt.edu/dentonfracking/20141206070752/http://encytemedia.com/) // Mark Pilgrim (https://webarchive.library.unt.edu/dentonfracking/20141206070752/http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: https://webarchive.library.unt.edu/dentonfracking/20141206070752/http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor=function(){var color="#";if(this.slice(0,4)=="rgb("){var cols=this.slice(4,this.length-1).split(","),i=0;do color+=parseInt(cols[i]).toColorPart();while(++i<3)}else if(this.slice(0,1)=="#"){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();this.length==7&&(color=this.toLowerCase())}return color.length==7?color:arguments[0]||this},Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return node.nodeType==3?node.nodeValue:node.hasChildNodes()?Element.collectTextNodes(node):""}).flatten().join("")},Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return node.nodeType==3?node.nodeValue:node.hasChildNodes()&&!Element.hasClassName(node,className)?Element.collectTextNodesIgnoreClass(node,className):""}).flatten().join("")},Element.setContentZoom=function(element,percent){return element=$(element),element.setStyle({fontSize:percent/100+"em"}),Prototype.Browser.WebKit&&window.scrollBy(0,0),element},Element.getInlineOpacity=function(element){return $(element).style.opacity||""},Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(" ");element.appendChild(n),element.removeChild(n)}catch(e){}};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(pos){return-Math.cos(pos*Math.PI)/2+.5},reverse:function(pos){return 1-pos},flicker:function(pos){var pos=-Math.cos(pos*Math.PI)/4+.75+Math.random()/4;return pos>1?1:pos},wobble:function(pos){return-Math.cos(pos*Math.PI*9*pos)/2+.5},pulse:function(pos,pulses){return-Math.cos(pos*((pulses||5)-.5)*2*Math.PI)/2+.5},spring:function(pos){return 1-Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6)},none:function(pos){return 0},full:function(pos){return 1}},DefaultOptions:{duration:1,fps:100,sync:!1,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(element){var tagifyStyle="position:relative";Prototype.Browser.IE&&(tagifyStyle+=";zoom:1"),element=$(element),$A(element.childNodes).each(function(child){child.nodeType==3&&(child.nodeValue.toArray().each(function(character){element.insertBefore((new Element("span",{style:tagifyStyle})).update(character==" "?String.fromCharCode(160):character),child)}),Element.remove(child))})},multiple:function(element,effect){var elements;(typeof element=="object"||Object.isFunction(element))&&element.length?elements=element:elements=$(element).childNodes;var options=Object.extend({speed:.1,delay:0},arguments[2]||{}),masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}))})},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(element,effect,options){return element=$(element),effect=(effect||"appear").toLowerCase(),Effect[Effect.PAIRS[effect][element.visible()?1:0]](element,Object.extend({queue:{position:"end",scope:element.id||"global",limit:1}},options||{}))}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal,Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[],this.interval=null},_each:function(iterator){this.effects._each(iterator)},add:function(effect){var timestamp=(new Date).getTime(),position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case"front":this.effects.findAll(function(e){return e.state=="idle"}).each(function(e){e.startOn+=effect.finishOn,e.finishOn+=effect.finishOn});break;case"with-last":timestamp=this.effects.pluck("startOn").max()||timestamp;break;case"end":timestamp=this.effects.pluck("finishOn").max()||timestamp}effect.startOn+=timestamp,effect.finishOn+=timestamp,(!effect.options.queue.limit||this.effects.length=this.startOn){if(timePos>=this.finishOn){this.render(1),this.cancel(),this.event("beforeFinish"),this.finish&&this.finish(),this.event("afterFinish");return}var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();frame>this.currentFrame&&(this.render(pos),this.currentFrame=frame)}},cancel:function(){this.options.sync||Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this),this.state="finished"},event:function(eventName){this.options[eventName+"Internal"]&&this.options[eventName+"Internal"](this),this.options[eventName]&&this.options[eventName](this)},inspect:function(){var data=$H();for(property in this)Object.isFunction(this[property])||data.set(property,this[property]);return"#"}}),Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[],this.start(arguments[1])},update:function(position){this.effects.invoke("render",position)},finish:function(position){this.effects.each(function(effect){effect.render(1),effect.cancel(),effect.event("beforeFinish"),effect.finish&&effect.finish(position),effect.event("afterFinish")})}}),Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value},this.start(Object.extend({from:from,to:to},options||{}))},update:function(position){this.method(position)}}),Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}))},update:Prototype.emptyFunction}),Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw Effect._elementDoesNotExistError;Prototype.Browser.IE&&!this.element.currentStyle.hasLayout&&this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(options)},update:function(position){this.element.setOpacity(position)}}),Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw Effect._elementDoesNotExistError;var options=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});this.start(options)},setup:function(){this.element.makePositioned(),this.originalLeft=parseFloat(this.element.getStyle("left")||"0"),this.originalTop=parseFloat(this.element.getStyle("top")||"0"),this.options.mode=="absolute"&&(this.options.x=this.options.x-this.originalLeft,this.options.y=this.options.y-this.originalTop)},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+"px",top:(this.options.y*position+this.originalTop).round()+"px"})}}),Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}))},Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element)throw Effect._elementDoesNotExistError;var options=Object.extend({scaleX:!0,scaleY:!0,scaleContent:!0,scaleFromCenter:!1,scaleMode:"box",scaleFrom:100,scaleTo:percent},arguments[2]||{});this.start(options)},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||!1,this.elementPositioning=this.element.getStyle("position"),this.originalStyle={},["top","left","width","height","fontSize"].each(function(k){this.originalStyle[k]=this.element.style[k]}.bind(this)),this.originalTop=this.element.offsetTop,this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle("font-size")||"100%";["em","px","%","pt"].each(function(fontSizeType){fontSize.indexOf(fontSizeType)>0&&(this.fontSize=parseFloat(fontSize),this.fontSizeType=fontSizeType)}.bind(this)),this.factor=(this.options.scaleTo-this.options.scaleFrom)/100,this.dims=null,this.options.scaleMode=="box"&&(this.dims=[this.element.offsetHeight,this.element.offsetWidth]),/^content/.test(this.options.scaleMode)&&(this.dims=[this.element.scrollHeight,this.element.scrollWidth]),this.dims||(this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth])},update:function(position){var currentScale=this.options.scaleFrom/100+this.factor*position;this.options.scaleContent&&this.fontSize&&this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType}),this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale)},finish:function(position){this.restoreAfterFinish&&this.element.setStyle(this.originalStyle)},setDimensions:function(height,width){var d={};this.options.scaleX&&(d.width=width.round()+"px"),this.options.scaleY&&(d.height=height.round()+"px");if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2,leftd=(width-this.dims[1])/2;this.elementPositioning=="absolute"?(this.options.scaleY&&(d.top=this.originalTop-topd+"px"),this.options.scaleX&&(d.left=this.originalLeft-leftd+"px")):(this.options.scaleY&&(d.top=-topd+"px"),this.options.scaleX&&(d.left=-leftd+"px"))}this.element.setStyle(d)}}),Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw Effect._elementDoesNotExistError;var options=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(options)},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();return}this.oldStyle={},this.options.keepBackgroundImage||(this.oldStyle.backgroundImage=this.element.getStyle("background-image"),this.element.setStyle({backgroundImage:"none"})),this.options.endcolor||(this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff")),this.options.restorecolor||(this.options.restorecolor=this.element.getStyle("background-color")),this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this)),this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this))},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){return m+(this._base[i]+this._delta[i]*position).round().toColorPart()}.bind(this))})},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}))}}),Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();return options.offset&&(elementOffsets[1]+=options.offset),new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round())})},Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity(),options=Object.extend({from:element.getOpacity()||1,to:0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity})}},arguments[1]||{});return new Effect.Opacity(element,options)},Effect.Appear=function(element){element=$(element);var options=Object.extend({from:element.getStyle("display")=="none"?0:element.getOpacity()||0,to:1,afterFinishInternal:function(effect){effect.element.forceRerendering()},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show()}},arguments[1]||{});return new Effect.Opacity(element,options)},Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle("position"),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:!0,scaleFromCenter:!0,scaleContent:!0,restoreAfterFinish:!0}),new Effect.Opacity(element,{sync:!0,to:0})],Object.extend({duration:1,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle)}},arguments[1]||{}))},Effect.BlindUp=function(element){return element=$(element),element.makeClipping(),new Effect.Scale(element,0,Object.extend({scaleContent:!1,scaleX:!1,restoreAfterFinish:!0,afterFinishInternal:function(effect){effect.element.hide().undoClipping()}},arguments[1]||{}))},Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:!1,scaleX:!1,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:!0,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:"0px"}).show()},afterFinishInternal:function(effect){effect.element.undoClipping()}},arguments[1]||{}))},Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:.3,scaleFromCenter:!0,scaleX:!1,scaleContent:!1,restoreAfterFinish:!0,beforeSetup:function(effect){effect.element.makePositioned().makeClipping()},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity})}})}},arguments[1]||{}))},Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle("top"),left:element.getStyle("left"),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:!0}),new Effect.Opacity(element,{sync:!0,to:0})],Object.extend({duration:.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned()},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle)}},arguments[1]||{}))},Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:.5},arguments[1]||{}),distance=parseFloat(options.distance),split=parseFloat(options.duration)/10,oldStyle={top:element.getStyle("top"),left:element.getStyle("left")};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle)}})}})}})}})}})}})},Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom"),elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:!1,scaleX:!1,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:!0,afterSetup:function(effect){effect.element.makePositioned(),effect.element.down().makePositioned(),window.opera&&effect.element.setStyle({top:""}),effect.element.makeClipping().setStyle({height:"0px"}).show()},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:effect.dims[0]-effect.element.clientHeight+"px"})},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned(),effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))},Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom"),elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:!1,scaleX:!1,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:!0,afterSetup:function(effect){effect.element.makePositioned(),effect.element.down().makePositioned(),window.opera&&effect.element.setStyle({top:""}),effect.element.makeClipping().show()},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:effect.dims[0]-effect.element.clientHeight+"px"})},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned(),effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))},Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:!0,beforeSetup:function(effect){effect.element.makeClipping()},afterFinishInternal:function(effect){effect.element.hide().undoClipping()}})},Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{}),oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()},dims=element.getDimensions(),initialMoveX,initialMoveY,moveX,moveY;switch(options.direction){case"top-left":initialMoveX=initialMoveY=moveX=moveY=0;break;case"top-right":initialMoveX=dims.width,initialMoveY=moveY=0,moveX=-dims.width;break;case"bottom-left":initialMoveX=moveX=0,initialMoveY=dims.height,moveY=-dims.height;break;case"bottom-right":initialMoveX=dims.width,initialMoveY=dims.height,moveX=-dims.width,moveY=-dims.height;break;case"center":initialMoveX=dims.width/2,initialMoveY=dims.height/2,moveX=-dims.width/2,moveY=-dims.height/2}return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned()},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:!0,to:1,from:0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:!0,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:!0,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:!0})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:"0px"}).show()},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle)}},options))}})},Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{}),oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()},dims=element.getDimensions(),moveX,moveY;switch(options.direction){case"top-left":moveX=moveY=0;break;case"top-right":moveX=dims.width,moveY=0;break;case"bottom-left":moveX=0,moveY=dims.height;break;case"bottom-right":moveX=dims.width,moveY=dims.height;break;case"center":moveX=dims.width/2,moveY=dims.height/2}return new Effect.Parallel([new Effect.Opacity(element,{sync:!0,to:0,from:1,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:!0,transition:options.scaleTransition,restoreAfterFinish:!0}),new Effect.Move(element,{x:moveX,y:moveY,sync:!0,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping()},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle)}},options))},Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition(-Math.cos(pos*(options.pulses||5)*2*Math.PI)/2+.5)};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity})}},options),{transition:reverser}))},Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return element.makeClipping(),new Effect.Scale(element,5,Object.extend({scaleContent:!1,scaleX:!1,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:!1,scaleY:!1,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle)}})}},arguments[1]||{}))},Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw Effect._elementDoesNotExistError;var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style))this.style=$H(options.style);else if(options.style.include(":"))this.style=options.style.parseStyle();else{this.element.addClassName(options.style),this.style=$H(this.element.getStyles()),this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key]}),options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style),effect.transforms.each(function(transform){effect.element.style[transform.style]=""})}}this.start(options)},setup:function(){function parseColor(color){if(!color||["rgba(0, 0, 0, 0)","transparent"].include(color))color="#ffffff";return color=color.parseColor(),$R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)})}this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor("#zzzzzz")!="#zzzzzz")value=value.parseColor(),unit="color";else if(property=="opacity")value=parseFloat(value),Prototype.Browser.IE&&!this.element.currentStyle.hasLayout&&this.element.setStyle({zoom:1});else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]),unit=components.length==3?components[2]:null}var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=="color"?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=="color"?parseColor(value):value,unit:unit}}.bind(this)).reject(function(transform){return transform.originalValue==transform.targetValue||transform.unit!="color"&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))})},update:function(position){var style={},transform,i=this.transforms.length;while(i--)style[(transform=this.transforms[i]).style]=transform.unit=="color"?"#"+Math.round(transform.originalValue[0]+(transform.targetValue[0]-transform.originalValue[0])*position).toColorPart()+Math.round(transform.originalValue[1]+(transform.targetValue[1]-transform.originalValue[1])*position).toColorPart()+Math.round(transform.originalValue[2]+(transform.targetValue[2]-transform.originalValue[2])*position).toColorPart():(transform.originalValue+(transform.targetValue-transform.originalValue)*position).toFixed(3)+(transform.unit===null?"":transform.unit);this.element.setStyle(style,!0)}}),Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[],this.options=arguments[1]||{},this.addTracks(tracks)},addTracks:function(tracks){return tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}))}.bind(this)),this},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get("ids"),effect=track.get("effect"),options=track.get("options"),elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:!0},options))})}).flatten(),this.options)}}),Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex"),Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/,String.__parseStyleElement=document.createElement("div"),String.prototype.parseStyle=function(){var style,styleRules=$H();return Prototype.Browser.WebKit?style=(new Element("div",{style:this})).style:(String.__parseStyleElement.innerHTML='
',style=String.__parseStyleElement.childNodes[0].style),Element.CSS_PROPERTIES.each(function(property){style[property]&&styleRules.set(property,style[property])}),Prototype.Browser.IE&&this.include("opacity")&&styleRules.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]),styleRules},document.defaultView&&document.defaultView.getComputedStyle?Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){return styles[property]=css[property],styles})}:Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;return styles=Element.CSS_PROPERTIES.inject({},function(results,property){return results[property]=css[property],results}),styles.opacity||(styles.opacity=element.getOpacity()),styles},Effect.Methods={morph:function(element,style){return element=$(element),new Effect.Morph(element,Object.extend({style:style},arguments[2]||{})),element},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);return new Effect[klass](element,options),element},highlight:function(element,options){return element=$(element),new Effect.Highlight(element,options),element}},$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(effect){Effect.Methods[effect]=function(element,options){return element=$(element),Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options),element}}),$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(f){Effect.Methods[f]=Element[f]}),Element.getTransform=function(element){var properties=["transform","WebkitTransform","MozTransform","msTransform","OTransform"],p;while(p=properties.shift())if(typeof element.style[p]!="undefined")return p;return!1},Element.setTransform=function(element,prop){var properties=["transform","WebkitTransform","MozTransform","msTransform","OTransform"];properties.each(function(i){element.style[i]=prop})},Effect.Rotate=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw Effect._elementDoesNotExistError;var options=Object.extend({degrees:360},arguments[1]||{});this.start(options)},setup:function(){this.originalDeg=this.element.style["-webkit-transform"]||0},update:function(position){var d=position*this.options.degrees;Element.setTransform(this.element,"rotate("+d+"deg)")}}),Element.addMethods(Effect.Methods);if(Object.isUndefined(Effect))throw"dragdrop.js requires including script.aculo.us' effects.js library";var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)})},add:function(element){element=$(element);var options=Object.extend({greedy:!0,hoverclass:null,tree:!1},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;Object.isArray(containment)?containment.each(function(c){options._containers.push($(c))}):options._containers.push($(containment))}options.accept&&(options.accept=[options.accept].flatten()),Element.makePositioned(element),options.element=element,this.drops.push(options)},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i0&&(drop=Droppables.findDeepestChild(affected)),this.last_active&&this.last_active!=drop&&this.deactivate(this.last_active),drop&&(Position.within(drop.element,point[0],point[1]),drop.onHover&&drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element)),drop!=this.last_active&&Droppables.activate(drop))},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active)&&this.last_active.onDrop)return this.last_active.onDrop(element,this.last_active.element,event),!0},reset:function(){this.last_active&&this.deactivate(this.last_active)}},Draggables={drags:[],observers:[],register:function(draggable){this.drags.length==0&&(this.eventMouseUp=this.endDrag.bindAsEventListener(this),this.eventMouseMove= this.updateDrag.bindAsEventListener(this),this.eventKeypress=this.keyPress.bindAsEventListener(this),Event.observe(document,"mouseup",this.eventMouseUp),Event.observe(document,"mousemove",this.eventMouseMove),Event.observe(document,"keypress",this.eventKeypress)),this.drags.push(draggable)},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable}),this.drags.length==0&&(Event.stopObserving(document,"mouseup",this.eventMouseUp),Event.stopObserving(document,"mousemove",this.eventMouseMove),Event.stopObserving(document,"keypress",this.eventKeypress))},activate:function(draggable){draggable.options.delay?this._timeout=setTimeout(function(){Draggables._timeout=null,window.focus(),Draggables.activeDraggable=draggable}.bind(this),draggable.options.delay):(window.focus(),this.activeDraggable=draggable)},deactivate:function(){this.activeDraggable=null},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&this._lastPointer.inspect()==pointer.inspect())return;this._lastPointer=pointer,this.activeDraggable.updateDrag(event,pointer)},endDrag:function(event){this._timeout&&(clearTimeout(this._timeout),this._timeout=null);if(!this.activeDraggable)return;this._lastPointer=null,this.activeDraggable.endDrag(event),this.activeDraggable=null},keyPress:function(event){this.activeDraggable&&this.activeDraggable.keyPress(event)},addObserver:function(observer){this.observers.push(observer),this._cacheObserverCallbacks()},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element}),this._cacheObserverCallbacks()},notify:function(eventName,draggable,event){this[eventName+"Count"]>0&&this.observers.each(function(o){o[eventName]&&o[eventName](eventName,draggable,event)}),draggable.options[eventName]&&draggable.options[eventName](draggable,event)},_cacheObserverCallbacks:function(){["onStart","onEnd","onDrag"].each(function(eventName){Draggables[eventName+"Count"]=Draggables.observers.select(function(o){return o[eventName]}).length})}},Draggable=Class.create({initialize:function(element){var defaults={handle:!1,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:"_draggable",position:"end"}})},endeffect:function(element){var toOpacity=Object.isNumber(element._opacity)?element._opacity:1;new Effect.Opacity(element,{duration:.2,from:.7,to:toOpacity,queue:{scope:"_draggable",position:"end"},afterFinish:function(){Draggable._dragging[element]=!1}})},zindex:1e3,revert:!1,quiet:!1,scroll:!1,scrollSensitivity:20,scrollSpeed:15,snap:!1,delay:0};(!arguments[1]||Object.isUndefined(arguments[1].endeffect))&&Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element),Draggable._dragging[element]=!0,new Effect.Opacity(element,{duration:.2,from:element._opacity,to:.7})}});var options=Object.extend(defaults,arguments[1]||{});this.element=$(element),options.handle&&Object.isString(options.handle)&&(this.handle=this.element.down("."+options.handle,0)),this.handle||(this.handle=$(options.handle)),this.handle||(this.handle=this.element),options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML&&(options.scroll=$(options.scroll),this._isScrollChild=Element.childOf(this.element,options.scroll)),Element.makePositioned(this.element),this.options=options,this.dragging=!1,this.eventMouseDown=this.initDrag.bindAsEventListener(this),Event.observe(this.handle,"mousedown",this.eventMouseDown),Draggables.register(this)},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown),Draggables.unregister(this)},currentDelta:function(){return[parseInt(Element.getStyle(this.element,"left")||"0"),parseInt(Element.getStyle(this.element,"top")||"0")]},initDrag:function(event){if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if(!(!(tag_name=src.tagName.toUpperCase())||tag_name!="INPUT"&&tag_name!="SELECT"&&tag_name!="OPTION"&&tag_name!="BUTTON"&&tag_name!="TEXTAREA"))return;var pointer=[Event.pointerX(event),Event.pointerY(event)],pos=this.element.cumulativeOffset();this.offset=[0,1].map(function(i){return pointer[i]-pos[i]}),Draggables.activate(this),Event.stop(event)}},startDrag:function(event){this.dragging=!0,this.delta||(this.delta=this.currentDelta()),this.options.zindex&&(this.originalZ=parseInt(Element.getStyle(this.element,"z-index")||0),this.element.style.zIndex=this.options.zindex),this.options.ghosting&&(this._clone=this.element.cloneNode(!0),this._originallyAbsolute=this.element.getStyle("position")=="absolute",this._originallyAbsolute||Position.absolutize(this.element),this.element.parentNode.insertBefore(this._clone,this.element));if(this.options.scroll)if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left,this.originalScrollTop=where.top}else this.originalScrollLeft=this.options.scroll.scrollLeft,this.originalScrollTop=this.options.scroll.scrollTop;Draggables.notify("onStart",this,event),this.options.starteffect&&this.options.starteffect(this.element)},updateDrag:function(event,pointer){this.dragging||this.startDrag(event),this.options.quiet||(Position.prepare(),Droppables.show(pointer,this.element)),Draggables.notify("onDrag",this,event),this.draw(pointer),this.options.change&&this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window)with(this._getWindowScroll(this.options.scroll))p=[left,top,left+width,top+height];else p=Position.page(this.options.scroll).toArray(),p[0]+=this.options.scroll.scrollLeft+Position.deltaX,p[1]+=this.options.scroll.scrollTop+Position.deltaY,p.push(p[0]+this.options.scroll.offsetWidth),p.push(p[1]+this.options.scroll.offsetHeight);var speed=[0,0];pointer[0]p[2]-this.options.scrollSensitivity&&(speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity)),pointer[1]>p[3]-this.options.scrollSensitivity&&(speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity)),this.startScrolling(speed)}Prototype.Browser.WebKit&&window.scrollBy(0,0),Event.stop(event)},finishDrag:function(event,success){this.dragging=!1;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element)}this.options.ghosting&&(this._originallyAbsolute||Position.relativize(this.element),delete this._originallyAbsolute,Element.remove(this._clone),this._clone=null);var dropped=!1;success&&(dropped=Droppables.fire(event,this.element),dropped||(dropped=!1)),dropped&&this.options.onDropped&&this.options.onDropped(this.element),Draggables.notify("onEnd",this,event);var revert=this.options.revert;revert&&Object.isFunction(revert)&&(revert=revert(this.element));var d=this.currentDelta();revert&&this.options.reverteffect?(dropped==0||revert!="failure")&&this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]):this.delta=d,this.options.zindex&&(this.element.style.zIndex=this.originalZ),this.options.endeffect&&this.options.endeffect(this.element),Draggables.deactivate(this),Droppables.reset()},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,!1),Event.stop(event)},endDrag:function(event){if(!this.dragging)return;this.stopScrolling(),this.finishDrag(event,!0),Event.stop(event)},draw:function(point){var pos=this.element.cumulativeOffset();if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX,pos[1]+=r[1]-Position.deltaY}var d=this.currentDelta();pos[0]-=d[0],pos[1]-=d[1],this.options.scroll&&this.options.scroll!=window&&this._isScrollChild&&(pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft,pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop);var p=[0,1].map(function(i){return point[i]-pos[i]-this.offset[i]}.bind(this));this.options.snap&&(Object.isFunction(this.options.snap)?p=this.options.snap(p[0],p[1],this):Object.isArray(this.options.snap)?p=p.map(function(v,i){return(v/this.options.snap[i]).round()*this.options.snap[i]}.bind(this)):p=p.map(function(v){return(v/this.options.snap).round()*this.options.snap}.bind(this)));var style=this.element.style;if(!this.options.constraint||this.options.constraint=="horizontal")style.left=p[0]+"px";if(!this.options.constraint||this.options.constraint=="vertical")style.top=p[1]+"px";style.visibility=="hidden"&&(style.visibility="")},stopScrolling:function(){this.scrollInterval&&(clearInterval(this.scrollInterval),this.scrollInterval=null,Draggables._lastScrollPointer=null)},startScrolling:function(speed){if(!speed[0]&&!speed[1])return;this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed],this.lastScrolled=new Date,this.scrollInterval=setInterval(this.scroll.bind(this),10)},scroll:function(){var current=new Date,delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window)with(this._getWindowScroll(this.options.scroll))if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1e3;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1])}else this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1e3,this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1e3;Position.prepare(),Droppables.show(Draggables._lastPointer,this.element),Draggables.notify("onDrag",this),this._isScrollChild&&(Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer),Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1e3,Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1e3,Draggables._lastScrollPointer[0]<0&&(Draggables._lastScrollPointer[0]=0),Draggables._lastScrollPointer[1]<0&&(Draggables._lastScrollPointer[1]=0),this.draw(Draggables._lastScrollPointer)),this.options.change&&this.options.change(this)},_getWindowScroll:function(w){var T,L,W,H;with(w.document)w.document.documentElement&&documentElement.scrollTop?(T=documentElement.scrollTop,L=documentElement.scrollLeft):w.document.body&&(T=body.scrollTop,L=body.scrollLeft),w.innerWidth?(W=w.innerWidth,H=w.innerHeight):w.document.documentElement&&documentElement.clientWidth?(W=documentElement.clientWidth,H=documentElement.clientHeight):(W=body.offsetWidth,H=body.offsetHeight);return{top:T,left:L,width:W,height:H}}});Draggable._dragging={};var SortableObserver=Class.create({initialize:function(element,observer){this.element=$(element),this.observer=observer,this.lastValue=Sortable.serialize(this.element)},onStart:function(){this.lastValue=Sortable.serialize(this.element)},onEnd:function(){Sortable.unmark(),this.lastValue!=Sortable.serialize(this.element)&&this.observer(this.element)}}),Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id]},destroy:function(element){element=$(element);var s=Sortable.sortables[element.id];s&&(Draggables.removeObserver(s.element),s.droppables.each(function(d){Droppables.remove(d)}),s.draggables.invoke("destroy"),delete Sortable.sortables[s.element.id])},create:function(element){element=$(element);var options=Object.extend({element:element,tag:"li",dropOnEmpty:!1,tree:!1,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:element,handle:!1,only:!1,delay:0,hoverclass:null,ghosting:!1,quiet:!1,scroll:!1,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:!1,handles:!1,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:!0,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};options.starteffect&&(options_for_draggable.starteffect=options.starteffect),options.reverteffect?options_for_draggable.reverteffect=options.reverteffect:options.ghosting&&(options_for_draggable.reverteffect=function(element){element.style.top=0,element.style.left=0}),options.endeffect&&(options_for_draggable.endeffect=options.endeffect),options.zindex&&(options_for_draggable.zindex=options.zindex);var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover},options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass};Element.cleanWhitespace(element),options.draggables=[],options.droppables=[];if(options.dropOnEmpty||options.tree)Droppables.add(element,options_for_tree),options.droppables.push(element);(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):options.handle?$(e).select("."+options.handle)[0]:e;options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle}))),Droppables.add(e,options_for_droppable),options.tree&&(e.treeNode=element),options.droppables.push(e)}),options.tree&&(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree),e.treeNode=element,options.droppables.push(e)}),this.sortables[element.identify()]=options,Draggables.addObserver(new SortableObserver(element,options.onUpdate))},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?!0:!1,options.tag)},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?!0:!1,options.treeTag)},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree)return;if(overlap>.5){Sortable.mark(dropon,"before");if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden",dropon.parentNode.insertBefore(element,dropon),dropon.parentNode!=oldParentNode&&Sortable.options(oldParentNode).onChange(element),Sortable.options(dropon.parentNode).onChange(element)}}else{Sortable.mark(dropon,"after");var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden",dropon.parentNode.insertBefore(element,nextElement),dropon.parentNode!=oldParentNode&&Sortable.options(oldParentNode).onChange(element),Sortable.options(dropon.parentNode).onChange(element)}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode,droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index,children=Sortable.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only}),child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1-overlap);for(index=0;index=0)offset-=Element.offsetSize(children[index],droponOptions.overlap);else{if(offset-Element.offsetSize(children[index],droponOptions.overlap)/2>=0){child=index+10?elements.flatten():[]},Element.offsetSize=function(element,type){return element["offset"+(type=="vertical"||type=="height"?"Height":"Width")]};if(typeof Effect=="undefined")throw"controls.js requires including script.aculo.us' effects.js library";var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(element,update,options){element=$(element),this.element=element,this.update=$(update),this.hasFocus=!1,this.changed=!1,this.active=!1,this.index=0,this.entryCount=0,this.oldElementValue=this.element.value,this.setOptions?this.setOptions(options):this.options=options||{},this.options.paramName=this.options.paramName||this.element.name,this.options.tokens=this.options.tokens||[],this.options.frequency=this.options.frequency||.4,this.options.minChars=this.options.minChars||1,this.options.onShow=this.options.onShow||function(element,update){if(!update.style.position||update.style.position=="absolute")update.style.position="absolute",Position.clone(element,update,{setHeight:!1,offsetTop:element.offsetHeight});Effect.Appear(update,{duration:.15})},this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:.15})},typeof this.options.tokens=="string"&&(this.options.tokens=new Array(this.options.tokens)),this.options.tokens.include("\n")||this.options.tokens.push("\n"),this.observer=null,this.element.setAttribute("autocomplete","off"),Element.hide(this.update),Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this)),Event.observe(this.element,"keydown",this.onKeyPress.bindAsEventListener(this))},show:function(){Element.getStyle(this.update,"display")=="none"&&this.options.onShow(this.element,this.update),!this.iefix&&Prototype.Browser.IE&&Element.getStyle(this.update,"position")=="absolute"&&(new Insertion.After(this.update,''),this.iefix=$(this.update.id+"_iefix")),this.iefix&&setTimeout(this.fixIEOverlapping.bind(this),50)},fixIEOverlapping:function(){Position.clone(this.update,this.iefix,{setTop:!this.update.style.height}),this.iefix.style.zIndex=1,this.update.style.zIndex=2,Element.show(this.iefix)},hide:function(){this.stopIndicator(),Element.getStyle(this.update,"display")!="none"&&this.options.onHide(this.element,this.update),this.iefix&&Element.hide(this.iefix)},startIndicator:function(){this.options.indicator&&Element.show(this.options.indicator)},stopIndicator:function(){this.options.indicator&&Element.hide(this.options.indicator)},onKeyPress:function(event){if(this.active)switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry(),Event.stop(event);case Event.KEY_ESC:this.hide(),this.active=!1,Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious(),this.render(),Event.stop(event);return;case Event.KEY_DOWN:this.markNext(),this.render(),Event.stop(event);return}else if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||Prototype.Browser.WebKit>0&&event.keyCode==0)return;this.changed=!0,this.hasFocus=!0,this.observer&&clearTimeout(this.observer),this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1e3)},activate:function(){this.changed=!1,this.hasFocus=!0,this.getUpdatedChoices()},onHover:function(event){var element=Event.findElement(event,"LI");this.index!=element.autocompleteIndex&&(this.index=element.autocompleteIndex,this.render()),Event.stop(event)},onClick:function(event){var element=Event.findElement(event,"LI");this.index=element.autocompleteIndex,this.selectEntry(),this.hide()},onBlur:function(event){setTimeout(this.hide.bind(this),250),this.hasFocus=!1,this.active=!1},render:function(){if(this.entryCount>0){for(var i=0;i0?this.index--:this.index=this.entryCount-1,this.getEntry(this.index).scrollIntoView(!0)},markNext:function(){this.index0&&(value=Element.collectTextNodes(nodes[0],this.options.select))}else value=Element.collectTextNodesIgnoreClass(selectedElement,"informal");var bounds=this.getTokenBounds();if(bounds[0]!=-1){var newValue=this.element.value.substr(0,bounds[0]),whitespace=this.element.value.substr(bounds[0]).match(/^\s+/);whitespace&&(newValue+=whitespace[0]),this.element.value=newValue+value+this.element.value.substr(bounds[1])}else this.element.value=value;this.oldElementValue=this.element.value,this.element.focus(),this.options.afterUpdateElement&&this.options.afterUpdateElement(this.element,selectedElement)},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices,Element.cleanWhitespace(this.update),Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i=this.options.minChars?this.getUpdatedChoices():(this.active=!1,this.hide()),this.oldElementValue=this.element.value},getToken:function(){var bounds=this.getTokenBounds();return this.element.value.substring(bounds[0],bounds[1]).strip()},getTokenBounds:function(){if(null!=this.tokenBounds)return this.tokenBounds;var value=this.element.value;if(value.strip().empty())return[-1,0];var diff=arguments.callee.getFirstDifferencePos(value,this.oldElementValue),offset=diff==this.oldElementValue.length?1:0,prevTokenPos=-1,nextTokenPos=value.length,tp;for(var index=0,l=this.options.tokens.length;indexprevTokenPos&&(prevTokenPos=tp),tp=value.indexOf(this.options.tokens[index],diff+offset),-1!=tp&&tp"+elem.substr(0,entry.length)+""+elem.substr(entry.length)+"");break}if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1)if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("
  • "+elem.substr(0,foundPos)+""+elem.substr(foundPos,entry.length)+""+elem.substr(foundPos+entry.length)+"
  • ");break}foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1)}}return partial.length&&(ret=ret.concat(partial.slice(0,instance.options.choices-ret.length))),"
      "+ret.join("")+"
    "}},options||{})}}),Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field)},1)},Ajax.InPlaceEditor=Class.create({initialize:function(element,url,options){this.url=url,this.element=element=$(element),this.prepareOptions(),this._controls={},arguments.callee.dealWithDeprecatedOptions(options),Object.extend(this.options,options||{}),!this.options.formId&&this.element.id&&(this.options.formId=this.element.id+"-inplaceeditor",$(this.options.formId)&&(this.options.formId="")),this.options.externalControl&&(this.options.externalControl=$(this.options.externalControl)),this.options.externalControl||(this.options.externalControlOnly=!1),this._originalBackground=this.element.getStyle("background-color")||"transparent",this.element.title=this.options.clickToEditText,this._boundCancelHandler=this.handleFormCancellation.bind(this),this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this),this._boundFailureHandler=this.handleAJAXFailure.bind(this),this._boundSubmitHandler=this.handleFormSubmission.bind(this),this._boundWrapperHandler=this.wrapUp.bind(this),this.registerListeners()},checkForEscapeOrReturn:function(e){if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey)return;Event.KEY_ESC==e.keyCode?this.handleFormCancellation(e):Event.KEY_RETURN==e.keyCode&&this.handleFormSubmission(e)},createControl:function(mode,handler,extraClasses){var control=this.options[mode+"Control"],text=this.options[mode+"Text"];if("button"==control){var btn=document.createElement("input");btn.type="submit",btn.value=text,btn.className="editor_"+mode+"_button","cancel"==mode&&(btn.onclick=this._boundCancelHandler),this._form.appendChild(btn),this._controls[mode]=btn}else if("link"==control){var link=document.createElement("a");link.href="#",link.appendChild(document.createTextNode(text)),link.onclick="cancel"==mode?this._boundCancelHandler:this._boundSubmitHandler,link.className="editor_"+mode+"_link",extraClasses&&(link.className+=" "+extraClasses),this._form.appendChild(link),this._controls[mode]=link}},createEditField:function(){var text=this.options.loadTextURL?this.options.loadingText:this.getText(),fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement("input"),fld.type="text";var size=this.options.size||this.options.cols||0;0=this.options.rows?this.options.autoRows:this.options.rows,fld.cols=this.options.cols||40;fld.name=this.options.paramName,fld.value=text,fld.className="editor_field",this.options.submitOnBlur&&(fld.onblur=this._boundSubmitHandler),this._controls.editor=fld,this.options.loadTextURL&&this.loadExternalText(),this._form.appendChild(this._controls.editor)},createForm:function(){var ipe=this;function addText(mode,condition){var text=ipe.options["text"+mode+"Controls"];if(!text||condition===!1)return;ipe._form.appendChild(document.createTextNode(text))}this._form=$(document.createElement("form")),this._form.id=this.options.formId,this._form.addClassName(this.options.formClassName),this._form.onsubmit=this._boundSubmitHandler,this.createEditField(),"textarea"==this._controls.editor.tagName.toLowerCase()&&this._form.appendChild(document.createElement("br")),this.options.onFormCustomization&&this.options.onFormCustomization(this,this._form),addText("Before",this.options.okControl||this.options.cancelControl),this.createControl("ok",this._boundSubmitHandler),addText("Between",this.options.okControl&&this.options.cancelControl),this.createControl("cancel",this._boundCancelHandler,"editor_cancel"),addText("After",this.options.okControl||this.options.cancelControl)},destroy:function(){this._oldInnerHTML&&(this.element.innerHTML=this._oldInnerHTML),this.leaveEditMode (),this.unregisterListeners()},enterEditMode:function(e){if(this._saving||this._editing)return;this._editing=!0,this.triggerCallback("onEnterEditMode"),this.options.externalControl&&this.options.externalControl.hide(),this.element.hide(),this.createForm(),this.element.parentNode.insertBefore(this._form,this.element),this.options.loadTextURL||this.postProcessEditField(),e&&Event.stop(e)},enterHover:function(e){this.options.hoverClassName&&this.element.addClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback("onEnterHover")},getText:function(){return this.element.innerHTML.unescapeHTML()},handleAJAXFailure:function(transport){this.triggerCallback("onFailure",transport),this._oldInnerHTML&&(this.element.innerHTML=this._oldInnerHTML,this._oldInnerHTML=null)},handleFormCancellation:function(e){this.wrapUp(),e&&Event.stop(e)},handleFormSubmission:function(e){var form=this._form,value=$F(this._controls.editor);this.prepareSubmission();var params=this.options.callback(form,value)||"";Object.isString(params)&&(params=params.toQueryParams()),params.editorId=this.element.id;if(this.options.htmlResponse){var options=Object.extend({evalScripts:!0},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler}),new Ajax.Updater({success:this.element},this.url,options)}else{var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler}),new Ajax.Request(this.url,options)}e&&Event.stop(e)},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName),this.removeForm(),this.leaveHover(),this.element.style.backgroundColor=this._originalBackground,this.element.show(),this.options.externalControl&&this.options.externalControl.show(),this._saving=!1,this._editing=!1,this._oldInnerHTML=null,this.triggerCallback("onLeaveEditMode")},leaveHover:function(e){this.options.hoverClassName&&this.element.removeClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback("onLeaveHover")},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName),this._controls.editor.disabled=!0;var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._form.removeClassName(this.options.loadingClassName);var text=transport.responseText;this.options.stripLoadedTextTags&&(text=text.stripTags()),this._controls.editor.value=text,this._controls.editor.disabled=!1,this.postProcessEditField()}.bind(this),onFailure:this._boundFailureHandler}),new Ajax.Request(this.options.loadTextURL,options)},postProcessEditField:function(){var fpc=this.options.fieldPostCreation;fpc&&$(this._controls.editor)["focus"==fpc?"focus":"activate"]()},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions),Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks),[this._extraDefaultOptions].flatten().compact().each(function(defs){Object.extend(this.options,defs)}.bind(this))},prepareSubmission:function(){this._saving=!0,this.removeForm(),this.leaveHover(),this.showSaving()},registerListeners:function(){this._listeners={};var listener;$H(Ajax.InPlaceEditor.Listeners).each(function(pair){listener=this[pair.value].bind(this),this._listeners[pair.key]=listener,this.options.externalControlOnly||this.element.observe(pair.key,listener),this.options.externalControl&&this.options.externalControl.observe(pair.key,listener)}.bind(this))},removeForm:function(){if(!this._form)return;this._form.remove(),this._form=null,this._controls={}},showSaving:function(){this._oldInnerHTML=this.element.innerHTML,this.element.innerHTML=this.options.savingText,this.element.addClassName(this.options.savingClassName),this.element.style.backgroundColor=this._originalBackground,this.element.show()},triggerCallback:function(cbName,arg){"function"==typeof this.options[cbName]&&this.options[cbName](this,arg)},unregisterListeners:function(){$H(this._listeners).each(function(pair){this.options.externalControlOnly||this.element.stopObserving(pair.key,pair.value),this.options.externalControl&&this.options.externalControl.stopObserving(pair.key,pair.value)}.bind(this))},wrapUp:function(transport){this.leaveEditMode(),this._boundComplete(transport,this.element)}}),Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy}),Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,element,url,options){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions,$super(element,url,options)},createEditField:function(){var list=document.createElement("select");list.name=this.options.paramName,list.size=1,this._controls.editor=list,this._collection=this.options.collection||[],this.options.loadCollectionURL?this.loadCollection():this.checkForExternalText(),this._form.appendChild(this._controls.editor)},loadCollection:function(){this._form.addClassName(this.options.loadingClassName),this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js))throw"Server returned an invalid collection representation.";this._collection=eval(js),this.checkForExternalText()}.bind(this),onFailure:this.onFailure}),new Ajax.Request(this.options.loadCollectionURL,options)},showLoadingText:function(text){this._controls.editor.disabled=!0;var tempOption=this._controls.editor.firstChild;tempOption||(tempOption=document.createElement("option"),tempOption.value="",this._controls.editor.appendChild(tempOption),tempOption.selected=!0),tempOption.update((text||"").stripScripts().stripTags())},checkForExternalText:function(){this._text=this.getText(),this.options.loadTextURL?this.loadExternalText():this.buildOptionList()},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._text=transport.responseText.strip(),this.buildOptionList()}.bind(this),onFailure:this.onFailure}),new Ajax.Request(this.options.loadTextURL,options)},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName),this._collection=this._collection.map(function(entry){return 2===entry.length?entry:[entry,entry].flatten()});var marker="value"in this.options?this.options.value:this._text,textFound=this._collection.any(function(entry){return entry[0]==marker}.bind(this));this._controls.editor.update("");var option;this._collection.each(function(entry,index){option=document.createElement("option"),option.value=entry[0],option.selected=textFound?entry[0]==marker:0==index,option.appendChild(document.createTextNode(entry[1])),this._controls.editor.appendChild(option)}.bind(this)),this._controls.editor.disabled=!1,Field.scrollFreeActivate(this._controls.editor)}}),Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(options){if(!options)return;function fallback(name,expr){if(name in options||expr===undefined)return;options[name]=expr}fallback("cancelControl",options.cancelLink?"link":options.cancelButton?"button":options.cancelLink==options.cancelButton==0?!1:undefined),fallback("okControl",options.okLink?"link":options.okButton?"button":options.okLink==options.okButton==0?!1:undefined),fallback("highlightColor",options.highlightcolor),fallback("highlightEndColor",options.highlightendcolor)},Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:"link",cancelText:"cancel",clickToEditText:"Click to edit",externalControl:null,externalControlOnly:!1,fieldPostCreation:"activate",formClassName:"inplaceeditor-form",formId:null,highlightColor:"#ffff99",highlightEndColor:"#ffffff",hoverClassName:"",htmlResponse:!0,loadingClassName:"inplaceeditor-loading",loadingText:"Loading...",okControl:"button",okText:"ok",paramName:"value",rows:1,savingClassName:"inplaceeditor-saving",savingText:"Saving...",size:0,stripLoadedTextTags:!1,submitOnBlur:!1,textAfterControls:"",textBeforeControls:"",textBetweenControls:""},DefaultCallbacks:{callback:function(form){return Form.serialize(form)},onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightColor,keepBackgroundImage:!0})},onEnterEditMode:null,onEnterHover:function(ipe){ipe.element.style.backgroundColor=ipe.options.highlightColor,ipe._effect&&ipe._effect.cancel()},onFailure:function(transport,ipe){alert("Error communication with the server: "+transport.responseText.stripTags())},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:!0})}},Listeners:{click:"enterEditMode",keydown:"checkForEscapeOrReturn",mouseover:"enterHover",mouseout:"leaveHover"}}),Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:"Loading options..."},Form.Element.DelayedObserver=Class.create({initialize:function(element,delay,callback){this.delay=delay||.5,this.element=$(element),this.callback=callback,this.timer=null,this.lastValue=$F(this.element),Event.observe(this.element,"keyup",this.delayedListener.bindAsEventListener(this))},delayedListener:function(event){if(this.lastValue==$F(this.element))return;this.timer&&clearTimeout(this.timer),this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1e3),this.lastValue=$F(this.element)},onTimerEvent:function(){this.timer=null,this.callback(this.element,$F(this.element))}});if(!Control)var Control={};Control.Slider=Class.create({initialize:function(handle,track,options){var slider=this;Object.isArray(handle)?this.handles=handle.collect(function(e){return $(e)}):this.handles=[$(handle)],this.track=$(track),this.options=options||{},this.axis=this.options.axis||"horizontal",this.increment=this.options.increment||1,this.step=parseInt(this.options.step||"1"),this.range=this.options.range||$R(0,1),this.value=0,this.values=this.handles.map(function(){return 0}),this.spans=this.options.spans?this.options.spans.map(function(s){return $(s)}):!1,this.options.startSpan=$(this.options.startSpan||null),this.options.endSpan=$(this.options.endSpan||null),this.restricted=this.options.restricted||!1,this.maximum=this.options.maximum||this.range.end,this.minimum=this.options.minimum||this.range.start,this.alignX=parseInt(this.options.alignX||"0"),this.alignY=parseInt(this.options.alignY||"0"),this.trackLength=this.maximumOffset()-this.minimumOffset(),this.handleLength=this.isVertical()?this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,""):this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,""),this.active=!1,this.dragging=!1,this.disabled=!1,this.options.disabled&&this.setDisabled(),this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):!1,this.allowedValues&&(this.minimum=this.allowedValues.min(),this.maximum=this.allowedValues.max()),this.eventMouseDown=this.startDrag.bindAsEventListener(this),this.eventMouseUp=this.endDrag.bindAsEventListener(this),this.eventMouseMove=this.update.bindAsEventListener(this),this.handles.each(function(h,i){i=slider.handles.length-1-i,slider.setValue(parseFloat((Object.isArray(slider.options.sliderValue)?slider.options.sliderValue[i]:slider.options.sliderValue)||slider.range.start),i),h.makePositioned().observe("mousedown",slider.eventMouseDown)}),this.track.observe("mousedown",this.eventMouseDown),document.observe("mouseup",this.eventMouseUp),document.observe("mousemove",this.eventMouseMove),this.initialized=!0},dispose:function(){var slider=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown),Event.stopObserving(document,"mouseup",this.eventMouseUp),Event.stopObserving(document,"mousemove",this.eventMouseMove),this.handles.each(function(h){Event.stopObserving(h,"mousedown",slider.eventMouseDown)})},setDisabled:function(){this.disabled=!0},setEnabled:function(){this.disabled=!1},getNearestValue:function(value){if(this.allowedValues){if(value>=this.allowedValues.max())return this.allowedValues.max();if(value<=this.allowedValues.min())return this.allowedValues.min();var offset=Math.abs(this.allowedValues[0]-value),newValue=this.allowedValues[0];return this.allowedValues.each(function(v){var currentOffset=Math.abs(v-value);currentOffset<=offset&&(newValue=v,offset=currentOffset)}),newValue}return value>this.range.end?this.range.end:value0&&sliderValuethis.values[handleIdx+1]&&(sliderValue=this.values[handleIdx+1])),sliderValue=this.getNearestValue(sliderValue),this.values[handleIdx]=sliderValue,this.value=this.values[0],this.handles[handleIdx].style[this.isVertical()?"top":"left"]=this.translateToPx(sliderValue),this.drawSpans(),(!this.dragging||!this.event)&&this.updateFinished()},setValueBy:function(delta,handleIdx){this.setValue(this.values[handleIdx||this.activeHandleIdx||0]+delta,handleIdx||this.activeHandleIdx||0)},translateToPx:function(value){return Math.round((this.trackLength-this.handleLength)/(this.range.end-this.range.start)*(value-this.range.start))+"px"},translateToValue:function(offset){return offset/(this.trackLength-this.handleLength)*(this.range.end-this.range.start)+this.range.start},getRange:function(range){var v=this.values.sortBy(Prototype.K);return range=range||0,$R(v[range],v[range+1])},minimumOffset:function(){return this.isVertical()?this.alignY:this.alignX},maximumOffset:function(){return this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-this.alignX},isVertical:function(){return this.axis=="vertical"},drawSpans:function(){var slider=this;this.spans&&$R(0,this.spans.length-1).each(function(r){slider.setSpan(slider.spans[r],slider.getRange(r))}),this.options.startSpan&&this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value)),this.options.endSpan&&this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum))},setSpan:function(span,range){this.isVertical()?(span.style.top=this.translateToPx(range.start),span.style.height=this.translateToPx(range.end-range.start+this.range.start)):(span.style.left=this.translateToPx(range.start),span.style.width=this.translateToPx(range.end-range.start+this.range.start))},updateStyles:function(){this.handles.each(function(h){Element.removeClassName(h,"selected")}),Element.addClassName(this.activeHandle,"selected")},startDrag:function(event){if(Event.isLeftClick(event)){if(!this.disabled){this.active=!0;var handle=Event.element(event),pointer=[Event.pointerX(event),Event.pointerY(event)],track=handle;if(track==this.track){var offsets=this.track.cumulativeOffset();this.event=event,this.setValue(this.translateToValue((this.isVertical()?pointer[1]-offsets[1]:pointer[0]-offsets[0])-this.handleLength/2));var offsets=this.activeHandle.cumulativeOffset();this.offsetX=pointer[0]-offsets[0],this.offsetY=pointer[1]-offsets[1]}else{while(this.handles.indexOf(handle)==-1&&handle.parentNode)handle=handle.parentNode;if(this.handles.indexOf(handle)!=-1){this.activeHandle=handle,this.activeHandleIdx=this.handles.indexOf(this.activeHandle),this.updateStyles();var offsets=this.activeHandle.cumulativeOffset();this.offsetX=pointer[0]-offsets[0],this.offsetY=pointer[1]-offsets[1]}}}Event.stop(event)}},update:function(event){this.active&&(this.dragging||(this.dragging=!0),this.draw(event),Prototype.Browser.WebKit&&window.scrollBy(0,0),Event.stop(event))},draw:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)],offsets=this.track.cumulativeOffset();pointer[0]-=this.offsetX+offsets[0],pointer[1]-=this.offsetY+offsets[1],this.event=event,this.setValue(this.translateToValue(this.isVertical()?pointer[1]:pointer[0])),this.initialized&&this.options.onSlide&&this.options.onSlide(this.values.length>1?this.values:this.value,this)},endDrag:function(event){this.active&&this.dragging&&(this.finishDrag(event,!0),Event.stop(event)),this.active=!1,this.dragging=!1},finishDrag:function(event,success){this.active=!1,this.dragging=!1,this.updateFinished()},updateFinished:function(){this.initialized&&this.options.onChange&&this.options.onChange(this.values.length>1?this.values:this.value,this),this.event=null}});var Scriptaculous={Version:"1.9.0",require:function(libraryName){try{document.write('')}catch(e){var script=document.createElement("script");script.type="text/javascript",script.src=libraryName,document.getElementsByTagName("head")[0].appendChild(script)}},REQUIRED_PROTOTYPE:"1.6.0.3",load:function(){function convertVersionString(versionString){var v=versionString.replace(/_.*|\./g,"");return v=parseInt(v+"0".times(4-v.length)),versionString.indexOf("_")>-1?v-1:v}if(typeof Prototype=="undefined"||typeof Element=="undefined"||typeof Element.Methods=="undefined"||convertVersionString(Prototype.Version)= "+Scriptaculous.REQUIRED_PROTOTYPE;var js=/scriptaculous\.js(\?.*)?$/;$$("script[src]").findAll(function(s){return s.src.match(js)}).each(function(s){var path=s.src.replace(js,""),includes=s.src.match(/\?.*load=([a-z,]*)/);(includes?includes[1]:"builder,effects,dragdrop,controls,slider,sound").split(",").each(function(include){Scriptaculous.require(path+include+".js")})})}};Scriptaculous.load();