if(!Control)var Control={};Control.Slider=Class.create({initialize:function(d,g,f){var e="mousedown",c=false,a=this,b=a;if(Object.isArray(d))a.handles=d.collect(function(a){return $(a)});else a.handles=[$(d)];a.track=$(g);a.options=f||{};a.axis=a.options.axis||"horizontal";a.increment=a.options.increment||1;a.step=parseInt(a.options.step||"1");a.range=a.options.range||$R(0,1);a.value=0;a.values=a.handles.map(function(){return 0});a.spans=a.options.spans?a.options.spans.map(function(a){return $(a)}):c;a.options.startSpan=$(a.options.startSpan||null);a.options.endSpan=$(a.options.endSpan||null);a.restricted=a.options.restricted||c;a.maximum=a.options.maximum||a.range.end;a.minimum=a.options.minimum||a.range.start;a.alignX=parseInt(a.options.alignX||"0");a.alignY=parseInt(a.options.alignY||"0");a.trackLength=a.maximumOffset()-a.minimumOffset();a.handleLength=a.isVertical()?a.handles[0].offsetHeight!=0?a.handles[0].offsetHeight:a.handles[0].style.height.replace(/px$/,""):a.handles[0].offsetWidth!=0?a.handles[0].offsetWidth:a.handles[0].style.width.replace(/px$/,"");a.active=c;a.dragging=c;a.disabled=c;a.options.disabled&&a.setDisabled();a.allowedValues=a.options.values?a.options.values.sortBy(Prototype.K):c;if(a.allowedValues){a.minimum=a.allowedValues.min();a.maximum=a.allowedValues.max()}a.eventMouseDown=a.startDrag.bindAsEventListener(a);a.eventMouseUp=a.endDrag.bindAsEventListener(a);a.eventMouseMove=a.update.bindAsEventListener(a);a.handles.each(function(c,a){a=b.handles.length-1-a;b.setValue(parseFloat((Object.isArray(b.options.sliderValue)?b.options.sliderValue[a]:b.options.sliderValue)||b.range.start),a);c.makePositioned().observe(e,b.eventMouseDown)});a.track.observe(e,a.eventMouseDown);document.observe("mouseup",a.eventMouseUp);$(a.track.parentNode.parentNode).observe("mousemove",a.eventMouseMove);a.initialized=true},dispose:function(){var b="mousedown",a=this,c=a;Event.stopObserving(a.track,b,a.eventMouseDown);Event.stopObserving(document,"mouseup",a.eventMouseUp);Event.stopObserving(a.track.parentNode.parentNode,"mousemove",a.eventMouseMove);a.handles.each(function(a){Event.stopObserving(a,b,c.eventMouseDown)})},setDisabled:function(){this.disabled=true;this.track.parentNode.className=this.track.parentNode.className+" disabled"},setEnabled:function(){this.disabled=false},getNearestValue:function(b){var a=this;if(a.allowedValues){if(b>=a.allowedValues.max())return a.allowedValues.max();if(b<=a.allowedValues.min())return a.allowedValues.min();var d=Math.abs(a.allowedValues[0]-b),c=a.allowedValues[0];a.allowedValues.each(function(e){var a=Math.abs(e-b);if(a<=d){c=e;d=a}});return c}return b>a.range.end?a.range.end:b<a.range.start?a.range.start:b},setValue:function(c,b){var a=this;if(!a.active){a.activeHandleIdx=b||0;a.activeHandle=a.handles[a.activeHandleIdx];a.updateStyles()}b=b||a.activeHandleIdx||0;if(a.initialized&&a.restricted){if(b>0&&c<a.values[b-1])c=a.values[b-1];if(b<a.handles.length-1&&c>a.values[b+1])c=a.values[b+1]}c=a.getNearestValue(c);a.values[b]=c;a.value=a.values[0];a.handles[b].style[a.isVertical()?"top":"left"]=a.translateToPx(c);a.drawSpans();(!a.dragging||!a.event)&&a.updateFinished()},setValueBy:function(c,b){var a=this;a.setValue(a.values[b||a.activeHandleIdx||0]+c,b||a.activeHandleIdx||0)},translateToPx:function(b){var a=this;return Math.round((a.trackLength-a.handleLength)/(a.range.end-a.range.start)*(b-a.range.start))+"px"},translateToValue:function(b){var a=this;return b/(a.trackLength-a.handleLength)*(a.range.end-a.range.start)+a.range.start},getRange:function(a){var b=this.values.sortBy(Prototype.K);a=a||0;return $R(b[a],b[a+1])},minimumOffset:function(){return this.isVertical()?this.alignY:this.alignX},maximumOffset:function(){var a=this;return a.isVertical()?(a.track.offsetHeight!=0?a.track.offsetHeight:a.track.style.height.replace(/px$/,""))-a.alignY:(a.track.offsetWidth!=0?a.track.offsetWidth:a.track.style.width.replace(/px$/,""))-a.alignX},isVertical:function(){return this.axis=="vertical"},drawSpans:function(){var a=this,b=a;a.spans&&$R(0,a.spans.length-1).each(function(a){b.setSpan(b.spans[a],b.getRange(a))});a.options.startSpan&&a.setSpan(a.options.startSpan,$R(0,a.values.length>1?a.getRange(0).min():a.value));a.options.endSpan&&a.setSpan(a.options.endSpan,$R(a.values.length>1?a.getRange(a.spans.length-1).max():a.value,a.maximum))},setSpan:function(c,b){var a=this;if(a.isVertical()){c.style.top=a.translateToPx(b.start);c.style.height=a.translateToPx(b.end-b.start+a.range.start)}else{c.style.left=a.translateToPx(b.start);c.style.width=a.translateToPx(b.end-b.start+a.range.start)}},updateStyles:function(){var a="selected";this.handles.each(function(b){Element.removeClassName(b,a)});Element.addClassName(this.activeHandle,a)},startDrag:function(e){var a=this;if(Event.isLeftClick(e)){if(!a.disabled){a.active=true;var b=Event.element(e),d=[Event.pointerX(e),Event.pointerY(e)],f=b;if(f==a.track){var c=Position.cumulativeOffset(a.track);a.event=e;a.setValue(a.translateToValue((a.isVertical()?d[1]-c[1]:d[0]-c[0])-a.handleLength/2));var c=Position.cumulativeOffset(a.activeHandle);a.offsetX=d[0]-c[0];a.offsetY=d[1]-c[1]}else{while(a.handles.indexOf(b)==-1&&b.parentNode)b=b.parentNode;if(a.handles.indexOf(b)!=-1){a.activeHandle=b;a.activeHandleIdx=a.handles.indexOf(a.activeHandle);a.updateStyles();var c=Position.cumulativeOffset(a.activeHandle);a.offsetX=d[0]-c[0];a.offsetY=d[1]-c[1]}}}Event.stop(e)}},update:function(b){var a=this;if(a.active){if(!a.dragging)a.dragging=true;a.draw(b);Prototype.Browser.WebKit&&window.scrollBy(0,0);Event.stop(b)}},draw:function(c){var a=this,b=[Event.pointerX(c),Event.pointerY(c)],d=Position.cumulativeOffset(a.track);b[0]-=a.offsetX+d[0];b[1]-=a.offsetY+d[1];a.event=c;a.setValue(a.translateToValue(a.isVertical()?b[1]:b[0]));if(a.initialized&&a.options.onSlide)a.options.onSlide(a.values.length>1?a.values:a.value,a)},endDrag:function(b){var a=this;if(a.active&&a.dragging){a.finishDrag(b,true);Event.stop(b)}a.active=false;a.dragging=false},finishDrag:function(){this.active=false;this.dragging=false;this.updateFinished()},updateFinished:function(){var a=this;if(a.initialized&&a.options.onChange)a.options.onChange(a.values.length>1?a.values:a.value,a);a.event=null}});
