var Slider=new Class({options:{onChange:Class.empty,onComplete:Class.empty,onTick:function(a){this.moveKnob.setStyle(this.p,a)},start:0,end:100,offset:0,knobheight:20,knobwidth:10,mode:"horizontal",clip_w:0,clip_l:0,isinit:true,snap:false,range:false,numsteps:null},initialize:function(e,a,d,b,h){this.setOptions(b);this.element=$(e);this.knob=$(a);this.previousChange=this.previousEnd=this.step=-1;this.bkg=$(d);if(this.options.steps==null){this.options.steps=this.options.end-this.options.start}if(h!=null){this.maxknob=$(h)}var c,g;switch(this.options.mode){case"horizontal":this.z="x";this.p="left";c={x:"left",y:false};g="offsetWidth";break;case"vertical":this.z="y";this.p="top";c={x:false,y:"top"};g="offsetHeight"}this.max=this.element[g]-this.knob[g]+(this.options.offset*2);this.half=this.knob[g]/2;this.full=this.element[g]-this.knob[g]+(this.options.offset*2);this.min=$chk(this.options.range[0])?this.options.range[0]:0;this.getPos=this.element["get"+this.p.capitalize()].bind(this.element);this.knob.setStyle("position","relative").setStyle(this.p,-this.options.offset);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);if(h!=null){this.maxPreviousChange=-1;this.maxPreviousEnd=-1;this.maxstep=this.options.end;this.maxknob.setStyle("position","relative").setStyle(this.p,+this.max-this.options.offset).setStyle("bottom",this.options.knobheight)}var f={};f[this.z]=[-this.options.offset,this.max-this.options.offset];this.drag=new Drag(this.knob,{limit:f,modifiers:c,snap:0,onStart:function(){this.draggedKnob()}.bind(this),onDrag:function(){this.draggedKnob()}.bind(this),onComplete:function(){this.draggedKnob();this.end()}.bind(this)});if(h!=null){this.maxdrag=new Drag(this.maxknob,{limit:f,modifiers:c,snap:0,onStart:function(){this.draggedKnob(1)}.bind(this),onDrag:function(){this.draggedKnob(1)}.bind(this),onComplete:function(){this.draggedKnob(1);this.end()}.bind(this)})}if(this.options.snap){this.drag.options.grid=(this.full)/this.options.numsteps;this.drag.options.limit[this.z][1]=this.full}if(this.options.initialize){this.options.initialize.call(this)}},setMin:function(a){this.step=a.limit(this.options.start,this.options.end);this.checkStep();this.end();this.moveKnob=this.knob;this.bkg.style.clip="rect(0px "+(parseInt(this.toPosition(this.step))+3)+"px 10px 0px)";this.fireEvent("onTick",this.toPosition(this.step));return this},setMax:function(c){this.maxstep=c.limit(this.options.start,this.options.end);this.checkStep(1);this.end();this.moveKnob=this.maxknob;var a=Math.abs(this.toPosition(this.step)-this.toPosition(this.maxstep))+3;var d=parseInt(this.clip_l+a);this.bkg.style.clip="rect(0px "+d+"px 10px "+this.clip_l+"px)";this.fireEvent("onTick",this.toPosition(this.maxstep));if(this.options.isinit){var f={};var b,e;b=-this.options.offset;e=parseInt(this.maxknob.getStyle("left"))-this.options.offset-4;f[this.z]=[b,e];this.drag.options.limit=f;this.options.isinit=false}return this},clickedElement:function(b){var a=b.page[this.z]-this.getPos()-this.half;a=a.limit(-this.options.offset,this.max-this.options.offset);this.step=this.toStep(a);this.bkg.style.clip="rect(0px "+(parseInt(this.toPosition(this.step))+3)+"px 10px 0px)";this.checkStep();this.end();this.fireEvent("onTick",a)},draggedKnob:function(c){var b={};var a,c;if(c==null){this.step=this.toStep(this.drag.value.now[this.z]);this.checkStep()}else{this.maxstep=this.toStep(this.maxdrag.value.now[this.z]);this.checkStep(1)}},checkStep:function(f){var e={};var c,f;var b={};if(f==null){if(this.previousChange!=this.step){this.previousChange=this.step}}else{if(this.maxPreviousChange!=this.maxstep){this.maxPreviousChange=this.maxstep}}if(this.maxknob!=null){c=-this.options.offset;f=parseInt(this.maxknob.getStyle("left"))-this.options.offset-4;e[this.z]=[c,f];this.drag.options.limit=e;c=parseInt(this.knob.getStyle("left"))-this.options.offset+22;f=this.max-this.options.offset;b[this.z]=[c,f];this.maxdrag.options.limit=b;if(this.step<this.maxstep){this.fireEvent("onChange",{minpos:this.step,maxpos:this.maxstep})}else{this.fireEvent("onChange",{minpos:this.maxstep,maxpos:this.step})}this.clip_l=parseInt(this.knob.getStyle("left"))+10;var a=Math.abs(parseInt(this.knob.getStyle("left"))-parseInt(this.maxknob.getStyle("left")));var d=parseInt(this.clip_l+a);this.bkg.style.clip="rect(0px "+d+"px 10px "+this.clip_l+"px)"}else{this.fireEvent("onChange",this.step);this.bkg.style.clip="rect(0px "+(parseInt(this.drag.value.now[this.z])+3)+"px 10px 0px)"}},end:function(){if(this.previousEnd!==this.step||(this.maxknob!=null&&this.maxPreviousEnd!=this.maxstep)){this.previousEnd=this.step;if(this.maxknob!=null){this.maxPreviousEnd=this.maxstep;if(this.step<this.maxstep){this.fireEvent("onComplete",{minpos:this.step+"",maxpos:this.maxstep+""})}else{this.fireEvent("onComplete",{minpos:this.maxstep+"",maxpos:this.step+""})}}else{this.fireEvent("onComplete",this.step+"")}}},toStep:function(a){return Math.round((a+this.options.offset)/this.max*this.options.steps)+this.options.start},toPosition:function(a){return(this.max*a/this.options.steps)-(this.max*this.options.start/this.options.steps)-this.options.offset}});Slider.implement(new Events);Slider.implement(new Options);
