integration/js/vendor/dragslider.js
changeset 5 16413123bc8c
--- /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