diff -r b00fdbef41d4 -r 16413123bc8c integration/js/vendor/dragslider.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/integration/js/vendor/dragslider.js Wed Oct 10 15:16:59 2012 +0200 @@ -0,0 +1,104 @@ +//this code solves this problem: http://stackoverflow.com/questions/5955343/ + +(function( $, undefined ) { + +$.widget("ui.dragslider", $.ui.slider, { + + options: $.extend({},$.ui.slider.prototype.options,{rangeDrag:false}), + + _create: function() { + $.ui.slider.prototype._create.apply(this,arguments); + this._rangeCapture = false; + }, + + _mouseCapture: function( event ) { + var o = this.options; + + if ( o.disabled ) return false; + + if(event.target == this.range.get(0) && o.rangeDrag == true && o.range == true) { + this._rangeCapture = true; + this._rangeStart = null; + } + else { + this._rangeCapture = false; + } + + $.ui.slider.prototype._mouseCapture.apply(this,arguments); + + if(this._rangeCapture == true) { + this.handles.removeClass("ui-state-active").blur(); + } + + return true; + }, + + _mouseStop: function( event ) { + this._rangeStart = null; + return $.ui.slider.prototype._mouseStop.apply(this,arguments); + }, + + _slide: function( event, index, newVal ) { + if(!this._rangeCapture) { + return $.ui.slider.prototype._slide.apply(this,arguments); + } + + if(this._rangeStart == null) { + this._rangeStart = newVal; + } + + var oldValLeft = this.options.values[0], + oldValRight = this.options.values[1], + slideDist = newVal - this._rangeStart, + newValueLeft = oldValLeft + slideDist, + newValueRight = oldValRight + slideDist, + allowed; + + if ( this.options.values && this.options.values.length ) { + if(newValueRight > this._valueMax() && slideDist > 0) { + slideDist -= (newValueRight-this._valueMax()); + newValueLeft = oldValLeft + slideDist; + newValueRight = oldValRight + slideDist; + } + + if(newValueLeft < this._valueMin()) { + slideDist += (this._valueMin()-newValueLeft); + newValueLeft = oldValLeft + slideDist; + newValueRight = oldValRight + slideDist; + } + + if ( slideDist != 0 ) { + newValues = this.values(); + newValues[ 0 ] = newValueLeft; + newValues[ 1 ] = newValueRight; + + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: slideDist, + values: newValues + } ); + + if ( allowed !== false ) { + this.values( 0, newValueLeft, true ); + this.values( 1, newValueRight, true ); + } + this._rangeStart = newVal; + } + } + + + + }, + + + /* + //only for testing purpose + value: function(input) { + console.log("this is working!"); + $.ui.slider.prototype.value.apply(this,arguments); + } + */ +}); + +})(jQuery); \ No newline at end of file