client/player/js/ui.slider.js
author ymh <ymh.work@gmail.com>
Sat, 12 Jun 2010 04:25:05 +0200
changeset 0 cc4a51750724
permissions -rw-r--r--
first commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/*
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * jQuery UI Slider 1.7.2
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 *
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * Dual licensed under the MIT (MIT-LICENSE.txt)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * and GPL (GPL-LICENSE.txt) licenses.
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * http://docs.jquery.com/UI/Slider
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 *
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 * Depends:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 *	ui.core.js
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 */
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
(function($) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
$.widget("ui.slider", $.extend({}, $.ui.mouse, {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	_init: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
		var self = this, o = this.options;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
		this._keySliding = false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
		this._handleIndex = null;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
		this._detectOrientation();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
		this._mouseInit();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
		this.element
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
			.addClass("ui-slider"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
				+ " ui-slider-" + this.orientation
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
				+ " ui-widget"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
				+ " ui-widget-content"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
				+ " ui-corner-all");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		this.range = $([]);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		if (o.range) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
			if (o.range === true) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
				this.range = $('<div></div>');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
				if (!o.values) o.values = [this._valueMin(), this._valueMin()];
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
				if (o.values.length && o.values.length != 2) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
					o.values = [o.values[0], o.values[0]];
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
			} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
				this.range = $('<div></div>');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
			this.range
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
				.appendTo(this.element)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
				.addClass("ui-slider-range");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
			if (o.range == "min" || o.range == "max") {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
				this.range.addClass("ui-slider-range-" + o.range);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
			// note: this isn't the most fittingly semantic framework class for this element,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
			// but worked best visually with a variety of themes
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
			this.range.addClass("ui-widget-header");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		if ($(".ui-slider-handle", this.element).length == 0)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			$('<a href="#"></a>')
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
				.appendTo(this.element)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
				.addClass("ui-slider-handle");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
		if (o.values && o.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
			while ($(".ui-slider-handle", this.element).length < o.values.length)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
				$('<a href="#"></a>')
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
					.appendTo(this.element)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
					.addClass("ui-slider-handle");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		this.handles = $(".ui-slider-handle", this.element)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
			.addClass("ui-state-default"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
				+ " ui-corner-all");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
		this.handle = this.handles.eq(0);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		this.handles.add(this.range).filter("a")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			.click(function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
				event.preventDefault();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
			})
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
			.hover(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
				if (!o.disabled) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
					$(this).addClass('ui-state-hover');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
			}, function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
				$(this).removeClass('ui-state-hover');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
			})
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
			.focus(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
				if (!o.disabled) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
					$(".ui-slider .ui-state-focus").removeClass('ui-state-focus'); $(this).addClass('ui-state-focus');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
				} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
					$(this).blur();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
			})
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			.blur(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
				$(this).removeClass('ui-state-focus');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
		this.handles.each(function(i) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
			$(this).data("index.ui-slider-handle", i);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
		});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
		this.handles.keydown(function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			var ret = true;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
			var index = $(this).data("index.ui-slider-handle");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
			if (self.options.disabled)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
				return;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
			switch (event.keyCode) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				case $.ui.keyCode.HOME:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
				case $.ui.keyCode.END:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
				case $.ui.keyCode.UP:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
				case $.ui.keyCode.RIGHT:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
				case $.ui.keyCode.DOWN:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
				case $.ui.keyCode.LEFT:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
					ret = false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
					if (!self._keySliding) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
						self._keySliding = true;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
						$(this).addClass("ui-state-active");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
						self._start(event, index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
					}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
					break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
			var curVal, newVal, step = self._step();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
			if (self.options.values && self.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
				curVal = newVal = self.values(index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
			} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
				curVal = newVal = self.value();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
			switch (event.keyCode) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
				case $.ui.keyCode.HOME:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
					newVal = self._valueMin();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
					break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
				case $.ui.keyCode.END:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
					newVal = self._valueMax();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
					break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
				case $.ui.keyCode.UP:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
				case $.ui.keyCode.RIGHT:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
					if(curVal == self._valueMax()) return;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
					newVal = curVal + step;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
					break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
				case $.ui.keyCode.DOWN:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
				case $.ui.keyCode.LEFT:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
					if(curVal == self._valueMin()) return;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
					newVal = curVal - step;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
					break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
			self._slide(event, index, newVal);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
			return ret;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
		}).keyup(function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
			var index = $(this).data("index.ui-slider-handle");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
			if (self._keySliding) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
				self._stop(event, index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
				self._change(event, index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
				self._keySliding = false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
				$(this).removeClass("ui-state-active");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
		});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
		this._refreshValue();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
	destroy: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
		this.handles.remove();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		this.range.remove();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
		this.element
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
			.removeClass("ui-slider"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
				+ " ui-slider-horizontal"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
				+ " ui-slider-vertical"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
				+ " ui-slider-disabled"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
				+ " ui-widget"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
				+ " ui-widget-content"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
				+ " ui-corner-all")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
			.removeData("slider")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
			.unbind(".slider");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
		this._mouseDestroy();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
	_mouseCapture: function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
		var o = this.options;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
		if (o.disabled)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
			return false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
		this.elementSize = {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
			width: this.element.outerWidth(),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
			height: this.element.outerHeight()
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
		};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
		this.elementOffset = this.element.offset();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
		var position = { x: event.pageX, y: event.pageY };
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
		var normValue = this._normValueFromMouse(position);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
		var distance = this._valueMax() - this._valueMin() + 1, closestHandle;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
		var self = this, index;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
		this.handles.each(function(i) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
			var thisDistance = Math.abs(normValue - self.values(i));
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
			if (distance > thisDistance) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
				distance = thisDistance;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
				closestHandle = $(this);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
				index = i;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		// workaround for bug #3736 (if both handles of a range are at 0,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
		// the first is always used as the one with least distance,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
		// and moving it is obviously prevented by preventing negative ranges)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
		if(o.range == true && this.values(1) == o.min) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
			closestHandle = $(this.handles[++index]);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
		this._start(event, index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
		self._handleIndex = index;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
		closestHandle
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
			.addClass("ui-state-active")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
			.focus();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
		
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
		var offset = closestHandle.offset();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
		var mouseOverHandle = !$(event.target).parents().andSelf().is('.ui-slider-handle');
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
			left: event.pageX - offset.left - (closestHandle.width() / 2),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
			top: event.pageY - offset.top
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
				- (closestHandle.height() / 2)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
				- (parseInt(closestHandle.css('borderTopWidth'),10) || 0)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
				- (parseInt(closestHandle.css('borderBottomWidth'),10) || 0)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
				+ (parseInt(closestHandle.css('marginTop'),10) || 0)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
		};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
		normValue = this._normValueFromMouse(position);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
		this._slide(event, index, normValue);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
		return true;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
	_mouseStart: function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
		return true;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
	_mouseDrag: function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
		var position = { x: event.pageX, y: event.pageY };
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
		var normValue = this._normValueFromMouse(position);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
		
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
		this._slide(event, this._handleIndex, normValue);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
		return false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
	_mouseStop: function(event) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
		this.handles.removeClass("ui-state-active");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
		this._stop(event, this._handleIndex);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
		this._change(event, this._handleIndex);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
		this._handleIndex = null;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
		this._clickOffset = null;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
		return false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
	
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
	_detectOrientation: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
		this.orientation = this.options.orientation == 'vertical' ? 'vertical' : 'horizontal';
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
	_normValueFromMouse: function(position) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
		var pixelTotal, pixelMouse;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
		if ('horizontal' == this.orientation) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
			pixelTotal = this.elementSize.width;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
			pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
		} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
			pixelTotal = this.elementSize.height;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
			pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
		var percentMouse = (pixelMouse / pixelTotal);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
		if (percentMouse > 1) percentMouse = 1;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
		if (percentMouse < 0) percentMouse = 0;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
		if ('vertical' == this.orientation)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
			percentMouse = 1 - percentMouse;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
		var valueTotal = this._valueMax() - this._valueMin(),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
			valueMouse = percentMouse * valueTotal,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
			valueMouseModStep = valueMouse % this.options.step,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
			normValue = this._valueMin() + valueMouse - valueMouseModStep;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
		if (valueMouseModStep > (this.options.step / 2))
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
			normValue += this.options.step;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
		// Since JavaScript has problems with large floats, round
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
		// the final value to 5 digits after the decimal point (see #4124)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
		return parseFloat(normValue.toFixed(5));
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
	_start: function(event, index) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
		var uiHash = {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
			handle: this.handles[index],
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
			value: this.value()
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
		};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
		if (this.options.values && this.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
			uiHash.value = this.values(index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
			uiHash.values = this.values();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
		this._trigger("start", event, uiHash);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
	_slide: function(event, index, newVal) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
		var handle = this.handles[index];
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
		if (this.options.values && this.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
			var otherVal = this.values(index ? 0 : 1);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
			if ((this.options.values.length == 2 && this.options.range === true) && 
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
				((index == 0 && newVal > otherVal) || (index == 1 && newVal < otherVal))){
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
 				newVal = otherVal;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
			if (newVal != this.values(index)) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
				var newValues = this.values();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
				newValues[index] = newVal;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
				// A slide can be canceled by returning false from the slide callback
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
				var allowed = this._trigger("slide", event, {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
					handle: this.handles[index],
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
					value: newVal,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
					values: newValues
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
				});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
				var otherVal = this.values(index ? 0 : 1);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
				if (allowed !== false) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
					this.values(index, newVal, ( event.type == 'mousedown' && this.options.animate ), true);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
		} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
			if (newVal != this.value()) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
				// A slide can be canceled by returning false from the slide callback
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
				var allowed = this._trigger("slide", event, {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
					handle: this.handles[index],
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
					value: newVal
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
				});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
				if (allowed !== false) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
					this._setData('value', newVal, ( event.type == 'mousedown' && this.options.animate ));
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
					
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
	_stop: function(event, index) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
		var uiHash = {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
			handle: this.handles[index],
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
			value: this.value()
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
		};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
		if (this.options.values && this.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
			uiHash.value = this.values(index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
			uiHash.values = this.values();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
		this._trigger("stop", event, uiHash);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
	_change: function(event, index) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
		var uiHash = {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
			handle: this.handles[index],
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
			value: this.value()
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
		};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
		if (this.options.values && this.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
			uiHash.value = this.values(index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
			uiHash.values = this.values();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
		this._trigger("change", event, uiHash);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
	value: function(newValue) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
		if (arguments.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
			this._setData("value", newValue);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
			this._change(null, 0);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
		return this._value();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
	values: function(index, newValue, animated, noPropagation) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
		if (arguments.length > 1) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
			this.options.values[index] = newValue;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
			this._refreshValue(animated);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
			if(!noPropagation) this._change(null, index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
		if (arguments.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
			if (this.options.values && this.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
				return this._values(index);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
			} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
				return this.value();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
		} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
			return this._values();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
	_setData: function(key, value, animated) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
		$.widget.prototype._setData.apply(this, arguments);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
		switch (key) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
			case 'disabled':
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
				if (value) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
					this.handles.filter(".ui-state-focus").blur();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
					this.handles.removeClass("ui-state-hover");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
					this.handles.attr("disabled", "disabled");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
				} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
					this.handles.removeAttr("disabled");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
			case 'orientation':
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
				this._detectOrientation();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
				
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
				this.element
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
					.removeClass("ui-slider-horizontal ui-slider-vertical")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
					.addClass("ui-slider-" + this.orientation);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
				this._refreshValue(animated);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
				break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
			case 'value':
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
				this._refreshValue(animated);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
				break;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
	_step: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
		var step = this.options.step;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
		return step;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
	_value: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
		var val = this.options.value;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
		if (val < this._valueMin()) val = this._valueMin();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
		if (val > this._valueMax()) val = this._valueMax();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
		return val;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
	_values: function(index) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
		if (arguments.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
			var val = this.options.values[index];
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
			if (val < this._valueMin()) val = this._valueMin();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
			if (val > this._valueMax()) val = this._valueMax();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
			return val;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
		} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
			return this.options.values;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
	_valueMin: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
		var valueMin = this.options.min;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
		return valueMin;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
	_valueMax: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
		var valueMax = this.options.max;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
		return valueMax;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
	},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
	_refreshValue: function(animate) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
		var oRange = this.options.range, o = this.options, self = this;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
		if (this.options.values && this.options.values.length) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
			var vp0, vp1;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
			this.handles.each(function(i, j) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
				var valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
				var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
				$(this).stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
				if (self.options.range === true) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
					if (self.orientation == 'horizontal') {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ left: valPercent + '%' }, o.animate);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
						(i == 1) && self.range[animate ? 'animate' : 'css']({ width: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
					} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ bottom: (valPercent) + '%' }, o.animate);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
						(i == 1) && self.range[animate ? 'animate' : 'css']({ height: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
					}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
				lastValPercent = valPercent;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
			});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
		} else {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
			var value = this.value(),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
				valueMin = this._valueMin(),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
				valueMax = this._valueMax(),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
				valPercent = valueMax != valueMin
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
					? (value - valueMin) / (valueMax - valueMin) * 100
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
					: 0;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
			var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
			this.handle.stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
			(oRange == "min") && (this.orientation == "horizontal") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ width: valPercent + '%' }, o.animate);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
			(oRange == "max") && (this.orientation == "horizontal") && this.range[animate ? 'animate' : 'css']({ width: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
			(oRange == "min") && (this.orientation == "vertical") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ height: valPercent + '%' }, o.animate);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
			(oRange == "max") && (this.orientation == "vertical") && this.range[animate ? 'animate' : 'css']({ height: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
	}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
	
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
}));
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
$.extend($.ui.slider, {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
	getter: "value values",
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
	version: "1.7.2",
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
	eventPrefix: "slide",
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
	defaults: {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
		animate: false,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
		delay: 0,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
		distance: 0,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
		max: 100,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
		min: 0,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
		orientation: 'horizontal',
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
		range: false,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
		step: 1,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
		value: 0,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
		values: null
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
	}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
})(jQuery);