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,mode:"horizontal"},initialize:function(j,i,h,c){var g="relative",f="position",a=this;a.element=$(j);a.knob=$(i);a.setOptions(h);a.previousChange=-1;a.previousEnd=-1;a.step=-1;a.options.steps=a.options.end-a.options.start;if(c!=null)a.maxknob=$(c);else a.element.addEvent("mousedown",a.clickedElement.bindWithEvent(a));var d,b;switch(a.options.mode){case "horizontal":a.z="x";a.p="left";d={x:"left",y:false};b="offsetWidth";break;case "vertical":a.z="y";a.p="top";d={x:false,y:"top"};b="offsetHeight"}a.max=a.element[b]-a.knob[b]+a.options.offset*2;a.half=a.knob[b]/2;a.getPos=a.element["get"+a.p.capitalize()].bind(a.element);a.knob.setStyle(f,g).setStyle(a.p,-a.options.offset);if(c!=null){a.maxPreviousChange=-1;a.maxPreviousEnd=-1;a.maxstep=a.options.end;a.maxknob.setStyle(f,g).setStyle(a.p,+a.max-a.options.offset).setStyle("bottom",a.options.knobheight)}var e={};e[a.z]=[-a.options.offset,a.max-a.options.offset];a.drag=new Drag.Base(a.knob,{limit:e,modifiers:d,snap:0,onStart:function(){this.draggedKnob()}.bind(a),onDrag:function(){this.draggedKnob()}.bind(a),onComplete:function(){this.draggedKnob();this.end()}.bind(a)});if(c!=null)a.maxdrag=new Drag.Base(a.maxknob,{limit:e,modifiers:d,snap:0,onStart:function(){this.draggedKnob(1)}.bind(a),onDrag:function(){this.draggedKnob(1)}.bind(a),onComplete:function(){this.draggedKnob(1);this.end()}.bind(a)});a.options.initialize&&a.options.initialize.call(a)},setMin:function(b){var a=this;a.step=b.limit(a.options.start,a.options.end);a.checkStep();a.end();a.moveKnob=a.knob;a.fireEvent("onTick",a.toPosition(a.step));return a},setMax:function(b){var a=this;a.maxstep=b.limit(a.options.start,a.options.end);a.checkStep(1);a.end();a.moveKnob=a.maxknob;a.fireEvent("onTick",a.toPosition(a.maxstep));return a},clickedElement:function(c){var a=this,b=c.page[a.z]-a.getPos()-a.half;b=b.limit(-a.options.offset,a.max-a.options.offset);a.step=a.toStep(b);a.checkStep();a.end();a.fireEvent("onTick",b);a.drag.start(c)},draggedKnob:function(b){var a=this;if(b==null){a.step=a.toStep(a.drag.value.now[a.z]);a.checkStep()}else{a.maxstep=a.toStep(a.maxdrag.value.now[a.z]);a.checkStep(1)}},checkStep:function(c){var b="onChange",a=this;if(c==null){if(a.previousChange!=a.step)a.previousChange=a.step}else if(a.maxPreviousChange!=a.maxstep)a.maxPreviousChange=a.maxstep;if(a.maxknob!=null)if(a.step<a.maxstep)a.fireEvent(b,{minpos:a.step,maxpos:a.maxstep});else a.fireEvent(b,{minpos:a.maxstep,maxpos:a.step});else a.fireEvent(b,a.step)},end:function(){var b="onComplete",a=this;if(a.previousEnd!==a.step||a.maxknob!=null&&a.maxPreviousEnd!=a.maxstep){a.previousEnd=a.step;if(a.maxknob!=null){a.maxPreviousEnd=a.maxstep;if(a.step<a.maxstep)a.fireEvent(b,{minpos:a.step+"",maxpos:a.maxstep+""});else a.fireEvent(b,{minpos:a.maxstep+"",maxpos:a.step+""})}else a.fireEvent(b,a.step+"")}},toStep:function(b){var a=this;return Math.round((b+a.options.offset)/a.max*a.options.steps)+a.options.start},toPosition:function(b){var a=this;return a.max*b/a.options.steps-a.max*a.options.start/a.options.steps-a.options.offset}});Slider.implement(new Events);Slider.implement(new Options);
