(function(a,b){a.widget("ui.rangeSlider",{options:{bounds:{min:0,max:100},defaultValues:{min:20,max:50},wheelMode:null,wheelSpeed:4,arrows:true,valueHelpers:"show",formatter:null,durationIn:0,durationOut:400,delayOut:200},_values:null,bar:null,leftHandle:null,rightHandle:null,innerBar:null,container:null,arrows:null,helpers:null,changing:{min:false,max:false},changed:{min:false,max:false},lastWheel:0,lastScroll:0,scrollCount:0,_create:function(){this._values=this.options.defaultValues;this.helpers={left:null,right:null,leftDisplayed:true,rightDisplayed:true};this.arrows={left:null,right:null};this.changing={min:false,max:false};this.changed={min:false,max:false};this.leftHandle=a("
").draggable({axis:"x",containment:"parent",drag:a.proxy(this._handleMoved,this),stop:a.proxy(this._handleStop,this),containment:"parent"}).css("position","absolute");this.rightHandle=a("").draggable({axis:"x",containment:"parent",drag:a.proxy(this._handleMoved,this),stop:a.proxy(this._handleStop,this),containment:"parent"}).css("position","absolute");this.innerBar=a("").css("position","absolute").css("top",0).css("left",0);this.container=a("").css("position","absolute");this.bar=a("").draggable({axis:"x",containment:"parent",drag:a.proxy(this._barMoved,this),stop:a.proxy(this._barStop,this),containment:this.container}).css("position","absolute").bind("mousewheel",a.proxy(this._wheelOnBar,this));this.arrows.left=a("").css("position","absolute").css("left",0).bind("mousedown",a.proxy(this._startScrollLeft,this));this.arrows.right=a("").css("position","absolute").css("right",0).bind("mousedown",a.proxy(this._startScrollRight,this));a(document).bind("mouseup",a.proxy(this._stopScroll,this));this.container.append(this.leftHandle).append(this.rightHandle).append(this.innerBar).append(this.bar);this.element.append(this.container).append(this.arrows.left).append(this.arrows.right).addClass("ui-rangeSlider").bind("mousewheel",a.proxy(this._wheelOnContainer,this));if(this.element.css("position")!="absolute"){this.element.css("position","relative")}if(!this.options.arrows){this.arrows.left.css("display","none");this.arrows.right.css("display","none");this.element.addClass("ui-rangeSlider-noArrow")}else{this.element.addClass("ui-rangeSlider-withArrows")}if(this.options.valueHelpers!="hide"){this._createHelpers()}else{this._destroyHelpers()}a(window).resize(a.proxy(this._resize,this));this.option(this.options);setTimeout(a.proxy(this._initWidth,this),1);setTimeout(a.proxy(this._initValues,this),1)},_initWidth:function(){this.container.css("width",this.element.width()-this.container.outerWidth(true)+this.container.width());this.innerBar.css("width",this.container.width()-this.innerBar.outerWidth(true)+this.innerBar.width())},_initValues:function(){this.values(this.options.defaultValues.min,this.options.defaultValues.max)},_setOption:function(c,d){if(c=="defaultValues"){if((typeof d.min!="undefined")&&(typeof d.max!="undefined")&&parseFloat(d.min)===d.min&&parseFloat(d.max)===d.max){this.options.defaultValues=d}}else{if(c=="wheelMode"&&(d=="zoom"||d=="scroll"||d===null)){this.options.wheelMode=d}else{if(c=="wheelSpeed"&&parseFloat(d)!==NaN&&Math.abs(parseFloat(d))<=100){this.options.wheelSpeed=parseFloat(d)}else{if(c=="arrows"&&(d===true||d===false)&&d!=this.options.arrows){if(d){this.element.removeClass("ui-rangeSlider-noArrow").addClass("ui-rangeSlider-withArrows");this.arrows.left.css("display","block");this.arrows.right.css("display","block")}else{this.element.addClass("ui-rangeSlider-noArrow").removeClass("ui-rangeSlider-withArrows");this.arrows.left.css("display","none");this.arrows.right.css("display","none")}this.options.arrows=d;this._initWidth();this._position()}else{if(c=="valueHelpers"&&(d=="hide"||d=="show"||d=="change")){this.options.valueHelpers=d;if(d!="hide"){this._createHelpers()}else{this._destroyHelpers()}}else{if(c=="formatter"&&d!=null&&typeof d=="function"){this.options.formatter=d;this._position()}else{if(c=="bounds"&&(typeof d.min!="undefined")&&(typeof d.max!="undefined")&&parseFloat(d.min)===d.min&&parseFloat(d.max)===d.max&&d.minc){this._switchHandles();var d=e;e=c;c=d}this._privateValues(e,c)},_handleStop:function(c,d){this._position();this._prepareFiringChanged()},_changing:function(e,c){this._trigger("valuesChanging");var d=false;if(e&&!this.changing.min){this._trigger("minValueChanging");this.changing.min=true;d=true}if(c&&!this.changing.max){this._trigger("maxValueChanging");this.changing.max=true;d=true}if(d){this._showHelpers()}},_prepareFiringChanged:function(){this.lastWheel=Math.random();var c=this.lastWheel;setTimeout(a.proxy(function(){this._fireChanged(c)},this),200)},_fireChanged:function(c){if(this.lastWheel==c&&!this.bar.hasClass("ui-draggable-dragging")&&!this.leftHandle.hasClass("ui-draggable-dragging")&&!this.rightHandle.hasClass("ui-draggable-dragging")){var d=false;if(this.changing.min){this.changing.min=false;this._trigger("minValueChanged");d=true}if(this.changing.max){this.changing.max=false;this._trigger("maxValueChanged");d=true}if(d){this._trigger("valuesChanged")}this._hideHelpers()}},_setValuesHandles:function(d,c){this._setValues(d,c);this._positionHandles()},_setValues:function(e,c){var d=this._values;var f=Math.abs(c-e);if(f>=this.options.bounds.max-this.options.bounds.min){this._values.min=this.options.bounds.min;this._values.max=this.options.bounds.max}else{values={min:Math.min(c,e),max:Math.max(e,c)};if(values.minthis.options.bounds.max){values.max=this.options.bounds.max;values.min=values.max-f}}this._values=values}this._changing(d.min!=this._values.min,d.max!=this._values.max);this._prepareFiringChanged()},_resize:function(){this._initWidth();this._position()},_startScrollLeft:function(c,d){this.lastScroll=Math.random();this.scrollCount=0;this._continueScrollingRight(-1,this.lastScroll)},_startScrollRight:function(c,d){this.lastScroll=Math.random();this.scrollCount=0;this._continueScrollingRight(1,this.lastScroll)},_continueScrollingRight:function(e,d){if(d==this.lastScroll){var c=Math.min(Math.floor(this.scrollCount/5)+1,4)/4;this.scrollRight(e*c);this.scrollCount++;setTimeout(a.proxy(function(){this._continueScrollingRight(e,d)},this),50)}},_stopScroll:function(c,d){this.lastScroll=Math.random()},_wheelOnBar:function(e,f,d,c){if(this.options.wheelMode=="zoom"){this.zoomIn(-c);return false}},_wheelOnContainer:function(e,f,d,c){if(this.options.wheelMode=="scroll"){this.scrollRight(-c);return false}},_createHelper:function(d,c){if(d==null){d=a("").addClass(c).css("position","absolute");a("body").append(d);this._positionHelpers(0,0)}return d},_destroyHelper:function(c){if(c!=null){c.remove();c=null}return c},_createHelpers:function(){this.helpers.left=this._createHelper(this.helpers.left,"ui-rangeSlider-leftHelper");this.helpers.right=this._createHelper(this.helpers.right,"ui-rangeSlider-rightHelper");if(this.options.valueHelpers=="change"){this.helpers.left.css("display","none");this.helpers.right.css("display","none");this.helpers.leftDisplayed=false;this.helpers.rightDisplayed=false}else{this.helpers.leftDisplayed=true;this.helpers.rightDisplayed=true;this.helpers.left.css("display","block");this.helpers.right.css("display","block");this._position()}},_destroyHelpers:function(){this.helpers.left=this._destroyHelper(this.helpers.left);this.helpers.right=this._destroyHelper(this.helpers.right)},_positionHelper:function(d,c,e){d.css("left",c).css("top",this.leftHandle.offset().top-d.outerHeight(true))},_positionHelpers:function(){if(this.helpers.left!=null&&this.helpers.right!=null){this.helpers.left.text(this._format(this._values.min));this.helpers.right.text(this._format(this._values.max));var g=this.helpers.leftDisplayed?this.helpers.left.outerWidth(true):0;var i=this.helpers.rightDisplayed?this.helpers.right.outerWidth(true):0;var e=0;var h=a(window).width()-i;var c=Math.max(e,this.leftHandle.offset().left+this.leftHandle.outerWidth(true)/2-g/2);var d=Math.min(h,this.rightHandle.offset().left+this.rightHandle.outerWidth(true)/2-i/2);if(c+g>=d){var f=c+g-d;c=Math.max(e,c-f/2);d=Math.min(h,c+g);c=Math.max(e,d-g)}if(this.helpers.leftDisplayed){this._positionHelper(this.helpers.left,c,this._values.min)}if(this.helpers.rightDisplayed){this._positionHelper(this.helpers.right,d,this._values.max)}}},_format:function(c){if(typeof this.options.formatter!="undefined"&&this.options.formatter!=null){return this.options.formatter(c)}else{return this._defaultFormat(c)}},_defaultFormat:function(c){return Math.round(c)},_showHelpers:function(){if(this.options.valueHelpers=="change"&&!this.privateChange){if(this.changing.min&&!this.helpers.leftDisplayed){this.helpers.left.stop(true,true).fadeIn(this.options.durationIn);this.helpers.leftDisplayed=true}if(this.changing.max&&!this.helpers.rightDisplayed){this.helpers.rightDisplayed=true;this.helpers.right.stop(true,true).fadeIn(this.options.durationIn)}}},_hideHelpers:function(){if(this.options.valueHelpers=="change"&&this.helpers.left!=null&&this.helpers.right!=null){this.helpers.leftDisplayed=false;this.helpers.rightDisplayed=false;this.helpers.left.stop(true,true).delay(this.options.delayOut).fadeOut(this.options.durationOut);this.helpers.right.stop(true,true).delay(this.options.delayOut).fadeOut(this.options.durationOut)}},values:function(d,c){if(typeof d!="undefined"&&typeof c!="undefined"){this.internalChange=false;this._privateValues(d,c);this.internalChange=true}return this._values},min:function(c){return this.values(c,this._values.max).min},max:function(c){return this.values(this._values.min,c).max},zoomIn:function(d){var c=this._values.max-this._values.min;min=this._values.min+d*this.options.wheelSpeed*c/200;max=this._values.max-d*this.options.wheelSpeed*c/200;this._privateValues(min,max)},zoomOut:function(c){this.zoomIn(-c)},scrollLeft:function(c){if(typeof c=="undefined"){c=1}this.scrollRight(-c)},scrollRight:function(d){if(typeof d=="undefined"){d=1}var c=this._values.max-this._values.min;min=this._values.min+d*this.options.wheelSpeed*c/100;max=this._values.max+d*this.options.wheelSpeed*c/100;this._privateValues(min,max)},destroy:function(){this.element.removeClass("ui-rangeSlider-withArrows").removeClass("ui-rangeSlider-noArrow");this.bar.detach();this.leftHandle.detach();this.rightHandle.detach();this.innerBar.detach();this.container.detach();this.arrows.left.detach();this.arrows.right.detach();this.element.removeClass("ui-rangeSlider");this._destroyHelpers();delete this.options;a.Widget.prototype.destroy.apply(this,arguments)}})})(jQuery);