6 if(window['webforms']) {
\r
7 $(document).ready(function() {
\r
9 $("input").each(function() {
\r
10 if(this.getAttribute("type") == "range") {
\r
12 var slider = $("<div class='ui-slider'></div>").css({ width: cur.innerWidth()+"px", height: cur.innerHeight()+"px" }).insertAfter(cur);
\r
13 var handle = $("<div class='ui-slider-handle'></div>").appendTo(slider);
\r
17 "position": cur.css("position") == "absolute" ? "absolute" : "relative",
\r
18 "left": cur.css("left"),
\r
19 "right": cur.css("right"),
\r
20 "zIndex": cur.css("zIndex"),
\r
21 "float": cur.css("float"),
\r
22 "clear": cur.css("clear")
\r
24 cur.css({ position: "absolute", opacity: 0, top: "-1000px", left: "-1000px" });
\r
27 maxValue: cur.attr("max"),
\r
28 minValue: cur.attr("min"),
\r
29 startValue: this.getAttribute("value"),
\r
30 stepping: cur.attr("step"),
\r
31 change: function(e, ui) { cur[0].value = ui.value; cur[0].setAttribute("value", ui.value); },
\r
34 slider = slider.sliderInstance();
\r
36 cur.bind("keydown", function(e) {
\r
37 var o = slider.interaction.options;
\r
40 slider.moveTo(slider.interaction.curValue+o.minValue-(o.stepping || 1));
\r
43 slider.moveTo(slider.interaction.curValue+o.minValue+(o.stepping || 1));
\r
46 if(e.keyCode != 9) return false;
\r
55 //Make nodes selectable by expression
\r
56 $.extend($.expr[':'], { slider: "(' '+a.className+' ').indexOf(' ui-slider ')" });
\r
58 $.fn.slider = function(o) {
\r
59 return this.each(function() {
\r
60 new $.ui.slider(this, o);
\r
64 //Macros for external methods that support chaining
\r
65 var methods = "destroy,enable,disable,moveTo".split(",");
\r
66 for(var i=0;i<methods.length;i++) {
\r
67 var cur = methods[i], f;
\r
68 eval('f = function() { var a = arguments; return this.each(function() { if(jQuery(this).is(".ui-slider")) jQuery.data(this, "ui-slider")["'+cur+'"](a); }); }');
\r
69 $.fn["slider"+cur.substr(0,1).toUpperCase()+cur.substr(1)] = f;
\r
72 //get instance method
\r
73 $.fn.sliderInstance = function() {
\r
74 if($(this[0]).is(".ui-slider")) return $.data(this[0], "ui-slider");
\r
78 $.ui.slider = function(el, o) {
\r
82 $.extend(options, o);
\r
84 axis: o.axis || (el.offsetWidth < el.offsetHeight ? 'vertical' : 'horizontal'),
\r
85 maxValue: parseInt(o.maxValue) || 100,
\r
86 minValue: parseInt(o.minValue) || 0,
\r
87 startValue: parseInt(o.startValue) || 0,
\r
88 _start: function(h, p, c, t, e) {
\r
89 self.start.apply(t, [self, e]); // Trigger the start callback
\r
91 _beforeStop: function(h, p, c, t, e) {
\r
92 self.stop.apply(t, [self, e]); // Trigger the start callback
\r
94 _drag: function(h, p, c, t, e) {
\r
95 self.drag.apply(t, [self, e]); // Trigger the start callback
\r
97 startCondition: function() {
\r
98 return !self.disabled;
\r
104 $.data(el, "ui-slider", this);
\r
105 o.stepping = parseInt(o.stepping) || (o.steps ? o.maxValue/o.steps : 0);
\r
106 o.realValue = (o.maxValue - o.minValue);
\r
109 this.handle = options.handle ? $(options.handle, el) : $('.ui-slider-handle', el);
\r
110 if(this.handle.length == 1) {
\r
111 this.interaction = new $.ui.mouseInteraction(this.handle[0], options);
\r
112 this.multipleHandles = false;
\r
114 this.interactions = [];
\r
115 this.handle.each(function() {
\r
116 self.interactions.push(new $.ui.mouseInteraction(this, options));
\r
118 this.multipleHandles = true;
\r
122 $(this.element).addClass("ui-slider");
\r
125 if(o.axis == 'horizontal') {
\r
126 this.parentSize = $(this.element).outerWidth() - this.handle.outerWidth();
\r
127 this.prop = 'left';
\r
130 if(o.axis == 'vertical') {
\r
131 this.parentSize = $(this.element).outerHeight() - this.handle.outerHeight();
\r
135 if(!this.multipleHandles) {
\r
136 $(el).bind('click', function(e) { self.click.apply(self, [e]); });
\r
137 if(!isNaN(o.startValue)) this.moveTo(o.startValue,options.realValue, null, false);
\r
142 $.extend($.ui.slider.prototype, {
\r
143 currentTarget: null,
\r
145 destroy: function() {
\r
146 $(this.element).removeClass("ui-slider").removeClass("ui-slider-disabled");
\r
147 this.interaction.destroy();
\r
149 enable: function() {
\r
150 $(this.element).removeClass("ui-slider-disabled");
\r
151 this.disabled = false;
\r
153 disable: function() {
\r
154 $(this.element).addClass("ui-slider-disabled");
\r
155 this.disabled = true;
\r
157 nonvalidRange: function(self) {
\r
159 for(var i=0;i<this.interactions.length;i++) {
\r
160 if(self == this.interactions[i]) {
\r
161 if(this.interactions[i-1]) {
\r
162 if(this.interactions[i-1].curValue > this.interactions[i].curValue) return this.interactions[i-1].curValue;
\r
165 if(this.interactions[i+1]) {
\r
166 if(this.interactions[i+1].curValue < this.interactions[i].curValue) return this.interactions[i+1].curValue;
\r
174 prepareCallbackObj: function(self,m) {
\r
177 var func = function() {
\r
179 for(var i=0;i<cur.interactions.length;i++) {
\r
180 retVal.push((cur.interactions[i].curValue || 0)+self.options.minValue);
\r
186 handle: self.helper,
\r
188 value: self.curValue+self.options.minValue,
\r
189 values: this.multipleHandles ? func() : self.curValue+self.options.minValue,
\r
193 click: function(e) {
\r
194 var o = this.interaction.options;
\r
195 var pointer = [e.pageX,e.pageY];
\r
196 var offset = $(this.interaction.element).offsetParent().offset({ border: false });
\r
197 if(this.interaction.element == e.target || this.disabled) return;
\r
199 this.interaction.pickValue = this.interaction.curValue;
\r
200 this.drag.apply(this.interaction, [this, e, [pointer[0]-offset.left-this.handle[0].offsetWidth/2,pointer[1]-offset.top-this.handle[0].offsetHeight/2]]);
\r
202 if(this.interaction.pickValue != this.interaction.curValue)
\r
203 $(this.element).triggerHandler("slidechange", [e, this.prepareCallbackObj(this.interaction)], o.change);
\r
206 start: function(that, e) {
\r
208 var o = this.options;
\r
209 $(that.element).triggerHandler("slidestart", [e, that.prepareCallbackObj(this)], o.start);
\r
210 this.pickValue = this.curValue;
\r
215 stop: function(that, e) {
\r
217 var o = this.options;
\r
218 $(that.element).triggerHandler("slidestop", [e, that.prepareCallbackObj(this)], o.stop);
\r
219 if(this.pickValue != this.curValue) $(that.element).triggerHandler("slidechange", [e, that.prepareCallbackObj(this)], o.change);
\r
224 drag: function(that, e, pos) {
\r
226 var o = this.options;
\r
227 this.pos = pos || [this.pos[0]-this.element.offsetWidth/2, this.pos[1]-this.element.offsetHeight/2];
\r
229 if(o.axis == 'horizontal') var m = this.pos[0];
\r
230 if(o.axis == 'vertical') var m = this.pos[1];
\r
233 var p = that.parentSize;
\r
234 var prop = that.prop;
\r
239 this.curValue = (Math.round((m/p)*o.realValue));
\r
241 this.curValue = Math.round(this.curValue/o.stepping)*o.stepping;
\r
242 m = ((this.curValue)/o.realValue) * p;
\r
245 if(that.interactions) {
\r
246 nonvalidRange = that.nonvalidRange(this);
\r
247 if(nonvalidRange) {
\r
248 this.curValue = nonvalidRange;
\r
249 m = ((this.curValue)/o.realValue) * p;
\r
253 $(this.element).css(prop, m+'px');
\r
254 $(that.element).triggerHandler("slide", [e, that.prepareCallbackObj(this,m)], o.slide);
\r
258 moveTo: function(value,scale,changeslide,p) { // renamed from goto to moveTo as goto is reserved javascript word
\r
260 if(this.multipleHandles) return false; //TODO: Multiple handle moveTo function
\r
262 var o = this.interaction.options;
\r
263 var offset = $(this.interaction.element).offsetParent().offset({ border: false });
\r
264 this.interaction.pickValue = this.interaction.curValue;
\r
265 value = value-o.minValue;
\r
267 var modifier = scale || o.realValue;
\r
269 var p = this.parentSize;
\r
270 var prop = this.prop;
\r
272 m = Math.round(((value)/modifier) * p);
\r
277 this.interaction.curValue = (Math.round((m/p)*o.realValue));
\r
279 this.interaction.curValue = Math.round(this.interaction.curValue/o.stepping)*o.stepping;
\r
280 m = ((this.interaction.curValue)/o.realValue) * p;
\r
283 $(this.interaction.element).css(prop, m+'px');
\r
285 if(!changeslide && this.interaction.pickValue != this.interaction.curValue && !p)
\r
286 $(this.element).triggerHandler("slidechange", [e, this.prepareCallbackObj(this.interaction)], o.change);
\r
289 $(this.element).triggerHandler("slide", [e, this.prepareCallbackObj(this.interaction)], o.slide);
\r