annotate jquery-ui/development-bundle/ui/jquery-ui-1.8.11.custom.js @ 32:911defd02ff8

working on levelTemplate
author casties
date Wed, 12 Jun 2013 15:06:04 +0200
parents b2e4605f20b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1 /*!
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2 * jQuery UI 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
7 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
8 * http://docs.jquery.com/UI
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
9 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
10 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
12 // prevent duplicate loading
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
13 // this is only a problem because we proxy existing functions
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
14 // and we don't want to double proxy them
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
15 $.ui = $.ui || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
16 if ( $.ui.version ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
17 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
18 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
19
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
20 $.extend( $.ui, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
21 version: "1.8.11",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
22
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
23 keyCode: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
24 ALT: 18,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
25 BACKSPACE: 8,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
26 CAPS_LOCK: 20,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
27 COMMA: 188,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
28 COMMAND: 91,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
29 COMMAND_LEFT: 91, // COMMAND
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
30 COMMAND_RIGHT: 93,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
31 CONTROL: 17,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
32 DELETE: 46,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
33 DOWN: 40,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
34 END: 35,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
35 ENTER: 13,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
36 ESCAPE: 27,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
37 HOME: 36,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
38 INSERT: 45,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
39 LEFT: 37,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
40 MENU: 93, // COMMAND_RIGHT
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
41 NUMPAD_ADD: 107,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
42 NUMPAD_DECIMAL: 110,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
43 NUMPAD_DIVIDE: 111,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
44 NUMPAD_ENTER: 108,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
45 NUMPAD_MULTIPLY: 106,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
46 NUMPAD_SUBTRACT: 109,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
47 PAGE_DOWN: 34,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
48 PAGE_UP: 33,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
49 PERIOD: 190,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
50 RIGHT: 39,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
51 SHIFT: 16,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
52 SPACE: 32,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
53 TAB: 9,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
54 UP: 38,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
55 WINDOWS: 91 // COMMAND
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
56 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
57 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
58
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
59 // plugins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
60 $.fn.extend({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
61 _focus: $.fn.focus,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
62 focus: function( delay, fn ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
63 return typeof delay === "number" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
64 this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
65 var elem = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
66 setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
67 $( elem ).focus();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
68 if ( fn ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
69 fn.call( elem );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
70 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
71 }, delay );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
72 }) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
73 this._focus.apply( this, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
74 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
75
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
76 scrollParent: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
77 var scrollParent;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
78 if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
79 scrollParent = this.parents().filter(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
80 return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
81 }).eq(0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
82 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
83 scrollParent = this.parents().filter(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
84 return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
85 }).eq(0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
86 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
87
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
88 return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
89 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
90
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
91 zIndex: function( zIndex ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
92 if ( zIndex !== undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
93 return this.css( "zIndex", zIndex );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
94 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
95
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
96 if ( this.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
97 var elem = $( this[ 0 ] ), position, value;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
98 while ( elem.length && elem[ 0 ] !== document ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
99 // Ignore z-index if position is set to a value where z-index is ignored by the browser
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
100 // This makes behavior of this function consistent across browsers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
101 // WebKit always returns auto if the element is positioned
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
102 position = elem.css( "position" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
103 if ( position === "absolute" || position === "relative" || position === "fixed" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
104 // IE returns 0 when zIndex is not specified
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
105 // other browsers return a string
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
106 // we ignore the case of nested elements with an explicit value of 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
107 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
108 value = parseInt( elem.css( "zIndex" ), 10 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
109 if ( !isNaN( value ) && value !== 0 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
110 return value;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
111 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
112 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
113 elem = elem.parent();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
114 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
115 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
116
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
117 return 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
118 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
119
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
120 disableSelection: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
121 return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
122 ".ui-disableSelection", function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
123 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
124 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
125 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
126
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
127 enableSelection: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
128 return this.unbind( ".ui-disableSelection" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
129 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
130 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
131
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
132 $.each( [ "Width", "Height" ], function( i, name ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
133 var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
134 type = name.toLowerCase(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
135 orig = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
136 innerWidth: $.fn.innerWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
137 innerHeight: $.fn.innerHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
138 outerWidth: $.fn.outerWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
139 outerHeight: $.fn.outerHeight
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
140 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
141
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
142 function reduce( elem, size, border, margin ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
143 $.each( side, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
144 size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
145 if ( border ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
146 size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
147 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
148 if ( margin ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
149 size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
150 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
151 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
152 return size;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
153 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
154
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
155 $.fn[ "inner" + name ] = function( size ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
156 if ( size === undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
157 return orig[ "inner" + name ].call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
158 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
159
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
160 return this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
161 $( this ).css( type, reduce( this, size ) + "px" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
162 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
163 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
164
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
165 $.fn[ "outer" + name] = function( size, margin ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
166 if ( typeof size !== "number" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
167 return orig[ "outer" + name ].call( this, size );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
168 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
169
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
170 return this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
171 $( this).css( type, reduce( this, size, true, margin ) + "px" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
172 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
173 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
174 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
175
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
176 // selectors
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
177 function visible( element ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
178 return !$( element ).parents().andSelf().filter(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
179 return $.curCSS( this, "visibility" ) === "hidden" ||
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
180 $.expr.filters.hidden( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
181 }).length;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
182 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
183
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
184 $.extend( $.expr[ ":" ], {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
185 data: function( elem, i, match ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
186 return !!$.data( elem, match[ 3 ] );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
187 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
188
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
189 focusable: function( element ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
190 var nodeName = element.nodeName.toLowerCase(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
191 tabIndex = $.attr( element, "tabindex" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
192 if ( "area" === nodeName ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
193 var map = element.parentNode,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
194 mapName = map.name,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
195 img;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
196 if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
197 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
198 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
199 img = $( "img[usemap=#" + mapName + "]" )[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
200 return !!img && visible( img );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
201 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
202 return ( /input|select|textarea|button|object/.test( nodeName )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
203 ? !element.disabled
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
204 : "a" == nodeName
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
205 ? element.href || !isNaN( tabIndex )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
206 : !isNaN( tabIndex ))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
207 // the element and all of its ancestors must be visible
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
208 && visible( element );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
209 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
210
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
211 tabbable: function( element ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
212 var tabIndex = $.attr( element, "tabindex" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
213 return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
214 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
215 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
216
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
217 // support
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
218 $(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
219 var body = document.body,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
220 div = body.appendChild( div = document.createElement( "div" ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
221
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
222 $.extend( div.style, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
223 minHeight: "100px",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
224 height: "auto",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
225 padding: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
226 borderWidth: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
227 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
228
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
229 $.support.minHeight = div.offsetHeight === 100;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
230 $.support.selectstart = "onselectstart" in div;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
231
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
232 // set display to none to avoid a layout bug in IE
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
233 // http://dev.jquery.com/ticket/4014
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
234 body.removeChild( div ).style.display = "none";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
235 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
236
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
237
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
238
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
239
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
240
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
241 // deprecated
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
242 $.extend( $.ui, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
243 // $.ui.plugin is deprecated. Use the proxy pattern instead.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
244 plugin: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
245 add: function( module, option, set ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
246 var proto = $.ui[ module ].prototype;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
247 for ( var i in set ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
248 proto.plugins[ i ] = proto.plugins[ i ] || [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
249 proto.plugins[ i ].push( [ option, set[ i ] ] );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
250 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
251 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
252 call: function( instance, name, args ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
253 var set = instance.plugins[ name ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
254 if ( !set || !instance.element[ 0 ].parentNode ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
255 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
256 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
257
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
258 for ( var i = 0; i < set.length; i++ ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
259 if ( instance.options[ set[ i ][ 0 ] ] ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
260 set[ i ][ 1 ].apply( instance.element, args );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
261 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
262 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
263 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
264 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
265
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
266 // will be deprecated when we switch to jQuery 1.4 - use jQuery.contains()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
267 contains: function( a, b ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
268 return document.compareDocumentPosition ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
269 a.compareDocumentPosition( b ) & 16 :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
270 a !== b && a.contains( b );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
271 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
272
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
273 // only used by resizable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
274 hasScroll: function( el, a ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
275
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
276 //If overflow is hidden, the element might have extra content, but the user wants to hide it
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
277 if ( $( el ).css( "overflow" ) === "hidden") {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
278 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
279 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
280
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
281 var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
282 has = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
283
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
284 if ( el[ scroll ] > 0 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
285 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
286 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
287
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
288 // TODO: determine which cases actually cause this to happen
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
289 // if the element doesn't have the scroll set, see if it's possible to
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
290 // set the scroll
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
291 el[ scroll ] = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
292 has = ( el[ scroll ] > 0 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
293 el[ scroll ] = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
294 return has;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
295 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
296
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
297 // these are odd functions, fix the API or move into individual plugins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
298 isOverAxis: function( x, reference, size ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
299 //Determines when x coordinate is over "b" element axis
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
300 return ( x > reference ) && ( x < ( reference + size ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
301 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
302 isOver: function( y, x, top, left, height, width ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
303 //Determines when x, y coordinates is over "b" element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
304 return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
305 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
306 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
307
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
308 })( jQuery );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
309 /*!
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
310 * jQuery UI Widget 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
311 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
312 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
313 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
314 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
315 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
316 * http://docs.jquery.com/UI/Widget
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
317 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
318 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
319
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
320 // jQuery 1.4+
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
321 if ( $.cleanData ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
322 var _cleanData = $.cleanData;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
323 $.cleanData = function( elems ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
324 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
325 $( elem ).triggerHandler( "remove" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
326 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
327 _cleanData( elems );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
328 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
329 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
330 var _remove = $.fn.remove;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
331 $.fn.remove = function( selector, keepData ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
332 return this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
333 if ( !keepData ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
334 if ( !selector || $.filter( selector, [ this ] ).length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
335 $( "*", this ).add( [ this ] ).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
336 $( this ).triggerHandler( "remove" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
337 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
338 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
339 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
340 return _remove.call( $(this), selector, keepData );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
341 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
342 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
343 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
344
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
345 $.widget = function( name, base, prototype ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
346 var namespace = name.split( "." )[ 0 ],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
347 fullName;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
348 name = name.split( "." )[ 1 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
349 fullName = namespace + "-" + name;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
350
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
351 if ( !prototype ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
352 prototype = base;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
353 base = $.Widget;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
354 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
355
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
356 // create selector for plugin
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
357 $.expr[ ":" ][ fullName ] = function( elem ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
358 return !!$.data( elem, name );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
359 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
360
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
361 $[ namespace ] = $[ namespace ] || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
362 $[ namespace ][ name ] = function( options, element ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
363 // allow instantiation without initializing for simple inheritance
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
364 if ( arguments.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
365 this._createWidget( options, element );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
366 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
367 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
368
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
369 var basePrototype = new base();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
370 // we need to make the options hash a property directly on the new instance
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
371 // otherwise we'll modify the options hash on the prototype that we're
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
372 // inheriting from
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
373 // $.each( basePrototype, function( key, val ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
374 // if ( $.isPlainObject(val) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
375 // basePrototype[ key ] = $.extend( {}, val );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
376 // }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
377 // });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
378 basePrototype.options = $.extend( true, {}, basePrototype.options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
379 $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
380 namespace: namespace,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
381 widgetName: name,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
382 widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
383 widgetBaseClass: fullName
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
384 }, prototype );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
385
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
386 $.widget.bridge( name, $[ namespace ][ name ] );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
387 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
388
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
389 $.widget.bridge = function( name, object ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
390 $.fn[ name ] = function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
391 var isMethodCall = typeof options === "string",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
392 args = Array.prototype.slice.call( arguments, 1 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
393 returnValue = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
394
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
395 // allow multiple hashes to be passed on init
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
396 options = !isMethodCall && args.length ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
397 $.extend.apply( null, [ true, options ].concat(args) ) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
398 options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
399
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
400 // prevent calls to internal methods
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
401 if ( isMethodCall && options.charAt( 0 ) === "_" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
402 return returnValue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
403 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
404
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
405 if ( isMethodCall ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
406 this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
407 var instance = $.data( this, name ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
408 methodValue = instance && $.isFunction( instance[options] ) ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
409 instance[ options ].apply( instance, args ) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
410 instance;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
411 // TODO: add this back in 1.9 and use $.error() (see #5972)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
412 // if ( !instance ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
413 // throw "cannot call methods on " + name + " prior to initialization; " +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
414 // "attempted to call method '" + options + "'";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
415 // }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
416 // if ( !$.isFunction( instance[options] ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
417 // throw "no such method '" + options + "' for " + name + " widget instance";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
418 // }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
419 // var methodValue = instance[ options ].apply( instance, args );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
420 if ( methodValue !== instance && methodValue !== undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
421 returnValue = methodValue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
422 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
423 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
424 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
425 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
426 this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
427 var instance = $.data( this, name );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
428 if ( instance ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
429 instance.option( options || {} )._init();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
430 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
431 $.data( this, name, new object( options, this ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
432 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
433 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
434 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
435
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
436 return returnValue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
437 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
438 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
439
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
440 $.Widget = function( options, element ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
441 // allow instantiation without initializing for simple inheritance
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
442 if ( arguments.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
443 this._createWidget( options, element );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
444 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
445 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
446
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
447 $.Widget.prototype = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
448 widgetName: "widget",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
449 widgetEventPrefix: "",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
450 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
451 disabled: false
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
452 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
453 _createWidget: function( options, element ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
454 // $.widget.bridge stores the plugin instance, but we do it anyway
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
455 // so that it's stored even before the _create function runs
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
456 $.data( element, this.widgetName, this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
457 this.element = $( element );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
458 this.options = $.extend( true, {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
459 this.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
460 this._getCreateOptions(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
461 options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
462
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
463 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
464 this.element.bind( "remove." + this.widgetName, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
465 self.destroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
466 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
467
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
468 this._create();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
469 this._trigger( "create" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
470 this._init();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
471 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
472 _getCreateOptions: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
473 return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
474 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
475 _create: function() {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
476 _init: function() {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
477
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
478 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
479 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
480 .unbind( "." + this.widgetName )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
481 .removeData( this.widgetName );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
482 this.widget()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
483 .unbind( "." + this.widgetName )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
484 .removeAttr( "aria-disabled" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
485 .removeClass(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
486 this.widgetBaseClass + "-disabled " +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
487 "ui-state-disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
488 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
489
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
490 widget: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
491 return this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
492 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
493
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
494 option: function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
495 var options = key;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
496
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
497 if ( arguments.length === 0 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
498 // don't return a reference to the internal hash
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
499 return $.extend( {}, this.options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
500 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
501
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
502 if (typeof key === "string" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
503 if ( value === undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
504 return this.options[ key ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
505 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
506 options = {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
507 options[ key ] = value;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
508 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
509
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
510 this._setOptions( options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
511
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
512 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
513 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
514 _setOptions: function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
515 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
516 $.each( options, function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
517 self._setOption( key, value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
518 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
519
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
520 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
521 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
522 _setOption: function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
523 this.options[ key ] = value;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
524
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
525 if ( key === "disabled" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
526 this.widget()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
527 [ value ? "addClass" : "removeClass"](
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
528 this.widgetBaseClass + "-disabled" + " " +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
529 "ui-state-disabled" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
530 .attr( "aria-disabled", value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
531 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
532
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
533 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
534 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
535
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
536 enable: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
537 return this._setOption( "disabled", false );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
538 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
539 disable: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
540 return this._setOption( "disabled", true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
541 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
542
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
543 _trigger: function( type, event, data ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
544 var callback = this.options[ type ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
545
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
546 event = $.Event( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
547 event.type = ( type === this.widgetEventPrefix ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
548 type :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
549 this.widgetEventPrefix + type ).toLowerCase();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
550 data = data || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
551
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
552 // copy original event properties over to the new event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
553 // this would happen if we could call $.event.fix instead of $.Event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
554 // but we don't have a way to force an event to be fixed multiple times
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
555 if ( event.originalEvent ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
556 for ( var i = $.event.props.length, prop; i; ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
557 prop = $.event.props[ --i ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
558 event[ prop ] = event.originalEvent[ prop ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
559 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
560 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
561
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
562 this.element.trigger( event, data );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
563
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
564 return !( $.isFunction(callback) &&
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
565 callback.call( this.element[0], event, data ) === false ||
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
566 event.isDefaultPrevented() );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
567 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
568 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
569
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
570 })( jQuery );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
571 /*!
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
572 * jQuery UI Mouse 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
573 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
574 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
575 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
576 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
577 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
578 * http://docs.jquery.com/UI/Mouse
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
579 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
580 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
581 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
582 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
583 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
584
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
585 $.widget("ui.mouse", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
586 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
587 cancel: ':input,option',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
588 distance: 1,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
589 delay: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
590 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
591 _mouseInit: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
592 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
593
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
594 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
595 .bind('mousedown.'+this.widgetName, function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
596 return self._mouseDown(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
597 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
598 .bind('click.'+this.widgetName, function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
599 if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
600 $.removeData(event.target, self.widgetName + '.preventClickEvent');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
601 event.stopImmediatePropagation();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
602 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
603 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
604 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
605
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
606 this.started = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
607 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
608
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
609 // TODO: make sure destroying one instance of mouse doesn't mess with
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
610 // other instances of mouse
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
611 _mouseDestroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
612 this.element.unbind('.'+this.widgetName);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
613 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
614
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
615 _mouseDown: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
616 // don't let more than one widget handle mouseStart
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
617 // TODO: figure out why we have to use originalEvent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
618 event.originalEvent = event.originalEvent || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
619 if (event.originalEvent.mouseHandled) { return; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
620
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
621 // we may have missed mouseup (out of window)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
622 (this._mouseStarted && this._mouseUp(event));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
623
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
624 this._mouseDownEvent = event;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
625
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
626 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
627 btnIsLeft = (event.which == 1),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
628 elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
629 if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
630 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
631 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
632
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
633 this.mouseDelayMet = !this.options.delay;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
634 if (!this.mouseDelayMet) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
635 this._mouseDelayTimer = setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
636 self.mouseDelayMet = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
637 }, this.options.delay);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
638 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
639
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
640 if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
641 this._mouseStarted = (this._mouseStart(event) !== false);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
642 if (!this._mouseStarted) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
643 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
644 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
645 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
646 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
647
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
648 // Click event may never have fired (Gecko & Opera)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
649 if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
650 $.removeData(event.target, this.widgetName + '.preventClickEvent');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
651 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
652
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
653 // these delegates are required to keep context
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
654 this._mouseMoveDelegate = function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
655 return self._mouseMove(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
656 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
657 this._mouseUpDelegate = function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
658 return self._mouseUp(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
659 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
660 $(document)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
661 .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
662 .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
663
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
664 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
665 event.originalEvent.mouseHandled = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
666 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
667 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
668
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
669 _mouseMove: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
670 // IE mouseup check - mouseup happened when mouse was out of window
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
671 if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
672 return this._mouseUp(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
673 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
674
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
675 if (this._mouseStarted) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
676 this._mouseDrag(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
677 return event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
678 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
679
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
680 if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
681 this._mouseStarted =
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
682 (this._mouseStart(this._mouseDownEvent, event) !== false);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
683 (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
684 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
685
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
686 return !this._mouseStarted;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
687 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
688
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
689 _mouseUp: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
690 $(document)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
691 .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
692 .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
693
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
694 if (this._mouseStarted) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
695 this._mouseStarted = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
696
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
697 if (event.target == this._mouseDownEvent.target) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
698 $.data(event.target, this.widgetName + '.preventClickEvent', true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
699 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
700
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
701 this._mouseStop(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
702 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
703
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
704 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
705 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
706
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
707 _mouseDistanceMet: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
708 return (Math.max(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
709 Math.abs(this._mouseDownEvent.pageX - event.pageX),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
710 Math.abs(this._mouseDownEvent.pageY - event.pageY)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
711 ) >= this.options.distance
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
712 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
713 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
714
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
715 _mouseDelayMet: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
716 return this.mouseDelayMet;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
717 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
718
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
719 // These are placeholder methods, to be overriden by extending plugin
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
720 _mouseStart: function(event) {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
721 _mouseDrag: function(event) {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
722 _mouseStop: function(event) {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
723 _mouseCapture: function(event) { return true; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
724 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
725
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
726 })(jQuery);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
727 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
728 * jQuery UI Position 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
729 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
730 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
731 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
732 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
733 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
734 * http://docs.jquery.com/UI/Position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
735 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
736 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
737
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
738 $.ui = $.ui || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
739
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
740 var horizontalPositions = /left|center|right/,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
741 verticalPositions = /top|center|bottom/,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
742 center = "center",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
743 _position = $.fn.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
744 _offset = $.fn.offset;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
745
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
746 $.fn.position = function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
747 if ( !options || !options.of ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
748 return _position.apply( this, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
749 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
750
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
751 // make a copy, we don't want to modify arguments
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
752 options = $.extend( {}, options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
753
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
754 var target = $( options.of ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
755 targetElem = target[0],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
756 collision = ( options.collision || "flip" ).split( " " ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
757 offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
758 targetWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
759 targetHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
760 basePosition;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
761
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
762 if ( targetElem.nodeType === 9 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
763 targetWidth = target.width();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
764 targetHeight = target.height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
765 basePosition = { top: 0, left: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
766 // TODO: use $.isWindow() in 1.9
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
767 } else if ( targetElem.setTimeout ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
768 targetWidth = target.width();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
769 targetHeight = target.height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
770 basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
771 } else if ( targetElem.preventDefault ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
772 // force left top to allow flipping
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
773 options.at = "left top";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
774 targetWidth = targetHeight = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
775 basePosition = { top: options.of.pageY, left: options.of.pageX };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
776 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
777 targetWidth = target.outerWidth();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
778 targetHeight = target.outerHeight();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
779 basePosition = target.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
780 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
781
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
782 // force my and at to have valid horizontal and veritcal positions
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
783 // if a value is missing or invalid, it will be converted to center
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
784 $.each( [ "my", "at" ], function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
785 var pos = ( options[this] || "" ).split( " " );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
786 if ( pos.length === 1) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
787 pos = horizontalPositions.test( pos[0] ) ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
788 pos.concat( [center] ) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
789 verticalPositions.test( pos[0] ) ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
790 [ center ].concat( pos ) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
791 [ center, center ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
792 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
793 pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : center;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
794 pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : center;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
795 options[ this ] = pos;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
796 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
797
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
798 // normalize collision option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
799 if ( collision.length === 1 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
800 collision[ 1 ] = collision[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
801 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
802
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
803 // normalize offset option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
804 offset[ 0 ] = parseInt( offset[0], 10 ) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
805 if ( offset.length === 1 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
806 offset[ 1 ] = offset[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
807 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
808 offset[ 1 ] = parseInt( offset[1], 10 ) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
809
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
810 if ( options.at[0] === "right" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
811 basePosition.left += targetWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
812 } else if ( options.at[0] === center ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
813 basePosition.left += targetWidth / 2;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
814 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
815
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
816 if ( options.at[1] === "bottom" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
817 basePosition.top += targetHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
818 } else if ( options.at[1] === center ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
819 basePosition.top += targetHeight / 2;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
820 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
821
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
822 basePosition.left += offset[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
823 basePosition.top += offset[ 1 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
824
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
825 return this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
826 var elem = $( this ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
827 elemWidth = elem.outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
828 elemHeight = elem.outerHeight(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
829 marginLeft = parseInt( $.curCSS( this, "marginLeft", true ) ) || 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
830 marginTop = parseInt( $.curCSS( this, "marginTop", true ) ) || 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
831 collisionWidth = elemWidth + marginLeft +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
832 ( parseInt( $.curCSS( this, "marginRight", true ) ) || 0 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
833 collisionHeight = elemHeight + marginTop +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
834 ( parseInt( $.curCSS( this, "marginBottom", true ) ) || 0 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
835 position = $.extend( {}, basePosition ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
836 collisionPosition;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
837
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
838 if ( options.my[0] === "right" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
839 position.left -= elemWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
840 } else if ( options.my[0] === center ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
841 position.left -= elemWidth / 2;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
842 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
843
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
844 if ( options.my[1] === "bottom" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
845 position.top -= elemHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
846 } else if ( options.my[1] === center ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
847 position.top -= elemHeight / 2;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
848 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
849
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
850 // prevent fractions (see #5280)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
851 position.left = Math.round( position.left );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
852 position.top = Math.round( position.top );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
853
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
854 collisionPosition = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
855 left: position.left - marginLeft,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
856 top: position.top - marginTop
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
857 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
858
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
859 $.each( [ "left", "top" ], function( i, dir ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
860 if ( $.ui.position[ collision[i] ] ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
861 $.ui.position[ collision[i] ][ dir ]( position, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
862 targetWidth: targetWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
863 targetHeight: targetHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
864 elemWidth: elemWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
865 elemHeight: elemHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
866 collisionPosition: collisionPosition,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
867 collisionWidth: collisionWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
868 collisionHeight: collisionHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
869 offset: offset,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
870 my: options.my,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
871 at: options.at
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
872 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
873 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
874 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
875
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
876 if ( $.fn.bgiframe ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
877 elem.bgiframe();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
878 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
879 elem.offset( $.extend( position, { using: options.using } ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
880 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
881 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
882
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
883 $.ui.position = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
884 fit: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
885 left: function( position, data ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
886 var win = $( window ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
887 over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
888 position.left = over > 0 ? position.left - over : Math.max( position.left - data.collisionPosition.left, position.left );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
889 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
890 top: function( position, data ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
891 var win = $( window ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
892 over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
893 position.top = over > 0 ? position.top - over : Math.max( position.top - data.collisionPosition.top, position.top );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
894 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
895 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
896
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
897 flip: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
898 left: function( position, data ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
899 if ( data.at[0] === center ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
900 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
901 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
902 var win = $( window ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
903 over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
904 myOffset = data.my[ 0 ] === "left" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
905 -data.elemWidth :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
906 data.my[ 0 ] === "right" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
907 data.elemWidth :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
908 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
909 atOffset = data.at[ 0 ] === "left" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
910 data.targetWidth :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
911 -data.targetWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
912 offset = -2 * data.offset[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
913 position.left += data.collisionPosition.left < 0 ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
914 myOffset + atOffset + offset :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
915 over > 0 ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
916 myOffset + atOffset + offset :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
917 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
918 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
919 top: function( position, data ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
920 if ( data.at[1] === center ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
921 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
922 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
923 var win = $( window ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
924 over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
925 myOffset = data.my[ 1 ] === "top" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
926 -data.elemHeight :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
927 data.my[ 1 ] === "bottom" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
928 data.elemHeight :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
929 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
930 atOffset = data.at[ 1 ] === "top" ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
931 data.targetHeight :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
932 -data.targetHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
933 offset = -2 * data.offset[ 1 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
934 position.top += data.collisionPosition.top < 0 ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
935 myOffset + atOffset + offset :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
936 over > 0 ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
937 myOffset + atOffset + offset :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
938 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
939 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
940 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
941 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
942
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
943 // offset setter from jQuery 1.4
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
944 if ( !$.offset.setOffset ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
945 $.offset.setOffset = function( elem, options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
946 // set position first, in-case top/left are set even on static elem
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
947 if ( /static/.test( $.curCSS( elem, "position" ) ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
948 elem.style.position = "relative";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
949 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
950 var curElem = $( elem ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
951 curOffset = curElem.offset(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
952 curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
953 curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
954 props = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
955 top: (options.top - curOffset.top) + curTop,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
956 left: (options.left - curOffset.left) + curLeft
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
957 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
958
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
959 if ( 'using' in options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
960 options.using.call( elem, props );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
961 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
962 curElem.css( props );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
963 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
964 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
965
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
966 $.fn.offset = function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
967 var elem = this[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
968 if ( !elem || !elem.ownerDocument ) { return null; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
969 if ( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
970 return this.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
971 $.offset.setOffset( this, options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
972 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
973 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
974 return _offset.call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
975 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
976 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
977
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
978 }( jQuery ));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
979 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
980 * jQuery UI Draggable 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
981 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
982 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
983 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
984 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
985 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
986 * http://docs.jquery.com/UI/Draggables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
987 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
988 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
989 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
990 * jquery.ui.mouse.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
991 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
992 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
993 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
994
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
995 $.widget("ui.draggable", $.ui.mouse, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
996 widgetEventPrefix: "drag",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
997 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
998 addClasses: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
999 appendTo: "parent",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1000 axis: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1001 connectToSortable: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1002 containment: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1003 cursor: "auto",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1004 cursorAt: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1005 grid: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1006 handle: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1007 helper: "original",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1008 iframeFix: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1009 opacity: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1010 refreshPositions: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1011 revert: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1012 revertDuration: 500,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1013 scope: "default",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1014 scroll: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1015 scrollSensitivity: 20,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1016 scrollSpeed: 20,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1017 snap: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1018 snapMode: "both",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1019 snapTolerance: 20,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1020 stack: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1021 zIndex: false
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1022 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1023 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1024
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1025 if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1026 this.element[0].style.position = 'relative';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1027
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1028 (this.options.addClasses && this.element.addClass("ui-draggable"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1029 (this.options.disabled && this.element.addClass("ui-draggable-disabled"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1030
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1031 this._mouseInit();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1032
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1033 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1034
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1035 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1036 if(!this.element.data('draggable')) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1037 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1038 .removeData("draggable")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1039 .unbind(".draggable")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1040 .removeClass("ui-draggable"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1041 + " ui-draggable-dragging"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1042 + " ui-draggable-disabled");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1043 this._mouseDestroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1044
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1045 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1046 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1047
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1048 _mouseCapture: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1049
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1050 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1051
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1052 // among others, prevent a drag on a resizable-handle
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1053 if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1054 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1055
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1056 //Quit if we're not on a valid handle
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1057 this.handle = this._getHandle(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1058 if (!this.handle)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1059 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1060
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1061 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1062
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1063 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1064
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1065 _mouseStart: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1066
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1067 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1068
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1069 //Create and append the visible helper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1070 this.helper = this._createHelper(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1071
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1072 //Cache the helper size
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1073 this._cacheHelperProportions();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1074
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1075 //If ddmanager is used for droppables, set the global draggable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1076 if($.ui.ddmanager)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1077 $.ui.ddmanager.current = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1078
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1079 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1080 * - Position generation -
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1081 * This block generates everything position related - it's the core of draggables.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1082 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1083
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1084 //Cache the margins of the original element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1085 this._cacheMargins();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1086
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1087 //Store the helper's css position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1088 this.cssPosition = this.helper.css("position");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1089 this.scrollParent = this.helper.scrollParent();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1090
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1091 //The element's absolute position on the page minus margins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1092 this.offset = this.positionAbs = this.element.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1093 this.offset = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1094 top: this.offset.top - this.margins.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1095 left: this.offset.left - this.margins.left
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1096 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1097
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1098 $.extend(this.offset, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1099 click: { //Where the click happened, relative to the element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1100 left: event.pageX - this.offset.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1101 top: event.pageY - this.offset.top
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1102 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1103 parent: this._getParentOffset(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1104 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1105 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1106
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1107 //Generate the original position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1108 this.originalPosition = this.position = this._generatePosition(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1109 this.originalPageX = event.pageX;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1110 this.originalPageY = event.pageY;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1111
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1112 //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1113 (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1114
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1115 //Set a containment if given in the options
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1116 if(o.containment)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1117 this._setContainment();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1118
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1119 //Trigger event + callbacks
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1120 if(this._trigger("start", event) === false) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1121 this._clear();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1122 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1123 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1124
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1125 //Recache the helper size
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1126 this._cacheHelperProportions();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1127
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1128 //Prepare the droppable offsets
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1129 if ($.ui.ddmanager && !o.dropBehaviour)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1130 $.ui.ddmanager.prepareOffsets(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1131
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1132 this.helper.addClass("ui-draggable-dragging");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1133 this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1134 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1135 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1136
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1137 _mouseDrag: function(event, noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1138
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1139 //Compute the helpers position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1140 this.position = this._generatePosition(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1141 this.positionAbs = this._convertPositionTo("absolute");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1142
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1143 //Call plugins and callbacks and use the resulting position if something is returned
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1144 if (!noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1145 var ui = this._uiHash();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1146 if(this._trigger('drag', event, ui) === false) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1147 this._mouseUp({});
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1148 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1149 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1150 this.position = ui.position;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1151 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1152
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1153 if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1154 if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1155 if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1156
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1157 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1158 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1159
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1160 _mouseStop: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1161
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1162 //If we are using droppables, inform the manager about the drop
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1163 var dropped = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1164 if ($.ui.ddmanager && !this.options.dropBehaviour)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1165 dropped = $.ui.ddmanager.drop(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1166
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1167 //if a drop comes from outside (a sortable)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1168 if(this.dropped) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1169 dropped = this.dropped;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1170 this.dropped = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1171 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1172
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1173 //if the original element is removed, don't bother to continue if helper is set to "original"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1174 if((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1175 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1176
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1177 if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1178 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1179 $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1180 if(self._trigger("stop", event) !== false) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1181 self._clear();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1182 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1183 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1184 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1185 if(this._trigger("stop", event) !== false) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1186 this._clear();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1187 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1188 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1189
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1190 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1191 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1192
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1193 cancel: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1194
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1195 if(this.helper.is(".ui-draggable-dragging")) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1196 this._mouseUp({});
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1197 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1198 this._clear();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1199 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1200
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1201 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1202
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1203 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1204
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1205 _getHandle: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1206
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1207 var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1208 $(this.options.handle, this.element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1209 .find("*")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1210 .andSelf()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1211 .each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1212 if(this == event.target) handle = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1213 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1214
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1215 return handle;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1216
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1217 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1218
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1219 _createHelper: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1220
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1221 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1222 var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1223
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1224 if(!helper.parents('body').length)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1225 helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1226
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1227 if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1228 helper.css("position", "absolute");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1229
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1230 return helper;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1231
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1232 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1233
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1234 _adjustOffsetFromHelper: function(obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1235 if (typeof obj == 'string') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1236 obj = obj.split(' ');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1237 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1238 if ($.isArray(obj)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1239 obj = {left: +obj[0], top: +obj[1] || 0};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1240 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1241 if ('left' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1242 this.offset.click.left = obj.left + this.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1243 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1244 if ('right' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1245 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1246 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1247 if ('top' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1248 this.offset.click.top = obj.top + this.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1249 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1250 if ('bottom' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1251 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1252 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1253 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1254
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1255 _getParentOffset: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1256
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1257 //Get the offsetParent and cache its position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1258 this.offsetParent = this.helper.offsetParent();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1259 var po = this.offsetParent.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1260
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1261 // This is a special case where we need to modify a offset calculated on start, since the following happened:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1262 // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1263 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1264 // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1265 if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1266 po.left += this.scrollParent.scrollLeft();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1267 po.top += this.scrollParent.scrollTop();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1268 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1269
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1270 if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1271 || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1272 po = { top: 0, left: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1273
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1274 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1275 top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1276 left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1277 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1278
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1279 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1280
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1281 _getRelativeOffset: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1282
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1283 if(this.cssPosition == "relative") {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1284 var p = this.element.position();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1285 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1286 top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1287 left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1288 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1289 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1290 return { top: 0, left: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1291 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1292
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1293 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1294
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1295 _cacheMargins: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1296 this.margins = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1297 left: (parseInt(this.element.css("marginLeft"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1298 top: (parseInt(this.element.css("marginTop"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1299 right: (parseInt(this.element.css("marginRight"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1300 bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1301 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1302 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1303
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1304 _cacheHelperProportions: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1305 this.helperProportions = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1306 width: this.helper.outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1307 height: this.helper.outerHeight()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1308 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1309 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1310
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1311 _setContainment: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1312
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1313 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1314 if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1315 if(o.containment == 'document' || o.containment == 'window') this.containment = [
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1316 (o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1317 (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1318 (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1319 (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1320 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1321
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1322 if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1323 var ce = $(o.containment)[0]; if(!ce) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1324 var co = $(o.containment).offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1325 var over = ($(ce).css("overflow") != 'hidden');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1326
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1327 this.containment = [
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1328 co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1329 co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1330 co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1331 co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1332 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1333 } else if(o.containment.constructor == Array) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1334 this.containment = o.containment;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1335 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1336
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1337 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1338
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1339 _convertPositionTo: function(d, pos) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1340
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1341 if(!pos) pos = this.position;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1342 var mod = d == "absolute" ? 1 : -1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1343 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1344
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1345 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1346 top: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1347 pos.top // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1348 + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1349 + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1350 - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1351 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1352 left: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1353 pos.left // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1354 + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1355 + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1356 - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1357 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1358 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1359
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1360 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1361
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1362 _generatePosition: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1363
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1364 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1365 var pageX = event.pageX;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1366 var pageY = event.pageY;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1367
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1368 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1369 * - Position constraining -
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1370 * Constrain the position to a mix of grid, containment.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1371 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1372
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1373 if(this.originalPosition) { //If we are not dragging yet, we won't check for options
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1374
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1375 if(this.containment) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1376 if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1377 if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1378 if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1379 if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1380 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1381
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1382 if(o.grid) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1383 var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1384 pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1385
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1386 var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1387 pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1388 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1389
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1390 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1391
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1392 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1393 top: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1394 pageY // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1395 - this.offset.click.top // Click offset (relative to the element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1396 - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1397 - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1398 + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1399 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1400 left: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1401 pageX // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1402 - this.offset.click.left // Click offset (relative to the element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1403 - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1404 - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1405 + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1406 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1407 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1408
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1409 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1410
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1411 _clear: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1412 this.helper.removeClass("ui-draggable-dragging");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1413 if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1414 //if($.ui.ddmanager) $.ui.ddmanager.current = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1415 this.helper = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1416 this.cancelHelperRemoval = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1417 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1418
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1419 // From now on bulk stuff - mainly helpers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1420
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1421 _trigger: function(type, event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1422 ui = ui || this._uiHash();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1423 $.ui.plugin.call(this, type, [event, ui]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1424 if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1425 return $.Widget.prototype._trigger.call(this, type, event, ui);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1426 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1427
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1428 plugins: {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1429
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1430 _uiHash: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1431 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1432 helper: this.helper,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1433 position: this.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1434 originalPosition: this.originalPosition,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1435 offset: this.positionAbs
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1436 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1437 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1438
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1439 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1440
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1441 $.extend($.ui.draggable, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1442 version: "1.8.11"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1443 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1444
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1445 $.ui.plugin.add("draggable", "connectToSortable", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1446 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1447
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1448 var inst = $(this).data("draggable"), o = inst.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1449 uiSortable = $.extend({}, ui, { item: inst.element });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1450 inst.sortables = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1451 $(o.connectToSortable).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1452 var sortable = $.data(this, 'sortable');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1453 if (sortable && !sortable.options.disabled) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1454 inst.sortables.push({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1455 instance: sortable,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1456 shouldRevert: sortable.options.revert
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1457 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1458 sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1459 sortable._trigger("activate", event, uiSortable);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1460 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1461 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1462
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1463 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1464 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1465
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1466 //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1467 var inst = $(this).data("draggable"),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1468 uiSortable = $.extend({}, ui, { item: inst.element });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1469
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1470 $.each(inst.sortables, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1471 if(this.instance.isOver) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1472
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1473 this.instance.isOver = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1474
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1475 inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1476 this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1477
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1478 //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1479 if(this.shouldRevert) this.instance.options.revert = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1480
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1481 //Trigger the stop of the sortable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1482 this.instance._mouseStop(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1483
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1484 this.instance.options.helper = this.instance.options._helper;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1485
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1486 //If the helper has been the original item, restore properties in the sortable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1487 if(inst.options.helper == 'original')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1488 this.instance.currentItem.css({ top: 'auto', left: 'auto' });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1489
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1490 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1491 this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1492 this.instance._trigger("deactivate", event, uiSortable);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1493 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1494
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1495 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1496
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1497 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1498 drag: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1499
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1500 var inst = $(this).data("draggable"), self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1501
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1502 var checkPos = function(o) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1503 var dyClick = this.offset.click.top, dxClick = this.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1504 var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1505 var itemHeight = o.height, itemWidth = o.width;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1506 var itemTop = o.top, itemLeft = o.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1507
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1508 return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1509 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1510
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1511 $.each(inst.sortables, function(i) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1512
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1513 //Copy over some variables to allow calling the sortable's native _intersectsWith
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1514 this.instance.positionAbs = inst.positionAbs;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1515 this.instance.helperProportions = inst.helperProportions;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1516 this.instance.offset.click = inst.offset.click;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1517
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1518 if(this.instance._intersectsWith(this.instance.containerCache)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1519
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1520 //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1521 if(!this.instance.isOver) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1522
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1523 this.instance.isOver = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1524 //Now we fake the start of dragging for the sortable instance,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1525 //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1526 //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1527 this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1528 this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1529 this.instance.options.helper = function() { return ui.helper[0]; };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1530
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1531 event.target = this.instance.currentItem[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1532 this.instance._mouseCapture(event, true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1533 this.instance._mouseStart(event, true, true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1534
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1535 //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1536 this.instance.offset.click.top = inst.offset.click.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1537 this.instance.offset.click.left = inst.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1538 this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1539 this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1540
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1541 inst._trigger("toSortable", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1542 inst.dropped = this.instance.element; //draggable revert needs that
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1543 //hack so receive/update callbacks work (mostly)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1544 inst.currentItem = inst.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1545 this.instance.fromOutside = inst;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1546
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1547 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1548
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1549 //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1550 if(this.instance.currentItem) this.instance._mouseDrag(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1551
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1552 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1553
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1554 //If it doesn't intersect with the sortable, and it intersected before,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1555 //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1556 if(this.instance.isOver) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1557
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1558 this.instance.isOver = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1559 this.instance.cancelHelperRemoval = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1560
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1561 //Prevent reverting on this forced stop
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1562 this.instance.options.revert = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1563
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1564 // The out event needs to be triggered independently
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1565 this.instance._trigger('out', event, this.instance._uiHash(this.instance));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1566
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1567 this.instance._mouseStop(event, true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1568 this.instance.options.helper = this.instance.options._helper;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1569
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1570 //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1571 this.instance.currentItem.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1572 if(this.instance.placeholder) this.instance.placeholder.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1573
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1574 inst._trigger("fromSortable", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1575 inst.dropped = false; //draggable revert needs that
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1576 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1577
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1578 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1579
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1580 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1581
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1582 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1583 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1584
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1585 $.ui.plugin.add("draggable", "cursor", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1586 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1587 var t = $('body'), o = $(this).data('draggable').options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1588 if (t.css("cursor")) o._cursor = t.css("cursor");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1589 t.css("cursor", o.cursor);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1590 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1591 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1592 var o = $(this).data('draggable').options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1593 if (o._cursor) $('body').css("cursor", o._cursor);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1594 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1595 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1596
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1597 $.ui.plugin.add("draggable", "iframeFix", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1598 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1599 var o = $(this).data('draggable').options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1600 $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1601 $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1602 .css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1603 width: this.offsetWidth+"px", height: this.offsetHeight+"px",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1604 position: "absolute", opacity: "0.001", zIndex: 1000
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1605 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1606 .css($(this).offset())
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1607 .appendTo("body");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1608 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1609 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1610 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1611 $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1612 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1613 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1614
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1615 $.ui.plugin.add("draggable", "opacity", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1616 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1617 var t = $(ui.helper), o = $(this).data('draggable').options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1618 if(t.css("opacity")) o._opacity = t.css("opacity");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1619 t.css('opacity', o.opacity);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1620 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1621 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1622 var o = $(this).data('draggable').options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1623 if(o._opacity) $(ui.helper).css('opacity', o._opacity);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1624 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1625 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1626
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1627 $.ui.plugin.add("draggable", "scroll", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1628 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1629 var i = $(this).data("draggable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1630 if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1631 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1632 drag: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1633
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1634 var i = $(this).data("draggable"), o = i.options, scrolled = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1635
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1636 if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1637
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1638 if(!o.axis || o.axis != 'x') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1639 if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1640 i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1641 else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1642 i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1643 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1644
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1645 if(!o.axis || o.axis != 'y') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1646 if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1647 i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1648 else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1649 i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1650 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1651
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1652 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1653
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1654 if(!o.axis || o.axis != 'x') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1655 if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1656 scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1657 else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1658 scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1659 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1660
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1661 if(!o.axis || o.axis != 'y') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1662 if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1663 scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1664 else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1665 scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1666 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1667
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1668 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1669
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1670 if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1671 $.ui.ddmanager.prepareOffsets(i, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1672
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1673 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1674 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1675
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1676 $.ui.plugin.add("draggable", "snap", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1677 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1678
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1679 var i = $(this).data("draggable"), o = i.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1680 i.snapElements = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1681
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1682 $(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1683 var $t = $(this); var $o = $t.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1684 if(this != i.element[0]) i.snapElements.push({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1685 item: this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1686 width: $t.outerWidth(), height: $t.outerHeight(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1687 top: $o.top, left: $o.left
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1688 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1689 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1690
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1691 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1692 drag: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1693
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1694 var inst = $(this).data("draggable"), o = inst.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1695 var d = o.snapTolerance;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1696
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1697 var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1698 y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1699
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1700 for (var i = inst.snapElements.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1701
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1702 var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1703 t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1704
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1705 //Yes, I know, this is insane ;)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1706 if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1707 if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1708 inst.snapElements[i].snapping = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1709 continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1710 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1711
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1712 if(o.snapMode != 'inner') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1713 var ts = Math.abs(t - y2) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1714 var bs = Math.abs(b - y1) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1715 var ls = Math.abs(l - x2) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1716 var rs = Math.abs(r - x1) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1717 if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1718 if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1719 if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1720 if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1721 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1722
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1723 var first = (ts || bs || ls || rs);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1724
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1725 if(o.snapMode != 'outer') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1726 var ts = Math.abs(t - y1) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1727 var bs = Math.abs(b - y2) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1728 var ls = Math.abs(l - x1) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1729 var rs = Math.abs(r - x2) <= d;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1730 if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1731 if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1732 if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1733 if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1734 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1735
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1736 if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1737 (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1738 inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1739
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1740 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1741
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1742 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1743 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1744
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1745 $.ui.plugin.add("draggable", "stack", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1746 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1747
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1748 var o = $(this).data("draggable").options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1749
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1750 var group = $.makeArray($(o.stack)).sort(function(a,b) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1751 return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1752 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1753 if (!group.length) { return; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1754
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1755 var min = parseInt(group[0].style.zIndex) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1756 $(group).each(function(i) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1757 this.style.zIndex = min + i;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1758 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1759
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1760 this[0].style.zIndex = min + group.length;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1761
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1762 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1763 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1764
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1765 $.ui.plugin.add("draggable", "zIndex", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1766 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1767 var t = $(ui.helper), o = $(this).data("draggable").options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1768 if(t.css("zIndex")) o._zIndex = t.css("zIndex");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1769 t.css('zIndex', o.zIndex);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1770 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1771 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1772 var o = $(this).data("draggable").options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1773 if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1774 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1775 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1776
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1777 })(jQuery);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1778 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1779 * jQuery UI Droppable 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1780 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1781 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1782 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1783 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1784 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1785 * http://docs.jquery.com/UI/Droppables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1786 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1787 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1788 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1789 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1790 * jquery.ui.mouse.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1791 * jquery.ui.draggable.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1792 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1793 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1794
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1795 $.widget("ui.droppable", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1796 widgetEventPrefix: "drop",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1797 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1798 accept: '*',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1799 activeClass: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1800 addClasses: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1801 greedy: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1802 hoverClass: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1803 scope: 'default',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1804 tolerance: 'intersect'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1805 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1806 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1807
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1808 var o = this.options, accept = o.accept;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1809 this.isover = 0; this.isout = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1810
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1811 this.accept = $.isFunction(accept) ? accept : function(d) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1812 return d.is(accept);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1813 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1814
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1815 //Store the droppable's proportions
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1816 this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1817
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1818 // Add the reference and positions to the manager
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1819 $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1820 $.ui.ddmanager.droppables[o.scope].push(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1821
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1822 (o.addClasses && this.element.addClass("ui-droppable"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1823
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1824 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1825
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1826 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1827 var drop = $.ui.ddmanager.droppables[this.options.scope];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1828 for ( var i = 0; i < drop.length; i++ )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1829 if ( drop[i] == this )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1830 drop.splice(i, 1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1831
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1832 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1833 .removeClass("ui-droppable ui-droppable-disabled")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1834 .removeData("droppable")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1835 .unbind(".droppable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1836
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1837 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1838 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1839
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1840 _setOption: function(key, value) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1841
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1842 if(key == 'accept') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1843 this.accept = $.isFunction(value) ? value : function(d) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1844 return d.is(value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1845 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1846 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1847 $.Widget.prototype._setOption.apply(this, arguments);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1848 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1849
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1850 _activate: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1851 var draggable = $.ui.ddmanager.current;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1852 if(this.options.activeClass) this.element.addClass(this.options.activeClass);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1853 (draggable && this._trigger('activate', event, this.ui(draggable)));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1854 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1855
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1856 _deactivate: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1857 var draggable = $.ui.ddmanager.current;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1858 if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1859 (draggable && this._trigger('deactivate', event, this.ui(draggable)));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1860 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1861
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1862 _over: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1863
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1864 var draggable = $.ui.ddmanager.current;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1865 if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1866
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1867 if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1868 if(this.options.hoverClass) this.element.addClass(this.options.hoverClass);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1869 this._trigger('over', event, this.ui(draggable));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1870 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1871
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1872 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1873
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1874 _out: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1875
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1876 var draggable = $.ui.ddmanager.current;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1877 if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1878
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1879 if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1880 if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1881 this._trigger('out', event, this.ui(draggable));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1882 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1883
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1884 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1885
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1886 _drop: function(event,custom) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1887
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1888 var draggable = custom || $.ui.ddmanager.current;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1889 if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1890
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1891 var childrenIntersection = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1892 this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1893 var inst = $.data(this, 'droppable');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1894 if(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1895 inst.options.greedy
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1896 && !inst.options.disabled
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1897 && inst.options.scope == draggable.options.scope
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1898 && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1899 && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1900 ) { childrenIntersection = true; return false; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1901 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1902 if(childrenIntersection) return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1903
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1904 if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1905 if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1906 if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1907 this._trigger('drop', event, this.ui(draggable));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1908 return this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1909 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1910
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1911 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1912
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1913 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1914
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1915 ui: function(c) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1916 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1917 draggable: (c.currentItem || c.element),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1918 helper: c.helper,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1919 position: c.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1920 offset: c.positionAbs
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1921 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1922 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1923
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1924 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1925
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1926 $.extend($.ui.droppable, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1927 version: "1.8.11"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1928 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1929
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1930 $.ui.intersect = function(draggable, droppable, toleranceMode) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1931
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1932 if (!droppable.offset) return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1933
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1934 var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1935 y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1936 var l = droppable.offset.left, r = l + droppable.proportions.width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1937 t = droppable.offset.top, b = t + droppable.proportions.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1938
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1939 switch (toleranceMode) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1940 case 'fit':
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1941 return (l <= x1 && x2 <= r
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1942 && t <= y1 && y2 <= b);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1943 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1944 case 'intersect':
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1945 return (l < x1 + (draggable.helperProportions.width / 2) // Right Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1946 && x2 - (draggable.helperProportions.width / 2) < r // Left Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1947 && t < y1 + (draggable.helperProportions.height / 2) // Bottom Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1948 && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1949 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1950 case 'pointer':
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1951 var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1952 draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1953 isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1954 return isOver;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1955 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1956 case 'touch':
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1957 return (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1958 (y1 >= t && y1 <= b) || // Top edge touching
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1959 (y2 >= t && y2 <= b) || // Bottom edge touching
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1960 (y1 < t && y2 > b) // Surrounded vertically
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1961 ) && (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1962 (x1 >= l && x1 <= r) || // Left edge touching
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1963 (x2 >= l && x2 <= r) || // Right edge touching
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1964 (x1 < l && x2 > r) // Surrounded horizontally
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1965 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1966 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1967 default:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1968 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1969 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1970 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1971
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1972 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1973
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1974 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1975 This manager tracks offsets of draggables and droppables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1976 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1977 $.ui.ddmanager = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1978 current: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1979 droppables: { 'default': [] },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1980 prepareOffsets: function(t, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1981
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1982 var m = $.ui.ddmanager.droppables[t.options.scope] || [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1983 var type = event ? event.type : null; // workaround for #2317
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1984 var list = (t.currentItem || t.element).find(":data(droppable)").andSelf();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1985
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1986 droppablesLoop: for (var i = 0; i < m.length; i++) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1987
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1988 if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue; //No disabled and non-accepted
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1989 for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1990 m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1991
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1992 if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1993
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1994 m[i].offset = m[i].element.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1995 m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1996
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1997 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1998
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1999 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2000 drop: function(draggable, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2001
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2002 var dropped = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2003 $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2004
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2005 if(!this.options) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2006 if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2007 dropped = dropped || this._drop.call(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2008
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2009 if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2010 this.isout = 1; this.isover = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2011 this._deactivate.call(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2012 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2013
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2014 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2015 return dropped;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2016
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2017 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2018 drag: function(draggable, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2019
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2020 //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2021 if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2022
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2023 //Run through all droppables and check their positions based on specific tolerance options
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2024 $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2025
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2026 if(this.options.disabled || this.greedyChild || !this.visible) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2027 var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2028
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2029 var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2030 if(!c) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2031
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2032 var parentInstance;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2033 if (this.options.greedy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2034 var parent = this.element.parents(':data(droppable):eq(0)');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2035 if (parent.length) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2036 parentInstance = $.data(parent[0], 'droppable');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2037 parentInstance.greedyChild = (c == 'isover' ? 1 : 0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2038 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2039 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2040
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2041 // we just moved into a greedy child
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2042 if (parentInstance && c == 'isover') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2043 parentInstance['isover'] = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2044 parentInstance['isout'] = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2045 parentInstance._out.call(parentInstance, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2046 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2047
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2048 this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2049 this[c == "isover" ? "_over" : "_out"].call(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2050
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2051 // we just moved out of a greedy child
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2052 if (parentInstance && c == 'isout') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2053 parentInstance['isout'] = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2054 parentInstance['isover'] = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2055 parentInstance._over.call(parentInstance, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2056 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2057 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2058
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2059 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2060 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2061
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2062 })(jQuery);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2063 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2064 * jQuery UI Resizable 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2065 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2066 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2067 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2068 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2069 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2070 * http://docs.jquery.com/UI/Resizables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2071 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2072 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2073 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2074 * jquery.ui.mouse.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2075 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2076 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2077 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2078
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2079 $.widget("ui.resizable", $.ui.mouse, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2080 widgetEventPrefix: "resize",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2081 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2082 alsoResize: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2083 animate: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2084 animateDuration: "slow",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2085 animateEasing: "swing",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2086 aspectRatio: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2087 autoHide: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2088 containment: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2089 ghost: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2090 grid: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2091 handles: "e,s,se",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2092 helper: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2093 maxHeight: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2094 maxWidth: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2095 minHeight: 10,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2096 minWidth: 10,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2097 zIndex: 1000
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2098 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2099 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2100
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2101 var self = this, o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2102 this.element.addClass("ui-resizable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2103
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2104 $.extend(this, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2105 _aspectRatio: !!(o.aspectRatio),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2106 aspectRatio: o.aspectRatio,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2107 originalElement: this.element,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2108 _proportionallyResizeElements: [],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2109 _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2110 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2111
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2112 //Wrap the element if it cannot hold child nodes
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2113 if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2114
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2115 //Opera fix for relative positioning
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2116 if (/relative/.test(this.element.css('position')) && $.browser.opera)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2117 this.element.css({ position: 'relative', top: 'auto', left: 'auto' });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2118
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2119 //Create a wrapper element and set the wrapper to the new current internal element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2120 this.element.wrap(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2121 $('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2122 position: this.element.css('position'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2123 width: this.element.outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2124 height: this.element.outerHeight(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2125 top: this.element.css('top'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2126 left: this.element.css('left')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2127 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2128 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2129
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2130 //Overwrite the original this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2131 this.element = this.element.parent().data(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2132 "resizable", this.element.data('resizable')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2133 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2134
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2135 this.elementIsWrapper = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2136
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2137 //Move margins to the wrapper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2138 this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2139 this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2140
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2141 //Prevent Safari textarea resize
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2142 this.originalResizeStyle = this.originalElement.css('resize');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2143 this.originalElement.css('resize', 'none');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2144
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2145 //Push the actual element to our proportionallyResize internal array
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2146 this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2147
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2148 // avoid IE jump (hard set the margin)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2149 this.originalElement.css({ margin: this.originalElement.css('margin') });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2150
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2151 // fix handlers offset
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2152 this._proportionallyResize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2153
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2154 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2155
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2156 this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2157 if(this.handles.constructor == String) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2158
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2159 if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2160 var n = this.handles.split(","); this.handles = {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2161
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2162 for(var i = 0; i < n.length; i++) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2163
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2164 var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2165 var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2166
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2167 // increase zIndex of sw, se, ne, nw axis
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2168 //TODO : this modifies original option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2169 if(/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2170
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2171 //TODO : What's going on here?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2172 if ('se' == handle) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2173 axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2174 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2175
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2176 //Insert into internal handles object and append to element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2177 this.handles[handle] = '.ui-resizable-'+handle;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2178 this.element.append(axis);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2179 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2180
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2181 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2182
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2183 this._renderAxis = function(target) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2184
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2185 target = target || this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2186
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2187 for(var i in this.handles) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2188
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2189 if(this.handles[i].constructor == String)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2190 this.handles[i] = $(this.handles[i], this.element).show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2191
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2192 //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2193 if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2194
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2195 var axis = $(this.handles[i], this.element), padWrapper = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2196
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2197 //Checking the correct pad and border
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2198 padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2199
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2200 //The padding type i have to apply...
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2201 var padPos = [ 'padding',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2202 /ne|nw|n/.test(i) ? 'Top' :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2203 /se|sw|s/.test(i) ? 'Bottom' :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2204 /^e$/.test(i) ? 'Right' : 'Left' ].join("");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2205
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2206 target.css(padPos, padWrapper);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2207
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2208 this._proportionallyResize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2209
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2210 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2211
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2212 //TODO: What's that good for? There's not anything to be executed left
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2213 if(!$(this.handles[i]).length)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2214 continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2215
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2216 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2217 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2218
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2219 //TODO: make renderAxis a prototype function
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2220 this._renderAxis(this.element);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2221
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2222 this._handles = $('.ui-resizable-handle', this.element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2223 .disableSelection();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2224
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2225 //Matching axis name
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2226 this._handles.mouseover(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2227 if (!self.resizing) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2228 if (this.className)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2229 var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2230 //Axis, default = se
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2231 self.axis = axis && axis[1] ? axis[1] : 'se';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2232 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2233 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2234
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2235 //If we want to auto hide the elements
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2236 if (o.autoHide) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2237 this._handles.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2238 $(this.element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2239 .addClass("ui-resizable-autohide")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2240 .hover(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2241 $(this).removeClass("ui-resizable-autohide");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2242 self._handles.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2243 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2244 function(){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2245 if (!self.resizing) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2246 $(this).addClass("ui-resizable-autohide");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2247 self._handles.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2248 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2249 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2250 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2251
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2252 //Initialize the mouse interaction
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2253 this._mouseInit();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2254
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2255 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2256
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2257 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2258
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2259 this._mouseDestroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2260
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2261 var _destroy = function(exp) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2262 $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2263 .removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2264 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2265
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2266 //TODO: Unwrap at same DOM position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2267 if (this.elementIsWrapper) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2268 _destroy(this.element);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2269 var wrapper = this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2270 wrapper.after(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2271 this.originalElement.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2272 position: wrapper.css('position'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2273 width: wrapper.outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2274 height: wrapper.outerHeight(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2275 top: wrapper.css('top'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2276 left: wrapper.css('left')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2277 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2278 ).remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2279 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2280
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2281 this.originalElement.css('resize', this.originalResizeStyle);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2282 _destroy(this.originalElement);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2283
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2284 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2285 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2286
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2287 _mouseCapture: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2288 var handle = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2289 for (var i in this.handles) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2290 if ($(this.handles[i])[0] == event.target) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2291 handle = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2292 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2293 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2294
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2295 return !this.options.disabled && handle;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2296 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2297
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2298 _mouseStart: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2299
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2300 var o = this.options, iniPos = this.element.position(), el = this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2301
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2302 this.resizing = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2303 this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2304
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2305 // bugfix for http://dev.jquery.com/ticket/1749
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2306 if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2307 el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2308 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2309
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2310 //Opera fixing relative position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2311 if ($.browser.opera && (/relative/).test(el.css('position')))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2312 el.css({ position: 'relative', top: 'auto', left: 'auto' });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2313
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2314 this._renderProxy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2315
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2316 var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2317
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2318 if (o.containment) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2319 curleft += $(o.containment).scrollLeft() || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2320 curtop += $(o.containment).scrollTop() || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2321 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2322
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2323 //Store needed variables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2324 this.offset = this.helper.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2325 this.position = { left: curleft, top: curtop };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2326 this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2327 this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2328 this.originalPosition = { left: curleft, top: curtop };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2329 this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2330 this.originalMousePosition = { left: event.pageX, top: event.pageY };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2331
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2332 //Aspect Ratio
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2333 this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2334
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2335 var cursor = $('.ui-resizable-' + this.axis).css('cursor');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2336 $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2337
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2338 el.addClass("ui-resizable-resizing");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2339 this._propagate("start", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2340 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2341 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2342
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2343 _mouseDrag: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2344
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2345 //Increase performance, avoid regex
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2346 var el = this.helper, o = this.options, props = {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2347 self = this, smp = this.originalMousePosition, a = this.axis;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2348
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2349 var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2350 var trigger = this._change[a];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2351 if (!trigger) return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2352
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2353 // Calculate the attrs that will be change
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2354 var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2355
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2356 if (this._aspectRatio || event.shiftKey)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2357 data = this._updateRatio(data, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2358
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2359 data = this._respectSize(data, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2360
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2361 // plugins callbacks need to be called first
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2362 this._propagate("resize", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2363
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2364 el.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2365 top: this.position.top + "px", left: this.position.left + "px",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2366 width: this.size.width + "px", height: this.size.height + "px"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2367 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2368
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2369 if (!this._helper && this._proportionallyResizeElements.length)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2370 this._proportionallyResize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2371
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2372 this._updateCache(data);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2373
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2374 // calling the user callback at the end
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2375 this._trigger('resize', event, this.ui());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2376
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2377 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2378 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2379
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2380 _mouseStop: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2381
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2382 this.resizing = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2383 var o = this.options, self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2384
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2385 if(this._helper) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2386 var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2387 soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2388 soffsetw = ista ? 0 : self.sizeDiff.width;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2389
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2390 var s = { width: (self.helper.width() - soffsetw), height: (self.helper.height() - soffseth) },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2391 left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2392 top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2393
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2394 if (!o.animate)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2395 this.element.css($.extend(s, { top: top, left: left }));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2396
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2397 self.helper.height(self.size.height);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2398 self.helper.width(self.size.width);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2399
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2400 if (this._helper && !o.animate) this._proportionallyResize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2401 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2402
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2403 $('body').css('cursor', 'auto');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2404
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2405 this.element.removeClass("ui-resizable-resizing");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2406
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2407 this._propagate("stop", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2408
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2409 if (this._helper) this.helper.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2410 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2411
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2412 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2413
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2414 _updateCache: function(data) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2415 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2416 this.offset = this.helper.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2417 if (isNumber(data.left)) this.position.left = data.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2418 if (isNumber(data.top)) this.position.top = data.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2419 if (isNumber(data.height)) this.size.height = data.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2420 if (isNumber(data.width)) this.size.width = data.width;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2421 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2422
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2423 _updateRatio: function(data, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2424
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2425 var o = this.options, cpos = this.position, csize = this.size, a = this.axis;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2426
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2427 if (data.height) data.width = (csize.height * this.aspectRatio);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2428 else if (data.width) data.height = (csize.width / this.aspectRatio);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2429
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2430 if (a == 'sw') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2431 data.left = cpos.left + (csize.width - data.width);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2432 data.top = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2433 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2434 if (a == 'nw') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2435 data.top = cpos.top + (csize.height - data.height);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2436 data.left = cpos.left + (csize.width - data.width);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2437 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2438
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2439 return data;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2440 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2441
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2442 _respectSize: function(data, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2443
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2444 var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2445 ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2446 isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2447
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2448 if (isminw) data.width = o.minWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2449 if (isminh) data.height = o.minHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2450 if (ismaxw) data.width = o.maxWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2451 if (ismaxh) data.height = o.maxHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2452
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2453 var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2454 var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2455
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2456 if (isminw && cw) data.left = dw - o.minWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2457 if (ismaxw && cw) data.left = dw - o.maxWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2458 if (isminh && ch) data.top = dh - o.minHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2459 if (ismaxh && ch) data.top = dh - o.maxHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2460
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2461 // fixing jump error on top/left - bug #2330
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2462 var isNotwh = !data.width && !data.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2463 if (isNotwh && !data.left && data.top) data.top = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2464 else if (isNotwh && !data.top && data.left) data.left = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2465
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2466 return data;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2467 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2468
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2469 _proportionallyResize: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2470
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2471 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2472 if (!this._proportionallyResizeElements.length) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2473 var element = this.helper || this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2474
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2475 for (var i=0; i < this._proportionallyResizeElements.length; i++) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2476
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2477 var prel = this._proportionallyResizeElements[i];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2478
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2479 if (!this.borderDif) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2480 var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2481 p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2482
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2483 this.borderDif = $.map(b, function(v, i) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2484 var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2485 return border + padding;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2486 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2487 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2488
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2489 if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2490 continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2491
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2492 prel.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2493 height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2494 width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2495 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2496
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2497 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2498
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2499 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2500
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2501 _renderProxy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2502
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2503 var el = this.element, o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2504 this.elementOffset = el.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2505
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2506 if(this._helper) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2507
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2508 this.helper = this.helper || $('<div style="overflow:hidden;"></div>');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2509
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2510 // fix ie6 offset TODO: This seems broken
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2511 var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2512 pxyoffset = ( ie6 ? 2 : -1 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2513
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2514 this.helper.addClass(this._helper).css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2515 width: this.element.outerWidth() + pxyoffset,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2516 height: this.element.outerHeight() + pxyoffset,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2517 position: 'absolute',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2518 left: this.elementOffset.left - ie6offset +'px',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2519 top: this.elementOffset.top - ie6offset +'px',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2520 zIndex: ++o.zIndex //TODO: Don't modify option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2521 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2522
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2523 this.helper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2524 .appendTo("body")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2525 .disableSelection();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2526
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2527 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2528 this.helper = this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2529 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2530
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2531 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2532
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2533 _change: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2534 e: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2535 return { width: this.originalSize.width + dx };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2536 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2537 w: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2538 var o = this.options, cs = this.originalSize, sp = this.originalPosition;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2539 return { left: sp.left + dx, width: cs.width - dx };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2540 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2541 n: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2542 var o = this.options, cs = this.originalSize, sp = this.originalPosition;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2543 return { top: sp.top + dy, height: cs.height - dy };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2544 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2545 s: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2546 return { height: this.originalSize.height + dy };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2547 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2548 se: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2549 return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2550 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2551 sw: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2552 return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2553 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2554 ne: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2555 return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2556 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2557 nw: function(event, dx, dy) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2558 return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2559 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2560 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2561
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2562 _propagate: function(n, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2563 $.ui.plugin.call(this, n, [event, this.ui()]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2564 (n != "resize" && this._trigger(n, event, this.ui()));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2565 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2566
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2567 plugins: {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2568
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2569 ui: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2570 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2571 originalElement: this.originalElement,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2572 element: this.element,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2573 helper: this.helper,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2574 position: this.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2575 size: this.size,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2576 originalSize: this.originalSize,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2577 originalPosition: this.originalPosition
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2578 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2579 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2580
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2581 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2582
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2583 $.extend($.ui.resizable, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2584 version: "1.8.11"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2585 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2586
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2587 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2588 * Resizable Extensions
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2589 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2590
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2591 $.ui.plugin.add("resizable", "alsoResize", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2592
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2593 start: function (event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2594 var self = $(this).data("resizable"), o = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2595
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2596 var _store = function (exp) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2597 $(exp).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2598 var el = $(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2599 el.data("resizable-alsoresize", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2600 width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2601 left: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2602 position: el.css('position') // to reset Opera on stop()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2603 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2604 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2605 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2606
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2607 if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2608 if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2609 else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2610 }else{
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2611 _store(o.alsoResize);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2612 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2613 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2614
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2615 resize: function (event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2616 var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2617
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2618 var delta = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2619 height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2620 top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2621 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2622
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2623 _alsoResize = function (exp, c) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2624 $(exp).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2625 var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2626 css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2627
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2628 $.each(css, function (i, prop) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2629 var sum = (start[prop]||0) + (delta[prop]||0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2630 if (sum && sum >= 0)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2631 style[prop] = sum || null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2632 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2633
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2634 // Opera fixing relative position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2635 if ($.browser.opera && /relative/.test(el.css('position'))) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2636 self._revertToRelativePosition = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2637 el.css({ position: 'absolute', top: 'auto', left: 'auto' });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2638 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2639
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2640 el.css(style);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2641 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2642 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2643
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2644 if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2645 $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2646 }else{
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2647 _alsoResize(o.alsoResize);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2648 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2649 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2650
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2651 stop: function (event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2652 var self = $(this).data("resizable"), o = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2653
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2654 var _reset = function (exp) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2655 $(exp).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2656 var el = $(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2657 // reset position for Opera - no need to verify it was changed
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2658 el.css({ position: el.data("resizable-alsoresize").position });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2659 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2660 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2661
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2662 if (self._revertToRelativePosition) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2663 self._revertToRelativePosition = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2664 if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2665 $.each(o.alsoResize, function (exp) { _reset(exp); });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2666 }else{
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2667 _reset(o.alsoResize);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2668 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2669 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2670
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2671 $(this).removeData("resizable-alsoresize");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2672 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2673 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2674
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2675 $.ui.plugin.add("resizable", "animate", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2676
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2677 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2678 var self = $(this).data("resizable"), o = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2679
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2680 var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2681 soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2682 soffsetw = ista ? 0 : self.sizeDiff.width;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2683
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2684 var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2685 left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2686 top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2687
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2688 self.element.animate(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2689 $.extend(style, top && left ? { top: top, left: left } : {}), {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2690 duration: o.animateDuration,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2691 easing: o.animateEasing,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2692 step: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2693
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2694 var data = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2695 width: parseInt(self.element.css('width'), 10),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2696 height: parseInt(self.element.css('height'), 10),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2697 top: parseInt(self.element.css('top'), 10),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2698 left: parseInt(self.element.css('left'), 10)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2699 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2700
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2701 if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2702
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2703 // propagating resize, and updating values for each animation step
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2704 self._updateCache(data);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2705 self._propagate("resize", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2706
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2707 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2708 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2709 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2710 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2711
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2712 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2713
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2714 $.ui.plugin.add("resizable", "containment", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2715
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2716 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2717 var self = $(this).data("resizable"), o = self.options, el = self.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2718 var oc = o.containment, ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2719 if (!ce) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2720
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2721 self.containerElement = $(ce);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2722
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2723 if (/document/.test(oc) || oc == document) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2724 self.containerOffset = { left: 0, top: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2725 self.containerPosition = { left: 0, top: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2726
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2727 self.parentData = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2728 element: $(document), left: 0, top: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2729 width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2730 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2731 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2732
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2733 // i'm a node, so compute top, left, right, bottom
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2734 else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2735 var element = $(ce), p = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2736 $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2737
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2738 self.containerOffset = element.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2739 self.containerPosition = element.position();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2740 self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2741
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2742 var co = self.containerOffset, ch = self.containerSize.height, cw = self.containerSize.width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2743 width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2744
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2745 self.parentData = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2746 element: ce, left: co.left, top: co.top, width: width, height: height
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2747 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2748 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2749 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2750
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2751 resize: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2752 var self = $(this).data("resizable"), o = self.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2753 ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2754 pRatio = self._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = self.containerElement;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2755
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2756 if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2757
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2758 if (cp.left < (self._helper ? co.left : 0)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2759 self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2760 if (pRatio) self.size.height = self.size.width / o.aspectRatio;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2761 self.position.left = o.helper ? co.left : 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2762 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2763
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2764 if (cp.top < (self._helper ? co.top : 0)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2765 self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2766 if (pRatio) self.size.width = self.size.height * o.aspectRatio;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2767 self.position.top = self._helper ? co.top : 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2768 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2769
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2770 self.offset.left = self.parentData.left+self.position.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2771 self.offset.top = self.parentData.top+self.position.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2772
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2773 var woset = Math.abs( (self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2774 hoset = Math.abs( (self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2775
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2776 var isParent = self.containerElement.get(0) == self.element.parent().get(0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2777 isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2778
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2779 if(isParent && isOffsetRelative) woset -= self.parentData.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2780
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2781 if (woset + self.size.width >= self.parentData.width) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2782 self.size.width = self.parentData.width - woset;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2783 if (pRatio) self.size.height = self.size.width / self.aspectRatio;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2784 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2785
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2786 if (hoset + self.size.height >= self.parentData.height) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2787 self.size.height = self.parentData.height - hoset;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2788 if (pRatio) self.size.width = self.size.height * self.aspectRatio;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2789 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2790 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2791
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2792 stop: function(event, ui){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2793 var self = $(this).data("resizable"), o = self.options, cp = self.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2794 co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2795
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2796 var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2797
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2798 if (self._helper && !o.animate && (/relative/).test(ce.css('position')))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2799 $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2800
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2801 if (self._helper && !o.animate && (/static/).test(ce.css('position')))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2802 $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2803
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2804 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2805 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2806
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2807 $.ui.plugin.add("resizable", "ghost", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2808
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2809 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2810
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2811 var self = $(this).data("resizable"), o = self.options, cs = self.size;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2812
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2813 self.ghost = self.originalElement.clone();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2814 self.ghost
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2815 .css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2816 .addClass('ui-resizable-ghost')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2817 .addClass(typeof o.ghost == 'string' ? o.ghost : '');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2818
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2819 self.ghost.appendTo(self.helper);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2820
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2821 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2822
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2823 resize: function(event, ui){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2824 var self = $(this).data("resizable"), o = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2825 if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2826 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2827
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2828 stop: function(event, ui){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2829 var self = $(this).data("resizable"), o = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2830 if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2831 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2832
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2833 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2834
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2835 $.ui.plugin.add("resizable", "grid", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2836
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2837 resize: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2838 var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2839 o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2840 var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2841
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2842 if (/^(se|s|e)$/.test(a)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2843 self.size.width = os.width + ox;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2844 self.size.height = os.height + oy;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2845 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2846 else if (/^(ne)$/.test(a)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2847 self.size.width = os.width + ox;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2848 self.size.height = os.height + oy;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2849 self.position.top = op.top - oy;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2850 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2851 else if (/^(sw)$/.test(a)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2852 self.size.width = os.width + ox;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2853 self.size.height = os.height + oy;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2854 self.position.left = op.left - ox;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2855 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2856 else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2857 self.size.width = os.width + ox;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2858 self.size.height = os.height + oy;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2859 self.position.top = op.top - oy;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2860 self.position.left = op.left - ox;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2861 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2862 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2863
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2864 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2865
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2866 var num = function(v) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2867 return parseInt(v, 10) || 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2868 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2869
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2870 var isNumber = function(value) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2871 return !isNaN(parseInt(value, 10));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2872 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2873
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2874 })(jQuery);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2875 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2876 * jQuery UI Selectable 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2877 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2878 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2879 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2880 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2881 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2882 * http://docs.jquery.com/UI/Selectables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2883 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2884 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2885 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2886 * jquery.ui.mouse.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2887 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2888 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2889 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2890
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2891 $.widget("ui.selectable", $.ui.mouse, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2892 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2893 appendTo: 'body',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2894 autoRefresh: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2895 distance: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2896 filter: '*',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2897 tolerance: 'touch'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2898 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2899 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2900 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2901
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2902 this.element.addClass("ui-selectable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2903
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2904 this.dragged = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2905
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2906 // cache selectee children based on filter
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2907 var selectees;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2908 this.refresh = function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2909 selectees = $(self.options.filter, self.element[0]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2910 selectees.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2911 var $this = $(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2912 var pos = $this.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2913 $.data(this, "selectable-item", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2914 element: this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2915 $element: $this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2916 left: pos.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2917 top: pos.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2918 right: pos.left + $this.outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2919 bottom: pos.top + $this.outerHeight(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2920 startselected: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2921 selected: $this.hasClass('ui-selected'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2922 selecting: $this.hasClass('ui-selecting'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2923 unselecting: $this.hasClass('ui-unselecting')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2924 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2925 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2926 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2927 this.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2928
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2929 this.selectees = selectees.addClass("ui-selectee");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2930
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2931 this._mouseInit();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2932
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2933 this.helper = $("<div class='ui-selectable-helper'></div>");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2934 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2935
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2936 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2937 this.selectees
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2938 .removeClass("ui-selectee")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2939 .removeData("selectable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2940 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2941 .removeClass("ui-selectable ui-selectable-disabled")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2942 .removeData("selectable")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2943 .unbind(".selectable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2944 this._mouseDestroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2945
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2946 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2947 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2948
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2949 _mouseStart: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2950 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2951
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2952 this.opos = [event.pageX, event.pageY];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2953
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2954 if (this.options.disabled)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2955 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2956
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2957 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2958
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2959 this.selectees = $(options.filter, this.element[0]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2960
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2961 this._trigger("start", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2962
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2963 $(options.appendTo).append(this.helper);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2964 // position helper (lasso)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2965 this.helper.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2966 "left": event.clientX,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2967 "top": event.clientY,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2968 "width": 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2969 "height": 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2970 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2971
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2972 if (options.autoRefresh) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2973 this.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2974 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2975
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2976 this.selectees.filter('.ui-selected').each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2977 var selectee = $.data(this, "selectable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2978 selectee.startselected = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2979 if (!event.metaKey) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2980 selectee.$element.removeClass('ui-selected');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2981 selectee.selected = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2982 selectee.$element.addClass('ui-unselecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2983 selectee.unselecting = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2984 // selectable UNSELECTING callback
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2985 self._trigger("unselecting", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2986 unselecting: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2987 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2988 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2989 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2990
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2991 $(event.target).parents().andSelf().each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2992 var selectee = $.data(this, "selectable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2993 if (selectee) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2994 var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2995 selectee.$element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2996 .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2997 .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2998 selectee.unselecting = !doSelect;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2999 selectee.selecting = doSelect;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3000 selectee.selected = doSelect;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3001 // selectable (UN)SELECTING callback
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3002 if (doSelect) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3003 self._trigger("selecting", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3004 selecting: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3005 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3006 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3007 self._trigger("unselecting", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3008 unselecting: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3009 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3010 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3011 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3012 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3013 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3014
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3015 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3016
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3017 _mouseDrag: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3018 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3019 this.dragged = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3020
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3021 if (this.options.disabled)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3022 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3023
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3024 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3025
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3026 var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3027 if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3028 if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3029 this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3030
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3031 this.selectees.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3032 var selectee = $.data(this, "selectable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3033 //prevent helper from being selected if appendTo: selectable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3034 if (!selectee || selectee.element == self.element[0])
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3035 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3036 var hit = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3037 if (options.tolerance == 'touch') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3038 hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3039 } else if (options.tolerance == 'fit') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3040 hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3041 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3042
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3043 if (hit) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3044 // SELECT
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3045 if (selectee.selected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3046 selectee.$element.removeClass('ui-selected');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3047 selectee.selected = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3048 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3049 if (selectee.unselecting) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3050 selectee.$element.removeClass('ui-unselecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3051 selectee.unselecting = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3052 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3053 if (!selectee.selecting) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3054 selectee.$element.addClass('ui-selecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3055 selectee.selecting = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3056 // selectable SELECTING callback
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3057 self._trigger("selecting", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3058 selecting: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3059 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3060 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3061 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3062 // UNSELECT
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3063 if (selectee.selecting) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3064 if (event.metaKey && selectee.startselected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3065 selectee.$element.removeClass('ui-selecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3066 selectee.selecting = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3067 selectee.$element.addClass('ui-selected');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3068 selectee.selected = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3069 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3070 selectee.$element.removeClass('ui-selecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3071 selectee.selecting = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3072 if (selectee.startselected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3073 selectee.$element.addClass('ui-unselecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3074 selectee.unselecting = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3075 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3076 // selectable UNSELECTING callback
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3077 self._trigger("unselecting", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3078 unselecting: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3079 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3080 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3081 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3082 if (selectee.selected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3083 if (!event.metaKey && !selectee.startselected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3084 selectee.$element.removeClass('ui-selected');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3085 selectee.selected = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3086
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3087 selectee.$element.addClass('ui-unselecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3088 selectee.unselecting = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3089 // selectable UNSELECTING callback
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3090 self._trigger("unselecting", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3091 unselecting: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3092 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3093 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3094 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3095 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3096 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3097
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3098 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3099 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3100
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3101 _mouseStop: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3102 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3103
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3104 this.dragged = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3105
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3106 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3107
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3108 $('.ui-unselecting', this.element[0]).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3109 var selectee = $.data(this, "selectable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3110 selectee.$element.removeClass('ui-unselecting');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3111 selectee.unselecting = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3112 selectee.startselected = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3113 self._trigger("unselected", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3114 unselected: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3115 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3116 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3117 $('.ui-selecting', this.element[0]).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3118 var selectee = $.data(this, "selectable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3119 selectee.$element.removeClass('ui-selecting').addClass('ui-selected');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3120 selectee.selecting = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3121 selectee.selected = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3122 selectee.startselected = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3123 self._trigger("selected", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3124 selected: selectee.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3125 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3126 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3127 this._trigger("stop", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3128
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3129 this.helper.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3130
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3131 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3132 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3133
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3134 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3135
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3136 $.extend($.ui.selectable, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3137 version: "1.8.11"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3138 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3139
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3140 })(jQuery);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3141 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3142 * jQuery UI Sortable 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3143 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3144 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3145 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3146 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3147 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3148 * http://docs.jquery.com/UI/Sortables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3149 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3150 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3151 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3152 * jquery.ui.mouse.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3153 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3154 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3155 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3156
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3157 $.widget("ui.sortable", $.ui.mouse, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3158 widgetEventPrefix: "sort",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3159 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3160 appendTo: "parent",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3161 axis: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3162 connectWith: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3163 containment: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3164 cursor: 'auto',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3165 cursorAt: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3166 dropOnEmpty: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3167 forcePlaceholderSize: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3168 forceHelperSize: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3169 grid: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3170 handle: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3171 helper: "original",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3172 items: '> *',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3173 opacity: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3174 placeholder: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3175 revert: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3176 scroll: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3177 scrollSensitivity: 20,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3178 scrollSpeed: 20,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3179 scope: "default",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3180 tolerance: "intersect",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3181 zIndex: 1000
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3182 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3183 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3184
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3185 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3186 this.containerCache = {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3187 this.element.addClass("ui-sortable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3188
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3189 //Get the items
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3190 this.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3191
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3192 //Let's determine if the items are being displayed horizontally
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3193 this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3194
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3195 //Let's determine the parent's offset
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3196 this.offset = this.element.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3197
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3198 //Initialize mouse events for interaction
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3199 this._mouseInit();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3200
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3201 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3202
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3203 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3204 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3205 .removeClass("ui-sortable ui-sortable-disabled")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3206 .removeData("sortable")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3207 .unbind(".sortable");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3208 this._mouseDestroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3209
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3210 for ( var i = this.items.length - 1; i >= 0; i-- )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3211 this.items[i].item.removeData("sortable-item");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3212
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3213 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3214 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3215
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3216 _setOption: function(key, value){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3217 if ( key === "disabled" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3218 this.options[ key ] = value;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3219
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3220 this.widget()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3221 [ value ? "addClass" : "removeClass"]( "ui-sortable-disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3222 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3223 // Don't call widget base _setOption for disable as it adds ui-state-disabled class
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3224 $.Widget.prototype._setOption.apply(this, arguments);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3225 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3226 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3227
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3228 _mouseCapture: function(event, overrideHandle) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3229
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3230 if (this.reverting) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3231 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3232 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3233
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3234 if(this.options.disabled || this.options.type == 'static') return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3235
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3236 //We have to refresh the items data once first
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3237 this._refreshItems(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3238
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3239 //Find out if the clicked node (or one of its parents) is a actual item in this.items
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3240 var currentItem = null, self = this, nodes = $(event.target).parents().each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3241 if($.data(this, 'sortable-item') == self) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3242 currentItem = $(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3243 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3244 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3245 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3246 if($.data(event.target, 'sortable-item') == self) currentItem = $(event.target);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3247
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3248 if(!currentItem) return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3249 if(this.options.handle && !overrideHandle) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3250 var validHandle = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3251
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3252 $(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3253 if(!validHandle) return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3254 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3255
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3256 this.currentItem = currentItem;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3257 this._removeCurrentsFromItems();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3258 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3259
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3260 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3261
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3262 _mouseStart: function(event, overrideHandle, noActivation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3263
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3264 var o = this.options, self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3265 this.currentContainer = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3266
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3267 //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3268 this.refreshPositions();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3269
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3270 //Create and append the visible helper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3271 this.helper = this._createHelper(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3272
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3273 //Cache the helper size
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3274 this._cacheHelperProportions();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3275
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3276 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3277 * - Position generation -
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3278 * This block generates everything position related - it's the core of draggables.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3279 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3280
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3281 //Cache the margins of the original element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3282 this._cacheMargins();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3283
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3284 //Get the next scrolling parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3285 this.scrollParent = this.helper.scrollParent();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3286
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3287 //The element's absolute position on the page minus margins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3288 this.offset = this.currentItem.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3289 this.offset = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3290 top: this.offset.top - this.margins.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3291 left: this.offset.left - this.margins.left
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3292 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3293
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3294 // Only after we got the offset, we can change the helper's position to absolute
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3295 // TODO: Still need to figure out a way to make relative sorting possible
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3296 this.helper.css("position", "absolute");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3297 this.cssPosition = this.helper.css("position");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3298
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3299 $.extend(this.offset, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3300 click: { //Where the click happened, relative to the element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3301 left: event.pageX - this.offset.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3302 top: event.pageY - this.offset.top
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3303 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3304 parent: this._getParentOffset(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3305 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3306 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3307
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3308 //Generate the original position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3309 this.originalPosition = this._generatePosition(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3310 this.originalPageX = event.pageX;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3311 this.originalPageY = event.pageY;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3312
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3313 //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3314 (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3315
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3316 //Cache the former DOM position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3317 this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3318
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3319 //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3320 if(this.helper[0] != this.currentItem[0]) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3321 this.currentItem.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3322 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3323
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3324 //Create the placeholder
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3325 this._createPlaceholder();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3326
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3327 //Set a containment if given in the options
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3328 if(o.containment)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3329 this._setContainment();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3330
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3331 if(o.cursor) { // cursor option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3332 if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3333 $('body').css("cursor", o.cursor);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3334 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3335
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3336 if(o.opacity) { // opacity option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3337 if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3338 this.helper.css("opacity", o.opacity);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3339 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3340
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3341 if(o.zIndex) { // zIndex option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3342 if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3343 this.helper.css("zIndex", o.zIndex);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3344 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3345
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3346 //Prepare scrolling
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3347 if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3348 this.overflowOffset = this.scrollParent.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3349
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3350 //Call callbacks
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3351 this._trigger("start", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3352
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3353 //Recache the helper size
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3354 if(!this._preserveHelperProportions)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3355 this._cacheHelperProportions();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3356
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3357
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3358 //Post 'activate' events to possible containers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3359 if(!noActivation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3360 for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, self._uiHash(this)); }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3361 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3362
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3363 //Prepare possible droppables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3364 if($.ui.ddmanager)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3365 $.ui.ddmanager.current = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3366
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3367 if ($.ui.ddmanager && !o.dropBehaviour)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3368 $.ui.ddmanager.prepareOffsets(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3369
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3370 this.dragging = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3371
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3372 this.helper.addClass("ui-sortable-helper");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3373 this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3374 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3375
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3376 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3377
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3378 _mouseDrag: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3379
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3380 //Compute the helpers position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3381 this.position = this._generatePosition(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3382 this.positionAbs = this._convertPositionTo("absolute");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3383
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3384 if (!this.lastPositionAbs) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3385 this.lastPositionAbs = this.positionAbs;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3386 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3387
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3388 //Do scrolling
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3389 if(this.options.scroll) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3390 var o = this.options, scrolled = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3391 if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3392
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3393 if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3394 this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3395 else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3396 this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3397
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3398 if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3399 this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3400 else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3401 this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3402
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3403 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3404
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3405 if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3406 scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3407 else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3408 scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3409
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3410 if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3411 scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3412 else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3413 scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3414
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3415 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3416
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3417 if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3418 $.ui.ddmanager.prepareOffsets(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3419 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3420
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3421 //Regenerate the absolute position used for position checks
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3422 this.positionAbs = this._convertPositionTo("absolute");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3423
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3424 //Set the helper position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3425 if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3426 if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3427
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3428 //Rearrange
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3429 for (var i = this.items.length - 1; i >= 0; i--) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3430
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3431 //Cache variables and intersection, continue if no intersection
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3432 var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3433 if (!intersection) continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3434
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3435 if(itemElement != this.currentItem[0] //cannot intersect with itself
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3436 && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3437 && !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3438 && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3439 //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3440 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3441
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3442 this.direction = intersection == 1 ? "down" : "up";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3443
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3444 if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3445 this._rearrange(event, item);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3446 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3447 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3448 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3449
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3450 this._trigger("change", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3451 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3452 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3453 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3454
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3455 //Post events to containers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3456 this._contactContainers(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3457
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3458 //Interconnect with droppables
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3459 if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3460
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3461 //Call callbacks
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3462 this._trigger('sort', event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3463
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3464 this.lastPositionAbs = this.positionAbs;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3465 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3466
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3467 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3468
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3469 _mouseStop: function(event, noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3470
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3471 if(!event) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3472
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3473 //If we are using droppables, inform the manager about the drop
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3474 if ($.ui.ddmanager && !this.options.dropBehaviour)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3475 $.ui.ddmanager.drop(this, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3476
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3477 if(this.options.revert) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3478 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3479 var cur = self.placeholder.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3480
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3481 self.reverting = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3482
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3483 $(this.helper).animate({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3484 left: cur.left - this.offset.parent.left - self.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3485 top: cur.top - this.offset.parent.top - self.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3486 }, parseInt(this.options.revert, 10) || 500, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3487 self._clear(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3488 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3489 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3490 this._clear(event, noPropagation);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3491 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3492
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3493 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3494
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3495 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3496
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3497 cancel: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3498
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3499 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3500
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3501 if(this.dragging) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3502
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3503 this._mouseUp({ target: null });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3504
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3505 if(this.options.helper == "original")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3506 this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3507 else
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3508 this.currentItem.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3509
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3510 //Post deactivating events to containers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3511 for (var i = this.containers.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3512 this.containers[i]._trigger("deactivate", null, self._uiHash(this));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3513 if(this.containers[i].containerCache.over) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3514 this.containers[i]._trigger("out", null, self._uiHash(this));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3515 this.containers[i].containerCache.over = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3516 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3517 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3518
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3519 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3520
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3521 if (this.placeholder) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3522 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3523 if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3524 if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3525
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3526 $.extend(this, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3527 helper: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3528 dragging: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3529 reverting: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3530 _noFinalSort: null
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3531 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3532
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3533 if(this.domPosition.prev) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3534 $(this.domPosition.prev).after(this.currentItem);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3535 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3536 $(this.domPosition.parent).prepend(this.currentItem);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3537 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3538 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3539
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3540 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3541
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3542 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3543
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3544 serialize: function(o) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3545
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3546 var items = this._getItemsAsjQuery(o && o.connected);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3547 var str = []; o = o || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3548
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3549 $(items).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3550 var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3551 if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3552 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3553
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3554 if(!str.length && o.key) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3555 str.push(o.key + '=');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3556 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3557
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3558 return str.join('&');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3559
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3560 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3561
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3562 toArray: function(o) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3563
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3564 var items = this._getItemsAsjQuery(o && o.connected);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3565 var ret = []; o = o || {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3566
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3567 items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3568 return ret;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3569
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3570 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3571
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3572 /* Be careful with the following core functions */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3573 _intersectsWith: function(item) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3574
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3575 var x1 = this.positionAbs.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3576 x2 = x1 + this.helperProportions.width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3577 y1 = this.positionAbs.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3578 y2 = y1 + this.helperProportions.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3579
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3580 var l = item.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3581 r = l + item.width,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3582 t = item.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3583 b = t + item.height;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3584
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3585 var dyClick = this.offset.click.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3586 dxClick = this.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3587
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3588 var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3589
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3590 if( this.options.tolerance == "pointer"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3591 || this.options.forcePointerForContainers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3592 || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3593 ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3594 return isOverElement;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3595 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3596
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3597 return (l < x1 + (this.helperProportions.width / 2) // Right Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3598 && x2 - (this.helperProportions.width / 2) < r // Left Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3599 && t < y1 + (this.helperProportions.height / 2) // Bottom Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3600 && y2 - (this.helperProportions.height / 2) < b ); // Top Half
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3601
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3602 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3603 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3604
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3605 _intersectsWithPointer: function(item) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3606
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3607 var isOverElementHeight = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3608 isOverElementWidth = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3609 isOverElement = isOverElementHeight && isOverElementWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3610 verticalDirection = this._getDragVerticalDirection(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3611 horizontalDirection = this._getDragHorizontalDirection();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3612
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3613 if (!isOverElement)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3614 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3615
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3616 return this.floating ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3617 ( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3618 : ( verticalDirection && (verticalDirection == "down" ? 2 : 1) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3619
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3620 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3621
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3622 _intersectsWithSides: function(item) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3623
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3624 var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3625 isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3626 verticalDirection = this._getDragVerticalDirection(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3627 horizontalDirection = this._getDragHorizontalDirection();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3628
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3629 if (this.floating && horizontalDirection) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3630 return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3631 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3632 return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3633 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3634
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3635 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3636
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3637 _getDragVerticalDirection: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3638 var delta = this.positionAbs.top - this.lastPositionAbs.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3639 return delta != 0 && (delta > 0 ? "down" : "up");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3640 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3641
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3642 _getDragHorizontalDirection: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3643 var delta = this.positionAbs.left - this.lastPositionAbs.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3644 return delta != 0 && (delta > 0 ? "right" : "left");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3645 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3646
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3647 refresh: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3648 this._refreshItems(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3649 this.refreshPositions();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3650 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3651 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3652
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3653 _connectWith: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3654 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3655 return options.connectWith.constructor == String
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3656 ? [options.connectWith]
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3657 : options.connectWith;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3658 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3659
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3660 _getItemsAsjQuery: function(connected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3661
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3662 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3663 var items = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3664 var queries = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3665 var connectWith = this._connectWith();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3666
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3667 if(connectWith && connected) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3668 for (var i = connectWith.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3669 var cur = $(connectWith[i]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3670 for (var j = cur.length - 1; j >= 0; j--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3671 var inst = $.data(cur[j], 'sortable');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3672 if(inst && inst != this && !inst.options.disabled) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3673 queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3674 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3675 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3676 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3677 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3678
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3679 queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3680
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3681 for (var i = queries.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3682 queries[i][0].each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3683 items.push(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3684 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3685 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3686
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3687 return $(items);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3688
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3689 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3690
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3691 _removeCurrentsFromItems: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3692
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3693 var list = this.currentItem.find(":data(sortable-item)");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3694
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3695 for (var i=0; i < this.items.length; i++) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3696
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3697 for (var j=0; j < list.length; j++) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3698 if(list[j] == this.items[i].item[0])
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3699 this.items.splice(i,1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3700 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3701
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3702 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3703
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3704 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3705
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3706 _refreshItems: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3707
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3708 this.items = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3709 this.containers = [this];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3710 var items = this.items;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3711 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3712 var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3713 var connectWith = this._connectWith();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3714
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3715 if(connectWith) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3716 for (var i = connectWith.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3717 var cur = $(connectWith[i]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3718 for (var j = cur.length - 1; j >= 0; j--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3719 var inst = $.data(cur[j], 'sortable');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3720 if(inst && inst != this && !inst.options.disabled) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3721 queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3722 this.containers.push(inst);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3723 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3724 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3725 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3726 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3727
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3728 for (var i = queries.length - 1; i >= 0; i--) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3729 var targetData = queries[i][1];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3730 var _queries = queries[i][0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3731
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3732 for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3733 var item = $(_queries[j]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3734
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3735 item.data('sortable-item', targetData); // Data for target checking (mouse manager)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3736
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3737 items.push({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3738 item: item,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3739 instance: targetData,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3740 width: 0, height: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3741 left: 0, top: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3742 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3743 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3744 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3745
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3746 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3747
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3748 refreshPositions: function(fast) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3749
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3750 //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3751 if(this.offsetParent && this.helper) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3752 this.offset.parent = this._getParentOffset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3753 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3754
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3755 for (var i = this.items.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3756 var item = this.items[i];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3757
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3758 var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3759
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3760 if (!fast) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3761 item.width = t.outerWidth();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3762 item.height = t.outerHeight();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3763 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3764
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3765 var p = t.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3766 item.left = p.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3767 item.top = p.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3768 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3769
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3770 if(this.options.custom && this.options.custom.refreshContainers) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3771 this.options.custom.refreshContainers.call(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3772 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3773 for (var i = this.containers.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3774 var p = this.containers[i].element.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3775 this.containers[i].containerCache.left = p.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3776 this.containers[i].containerCache.top = p.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3777 this.containers[i].containerCache.width = this.containers[i].element.outerWidth();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3778 this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3779 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3780 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3781
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3782 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3783 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3784
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3785 _createPlaceholder: function(that) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3786
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3787 var self = that || this, o = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3788
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3789 if(!o.placeholder || o.placeholder.constructor == String) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3790 var className = o.placeholder;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3791 o.placeholder = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3792 element: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3793
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3794 var el = $(document.createElement(self.currentItem[0].nodeName))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3795 .addClass(className || self.currentItem[0].className+" ui-sortable-placeholder")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3796 .removeClass("ui-sortable-helper")[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3797
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3798 if(!className)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3799 el.style.visibility = "hidden";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3800
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3801 return el;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3802 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3803 update: function(container, p) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3804
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3805 // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3806 // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3807 if(className && !o.forcePlaceholderSize) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3808
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3809 //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3810 if(!p.height()) { p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10)); };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3811 if(!p.width()) { p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem.css('paddingRight')||0, 10)); };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3812 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3813 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3814 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3815
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3816 //Create the placeholder
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3817 self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3818
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3819 //Append it after the actual current item
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3820 self.currentItem.after(self.placeholder);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3821
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3822 //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3823 o.placeholder.update(self, self.placeholder);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3824
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3825 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3826
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3827 _contactContainers: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3828
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3829 // get innermost container that intersects with item
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3830 var innermostContainer = null, innermostIndex = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3831
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3832
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3833 for (var i = this.containers.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3834
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3835 // never consider a container that's located within the item itself
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3836 if($.ui.contains(this.currentItem[0], this.containers[i].element[0]))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3837 continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3838
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3839 if(this._intersectsWith(this.containers[i].containerCache)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3840
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3841 // if we've already found a container and it's more "inner" than this, then continue
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3842 if(innermostContainer && $.ui.contains(this.containers[i].element[0], innermostContainer.element[0]))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3843 continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3844
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3845 innermostContainer = this.containers[i];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3846 innermostIndex = i;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3847
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3848 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3849 // container doesn't intersect. trigger "out" event if necessary
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3850 if(this.containers[i].containerCache.over) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3851 this.containers[i]._trigger("out", event, this._uiHash(this));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3852 this.containers[i].containerCache.over = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3853 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3854 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3855
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3856 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3857
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3858 // if no intersecting containers found, return
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3859 if(!innermostContainer) return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3860
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3861 // move the item into the container if it's not there already
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3862 if(this.containers.length === 1) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3863 this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3864 this.containers[innermostIndex].containerCache.over = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3865 } else if(this.currentContainer != this.containers[innermostIndex]) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3866
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3867 //When entering a new container, we will find the item with the least distance and append our item near it
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3868 var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3869 for (var j = this.items.length - 1; j >= 0; j--) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3870 if(!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3871 var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top'];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3872 if(Math.abs(cur - base) < dist) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3873 dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3874 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3875 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3876
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3877 if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3878 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3879
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3880 this.currentContainer = this.containers[innermostIndex];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3881 itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3882 this._trigger("change", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3883 this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3884
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3885 //Update the placeholder
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3886 this.options.placeholder.update(this.currentContainer, this.placeholder);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3887
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3888 this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3889 this.containers[innermostIndex].containerCache.over = 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3890 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3891
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3892
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3893 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3894
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3895 _createHelper: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3896
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3897 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3898 var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3899
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3900 if(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3901 $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3902
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3903 if(helper[0] == this.currentItem[0])
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3904 this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3905
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3906 if(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3907 if(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3908
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3909 return helper;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3910
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3911 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3912
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3913 _adjustOffsetFromHelper: function(obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3914 if (typeof obj == 'string') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3915 obj = obj.split(' ');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3916 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3917 if ($.isArray(obj)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3918 obj = {left: +obj[0], top: +obj[1] || 0};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3919 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3920 if ('left' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3921 this.offset.click.left = obj.left + this.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3922 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3923 if ('right' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3924 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3925 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3926 if ('top' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3927 this.offset.click.top = obj.top + this.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3928 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3929 if ('bottom' in obj) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3930 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3931 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3932 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3933
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3934 _getParentOffset: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3935
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3936
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3937 //Get the offsetParent and cache its position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3938 this.offsetParent = this.helper.offsetParent();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3939 var po = this.offsetParent.offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3940
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3941 // This is a special case where we need to modify a offset calculated on start, since the following happened:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3942 // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3943 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3944 // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3945 if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3946 po.left += this.scrollParent.scrollLeft();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3947 po.top += this.scrollParent.scrollTop();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3948 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3949
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3950 if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3951 || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3952 po = { top: 0, left: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3953
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3954 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3955 top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3956 left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3957 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3958
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3959 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3960
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3961 _getRelativeOffset: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3962
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3963 if(this.cssPosition == "relative") {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3964 var p = this.currentItem.position();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3965 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3966 top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3967 left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3968 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3969 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3970 return { top: 0, left: 0 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3971 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3972
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3973 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3974
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3975 _cacheMargins: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3976 this.margins = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3977 left: (parseInt(this.currentItem.css("marginLeft"),10) || 0),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3978 top: (parseInt(this.currentItem.css("marginTop"),10) || 0)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3979 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3980 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3981
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3982 _cacheHelperProportions: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3983 this.helperProportions = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3984 width: this.helper.outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3985 height: this.helper.outerHeight()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3986 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3987 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3988
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3989 _setContainment: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3990
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3991 var o = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3992 if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3993 if(o.containment == 'document' || o.containment == 'window') this.containment = [
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3994 0 - this.offset.relative.left - this.offset.parent.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3995 0 - this.offset.relative.top - this.offset.parent.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3996 $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3997 ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3998 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3999
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4000 if(!(/^(document|window|parent)$/).test(o.containment)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4001 var ce = $(o.containment)[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4002 var co = $(o.containment).offset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4003 var over = ($(ce).css("overflow") != 'hidden');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4004
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4005 this.containment = [
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4006 co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4007 co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4008 co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4009 co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4010 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4011 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4012
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4013 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4014
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4015 _convertPositionTo: function(d, pos) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4016
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4017 if(!pos) pos = this.position;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4018 var mod = d == "absolute" ? 1 : -1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4019 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4020
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4021 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4022 top: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4023 pos.top // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4024 + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4025 + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4026 - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4027 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4028 left: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4029 pos.left // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4030 + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4031 + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4032 - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4033 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4034 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4035
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4036 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4037
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4038 _generatePosition: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4039
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4040 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4041
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4042 // This is another very weird special case that only happens for relative elements:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4043 // 1. If the css position is relative
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4044 // 2. and the scroll parent is the document or similar to the offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4045 // we have to refresh the relative offset during the scroll so there are no jumps
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4046 if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4047 this.offset.relative = this._getRelativeOffset();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4048 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4049
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4050 var pageX = event.pageX;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4051 var pageY = event.pageY;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4052
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4053 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4054 * - Position constraining -
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4055 * Constrain the position to a mix of grid, containment.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4056 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4057
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4058 if(this.originalPosition) { //If we are not dragging yet, we won't check for options
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4059
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4060 if(this.containment) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4061 if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4062 if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4063 if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4064 if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4065 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4066
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4067 if(o.grid) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4068 var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4069 pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4070
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4071 var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4072 pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4073 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4074
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4075 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4076
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4077 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4078 top: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4079 pageY // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4080 - this.offset.click.top // Click offset (relative to the element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4081 - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4082 - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4083 + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4084 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4085 left: (
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4086 pageX // The absolute mouse position
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4087 - this.offset.click.left // Click offset (relative to the element)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4088 - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4089 - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4090 + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4091 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4092 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4093
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4094 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4095
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4096 _rearrange: function(event, i, a, hardRefresh) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4097
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4098 a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4099
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4100 //Various things done here to improve the performance:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4101 // 1. we create a setTimeout, that calls refreshPositions
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4102 // 2. on the instance, we have a counter variable, that get's higher after every append
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4103 // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4104 // 4. this lets only the last addition to the timeout stack through
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4105 this.counter = this.counter ? ++this.counter : 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4106 var self = this, counter = this.counter;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4107
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4108 window.setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4109 if(counter == self.counter) self.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4110 },0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4111
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4112 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4113
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4114 _clear: function(event, noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4115
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4116 this.reverting = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4117 // We delay all events that have to be triggered to after the point where the placeholder has been removed and
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4118 // everything else normalized again
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4119 var delayedTriggers = [], self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4120
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4121 // We first have to update the dom position of the actual currentItem
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4122 // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4123 if(!this._noFinalSort && this.currentItem[0].parentNode) this.placeholder.before(this.currentItem);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4124 this._noFinalSort = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4125
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4126 if(this.helper[0] == this.currentItem[0]) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4127 for(var i in this._storedCSS) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4128 if(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4129 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4130 this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4131 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4132 this.currentItem.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4133 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4134
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4135 if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4136 if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4137 if(!$.ui.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4138 if(!noPropagation) delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4139 for (var i = this.containers.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4140 if($.ui.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4141 delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4142 delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4143 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4144 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4145 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4146
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4147 //Post events to containers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4148 for (var i = this.containers.length - 1; i >= 0; i--){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4149 if(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4150 if(this.containers[i].containerCache.over) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4151 delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i]));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4152 this.containers[i].containerCache.over = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4153 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4154 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4155
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4156 //Do what was originally in plugins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4157 if(this._storedCursor) $('body').css("cursor", this._storedCursor); //Reset cursor
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4158 if(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset opacity
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4159 if(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4160
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4161 this.dragging = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4162 if(this.cancelHelperRemoval) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4163 if(!noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4164 this._trigger("beforeStop", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4165 for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4166 this._trigger("stop", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4167 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4168 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4169 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4170
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4171 if(!noPropagation) this._trigger("beforeStop", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4172
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4173 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4174 this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4175
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4176 if(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4177
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4178 if(!noPropagation) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4179 for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4180 this._trigger("stop", event, this._uiHash());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4181 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4182
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4183 this.fromOutside = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4184 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4185
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4186 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4187
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4188 _trigger: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4189 if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4190 this.cancel();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4191 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4192 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4193
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4194 _uiHash: function(inst) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4195 var self = inst || this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4196 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4197 helper: self.helper,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4198 placeholder: self.placeholder || $([]),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4199 position: self.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4200 originalPosition: self.originalPosition,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4201 offset: self.positionAbs,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4202 item: self.currentItem,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4203 sender: inst ? inst.element : null
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4204 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4205 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4206
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4207 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4208
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4209 $.extend($.ui.sortable, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4210 version: "1.8.11"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4211 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4212
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4213 })(jQuery);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4214 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4215 * jQuery UI Accordion 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4216 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4217 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4218 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4219 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4220 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4221 * http://docs.jquery.com/UI/Accordion
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4222 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4223 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4224 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4225 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4226 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4227 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4228
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4229 $.widget( "ui.accordion", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4230 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4231 active: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4232 animated: "slide",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4233 autoHeight: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4234 clearStyle: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4235 collapsible: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4236 event: "click",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4237 fillSpace: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4238 header: "> li > :first-child,> :not(li):even",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4239 icons: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4240 header: "ui-icon-triangle-1-e",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4241 headerSelected: "ui-icon-triangle-1-s"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4242 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4243 navigation: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4244 navigationFilter: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4245 return this.href.toLowerCase() === location.href.toLowerCase();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4246 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4247 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4248
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4249 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4250 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4251 options = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4252
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4253 self.running = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4254
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4255 self.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4256 .addClass( "ui-accordion ui-widget ui-helper-reset" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4257 // in lack of child-selectors in CSS
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4258 // we need to mark top-LIs in a UL-accordion for some IE-fix
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4259 .children( "li" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4260 .addClass( "ui-accordion-li-fix" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4261
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4262 self.headers = self.element.find( options.header )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4263 .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4264 .bind( "mouseenter.accordion", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4265 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4266 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4267 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4268 $( this ).addClass( "ui-state-hover" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4269 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4270 .bind( "mouseleave.accordion", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4271 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4272 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4273 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4274 $( this ).removeClass( "ui-state-hover" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4275 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4276 .bind( "focus.accordion", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4277 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4278 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4279 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4280 $( this ).addClass( "ui-state-focus" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4281 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4282 .bind( "blur.accordion", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4283 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4284 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4285 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4286 $( this ).removeClass( "ui-state-focus" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4287 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4288
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4289 self.headers.next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4290 .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4291
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4292 if ( options.navigation ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4293 var current = self.element.find( "a" ).filter( options.navigationFilter ).eq( 0 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4294 if ( current.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4295 var header = current.closest( ".ui-accordion-header" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4296 if ( header.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4297 // anchor within header
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4298 self.active = header;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4299 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4300 // anchor within content
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4301 self.active = current.closest( ".ui-accordion-content" ).prev();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4302 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4303 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4304 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4305
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4306 self.active = self._findActive( self.active || options.active )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4307 .addClass( "ui-state-default ui-state-active" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4308 .toggleClass( "ui-corner-all" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4309 .toggleClass( "ui-corner-top" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4310 self.active.next().addClass( "ui-accordion-content-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4311
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4312 self._createIcons();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4313 self.resize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4314
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4315 // ARIA
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4316 self.element.attr( "role", "tablist" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4317
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4318 self.headers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4319 .attr( "role", "tab" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4320 .bind( "keydown.accordion", function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4321 return self._keydown( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4322 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4323 .next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4324 .attr( "role", "tabpanel" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4325
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4326 self.headers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4327 .not( self.active || "" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4328 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4329 "aria-expanded": "false",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4330 "aria-selected": "false",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4331 tabIndex: -1
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4332 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4333 .next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4334 .hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4335
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4336 // make sure at least one header is in the tab order
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4337 if ( !self.active.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4338 self.headers.eq( 0 ).attr( "tabIndex", 0 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4339 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4340 self.active
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4341 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4342 "aria-expanded": "true",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4343 "aria-selected": "true",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4344 tabIndex: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4345 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4346 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4347
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4348 // only need links in tab order for Safari
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4349 if ( !$.browser.safari ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4350 self.headers.find( "a" ).attr( "tabIndex", -1 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4351 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4352
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4353 if ( options.event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4354 self.headers.bind( options.event.split(" ").join(".accordion ") + ".accordion", function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4355 self._clickHandler.call( self, event, this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4356 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4357 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4358 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4359 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4360
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4361 _createIcons: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4362 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4363 if ( options.icons ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4364 $( "<span></span>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4365 .addClass( "ui-icon " + options.icons.header )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4366 .prependTo( this.headers );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4367 this.active.children( ".ui-icon" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4368 .toggleClass(options.icons.header)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4369 .toggleClass(options.icons.headerSelected);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4370 this.element.addClass( "ui-accordion-icons" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4371 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4372 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4373
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4374 _destroyIcons: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4375 this.headers.children( ".ui-icon" ).remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4376 this.element.removeClass( "ui-accordion-icons" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4377 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4378
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4379 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4380 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4381
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4382 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4383 .removeClass( "ui-accordion ui-widget ui-helper-reset" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4384 .removeAttr( "role" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4385
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4386 this.headers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4387 .unbind( ".accordion" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4388 .removeClass( "ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4389 .removeAttr( "role" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4390 .removeAttr( "aria-expanded" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4391 .removeAttr( "aria-selected" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4392 .removeAttr( "tabIndex" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4393
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4394 this.headers.find( "a" ).removeAttr( "tabIndex" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4395 this._destroyIcons();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4396 var contents = this.headers.next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4397 .css( "display", "" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4398 .removeAttr( "role" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4399 .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4400 if ( options.autoHeight || options.fillHeight ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4401 contents.css( "height", "" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4402 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4403
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4404 return $.Widget.prototype.destroy.call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4405 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4406
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4407 _setOption: function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4408 $.Widget.prototype._setOption.apply( this, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4409
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4410 if ( key == "active" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4411 this.activate( value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4412 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4413 if ( key == "icons" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4414 this._destroyIcons();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4415 if ( value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4416 this._createIcons();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4417 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4418 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4419 // #5332 - opacity doesn't cascade to positioned elements in IE
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4420 // so we need to add the disabled class to the headers and panels
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4421 if ( key == "disabled" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4422 this.headers.add(this.headers.next())
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4423 [ value ? "addClass" : "removeClass" ](
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4424 "ui-accordion-disabled ui-state-disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4425 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4426 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4427
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4428 _keydown: function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4429 if ( this.options.disabled || event.altKey || event.ctrlKey ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4430 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4431 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4432
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4433 var keyCode = $.ui.keyCode,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4434 length = this.headers.length,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4435 currentIndex = this.headers.index( event.target ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4436 toFocus = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4437
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4438 switch ( event.keyCode ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4439 case keyCode.RIGHT:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4440 case keyCode.DOWN:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4441 toFocus = this.headers[ ( currentIndex + 1 ) % length ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4442 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4443 case keyCode.LEFT:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4444 case keyCode.UP:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4445 toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4446 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4447 case keyCode.SPACE:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4448 case keyCode.ENTER:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4449 this._clickHandler( { target: event.target }, event.target );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4450 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4451 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4452
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4453 if ( toFocus ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4454 $( event.target ).attr( "tabIndex", -1 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4455 $( toFocus ).attr( "tabIndex", 0 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4456 toFocus.focus();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4457 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4458 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4459
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4460 return true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4461 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4462
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4463 resize: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4464 var options = this.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4465 maxHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4466
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4467 if ( options.fillSpace ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4468 if ( $.browser.msie ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4469 var defOverflow = this.element.parent().css( "overflow" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4470 this.element.parent().css( "overflow", "hidden");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4471 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4472 maxHeight = this.element.parent().height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4473 if ($.browser.msie) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4474 this.element.parent().css( "overflow", defOverflow );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4475 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4476
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4477 this.headers.each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4478 maxHeight -= $( this ).outerHeight( true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4479 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4480
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4481 this.headers.next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4482 .each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4483 $( this ).height( Math.max( 0, maxHeight -
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4484 $( this ).innerHeight() + $( this ).height() ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4485 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4486 .css( "overflow", "auto" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4487 } else if ( options.autoHeight ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4488 maxHeight = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4489 this.headers.next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4490 .each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4491 maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4492 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4493 .height( maxHeight );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4494 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4495
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4496 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4497 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4498
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4499 activate: function( index ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4500 // TODO this gets called on init, changing the option without an explicit call for that
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4501 this.options.active = index;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4502 // call clickHandler with custom event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4503 var active = this._findActive( index )[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4504 this._clickHandler( { target: active }, active );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4505
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4506 return this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4507 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4508
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4509 _findActive: function( selector ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4510 return selector
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4511 ? typeof selector === "number"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4512 ? this.headers.filter( ":eq(" + selector + ")" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4513 : this.headers.not( this.headers.not( selector ) )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4514 : selector === false
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4515 ? $( [] )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4516 : this.headers.filter( ":eq(0)" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4517 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4518
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4519 // TODO isn't event.target enough? why the separate target argument?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4520 _clickHandler: function( event, target ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4521 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4522 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4523 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4524 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4525
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4526 // called only when using activate(false) to close all parts programmatically
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4527 if ( !event.target ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4528 if ( !options.collapsible ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4529 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4530 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4531 this.active
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4532 .removeClass( "ui-state-active ui-corner-top" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4533 .addClass( "ui-state-default ui-corner-all" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4534 .children( ".ui-icon" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4535 .removeClass( options.icons.headerSelected )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4536 .addClass( options.icons.header );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4537 this.active.next().addClass( "ui-accordion-content-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4538 var toHide = this.active.next(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4539 data = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4540 options: options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4541 newHeader: $( [] ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4542 oldHeader: options.active,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4543 newContent: $( [] ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4544 oldContent: toHide
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4545 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4546 toShow = ( this.active = $( [] ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4547 this._toggle( toShow, toHide, data );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4548 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4549 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4550
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4551 // get the click target
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4552 var clicked = $( event.currentTarget || target ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4553 clickedIsActive = clicked[0] === this.active[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4554
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4555 // TODO the option is changed, is that correct?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4556 // TODO if it is correct, shouldn't that happen after determining that the click is valid?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4557 options.active = options.collapsible && clickedIsActive ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4558 false :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4559 this.headers.index( clicked );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4560
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4561 // if animations are still active, or the active header is the target, ignore click
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4562 if ( this.running || ( !options.collapsible && clickedIsActive ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4563 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4564 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4565
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4566 // find elements to show and hide
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4567 var active = this.active,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4568 toShow = clicked.next(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4569 toHide = this.active.next(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4570 data = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4571 options: options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4572 newHeader: clickedIsActive && options.collapsible ? $([]) : clicked,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4573 oldHeader: this.active,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4574 newContent: clickedIsActive && options.collapsible ? $([]) : toShow,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4575 oldContent: toHide
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4576 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4577 down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4578
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4579 // when the call to ._toggle() comes after the class changes
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4580 // it causes a very odd bug in IE 8 (see #6720)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4581 this.active = clickedIsActive ? $([]) : clicked;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4582 this._toggle( toShow, toHide, data, clickedIsActive, down );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4583
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4584 // switch classes
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4585 active
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4586 .removeClass( "ui-state-active ui-corner-top" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4587 .addClass( "ui-state-default ui-corner-all" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4588 .children( ".ui-icon" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4589 .removeClass( options.icons.headerSelected )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4590 .addClass( options.icons.header );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4591 if ( !clickedIsActive ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4592 clicked
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4593 .removeClass( "ui-state-default ui-corner-all" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4594 .addClass( "ui-state-active ui-corner-top" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4595 .children( ".ui-icon" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4596 .removeClass( options.icons.header )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4597 .addClass( options.icons.headerSelected );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4598 clicked
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4599 .next()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4600 .addClass( "ui-accordion-content-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4601 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4602
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4603 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4604 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4605
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4606 _toggle: function( toShow, toHide, data, clickedIsActive, down ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4607 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4608 options = self.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4609
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4610 self.toShow = toShow;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4611 self.toHide = toHide;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4612 self.data = data;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4613
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4614 var complete = function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4615 if ( !self ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4616 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4617 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4618 return self._completed.apply( self, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4619 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4620
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4621 // trigger changestart event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4622 self._trigger( "changestart", null, self.data );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4623
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4624 // count elements to animate
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4625 self.running = toHide.size() === 0 ? toShow.size() : toHide.size();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4626
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4627 if ( options.animated ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4628 var animOptions = {};
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4629
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4630 if ( options.collapsible && clickedIsActive ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4631 animOptions = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4632 toShow: $( [] ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4633 toHide: toHide,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4634 complete: complete,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4635 down: down,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4636 autoHeight: options.autoHeight || options.fillSpace
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4637 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4638 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4639 animOptions = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4640 toShow: toShow,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4641 toHide: toHide,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4642 complete: complete,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4643 down: down,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4644 autoHeight: options.autoHeight || options.fillSpace
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4645 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4646 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4647
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4648 if ( !options.proxied ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4649 options.proxied = options.animated;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4650 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4651
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4652 if ( !options.proxiedDuration ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4653 options.proxiedDuration = options.duration;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4654 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4655
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4656 options.animated = $.isFunction( options.proxied ) ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4657 options.proxied( animOptions ) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4658 options.proxied;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4659
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4660 options.duration = $.isFunction( options.proxiedDuration ) ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4661 options.proxiedDuration( animOptions ) :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4662 options.proxiedDuration;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4663
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4664 var animations = $.ui.accordion.animations,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4665 duration = options.duration,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4666 easing = options.animated;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4667
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4668 if ( easing && !animations[ easing ] && !$.easing[ easing ] ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4669 easing = "slide";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4670 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4671 if ( !animations[ easing ] ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4672 animations[ easing ] = function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4673 this.slide( options, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4674 easing: easing,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4675 duration: duration || 700
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4676 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4677 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4678 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4679
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4680 animations[ easing ]( animOptions );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4681 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4682 if ( options.collapsible && clickedIsActive ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4683 toShow.toggle();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4684 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4685 toHide.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4686 toShow.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4687 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4688
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4689 complete( true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4690 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4691
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4692 // TODO assert that the blur and focus triggers are really necessary, remove otherwise
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4693 toHide.prev()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4694 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4695 "aria-expanded": "false",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4696 "aria-selected": "false",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4697 tabIndex: -1
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4698 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4699 .blur();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4700 toShow.prev()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4701 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4702 "aria-expanded": "true",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4703 "aria-selected": "true",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4704 tabIndex: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4705 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4706 .focus();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4707 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4708
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4709 _completed: function( cancel ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4710 this.running = cancel ? 0 : --this.running;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4711 if ( this.running ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4712 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4713 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4714
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4715 if ( this.options.clearStyle ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4716 this.toShow.add( this.toHide ).css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4717 height: "",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4718 overflow: ""
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4719 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4720 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4721
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4722 // other classes are removed before the animation; this one needs to stay until completed
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4723 this.toHide.removeClass( "ui-accordion-content-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4724 // Work around for rendering bug in IE (#5421)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4725 if ( this.toHide.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4726 this.toHide.parent()[0].className = this.toHide.parent()[0].className;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4727 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4728
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4729 this._trigger( "change", null, this.data );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4730 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4731 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4732
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4733 $.extend( $.ui.accordion, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4734 version: "1.8.11",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4735 animations: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4736 slide: function( options, additions ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4737 options = $.extend({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4738 easing: "swing",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4739 duration: 300
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4740 }, options, additions );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4741 if ( !options.toHide.size() ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4742 options.toShow.animate({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4743 height: "show",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4744 paddingTop: "show",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4745 paddingBottom: "show"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4746 }, options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4747 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4748 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4749 if ( !options.toShow.size() ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4750 options.toHide.animate({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4751 height: "hide",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4752 paddingTop: "hide",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4753 paddingBottom: "hide"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4754 }, options );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4755 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4756 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4757 var overflow = options.toShow.css( "overflow" ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4758 percentDone = 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4759 showProps = {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4760 hideProps = {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4761 fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4762 originalWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4763 // fix width before calculating height of hidden element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4764 var s = options.toShow;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4765 originalWidth = s[0].style.width;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4766 s.width( parseInt( s.parent().width(), 10 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4767 - parseInt( s.css( "paddingLeft" ), 10 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4768 - parseInt( s.css( "paddingRight" ), 10 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4769 - ( parseInt( s.css( "borderLeftWidth" ), 10 ) || 0 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4770 - ( parseInt( s.css( "borderRightWidth" ), 10) || 0 ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4771
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4772 $.each( fxAttrs, function( i, prop ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4773 hideProps[ prop ] = "hide";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4774
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4775 var parts = ( "" + $.css( options.toShow[0], prop ) ).match( /^([\d+-.]+)(.*)$/ );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4776 showProps[ prop ] = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4777 value: parts[ 1 ],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4778 unit: parts[ 2 ] || "px"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4779 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4780 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4781 options.toShow.css({ height: 0, overflow: "hidden" }).show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4782 options.toHide
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4783 .filter( ":hidden" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4784 .each( options.complete )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4785 .end()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4786 .filter( ":visible" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4787 .animate( hideProps, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4788 step: function( now, settings ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4789 // only calculate the percent when animating height
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4790 // IE gets very inconsistent results when animating elements
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4791 // with small values, which is common for padding
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4792 if ( settings.prop == "height" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4793 percentDone = ( settings.end - settings.start === 0 ) ? 0 :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4794 ( settings.now - settings.start ) / ( settings.end - settings.start );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4795 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4796
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4797 options.toShow[ 0 ].style[ settings.prop ] =
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4798 ( percentDone * showProps[ settings.prop ].value )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4799 + showProps[ settings.prop ].unit;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4800 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4801 duration: options.duration,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4802 easing: options.easing,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4803 complete: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4804 if ( !options.autoHeight ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4805 options.toShow.css( "height", "" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4806 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4807 options.toShow.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4808 width: originalWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4809 overflow: overflow
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4810 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4811 options.complete();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4812 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4813 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4814 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4815 bounceslide: function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4816 this.slide( options, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4817 easing: options.down ? "easeOutBounce" : "swing",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4818 duration: options.down ? 1000 : 200
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4819 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4820 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4821 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4822 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4823
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4824 })( jQuery );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4825 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4826 * jQuery UI Autocomplete 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4827 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4828 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4829 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4830 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4831 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4832 * http://docs.jquery.com/UI/Autocomplete
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4833 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4834 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4835 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4836 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4837 * jquery.ui.position.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4838 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4839 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4840
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4841 // used to prevent race conditions with remote data sources
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4842 var requestIndex = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4843
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4844 $.widget( "ui.autocomplete", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4845 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4846 appendTo: "body",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4847 autoFocus: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4848 delay: 300,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4849 minLength: 1,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4850 position: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4851 my: "left top",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4852 at: "left bottom",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4853 collision: "none"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4854 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4855 source: null
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4856 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4857
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4858 pending: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4859
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4860 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4861 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4862 doc = this.element[ 0 ].ownerDocument,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4863 suppressKeyPress;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4864
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4865 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4866 .addClass( "ui-autocomplete-input" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4867 .attr( "autocomplete", "off" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4868 // TODO verify these actually work as intended
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4869 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4870 role: "textbox",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4871 "aria-autocomplete": "list",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4872 "aria-haspopup": "true"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4873 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4874 .bind( "keydown.autocomplete", function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4875 if ( self.options.disabled || self.element.attr( "readonly" ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4876 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4877 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4878
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4879 suppressKeyPress = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4880 var keyCode = $.ui.keyCode;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4881 switch( event.keyCode ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4882 case keyCode.PAGE_UP:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4883 self._move( "previousPage", event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4884 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4885 case keyCode.PAGE_DOWN:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4886 self._move( "nextPage", event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4887 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4888 case keyCode.UP:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4889 self._move( "previous", event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4890 // prevent moving cursor to beginning of text field in some browsers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4891 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4892 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4893 case keyCode.DOWN:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4894 self._move( "next", event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4895 // prevent moving cursor to end of text field in some browsers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4896 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4897 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4898 case keyCode.ENTER:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4899 case keyCode.NUMPAD_ENTER:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4900 // when menu is open and has focus
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4901 if ( self.menu.active ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4902 // #6055 - Opera still allows the keypress to occur
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4903 // which causes forms to submit
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4904 suppressKeyPress = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4905 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4906 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4907 //passthrough - ENTER and TAB both select the current element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4908 case keyCode.TAB:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4909 if ( !self.menu.active ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4910 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4911 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4912 self.menu.select( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4913 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4914 case keyCode.ESCAPE:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4915 self.element.val( self.term );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4916 self.close( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4917 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4918 default:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4919 // keypress is triggered before the input value is changed
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4920 clearTimeout( self.searching );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4921 self.searching = setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4922 // only search if the value has changed
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4923 if ( self.term != self.element.val() ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4924 self.selectedItem = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4925 self.search( null, event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4926 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4927 }, self.options.delay );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4928 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4929 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4930 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4931 .bind( "keypress.autocomplete", function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4932 if ( suppressKeyPress ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4933 suppressKeyPress = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4934 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4935 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4936 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4937 .bind( "focus.autocomplete", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4938 if ( self.options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4939 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4940 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4941
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4942 self.selectedItem = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4943 self.previous = self.element.val();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4944 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4945 .bind( "blur.autocomplete", function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4946 if ( self.options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4947 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4948 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4949
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4950 clearTimeout( self.searching );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4951 // clicks on the menu (or a button to trigger a search) will cause a blur event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4952 self.closing = setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4953 self.close( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4954 self._change( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4955 }, 150 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4956 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4957 this._initSource();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4958 this.response = function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4959 return self._response.apply( self, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4960 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4961 this.menu = $( "<ul></ul>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4962 .addClass( "ui-autocomplete" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4963 .appendTo( $( this.options.appendTo || "body", doc )[0] )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4964 // prevent the close-on-blur in case of a "slow" click on the menu (long mousedown)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4965 .mousedown(function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4966 // clicking on the scrollbar causes focus to shift to the body
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4967 // but we can't detect a mouseup or a click immediately afterward
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4968 // so we have to track the next mousedown and close the menu if
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4969 // the user clicks somewhere outside of the autocomplete
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4970 var menuElement = self.menu.element[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4971 if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4972 setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4973 $( document ).one( 'mousedown', function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4974 if ( event.target !== self.element[ 0 ] &&
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4975 event.target !== menuElement &&
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4976 !$.ui.contains( menuElement, event.target ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4977 self.close();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4978 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4979 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4980 }, 1 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4981 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4982
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4983 // use another timeout to make sure the blur-event-handler on the input was already triggered
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4984 setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4985 clearTimeout( self.closing );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4986 }, 13);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4987 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4988 .menu({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4989 focus: function( event, ui ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4990 var item = ui.item.data( "item.autocomplete" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4991 if ( false !== self._trigger( "focus", event, { item: item } ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4992 // use value to match what will end up in the input, if it was a key event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4993 if ( /^key/.test(event.originalEvent.type) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4994 self.element.val( item.value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4995 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4996 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4997 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4998 selected: function( event, ui ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4999 var item = ui.item.data( "item.autocomplete" ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5000 previous = self.previous;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5001
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5002 // only trigger when focus was lost (click on menu)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5003 if ( self.element[0] !== doc.activeElement ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5004 self.element.focus();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5005 self.previous = previous;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5006 // #6109 - IE triggers two focus events and the second
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5007 // is asynchronous, so we need to reset the previous
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5008 // term synchronously and asynchronously :-(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5009 setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5010 self.previous = previous;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5011 self.selectedItem = item;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5012 }, 1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5013 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5014
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5015 if ( false !== self._trigger( "select", event, { item: item } ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5016 self.element.val( item.value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5017 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5018 // reset the term after the select event
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5019 // this allows custom select handling to work properly
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5020 self.term = self.element.val();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5021
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5022 self.close( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5023 self.selectedItem = item;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5024 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5025 blur: function( event, ui ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5026 // don't set the value of the text field if it's already correct
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5027 // this prevents moving the cursor unnecessarily
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5028 if ( self.menu.element.is(":visible") &&
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5029 ( self.element.val() !== self.term ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5030 self.element.val( self.term );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5031 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5032 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5033 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5034 .zIndex( this.element.zIndex() + 1 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5035 // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5036 .css({ top: 0, left: 0 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5037 .hide()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5038 .data( "menu" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5039 if ( $.fn.bgiframe ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5040 this.menu.element.bgiframe();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5041 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5042 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5043
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5044 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5045 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5046 .removeClass( "ui-autocomplete-input" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5047 .removeAttr( "autocomplete" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5048 .removeAttr( "role" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5049 .removeAttr( "aria-autocomplete" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5050 .removeAttr( "aria-haspopup" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5051 this.menu.element.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5052 $.Widget.prototype.destroy.call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5053 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5054
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5055 _setOption: function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5056 $.Widget.prototype._setOption.apply( this, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5057 if ( key === "source" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5058 this._initSource();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5059 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5060 if ( key === "appendTo" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5061 this.menu.element.appendTo( $( value || "body", this.element[0].ownerDocument )[0] )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5062 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5063 if ( key === "disabled" && value && this.xhr ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5064 this.xhr.abort();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5065 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5066 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5067
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5068 _initSource: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5069 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5070 array,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5071 url;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5072 if ( $.isArray(this.options.source) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5073 array = this.options.source;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5074 this.source = function( request, response ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5075 response( $.ui.autocomplete.filter(array, request.term) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5076 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5077 } else if ( typeof this.options.source === "string" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5078 url = this.options.source;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5079 this.source = function( request, response ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5080 if ( self.xhr ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5081 self.xhr.abort();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5082 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5083 self.xhr = $.ajax({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5084 url: url,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5085 data: request,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5086 dataType: "json",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5087 autocompleteRequest: ++requestIndex,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5088 success: function( data, status ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5089 if ( this.autocompleteRequest === requestIndex ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5090 response( data );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5091 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5092 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5093 error: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5094 if ( this.autocompleteRequest === requestIndex ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5095 response( [] );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5096 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5097 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5098 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5099 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5100 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5101 this.source = this.options.source;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5102 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5103 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5104
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5105 search: function( value, event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5106 value = value != null ? value : this.element.val();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5107
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5108 // always save the actual value, not the one passed as an argument
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5109 this.term = this.element.val();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5110
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5111 if ( value.length < this.options.minLength ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5112 return this.close( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5113 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5114
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5115 clearTimeout( this.closing );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5116 if ( this._trigger( "search", event ) === false ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5117 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5118 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5119
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5120 return this._search( value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5121 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5122
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5123 _search: function( value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5124 this.pending++;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5125 this.element.addClass( "ui-autocomplete-loading" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5126
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5127 this.source( { term: value }, this.response );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5128 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5129
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5130 _response: function( content ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5131 if ( !this.options.disabled && content && content.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5132 content = this._normalize( content );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5133 this._suggest( content );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5134 this._trigger( "open" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5135 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5136 this.close();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5137 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5138 this.pending--;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5139 if ( !this.pending ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5140 this.element.removeClass( "ui-autocomplete-loading" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5141 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5142 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5143
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5144 close: function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5145 clearTimeout( this.closing );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5146 if ( this.menu.element.is(":visible") ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5147 this.menu.element.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5148 this.menu.deactivate();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5149 this._trigger( "close", event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5150 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5151 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5152
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5153 _change: function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5154 if ( this.previous !== this.element.val() ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5155 this._trigger( "change", event, { item: this.selectedItem } );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5156 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5157 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5158
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5159 _normalize: function( items ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5160 // assume all items have the right format when the first item is complete
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5161 if ( items.length && items[0].label && items[0].value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5162 return items;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5163 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5164 return $.map( items, function(item) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5165 if ( typeof item === "string" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5166 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5167 label: item,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5168 value: item
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5169 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5170 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5171 return $.extend({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5172 label: item.label || item.value,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5173 value: item.value || item.label
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5174 }, item );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5175 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5176 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5177
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5178 _suggest: function( items ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5179 var ul = this.menu.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5180 .empty()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5181 .zIndex( this.element.zIndex() + 1 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5182 this._renderMenu( ul, items );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5183 // TODO refresh should check if the active item is still in the dom, removing the need for a manual deactivate
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5184 this.menu.deactivate();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5185 this.menu.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5186
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5187 // size and position menu
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5188 ul.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5189 this._resizeMenu();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5190 ul.position( $.extend({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5191 of: this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5192 }, this.options.position ));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5193
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5194 if ( this.options.autoFocus ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5195 this.menu.next( new $.Event("mouseover") );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5196 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5197 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5198
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5199 _resizeMenu: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5200 var ul = this.menu.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5201 ul.outerWidth( Math.max(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5202 ul.width( "" ).outerWidth(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5203 this.element.outerWidth()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5204 ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5205 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5206
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5207 _renderMenu: function( ul, items ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5208 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5209 $.each( items, function( index, item ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5210 self._renderItem( ul, item );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5211 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5212 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5213
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5214 _renderItem: function( ul, item) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5215 return $( "<li></li>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5216 .data( "item.autocomplete", item )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5217 .append( $( "<a></a>" ).text( item.label ) )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5218 .appendTo( ul );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5219 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5220
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5221 _move: function( direction, event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5222 if ( !this.menu.element.is(":visible") ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5223 this.search( null, event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5224 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5225 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5226 if ( this.menu.first() && /^previous/.test(direction) ||
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5227 this.menu.last() && /^next/.test(direction) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5228 this.element.val( this.term );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5229 this.menu.deactivate();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5230 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5231 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5232 this.menu[ direction ]( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5233 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5234
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5235 widget: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5236 return this.menu.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5237 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5238 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5239
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5240 $.extend( $.ui.autocomplete, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5241 escapeRegex: function( value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5242 return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5243 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5244 filter: function(array, term) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5245 var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5246 return $.grep( array, function(value) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5247 return matcher.test( value.label || value.value || value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5248 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5249 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5250 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5251
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5252 }( jQuery ));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5253
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5254 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5255 * jQuery UI Menu (not officially released)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5256 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5257 * This widget isn't yet finished and the API is subject to change. We plan to finish
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5258 * it for the next release. You're welcome to give it a try anyway and give us feedback,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5259 * as long as you're okay with migrating your code later on. We can help with that, too.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5260 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5261 * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5262 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5263 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5264 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5265 * http://docs.jquery.com/UI/Menu
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5266 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5267 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5268 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5269 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5270 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5271 (function($) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5272
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5273 $.widget("ui.menu", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5274 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5275 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5276 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5277 .addClass("ui-menu ui-widget ui-widget-content ui-corner-all")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5278 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5279 role: "listbox",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5280 "aria-activedescendant": "ui-active-menuitem"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5281 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5282 .click(function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5283 if ( !$( event.target ).closest( ".ui-menu-item a" ).length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5284 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5285 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5286 // temporary
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5287 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5288 self.select( event );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5289 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5290 this.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5291 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5292
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5293 refresh: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5294 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5295
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5296 // don't refresh list items that are already adapted
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5297 var items = this.element.children("li:not(.ui-menu-item):has(a)")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5298 .addClass("ui-menu-item")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5299 .attr("role", "menuitem");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5300
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5301 items.children("a")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5302 .addClass("ui-corner-all")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5303 .attr("tabindex", -1)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5304 // mouseenter doesn't work with event delegation
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5305 .mouseenter(function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5306 self.activate( event, $(this).parent() );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5307 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5308 .mouseleave(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5309 self.deactivate();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5310 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5311 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5312
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5313 activate: function( event, item ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5314 this.deactivate();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5315 if (this.hasScroll()) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5316 var offset = item.offset().top - this.element.offset().top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5317 scroll = this.element.attr("scrollTop"),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5318 elementHeight = this.element.height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5319 if (offset < 0) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5320 this.element.attr("scrollTop", scroll + offset);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5321 } else if (offset >= elementHeight) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5322 this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5323 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5324 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5325 this.active = item.eq(0)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5326 .children("a")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5327 .addClass("ui-state-hover")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5328 .attr("id", "ui-active-menuitem")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5329 .end();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5330 this._trigger("focus", event, { item: item });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5331 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5332
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5333 deactivate: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5334 if (!this.active) { return; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5335
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5336 this.active.children("a")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5337 .removeClass("ui-state-hover")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5338 .removeAttr("id");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5339 this._trigger("blur");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5340 this.active = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5341 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5342
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5343 next: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5344 this.move("next", ".ui-menu-item:first", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5345 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5346
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5347 previous: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5348 this.move("prev", ".ui-menu-item:last", event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5349 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5350
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5351 first: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5352 return this.active && !this.active.prevAll(".ui-menu-item").length;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5353 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5354
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5355 last: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5356 return this.active && !this.active.nextAll(".ui-menu-item").length;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5357 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5358
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5359 move: function(direction, edge, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5360 if (!this.active) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5361 this.activate(event, this.element.children(edge));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5362 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5363 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5364 var next = this.active[direction + "All"](".ui-menu-item").eq(0);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5365 if (next.length) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5366 this.activate(event, next);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5367 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5368 this.activate(event, this.element.children(edge));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5369 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5370 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5371
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5372 // TODO merge with previousPage
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5373 nextPage: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5374 if (this.hasScroll()) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5375 // TODO merge with no-scroll-else
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5376 if (!this.active || this.last()) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5377 this.activate(event, this.element.children(".ui-menu-item:first"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5378 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5379 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5380 var base = this.active.offset().top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5381 height = this.element.height(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5382 result = this.element.children(".ui-menu-item").filter(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5383 var close = $(this).offset().top - base - height + $(this).height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5384 // TODO improve approximation
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5385 return close < 10 && close > -10;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5386 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5387
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5388 // TODO try to catch this earlier when scrollTop indicates the last page anyway
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5389 if (!result.length) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5390 result = this.element.children(".ui-menu-item:last");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5391 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5392 this.activate(event, result);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5393 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5394 this.activate(event, this.element.children(".ui-menu-item")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5395 .filter(!this.active || this.last() ? ":first" : ":last"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5396 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5397 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5398
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5399 // TODO merge with nextPage
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5400 previousPage: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5401 if (this.hasScroll()) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5402 // TODO merge with no-scroll-else
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5403 if (!this.active || this.first()) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5404 this.activate(event, this.element.children(".ui-menu-item:last"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5405 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5406 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5407
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5408 var base = this.active.offset().top,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5409 height = this.element.height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5410 result = this.element.children(".ui-menu-item").filter(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5411 var close = $(this).offset().top - base + height - $(this).height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5412 // TODO improve approximation
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5413 return close < 10 && close > -10;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5414 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5415
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5416 // TODO try to catch this earlier when scrollTop indicates the last page anyway
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5417 if (!result.length) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5418 result = this.element.children(".ui-menu-item:first");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5419 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5420 this.activate(event, result);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5421 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5422 this.activate(event, this.element.children(".ui-menu-item")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5423 .filter(!this.active || this.first() ? ":last" : ":first"));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5424 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5425 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5426
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5427 hasScroll: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5428 return this.element.height() < this.element.attr("scrollHeight");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5429 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5430
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5431 select: function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5432 this._trigger("selected", event, { item: this.active });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5433 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5434 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5435
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5436 }(jQuery));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5437 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5438 * jQuery UI Button 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5439 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5440 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5441 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5442 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5443 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5444 * http://docs.jquery.com/UI/Button
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5445 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5446 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5447 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5448 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5449 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5450 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5451
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5452 var lastActive,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5453 baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5454 stateClasses = "ui-state-hover ui-state-active ",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5455 typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5456 formResetHandler = function( event ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5457 $( ":ui-button", event.target.form ).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5458 var inst = $( this ).data( "button" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5459 setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5460 inst.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5461 }, 1 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5462 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5463 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5464 radioGroup = function( radio ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5465 var name = radio.name,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5466 form = radio.form,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5467 radios = $( [] );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5468 if ( name ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5469 if ( form ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5470 radios = $( form ).find( "[name='" + name + "']" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5471 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5472 radios = $( "[name='" + name + "']", radio.ownerDocument )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5473 .filter(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5474 return !this.form;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5475 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5476 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5477 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5478 return radios;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5479 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5480
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5481 $.widget( "ui.button", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5482 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5483 disabled: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5484 text: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5485 label: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5486 icons: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5487 primary: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5488 secondary: null
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5489 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5490 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5491 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5492 this.element.closest( "form" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5493 .unbind( "reset.button" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5494 .bind( "reset.button", formResetHandler );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5495
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5496 if ( typeof this.options.disabled !== "boolean" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5497 this.options.disabled = this.element.attr( "disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5498 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5499
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5500 this._determineButtonType();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5501 this.hasTitle = !!this.buttonElement.attr( "title" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5502
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5503 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5504 options = this.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5505 toggleButton = this.type === "checkbox" || this.type === "radio",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5506 hoverClass = "ui-state-hover" + ( !toggleButton ? " ui-state-active" : "" ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5507 focusClass = "ui-state-focus";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5508
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5509 if ( options.label === null ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5510 options.label = this.buttonElement.html();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5511 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5512
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5513 if ( this.element.is( ":disabled" ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5514 options.disabled = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5515 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5516
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5517 this.buttonElement
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5518 .addClass( baseClasses )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5519 .attr( "role", "button" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5520 .bind( "mouseenter.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5521 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5522 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5523 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5524 $( this ).addClass( "ui-state-hover" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5525 if ( this === lastActive ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5526 $( this ).addClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5527 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5528 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5529 .bind( "mouseleave.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5530 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5531 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5532 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5533 $( this ).removeClass( hoverClass );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5534 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5535 .bind( "focus.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5536 // no need to check disabled, focus won't be triggered anyway
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5537 $( this ).addClass( focusClass );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5538 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5539 .bind( "blur.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5540 $( this ).removeClass( focusClass );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5541 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5542
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5543 if ( toggleButton ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5544 this.element.bind( "change.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5545 self.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5546 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5547 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5548
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5549 if ( this.type === "checkbox" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5550 this.buttonElement.bind( "click.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5551 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5552 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5553 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5554 $( this ).toggleClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5555 self.buttonElement.attr( "aria-pressed", self.element[0].checked );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5556 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5557 } else if ( this.type === "radio" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5558 this.buttonElement.bind( "click.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5559 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5560 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5561 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5562 $( this ).addClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5563 self.buttonElement.attr( "aria-pressed", true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5564
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5565 var radio = self.element[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5566 radioGroup( radio )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5567 .not( radio )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5568 .map(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5569 return $( this ).button( "widget" )[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5570 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5571 .removeClass( "ui-state-active" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5572 .attr( "aria-pressed", false );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5573 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5574 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5575 this.buttonElement
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5576 .bind( "mousedown.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5577 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5578 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5579 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5580 $( this ).addClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5581 lastActive = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5582 $( document ).one( "mouseup", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5583 lastActive = null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5584 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5585 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5586 .bind( "mouseup.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5587 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5588 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5589 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5590 $( this ).removeClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5591 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5592 .bind( "keydown.button", function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5593 if ( options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5594 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5595 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5596 if ( event.keyCode == $.ui.keyCode.SPACE || event.keyCode == $.ui.keyCode.ENTER ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5597 $( this ).addClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5598 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5599 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5600 .bind( "keyup.button", function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5601 $( this ).removeClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5602 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5603
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5604 if ( this.buttonElement.is("a") ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5605 this.buttonElement.keyup(function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5606 if ( event.keyCode === $.ui.keyCode.SPACE ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5607 // TODO pass through original event correctly (just as 2nd argument doesn't work)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5608 $( this ).click();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5609 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5610 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5611 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5612 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5613
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5614 // TODO: pull out $.Widget's handling for the disabled option into
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5615 // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5616 // be overridden by individual plugins
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5617 this._setOption( "disabled", options.disabled );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5618 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5619
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5620 _determineButtonType: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5621
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5622 if ( this.element.is(":checkbox") ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5623 this.type = "checkbox";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5624 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5625 if ( this.element.is(":radio") ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5626 this.type = "radio";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5627 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5628 if ( this.element.is("input") ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5629 this.type = "input";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5630 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5631 this.type = "button";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5632 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5633 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5634 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5635
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5636 if ( this.type === "checkbox" || this.type === "radio" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5637 // we don't search against the document in case the element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5638 // is disconnected from the DOM
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5639 var ancestor = this.element.parents().filter(":last"),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5640 labelSelector = "label[for=" + this.element.attr("id") + "]";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5641 this.buttonElement = ancestor.find( labelSelector );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5642 if ( !this.buttonElement.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5643 ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5644 this.buttonElement = ancestor.filter( labelSelector );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5645 if ( !this.buttonElement.length ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5646 this.buttonElement = ancestor.find( labelSelector );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5647 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5648 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5649 this.element.addClass( "ui-helper-hidden-accessible" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5650
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5651 var checked = this.element.is( ":checked" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5652 if ( checked ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5653 this.buttonElement.addClass( "ui-state-active" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5654 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5655 this.buttonElement.attr( "aria-pressed", checked );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5656 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5657 this.buttonElement = this.element;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5658 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5659 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5660
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5661 widget: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5662 return this.buttonElement;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5663 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5664
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5665 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5666 this.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5667 .removeClass( "ui-helper-hidden-accessible" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5668 this.buttonElement
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5669 .removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5670 .removeAttr( "role" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5671 .removeAttr( "aria-pressed" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5672 .html( this.buttonElement.find(".ui-button-text").html() );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5673
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5674 if ( !this.hasTitle ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5675 this.buttonElement.removeAttr( "title" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5676 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5677
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5678 $.Widget.prototype.destroy.call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5679 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5680
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5681 _setOption: function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5682 $.Widget.prototype._setOption.apply( this, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5683 if ( key === "disabled" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5684 if ( value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5685 this.element.attr( "disabled", true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5686 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5687 this.element.removeAttr( "disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5688 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5689 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5690 this._resetButton();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5691 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5692
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5693 refresh: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5694 var isDisabled = this.element.is( ":disabled" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5695 if ( isDisabled !== this.options.disabled ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5696 this._setOption( "disabled", isDisabled );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5697 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5698 if ( this.type === "radio" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5699 radioGroup( this.element[0] ).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5700 if ( $( this ).is( ":checked" ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5701 $( this ).button( "widget" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5702 .addClass( "ui-state-active" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5703 .attr( "aria-pressed", true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5704 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5705 $( this ).button( "widget" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5706 .removeClass( "ui-state-active" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5707 .attr( "aria-pressed", false );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5708 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5709 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5710 } else if ( this.type === "checkbox" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5711 if ( this.element.is( ":checked" ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5712 this.buttonElement
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5713 .addClass( "ui-state-active" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5714 .attr( "aria-pressed", true );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5715 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5716 this.buttonElement
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5717 .removeClass( "ui-state-active" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5718 .attr( "aria-pressed", false );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5719 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5720 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5721 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5722
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5723 _resetButton: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5724 if ( this.type === "input" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5725 if ( this.options.label ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5726 this.element.val( this.options.label );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5727 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5728 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5729 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5730 var buttonElement = this.buttonElement.removeClass( typeClasses ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5731 buttonText = $( "<span></span>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5732 .addClass( "ui-button-text" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5733 .html( this.options.label )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5734 .appendTo( buttonElement.empty() )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5735 .text(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5736 icons = this.options.icons,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5737 multipleIcons = icons.primary && icons.secondary,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5738 buttonClasses = [];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5739
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5740 if ( icons.primary || icons.secondary ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5741 if ( this.options.text ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5742 buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5743 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5744
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5745 if ( icons.primary ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5746 buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5747 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5748
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5749 if ( icons.secondary ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5750 buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5751 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5752
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5753 if ( !this.options.text ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5754 buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5755
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5756 if ( !this.hasTitle ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5757 buttonElement.attr( "title", buttonText );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5758 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5759 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5760 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5761 buttonClasses.push( "ui-button-text-only" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5762 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5763 buttonElement.addClass( buttonClasses.join( " " ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5764 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5765 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5766
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5767 $.widget( "ui.buttonset", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5768 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5769 items: ":button, :submit, :reset, :checkbox, :radio, a, :data(button)"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5770 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5771
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5772 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5773 this.element.addClass( "ui-buttonset" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5774 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5775
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5776 _init: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5777 this.refresh();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5778 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5779
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5780 _setOption: function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5781 if ( key === "disabled" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5782 this.buttons.button( "option", key, value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5783 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5784
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5785 $.Widget.prototype._setOption.apply( this, arguments );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5786 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5787
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5788 refresh: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5789 this.buttons = this.element.find( this.options.items )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5790 .filter( ":ui-button" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5791 .button( "refresh" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5792 .end()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5793 .not( ":ui-button" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5794 .button()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5795 .end()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5796 .map(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5797 return $( this ).button( "widget" )[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5798 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5799 .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5800 .filter( ":first" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5801 .addClass( "ui-corner-left" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5802 .end()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5803 .filter( ":last" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5804 .addClass( "ui-corner-right" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5805 .end()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5806 .end();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5807 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5808
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5809 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5810 this.element.removeClass( "ui-buttonset" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5811 this.buttons
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5812 .map(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5813 return $( this ).button( "widget" )[ 0 ];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5814 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5815 .removeClass( "ui-corner-left ui-corner-right" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5816 .end()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5817 .button( "destroy" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5818
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5819 $.Widget.prototype.destroy.call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5820 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5821 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5822
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5823 }( jQuery ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5824 /*
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5825 * jQuery UI Dialog 1.8.11
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5826 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5827 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5828 * Dual licensed under the MIT or GPL Version 2 licenses.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5829 * http://jquery.org/license
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5830 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5831 * http://docs.jquery.com/UI/Dialog
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5832 *
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5833 * Depends:
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5834 * jquery.ui.core.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5835 * jquery.ui.widget.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5836 * jquery.ui.button.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5837 * jquery.ui.draggable.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5838 * jquery.ui.mouse.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5839 * jquery.ui.position.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5840 * jquery.ui.resizable.js
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5841 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5842 (function( $, undefined ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5843
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5844 var uiDialogClasses =
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5845 'ui-dialog ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5846 'ui-widget ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5847 'ui-widget-content ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5848 'ui-corner-all ',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5849 sizeRelatedOptions = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5850 buttons: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5851 height: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5852 maxHeight: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5853 maxWidth: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5854 minHeight: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5855 minWidth: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5856 width: true
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5857 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5858 resizableRelatedOptions = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5859 maxHeight: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5860 maxWidth: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5861 minHeight: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5862 minWidth: true
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5863 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5864
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5865 $.widget("ui.dialog", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5866 options: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5867 autoOpen: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5868 buttons: {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5869 closeOnEscape: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5870 closeText: 'close',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5871 dialogClass: '',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5872 draggable: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5873 hide: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5874 height: 'auto',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5875 maxHeight: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5876 maxWidth: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5877 minHeight: 150,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5878 minWidth: 150,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5879 modal: false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5880 position: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5881 my: 'center',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5882 at: 'center',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5883 collision: 'fit',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5884 // ensure that the titlebar is never outside the document
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5885 using: function(pos) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5886 var topOffset = $(this).css(pos).offset().top;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5887 if (topOffset < 0) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5888 $(this).css('top', pos.top - topOffset);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5889 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5890 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5891 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5892 resizable: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5893 show: null,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5894 stack: true,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5895 title: '',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5896 width: 300,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5897 zIndex: 1000
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5898 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5899
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5900 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5901 this.originalTitle = this.element.attr('title');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5902 // #5742 - .attr() might return a DOMElement
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5903 if ( typeof this.originalTitle !== "string" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5904 this.originalTitle = "";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5905 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5906
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5907 this.options.title = this.options.title || this.originalTitle;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5908 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5909 options = self.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5910
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5911 title = options.title || '&#160;',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5912 titleId = $.ui.dialog.getTitleId(self.element),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5913
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5914 uiDialog = (self.uiDialog = $('<div></div>'))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5915 .appendTo(document.body)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5916 .hide()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5917 .addClass(uiDialogClasses + options.dialogClass)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5918 .css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5919 zIndex: options.zIndex
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5920 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5921 // setting tabIndex makes the div focusable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5922 // setting outline to 0 prevents a border on focus in Mozilla
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5923 .attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5924 if (options.closeOnEscape && event.keyCode &&
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5925 event.keyCode === $.ui.keyCode.ESCAPE) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5926
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5927 self.close(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5928 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5929 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5930 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5931 .attr({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5932 role: 'dialog',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5933 'aria-labelledby': titleId
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5934 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5935 .mousedown(function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5936 self.moveToTop(false, event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5937 }),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5938
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5939 uiDialogContent = self.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5940 .show()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5941 .removeAttr('title')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5942 .addClass(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5943 'ui-dialog-content ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5944 'ui-widget-content')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5945 .appendTo(uiDialog),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5946
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5947 uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>'))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5948 .addClass(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5949 'ui-dialog-titlebar ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5950 'ui-widget-header ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5951 'ui-corner-all ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5952 'ui-helper-clearfix'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5953 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5954 .prependTo(uiDialog),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5955
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5956 uiDialogTitlebarClose = $('<a href="#"></a>')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5957 .addClass(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5958 'ui-dialog-titlebar-close ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5959 'ui-corner-all'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5960 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5961 .attr('role', 'button')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5962 .hover(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5963 function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5964 uiDialogTitlebarClose.addClass('ui-state-hover');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5965 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5966 function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5967 uiDialogTitlebarClose.removeClass('ui-state-hover');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5968 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5969 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5970 .focus(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5971 uiDialogTitlebarClose.addClass('ui-state-focus');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5972 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5973 .blur(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5974 uiDialogTitlebarClose.removeClass('ui-state-focus');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5975 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5976 .click(function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5977 self.close(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5978 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5979 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5980 .appendTo(uiDialogTitlebar),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5981
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5982 uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>'))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5983 .addClass(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5984 'ui-icon ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5985 'ui-icon-closethick'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5986 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5987 .text(options.closeText)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5988 .appendTo(uiDialogTitlebarClose),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5989
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5990 uiDialogTitle = $('<span></span>')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5991 .addClass('ui-dialog-title')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5992 .attr('id', titleId)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5993 .html(title)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5994 .prependTo(uiDialogTitlebar);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5995
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5996 //handling of deprecated beforeclose (vs beforeClose) option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5997 //Ticket #4669 http://dev.jqueryui.com/ticket/4669
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5998 //TODO: remove in 1.9pre
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5999 if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6000 options.beforeClose = options.beforeclose;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6001 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6002
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6003 uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6004
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6005 if (options.draggable && $.fn.draggable) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6006 self._makeDraggable();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6007 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6008 if (options.resizable && $.fn.resizable) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6009 self._makeResizable();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6010 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6011
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6012 self._createButtons(options.buttons);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6013 self._isOpen = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6014
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6015 if ($.fn.bgiframe) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6016 uiDialog.bgiframe();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6017 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6018 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6019
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6020 _init: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6021 if ( this.options.autoOpen ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6022 this.open();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6023 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6024 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6025
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6026 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6027 var self = this;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6028
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6029 if (self.overlay) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6030 self.overlay.destroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6031 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6032 self.uiDialog.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6033 self.element
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6034 .unbind('.dialog')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6035 .removeData('dialog')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6036 .removeClass('ui-dialog-content ui-widget-content')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6037 .hide().appendTo('body');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6038 self.uiDialog.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6039
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6040 if (self.originalTitle) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6041 self.element.attr('title', self.originalTitle);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6042 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6043
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6044 return self;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6045 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6046
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6047 widget: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6048 return this.uiDialog;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6049 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6050
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6051 close: function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6052 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6053 maxZ, thisZ;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6054
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6055 if (false === self._trigger('beforeClose', event)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6056 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6057 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6058
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6059 if (self.overlay) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6060 self.overlay.destroy();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6061 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6062 self.uiDialog.unbind('keypress.ui-dialog');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6063
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6064 self._isOpen = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6065
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6066 if (self.options.hide) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6067 self.uiDialog.hide(self.options.hide, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6068 self._trigger('close', event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6069 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6070 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6071 self.uiDialog.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6072 self._trigger('close', event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6073 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6074
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6075 $.ui.dialog.overlay.resize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6076
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6077 // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6078 if (self.options.modal) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6079 maxZ = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6080 $('.ui-dialog').each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6081 if (this !== self.uiDialog[0]) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6082 thisZ = $(this).css('z-index');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6083 if(!isNaN(thisZ)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6084 maxZ = Math.max(maxZ, thisZ);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6085 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6086 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6087 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6088 $.ui.dialog.maxZ = maxZ;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6089 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6090
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6091 return self;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6092 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6093
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6094 isOpen: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6095 return this._isOpen;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6096 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6097
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6098 // the force parameter allows us to move modal dialogs to their correct
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6099 // position on open
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6100 moveToTop: function(force, event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6101 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6102 options = self.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6103 saveScroll;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6104
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6105 if ((options.modal && !force) ||
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6106 (!options.stack && !options.modal)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6107 return self._trigger('focus', event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6108 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6109
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6110 if (options.zIndex > $.ui.dialog.maxZ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6111 $.ui.dialog.maxZ = options.zIndex;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6112 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6113 if (self.overlay) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6114 $.ui.dialog.maxZ += 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6115 self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6116 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6117
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6118 //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6119 // http://ui.jquery.com/bugs/ticket/3193
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6120 saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6121 $.ui.dialog.maxZ += 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6122 self.uiDialog.css('z-index', $.ui.dialog.maxZ);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6123 self.element.attr(saveScroll);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6124 self._trigger('focus', event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6125
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6126 return self;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6127 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6128
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6129 open: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6130 if (this._isOpen) { return; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6131
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6132 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6133 options = self.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6134 uiDialog = self.uiDialog;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6135
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6136 self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6137 self._size();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6138 self._position(options.position);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6139 uiDialog.show(options.show);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6140 self.moveToTop(true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6141
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6142 // prevent tabbing out of modal dialogs
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6143 if (options.modal) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6144 uiDialog.bind('keypress.ui-dialog', function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6145 if (event.keyCode !== $.ui.keyCode.TAB) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6146 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6147 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6148
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6149 var tabbables = $(':tabbable', this),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6150 first = tabbables.filter(':first'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6151 last = tabbables.filter(':last');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6152
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6153 if (event.target === last[0] && !event.shiftKey) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6154 first.focus(1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6155 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6156 } else if (event.target === first[0] && event.shiftKey) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6157 last.focus(1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6158 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6159 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6160 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6161 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6162
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6163 // set focus to the first tabbable element in the content area or the first button
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6164 // if there are no tabbable elements, set focus on the dialog itself
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6165 $(self.element.find(':tabbable').get().concat(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6166 uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6167 uiDialog.get()))).eq(0).focus();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6168
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6169 self._isOpen = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6170 self._trigger('open');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6171
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6172 return self;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6173 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6174
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6175 _createButtons: function(buttons) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6176 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6177 hasButtons = false,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6178 uiDialogButtonPane = $('<div></div>')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6179 .addClass(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6180 'ui-dialog-buttonpane ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6181 'ui-widget-content ' +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6182 'ui-helper-clearfix'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6183 ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6184 uiButtonSet = $( "<div></div>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6185 .addClass( "ui-dialog-buttonset" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6186 .appendTo( uiDialogButtonPane );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6187
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6188 // if we already have a button pane, remove it
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6189 self.uiDialog.find('.ui-dialog-buttonpane').remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6190
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6191 if (typeof buttons === 'object' && buttons !== null) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6192 $.each(buttons, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6193 return !(hasButtons = true);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6194 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6195 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6196 if (hasButtons) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6197 $.each(buttons, function(name, props) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6198 props = $.isFunction( props ) ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6199 { click: props, text: name } :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6200 props;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6201 var button = $('<button type="button"></button>')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6202 .attr( props, true )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6203 .unbind('click')
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6204 .click(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6205 props.click.apply(self.element[0], arguments);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6206 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6207 .appendTo(uiButtonSet);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6208 if ($.fn.button) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6209 button.button();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6210 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6211 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6212 uiDialogButtonPane.appendTo(self.uiDialog);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6213 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6214 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6215
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6216 _makeDraggable: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6217 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6218 options = self.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6219 doc = $(document),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6220 heightBeforeDrag;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6221
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6222 function filteredUi(ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6223 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6224 position: ui.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6225 offset: ui.offset
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6226 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6227 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6228
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6229 self.uiDialog.draggable({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6230 cancel: '.ui-dialog-content, .ui-dialog-titlebar-close',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6231 handle: '.ui-dialog-titlebar',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6232 containment: 'document',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6233 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6234 heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6235 $(this).height($(this).height()).addClass("ui-dialog-dragging");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6236 self._trigger('dragStart', event, filteredUi(ui));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6237 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6238 drag: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6239 self._trigger('drag', event, filteredUi(ui));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6240 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6241 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6242 options.position = [ui.position.left - doc.scrollLeft(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6243 ui.position.top - doc.scrollTop()];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6244 $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6245 self._trigger('dragStop', event, filteredUi(ui));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6246 $.ui.dialog.overlay.resize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6247 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6248 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6249 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6250
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6251 _makeResizable: function(handles) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6252 handles = (handles === undefined ? this.options.resizable : handles);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6253 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6254 options = self.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6255 // .ui-resizable has position: relative defined in the stylesheet
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6256 // but dialogs have to use absolute or fixed positioning
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6257 position = self.uiDialog.css('position'),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6258 resizeHandles = (typeof handles === 'string' ?
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6259 handles :
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6260 'n,e,s,w,se,sw,ne,nw'
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6261 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6262
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6263 function filteredUi(ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6264 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6265 originalPosition: ui.originalPosition,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6266 originalSize: ui.originalSize,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6267 position: ui.position,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6268 size: ui.size
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6269 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6270 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6271
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6272 self.uiDialog.resizable({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6273 cancel: '.ui-dialog-content',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6274 containment: 'document',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6275 alsoResize: self.element,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6276 maxWidth: options.maxWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6277 maxHeight: options.maxHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6278 minWidth: options.minWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6279 minHeight: self._minHeight(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6280 handles: resizeHandles,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6281 start: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6282 $(this).addClass("ui-dialog-resizing");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6283 self._trigger('resizeStart', event, filteredUi(ui));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6284 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6285 resize: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6286 self._trigger('resize', event, filteredUi(ui));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6287 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6288 stop: function(event, ui) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6289 $(this).removeClass("ui-dialog-resizing");
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6290 options.height = $(this).height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6291 options.width = $(this).width();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6292 self._trigger('resizeStop', event, filteredUi(ui));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6293 $.ui.dialog.overlay.resize();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6294 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6295 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6296 .css('position', position)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6297 .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6298 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6299
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6300 _minHeight: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6301 var options = this.options;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6302
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6303 if (options.height === 'auto') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6304 return options.minHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6305 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6306 return Math.min(options.minHeight, options.height);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6307 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6308 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6309
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6310 _position: function(position) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6311 var myAt = [],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6312 offset = [0, 0],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6313 isVisible;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6314
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6315 if (position) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6316 // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6317 // if (typeof position == 'string' || $.isArray(position)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6318 // myAt = $.isArray(position) ? position : position.split(' ');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6319
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6320 if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6321 myAt = position.split ? position.split(' ') : [position[0], position[1]];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6322 if (myAt.length === 1) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6323 myAt[1] = myAt[0];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6324 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6325
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6326 $.each(['left', 'top'], function(i, offsetPosition) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6327 if (+myAt[i] === myAt[i]) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6328 offset[i] = myAt[i];
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6329 myAt[i] = offsetPosition;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6330 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6331 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6332
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6333 position = {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6334 my: myAt.join(" "),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6335 at: myAt.join(" "),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6336 offset: offset.join(" ")
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6337 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6338 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6339
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6340 position = $.extend({}, $.ui.dialog.prototype.options.position, position);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6341 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6342 position = $.ui.dialog.prototype.options.position;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6343 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6344
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6345 // need to show the dialog to get the actual offset in the position plugin
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6346 isVisible = this.uiDialog.is(':visible');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6347 if (!isVisible) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6348 this.uiDialog.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6349 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6350 this.uiDialog
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6351 // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6352 .css({ top: 0, left: 0 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6353 .position($.extend({ of: window }, position));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6354 if (!isVisible) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6355 this.uiDialog.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6356 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6357 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6358
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6359 _setOptions: function( options ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6360 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6361 resizableOptions = {},
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6362 resize = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6363
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6364 $.each( options, function( key, value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6365 self._setOption( key, value );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6366
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6367 if ( key in sizeRelatedOptions ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6368 resize = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6369 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6370 if ( key in resizableRelatedOptions ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6371 resizableOptions[ key ] = value;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6372 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6373 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6374
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6375 if ( resize ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6376 this._size();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6377 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6378 if ( this.uiDialog.is( ":data(resizable)" ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6379 this.uiDialog.resizable( "option", resizableOptions );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6380 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6381 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6382
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6383 _setOption: function(key, value){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6384 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6385 uiDialog = self.uiDialog;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6386
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6387 switch (key) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6388 //handling of deprecated beforeclose (vs beforeClose) option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6389 //Ticket #4669 http://dev.jqueryui.com/ticket/4669
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6390 //TODO: remove in 1.9pre
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6391 case "beforeclose":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6392 key = "beforeClose";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6393 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6394 case "buttons":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6395 self._createButtons(value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6396 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6397 case "closeText":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6398 // ensure that we always pass a string
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6399 self.uiDialogTitlebarCloseText.text("" + value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6400 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6401 case "dialogClass":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6402 uiDialog
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6403 .removeClass(self.options.dialogClass)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6404 .addClass(uiDialogClasses + value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6405 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6406 case "disabled":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6407 if (value) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6408 uiDialog.addClass('ui-dialog-disabled');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6409 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6410 uiDialog.removeClass('ui-dialog-disabled');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6411 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6412 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6413 case "draggable":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6414 var isDraggable = uiDialog.is( ":data(draggable)" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6415 if ( isDraggable && !value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6416 uiDialog.draggable( "destroy" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6417 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6418
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6419 if ( !isDraggable && value ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6420 self._makeDraggable();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6421 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6422 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6423 case "position":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6424 self._position(value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6425 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6426 case "resizable":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6427 // currently resizable, becoming non-resizable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6428 var isResizable = uiDialog.is( ":data(resizable)" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6429 if (isResizable && !value) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6430 uiDialog.resizable('destroy');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6431 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6432
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6433 // currently resizable, changing handles
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6434 if (isResizable && typeof value === 'string') {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6435 uiDialog.resizable('option', 'handles', value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6436 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6437
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6438 // currently non-resizable, becoming resizable
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6439 if (!isResizable && value !== false) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6440 self._makeResizable(value);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6441 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6442 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6443 case "title":
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6444 // convert whatever was passed in o a string, for html() to not throw up
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6445 $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6446 break;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6447 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6448
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6449 $.Widget.prototype._setOption.apply(self, arguments);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6450 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6451
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6452 _size: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6453 /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6454 * divs will both have width and height set, so we need to reset them
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6455 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6456 var options = this.options,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6457 nonContentHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6458 minContentHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6459 isVisible = this.uiDialog.is( ":visible" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6460
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6461 // reset content sizing
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6462 this.element.show().css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6463 width: 'auto',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6464 minHeight: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6465 height: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6466 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6467
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6468 if (options.minWidth > options.width) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6469 options.width = options.minWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6470 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6471
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6472 // reset wrapper sizing
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6473 // determine the height of all the non-content elements
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6474 nonContentHeight = this.uiDialog.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6475 height: 'auto',
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6476 width: options.width
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6477 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6478 .height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6479 minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6480
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6481 if ( options.height === "auto" ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6482 // only needed for IE6 support
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6483 if ( $.support.minHeight ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6484 this.element.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6485 minHeight: minContentHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6486 height: "auto"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6487 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6488 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6489 this.uiDialog.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6490 var autoHeight = this.element.css( "height", "auto" ).height();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6491 if ( !isVisible ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6492 this.uiDialog.hide();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6493 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6494 this.element.height( Math.max( autoHeight, minContentHeight ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6495 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6496 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6497 this.element.height( Math.max( options.height - nonContentHeight, 0 ) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6498 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6499
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6500 if (this.uiDialog.is(':data(resizable)')) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6501 this.uiDialog.resizable('option', 'minHeight', this._minHeight());
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6502 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6503 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6504 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6505
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6506 $.extend($.ui.dialog, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6507 version: "1.8.11",
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6508
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6509 uuid: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6510 maxZ: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6511
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6512 getTitleId: function($el) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6513 var id = $el.attr('id');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6514 if (!id) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6515 this.uuid += 1;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6516 id = this.uuid;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6517 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6518 return 'ui-dialog-title-' + id;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6519 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6520
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6521 overlay: function(dialog) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6522 this.$el = $.ui.dialog.overlay.create(dialog);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6523 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6524 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6525
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6526 $.extend($.ui.dialog.overlay, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6527 instances: [],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6528 // reuse old instances due to IE memory leak with alpha transparency (see #5185)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6529 oldInstances: [],
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6530 maxZ: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6531 events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6532 function(event) { return event + '.dialog-overlay'; }).join(' '),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6533 create: function(dialog) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6534 if (this.instances.length === 0) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6535 // prevent use of anchors and inputs
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6536 // we use a setTimeout in case the overlay is created from an
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6537 // event that we're going to be cancelling (see #2804)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6538 setTimeout(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6539 // handle $(el).dialog().dialog('close') (see #4065)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6540 if ($.ui.dialog.overlay.instances.length) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6541 $(document).bind($.ui.dialog.overlay.events, function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6542 // stop events if the z-index of the target is < the z-index of the overlay
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6543 // we cannot return true when we don't want to cancel the event (#3523)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6544 if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6545 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6546 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6547 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6548 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6549 }, 1);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6550
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6551 // allow closing by pressing the escape key
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6552 $(document).bind('keydown.dialog-overlay', function(event) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6553 if (dialog.options.closeOnEscape && event.keyCode &&
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6554 event.keyCode === $.ui.keyCode.ESCAPE) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6555
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6556 dialog.close(event);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6557 event.preventDefault();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6558 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6559 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6560
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6561 // handle window resize
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6562 $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6563 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6564
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6565 var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay'))
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6566 .appendTo(document.body)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6567 .css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6568 width: this.width(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6569 height: this.height()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6570 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6571
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6572 if ($.fn.bgiframe) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6573 $el.bgiframe();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6574 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6575
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6576 this.instances.push($el);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6577 return $el;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6578 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6579
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6580 destroy: function($el) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6581 var indexOf = $.inArray($el, this.instances);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6582 if (indexOf != -1){
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6583 this.oldInstances.push(this.instances.splice(indexOf, 1)[0]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6584 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6585
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6586 if (this.instances.length === 0) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6587 $([document, window]).unbind('.dialog-overlay');
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6588 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6589
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6590 $el.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6591
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6592 // adjust the maxZ to allow other modal dialogs to continue to work (see #4309)
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6593 var maxZ = 0;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6594 $.each(this.instances, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6595 maxZ = Math.max(maxZ, this.css('z-index'));
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6596 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6597 this.maxZ = maxZ;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6598 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6599
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6600 height: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6601 var scrollHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6602 offsetHeight;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6603 // handle IE 6
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6604 if ($.browser.msie && $.browser.version < 7) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6605 scrollHeight = Math.max(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6606 document.documentElement.scrollHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6607 document.body.scrollHeight
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6608 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6609 offsetHeight = Math.max(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6610 document.documentElement.offsetHeight,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6611 document.body.offsetHeight
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6612 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6613
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6614 if (scrollHeight < offsetHeight) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6615 return $(window).height() + 'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6616 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6617 return scrollHeight + 'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6618 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6619 // handle "good" browsers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6620 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6621 return $(document).height() + 'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6622 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6623 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6624
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6625 width: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6626 var scrollWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6627 offsetWidth;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6628 // handle IE 6
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6629 if ($.browser.msie && $.browser.version < 7) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6630 scrollWidth = Math.max(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6631 document.documentElement.scrollWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6632 document.body.scrollWidth
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6633 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6634 offsetWidth = Math.max(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6635 document.documentElement.offsetWidth,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6636 document.body.offsetWidth
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6637 );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6638
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6639 if (scrollWidth < offsetWidth) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6640 return $(window).width() + 'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6641 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6642 return scrollWidth + 'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6643 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6644 // handle "good" browsers
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6645 } else {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6646 return $(document).width() + 'px';
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6647 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6648 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6649
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6650 resize: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6651 /* If the dialog is draggable and the user drags it past the
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6652 * right edge of the window, the document becomes wider so we
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6653 * need to stretch the overlay. If the user then drags the
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6654 * dialog back to the left, the document will become narrower,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6655 * so we need to shrink the overlay to the appropriate size.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6656 * This is handled by shrinking the overlay before setting it
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6657 * to the full document size.
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6658 */
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6659 var $overlays = $([]);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6660 $.each($.ui.dialog.overlay.instances, function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6661 $overlays = $overlays.add(this);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6662 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6663
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6664 $overlays.css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6665 width: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6666 height: 0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6667 }).css({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6668 width: $.ui.dialog.overlay.width(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6669 height: $.ui.dialog.overlay.height()
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6670 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6671 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6672 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6673
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6674 $.extend($.ui.dialog.overlay.prototype, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6675 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6676 $.ui.dialog.overlay.destroy(this.$el);
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6677 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6678 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6679
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6680 }(jQuery));