annotate js/jquery/jquery-ui.js @ 6:4b9ae7d500f9

add example page, modify password popup
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Wed, 14 Oct 2015 11:01:26 +0200
parents 1cf7bb8db5dd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 /*! jQuery UI - v1.10.4 - 2014-01-17
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2 * http://jqueryui.com
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.slider.js, jquery.ui.sortable.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 var uuid = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 runiqueId = /^ui-id-\d+$/;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 // $.ui might exist from components with no dependencies, e.g., $.ui.position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 $.ui = $.ui || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 $.extend( $.ui, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
16
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 keyCode: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 BACKSPACE: 8,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 COMMA: 188,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 DELETE: 46,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 DOWN: 40,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 END: 35,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 ENTER: 13,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 ESCAPE: 27,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 HOME: 36,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 LEFT: 37,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 NUMPAD_ADD: 107,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 NUMPAD_DECIMAL: 110,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 NUMPAD_DIVIDE: 111,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 NUMPAD_ENTER: 108,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 NUMPAD_MULTIPLY: 106,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 NUMPAD_SUBTRACT: 109,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 PAGE_DOWN: 34,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 PAGE_UP: 33,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 PERIOD: 190,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 RIGHT: 39,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 SPACE: 32,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 TAB: 9,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 UP: 38
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
42
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 // plugins
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 $.fn.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 focus: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 return function( delay, fn ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 return typeof delay === "number" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 var elem = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 setTimeout(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 $( elem ).focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 if ( fn ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 fn.call( elem );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 }, delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 }) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 })( $.fn.focus ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
60
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 scrollParent: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 var scrollParent;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 scrollParent = this.parents().filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 }).eq(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 scrollParent = this.parents().filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 }).eq(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
72
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
75
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 zIndex: function( zIndex ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 if ( zIndex !== undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 return this.css( "zIndex", zIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
80
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 if ( this.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 var elem = $( this[ 0 ] ), position, value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 while ( elem.length && elem[ 0 ] !== document ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 // Ignore z-index if position is set to a value where z-index is ignored by the browser
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 // This makes behavior of this function consistent across browsers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 // WebKit always returns auto if the element is positioned
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 position = elem.css( "position" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 if ( position === "absolute" || position === "relative" || position === "fixed" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 // IE returns 0 when zIndex is not specified
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 // other browsers return a string
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 // we ignore the case of nested elements with an explicit value of 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 value = parseInt( elem.css( "zIndex" ), 10 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 if ( !isNaN( value ) && value !== 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 return value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 elem = elem.parent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
101
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 return 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
104
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 uniqueId: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 return this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 if ( !this.id ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 this.id = "ui-id-" + (++uuid);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
112
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 removeUniqueId: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 return this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
115 if ( runiqueId.test( this.id ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
116 $( this ).removeAttr( "id" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
118 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
119 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
121
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 // selectors
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
123 function focusable( element, isTabIndexNotNaN ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
124 var map, mapName, img,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
125 nodeName = element.nodeName.toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
126 if ( "area" === nodeName ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
127 map = element.parentNode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
128 mapName = map.name;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
129 if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 img = $( "img[usemap=#" + mapName + "]" )[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 return !!img && visible( img );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 return ( /input|select|textarea|button|object/.test( nodeName ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 !element.disabled :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 "a" === nodeName ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 element.href || isTabIndexNotNaN :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 isTabIndexNotNaN) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 // the element and all of its ancestors must be visible
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 visible( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
143
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 function visible( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 return $.expr.filters.visible( element ) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
146 !$( element ).parents().addBack().filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 return $.css( this, "visibility" ) === "hidden";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 }).length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
150
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 $.extend( $.expr[ ":" ], {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
152 data: $.expr.createPseudo ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 $.expr.createPseudo(function( dataName ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
154 return function( elem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 return !!$.data( elem, dataName );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
157 }) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
158 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
159 function( elem, i, match ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 return !!$.data( elem, match[ 3 ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
161 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
162
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 focusable: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
164 return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
166
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 tabbable: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 var tabIndex = $.attr( element, "tabindex" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 isTabIndexNaN = isNaN( tabIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
170 return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
171 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
173
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
174 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
176 $.each( [ "Width", "Height" ], function( i, name ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
177 var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 type = name.toLowerCase(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 orig = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
180 innerWidth: $.fn.innerWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
181 innerHeight: $.fn.innerHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 outerWidth: $.fn.outerWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
183 outerHeight: $.fn.outerHeight
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
184 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
185
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 function reduce( elem, size, border, margin ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 $.each( side, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 if ( border ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
191 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 if ( margin ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
194 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
196 return size;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
198
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 $.fn[ "inner" + name ] = function( size ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
200 if ( size === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
201 return orig[ "inner" + name ].call( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
203
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 return this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
205 $( this ).css( type, reduce( this, size ) + "px" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
208
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
209 $.fn[ "outer" + name] = function( size, margin ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
210 if ( typeof size !== "number" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
211 return orig[ "outer" + name ].call( this, size );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
212 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
213
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 return this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 $( this).css( type, reduce( this, size, true, margin ) + "px" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
217 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
218 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
219 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
220
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
221 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
222 if ( !$.fn.addBack ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
223 $.fn.addBack = function( selector ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
224 return this.add( selector == null ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
225 this.prevObject : this.prevObject.filter( selector )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
226 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
229
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
230 // support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
231 if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
232 $.fn.removeData = (function( removeData ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 return function( key ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 if ( arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 return removeData.call( this, $.camelCase( key ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
236 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 return removeData.call( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
239 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
240 })( $.fn.removeData );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
241 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
242
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
243
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
244
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
245
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
246
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
247 // deprecated
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
248 $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
249
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
250 $.support.selectstart = "onselectstart" in document.createElement( "div" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
251 $.fn.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
252 disableSelection: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
253 return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
254 ".ui-disableSelection", function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
255 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
256 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
257 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
258
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
259 enableSelection: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
260 return this.unbind( ".ui-disableSelection" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
261 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
262 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
263
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
264 $.extend( $.ui, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
265 // $.ui.plugin is deprecated. Use $.widget() extensions instead.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
266 plugin: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
267 add: function( module, option, set ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
268 var i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
269 proto = $.ui[ module ].prototype;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
270 for ( i in set ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
271 proto.plugins[ i ] = proto.plugins[ i ] || [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
272 proto.plugins[ i ].push( [ option, set[ i ] ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
273 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
274 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
275 call: function( instance, name, args ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
276 var i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
277 set = instance.plugins[ name ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
278 if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
279 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
280 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
281
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
282 for ( i = 0; i < set.length; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
283 if ( instance.options[ set[ i ][ 0 ] ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
284 set[ i ][ 1 ].apply( instance.element, args );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
285 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
286 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
287 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
288 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
289
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
290 // only used by resizable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
291 hasScroll: function( el, a ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
292
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
293 //If overflow is hidden, the element might have extra content, but the user wants to hide it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
294 if ( $( el ).css( "overflow" ) === "hidden") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
295 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
296 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
297
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
298 var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
299 has = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
300
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
301 if ( el[ scroll ] > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
302 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
303 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
304
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
305 // TODO: determine which cases actually cause this to happen
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
306 // if the element doesn't have the scroll set, see if it's possible to
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
307 // set the scroll
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
308 el[ scroll ] = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
309 has = ( el[ scroll ] > 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
310 el[ scroll ] = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
311 return has;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
312 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
313 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
314
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
315 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
316 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
317
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
318 var uuid = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
319 slice = Array.prototype.slice,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
320 _cleanData = $.cleanData;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
321 $.cleanData = function( elems ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
322 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
323 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
324 $( elem ).triggerHandler( "remove" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
325 // http://bugs.jquery.com/ticket/8235
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
326 } catch( e ) {}
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
327 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
328 _cleanData( elems );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
329 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
330
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
331 $.widget = function( name, base, prototype ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
332 var fullName, existingConstructor, constructor, basePrototype,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
333 // proxiedPrototype allows the provided prototype to remain unmodified
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
334 // so that it can be used as a mixin for multiple widgets (#8876)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
335 proxiedPrototype = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
336 namespace = name.split( "." )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
337
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
338 name = name.split( "." )[ 1 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
339 fullName = namespace + "-" + name;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
340
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
341 if ( !prototype ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
342 prototype = base;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
343 base = $.Widget;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
344 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
345
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
346 // create selector for plugin
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
347 $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
348 return !!$.data( elem, fullName );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
349 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
350
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
351 $[ namespace ] = $[ namespace ] || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
352 existingConstructor = $[ namespace ][ name ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
353 constructor = $[ namespace ][ name ] = function( options, element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
354 // allow instantiation without "new" keyword
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
355 if ( !this._createWidget ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
356 return new constructor( options, element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
357 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
358
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
359 // allow instantiation without initializing for simple inheritance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
360 // must use "new" keyword (the code above always passes args)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
361 if ( arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
362 this._createWidget( options, element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
363 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
364 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
365 // extend with the existing constructor to carry over any static properties
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
366 $.extend( constructor, existingConstructor, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
367 version: prototype.version,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
368 // copy the object used to create the prototype in case we need to
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
369 // redefine the widget later
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
370 _proto: $.extend( {}, prototype ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
371 // track widgets that inherit from this widget in case this widget is
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
372 // redefined after a widget inherits from it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
373 _childConstructors: []
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
374 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
375
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
376 basePrototype = new base();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
377 // we need to make the options hash a property directly on the new instance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
378 // otherwise we'll modify the options hash on the prototype that we're
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
379 // inheriting from
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
380 basePrototype.options = $.widget.extend( {}, basePrototype.options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
381 $.each( prototype, function( prop, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
382 if ( !$.isFunction( value ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
383 proxiedPrototype[ prop ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
384 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
385 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
386 proxiedPrototype[ prop ] = (function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
387 var _super = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
388 return base.prototype[ prop ].apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
389 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
390 _superApply = function( args ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
391 return base.prototype[ prop ].apply( this, args );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
392 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
393 return function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
394 var __super = this._super,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
395 __superApply = this._superApply,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
396 returnValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
397
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
398 this._super = _super;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
399 this._superApply = _superApply;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
400
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
401 returnValue = value.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
402
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
403 this._super = __super;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
404 this._superApply = __superApply;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
405
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
406 return returnValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
407 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
408 })();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
409 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
410 constructor.prototype = $.widget.extend( basePrototype, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
411 // TODO: remove support for widgetEventPrefix
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
412 // always use the name + a colon as the prefix, e.g., draggable:start
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
413 // don't prefix for widgets that aren't DOM-based
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
414 widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
415 }, proxiedPrototype, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
416 constructor: constructor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
417 namespace: namespace,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
418 widgetName: name,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
419 widgetFullName: fullName
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
420 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
421
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
422 // If this widget is being redefined then we need to find all widgets that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
423 // are inheriting from it and redefine all of them so that they inherit from
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
424 // the new version of this widget. We're essentially trying to replace one
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
425 // level in the prototype chain.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
426 if ( existingConstructor ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
427 $.each( existingConstructor._childConstructors, function( i, child ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
428 var childPrototype = child.prototype;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
429
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
430 // redefine the child widget using the same prototype that was
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
431 // originally used, but inherit from the new version of the base
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
432 $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
433 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
434 // remove the list of existing child constructors from the old constructor
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
435 // so the old child constructors can be garbage collected
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
436 delete existingConstructor._childConstructors;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
437 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
438 base._childConstructors.push( constructor );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
439 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
440
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
441 $.widget.bridge( name, constructor );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
442 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
443
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
444 $.widget.extend = function( target ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
445 var input = slice.call( arguments, 1 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
446 inputIndex = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
447 inputLength = input.length,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
448 key,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
449 value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
450 for ( ; inputIndex < inputLength; inputIndex++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
451 for ( key in input[ inputIndex ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
452 value = input[ inputIndex ][ key ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
453 if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
454 // Clone objects
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
455 if ( $.isPlainObject( value ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
456 target[ key ] = $.isPlainObject( target[ key ] ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
457 $.widget.extend( {}, target[ key ], value ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
458 // Don't extend strings, arrays, etc. with objects
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
459 $.widget.extend( {}, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
460 // Copy everything else by reference
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
461 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
462 target[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
463 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
464 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
465 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
466 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
467 return target;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
468 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
469
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
470 $.widget.bridge = function( name, object ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
471 var fullName = object.prototype.widgetFullName || name;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
472 $.fn[ name ] = function( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
473 var isMethodCall = typeof options === "string",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
474 args = slice.call( arguments, 1 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
475 returnValue = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
476
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
477 // allow multiple hashes to be passed on init
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
478 options = !isMethodCall && args.length ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
479 $.widget.extend.apply( null, [ options ].concat(args) ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
480 options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
481
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
482 if ( isMethodCall ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
483 this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
484 var methodValue,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
485 instance = $.data( this, fullName );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
486 if ( !instance ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
487 return $.error( "cannot call methods on " + name + " prior to initialization; " +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
488 "attempted to call method '" + options + "'" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
489 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
490 if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
491 return $.error( "no such method '" + options + "' for " + name + " widget instance" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
492 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
493 methodValue = instance[ options ].apply( instance, args );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
494 if ( methodValue !== instance && methodValue !== undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
495 returnValue = methodValue && methodValue.jquery ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
496 returnValue.pushStack( methodValue.get() ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
497 methodValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
498 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
499 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
500 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
501 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
502 this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
503 var instance = $.data( this, fullName );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
504 if ( instance ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
505 instance.option( options || {} )._init();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
506 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
507 $.data( this, fullName, new object( options, this ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
508 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
509 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
510 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
511
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
512 return returnValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
513 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
514 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
515
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
516 $.Widget = function( /* options, element */ ) {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
517 $.Widget._childConstructors = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
518
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
519 $.Widget.prototype = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
520 widgetName: "widget",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
521 widgetEventPrefix: "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
522 defaultElement: "<div>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
523 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
524 disabled: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
525
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
526 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
527 create: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
528 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
529 _createWidget: function( options, element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
530 element = $( element || this.defaultElement || this )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
531 this.element = $( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
532 this.uuid = uuid++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
533 this.eventNamespace = "." + this.widgetName + this.uuid;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
534 this.options = $.widget.extend( {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
535 this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
536 this._getCreateOptions(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
537 options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
538
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
539 this.bindings = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
540 this.hoverable = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
541 this.focusable = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
542
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
543 if ( element !== this ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
544 $.data( element, this.widgetFullName, this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
545 this._on( true, this.element, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
546 remove: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
547 if ( event.target === element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
548 this.destroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
549 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
550 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
551 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
552 this.document = $( element.style ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
553 // element within the document
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
554 element.ownerDocument :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
555 // element is window or document
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
556 element.document || element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
557 this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
558 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
559
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
560 this._create();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
561 this._trigger( "create", null, this._getCreateEventData() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
562 this._init();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
563 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
564 _getCreateOptions: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
565 _getCreateEventData: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
566 _create: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
567 _init: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
568
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
569 destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
570 this._destroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
571 // we can probably remove the unbind calls in 2.0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
572 // all event bindings should go through this._on()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
573 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
574 .unbind( this.eventNamespace )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
575 // 1.9 BC for #7810
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
576 // TODO remove dual storage
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
577 .removeData( this.widgetName )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
578 .removeData( this.widgetFullName )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
579 // support: jquery <1.6.3
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
580 // http://bugs.jquery.com/ticket/9413
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
581 .removeData( $.camelCase( this.widgetFullName ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
582 this.widget()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
583 .unbind( this.eventNamespace )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
584 .removeAttr( "aria-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
585 .removeClass(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
586 this.widgetFullName + "-disabled " +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
587 "ui-state-disabled" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
588
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
589 // clean up events and states
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
590 this.bindings.unbind( this.eventNamespace );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
591 this.hoverable.removeClass( "ui-state-hover" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
592 this.focusable.removeClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
593 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
594 _destroy: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
596 widget: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
597 return this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
598 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
599
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
600 option: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
601 var options = key,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
602 parts,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
603 curOption,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
604 i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
605
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
606 if ( arguments.length === 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
607 // don't return a reference to the internal hash
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
608 return $.widget.extend( {}, this.options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
609 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
610
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
611 if ( typeof key === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
612 // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
613 options = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
614 parts = key.split( "." );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
615 key = parts.shift();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
616 if ( parts.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
617 curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
618 for ( i = 0; i < parts.length - 1; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
619 curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
620 curOption = curOption[ parts[ i ] ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
621 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
622 key = parts.pop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
623 if ( arguments.length === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
624 return curOption[ key ] === undefined ? null : curOption[ key ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
625 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
626 curOption[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
627 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
628 if ( arguments.length === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
629 return this.options[ key ] === undefined ? null : this.options[ key ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
630 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
631 options[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
632 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
633 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
634
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
635 this._setOptions( options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
636
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
637 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
638 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
639 _setOptions: function( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
640 var key;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
641
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
642 for ( key in options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
643 this._setOption( key, options[ key ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
644 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
645
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
646 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
647 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
648 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
649 this.options[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
650
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
651 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
652 this.widget()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
653 .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
654 .attr( "aria-disabled", value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
655 this.hoverable.removeClass( "ui-state-hover" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
656 this.focusable.removeClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
657 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
658
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
659 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
660 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
661
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
662 enable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
663 return this._setOption( "disabled", false );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
664 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
665 disable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
666 return this._setOption( "disabled", true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
667 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
668
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
669 _on: function( suppressDisabledCheck, element, handlers ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
670 var delegateElement,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
671 instance = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
672
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
673 // no suppressDisabledCheck flag, shuffle arguments
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
674 if ( typeof suppressDisabledCheck !== "boolean" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
675 handlers = element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
676 element = suppressDisabledCheck;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
677 suppressDisabledCheck = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
678 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
679
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
680 // no element argument, shuffle and use this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
681 if ( !handlers ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
682 handlers = element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
683 element = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
684 delegateElement = this.widget();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
685 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
686 // accept selectors, DOM elements
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
687 element = delegateElement = $( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
688 this.bindings = this.bindings.add( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
689 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
690
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
691 $.each( handlers, function( event, handler ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
692 function handlerProxy() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
693 // allow widgets to customize the disabled handling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
694 // - disabled as an array instead of boolean
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
695 // - disabled class as method for disabling individual parts
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
696 if ( !suppressDisabledCheck &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
697 ( instance.options.disabled === true ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
698 $( this ).hasClass( "ui-state-disabled" ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
699 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
700 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
701 return ( typeof handler === "string" ? instance[ handler ] : handler )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
702 .apply( instance, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
703 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
704
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
705 // copy the guid so direct unbinding works
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
706 if ( typeof handler !== "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
707 handlerProxy.guid = handler.guid =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
708 handler.guid || handlerProxy.guid || $.guid++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
709 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
710
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
711 var match = event.match( /^(\w+)\s*(.*)$/ ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
712 eventName = match[1] + instance.eventNamespace,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
713 selector = match[2];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
714 if ( selector ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
715 delegateElement.delegate( selector, eventName, handlerProxy );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
716 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
717 element.bind( eventName, handlerProxy );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
718 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
719 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
720 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
721
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
722 _off: function( element, eventName ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
723 eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
724 element.unbind( eventName ).undelegate( eventName );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
725 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
726
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
727 _delay: function( handler, delay ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
728 function handlerProxy() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
729 return ( typeof handler === "string" ? instance[ handler ] : handler )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
730 .apply( instance, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
731 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
732 var instance = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
733 return setTimeout( handlerProxy, delay || 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
734 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
735
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
736 _hoverable: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
737 this.hoverable = this.hoverable.add( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
738 this._on( element, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
739 mouseenter: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
740 $( event.currentTarget ).addClass( "ui-state-hover" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
741 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
742 mouseleave: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
743 $( event.currentTarget ).removeClass( "ui-state-hover" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
744 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
745 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
746 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
747
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
748 _focusable: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
749 this.focusable = this.focusable.add( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
750 this._on( element, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
751 focusin: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
752 $( event.currentTarget ).addClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
753 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
754 focusout: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
755 $( event.currentTarget ).removeClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
756 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
757 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
758 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
759
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
760 _trigger: function( type, event, data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
761 var prop, orig,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
762 callback = this.options[ type ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
763
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
764 data = data || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
765 event = $.Event( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
766 event.type = ( type === this.widgetEventPrefix ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
767 type :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
768 this.widgetEventPrefix + type ).toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
769 // the original event may come from any element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
770 // so we need to reset the target on the new event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
771 event.target = this.element[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
772
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
773 // copy original event properties over to the new event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
774 orig = event.originalEvent;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
775 if ( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
776 for ( prop in orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
777 if ( !( prop in event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
778 event[ prop ] = orig[ prop ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
779 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
780 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
781 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
782
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
783 this.element.trigger( event, data );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
784 return !( $.isFunction( callback ) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
785 callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
786 event.isDefaultPrevented() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
787 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
788 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
789
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
790 $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
791 $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
792 if ( typeof options === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
793 options = { effect: options };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
794 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
795 var hasOptions,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
796 effectName = !options ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
797 method :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
798 options === true || typeof options === "number" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
799 defaultEffect :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
800 options.effect || defaultEffect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
801 options = options || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
802 if ( typeof options === "number" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
803 options = { duration: options };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
804 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
805 hasOptions = !$.isEmptyObject( options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
806 options.complete = callback;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
807 if ( options.delay ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
808 element.delay( options.delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
809 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
810 if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
811 element[ method ]( options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
812 } else if ( effectName !== method && element[ effectName ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
813 element[ effectName ]( options.duration, options.easing, callback );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
814 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
815 element.queue(function( next ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
816 $( this )[ method ]();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
817 if ( callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
818 callback.call( element[ 0 ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
819 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
820 next();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
821 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
822 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
823 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
824 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
825
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
826 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
827 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
828
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
829 var mouseHandled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
830 $( document ).mouseup( function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
831 mouseHandled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
832 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
833
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
834 $.widget("ui.mouse", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
835 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
836 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
837 cancel: "input,textarea,button,select,option",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
838 distance: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
839 delay: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
840 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
841 _mouseInit: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
842 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
843
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
844 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
845 .bind("mousedown."+this.widgetName, function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
846 return that._mouseDown(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
847 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
848 .bind("click."+this.widgetName, function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
849 if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
850 $.removeData(event.target, that.widgetName + ".preventClickEvent");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
851 event.stopImmediatePropagation();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
852 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
853 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
854 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
855
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
856 this.started = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
857 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
858
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
859 // TODO: make sure destroying one instance of mouse doesn't mess with
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
860 // other instances of mouse
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
861 _mouseDestroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
862 this.element.unbind("."+this.widgetName);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
863 if ( this._mouseMoveDelegate ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
864 $(document)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
865 .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
866 .unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
867 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
868 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
869
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
870 _mouseDown: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
871 // don't let more than one widget handle mouseStart
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
872 if( mouseHandled ) { return; }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
873
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
874 // we may have missed mouseup (out of window)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
875 (this._mouseStarted && this._mouseUp(event));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
876
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
877 this._mouseDownEvent = event;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
878
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
879 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
880 btnIsLeft = (event.which === 1),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
881 // event.target.nodeName works around a bug in IE 8 with
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
882 // disabled inputs (#7620)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
883 elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
884 if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
885 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
886 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
887
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
888 this.mouseDelayMet = !this.options.delay;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
889 if (!this.mouseDelayMet) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
890 this._mouseDelayTimer = setTimeout(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
891 that.mouseDelayMet = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
892 }, this.options.delay);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
893 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
894
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
895 if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
896 this._mouseStarted = (this._mouseStart(event) !== false);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
897 if (!this._mouseStarted) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
898 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
899 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
900 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
901 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
902
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
903 // Click event may never have fired (Gecko & Opera)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
904 if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
905 $.removeData(event.target, this.widgetName + ".preventClickEvent");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
906 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
907
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
908 // these delegates are required to keep context
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
909 this._mouseMoveDelegate = function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
910 return that._mouseMove(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
911 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
912 this._mouseUpDelegate = function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
913 return that._mouseUp(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
914 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
915 $(document)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
916 .bind("mousemove."+this.widgetName, this._mouseMoveDelegate)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
917 .bind("mouseup."+this.widgetName, this._mouseUpDelegate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
918
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
919 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
920
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
921 mouseHandled = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
922 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
923 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
924
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
925 _mouseMove: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
926 // IE mouseup check - mouseup happened when mouse was out of window
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
927 if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
928 return this._mouseUp(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
929 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
930
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
931 if (this._mouseStarted) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
932 this._mouseDrag(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
933 return event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
934 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
935
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
936 if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
937 this._mouseStarted =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
938 (this._mouseStart(this._mouseDownEvent, event) !== false);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
939 (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
940 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
941
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
942 return !this._mouseStarted;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
943 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
944
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
945 _mouseUp: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
946 $(document)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
947 .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
948 .unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
949
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
950 if (this._mouseStarted) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
951 this._mouseStarted = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
952
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
953 if (event.target === this._mouseDownEvent.target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
954 $.data(event.target, this.widgetName + ".preventClickEvent", true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
955 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
956
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
957 this._mouseStop(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
958 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
959
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
960 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
961 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
962
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
963 _mouseDistanceMet: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
964 return (Math.max(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
965 Math.abs(this._mouseDownEvent.pageX - event.pageX),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
966 Math.abs(this._mouseDownEvent.pageY - event.pageY)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
967 ) >= this.options.distance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
968 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
969 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
970
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
971 _mouseDelayMet: function(/* event */) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
972 return this.mouseDelayMet;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
973 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
974
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
975 // These are placeholder methods, to be overriden by extending plugin
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
976 _mouseStart: function(/* event */) {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
977 _mouseDrag: function(/* event */) {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
978 _mouseStop: function(/* event */) {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
979 _mouseCapture: function(/* event */) { return true; }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
980 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
981
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
982 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
983 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
984
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
985 $.ui = $.ui || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
986
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
987 var cachedScrollbarWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
988 max = Math.max,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
989 abs = Math.abs,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
990 round = Math.round,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
991 rhorizontal = /left|center|right/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
992 rvertical = /top|center|bottom/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
993 roffset = /[\+\-]\d+(\.[\d]+)?%?/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
994 rposition = /^\w+/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
995 rpercent = /%$/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
996 _position = $.fn.position;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
997
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
998 function getOffsets( offsets, width, height ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
999 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1000 parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1001 parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1002 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1003 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1004
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1005 function parseCss( element, property ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1006 return parseInt( $.css( element, property ), 10 ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1007 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1008
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1009 function getDimensions( elem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1010 var raw = elem[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1011 if ( raw.nodeType === 9 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1012 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1013 width: elem.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1014 height: elem.height(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1015 offset: { top: 0, left: 0 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1016 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1017 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1018 if ( $.isWindow( raw ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1019 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1020 width: elem.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1021 height: elem.height(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1022 offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1023 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1024 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1025 if ( raw.preventDefault ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1026 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1027 width: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1028 height: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1029 offset: { top: raw.pageY, left: raw.pageX }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1030 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1031 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1032 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1033 width: elem.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1034 height: elem.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1035 offset: elem.offset()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1036 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1037 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1038
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1039 $.position = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1040 scrollbarWidth: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1041 if ( cachedScrollbarWidth !== undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1042 return cachedScrollbarWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1043 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1044 var w1, w2,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1045 div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1046 innerDiv = div.children()[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1047
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1048 $( "body" ).append( div );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1049 w1 = innerDiv.offsetWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1050 div.css( "overflow", "scroll" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1051
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1052 w2 = innerDiv.offsetWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1053
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1054 if ( w1 === w2 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1055 w2 = div[0].clientWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1056 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1057
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1058 div.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1059
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1060 return (cachedScrollbarWidth = w1 - w2);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1061 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1062 getScrollInfo: function( within ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1063 var overflowX = within.isWindow || within.isDocument ? "" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1064 within.element.css( "overflow-x" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1065 overflowY = within.isWindow || within.isDocument ? "" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1066 within.element.css( "overflow-y" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1067 hasOverflowX = overflowX === "scroll" ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1068 ( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1069 hasOverflowY = overflowY === "scroll" ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1070 ( overflowY === "auto" && within.height < within.element[0].scrollHeight );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1071 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1072 width: hasOverflowY ? $.position.scrollbarWidth() : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1073 height: hasOverflowX ? $.position.scrollbarWidth() : 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1074 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1075 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1076 getWithinInfo: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1077 var withinElement = $( element || window ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1078 isWindow = $.isWindow( withinElement[0] ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1079 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1080 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1081 element: withinElement,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1082 isWindow: isWindow,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1083 isDocument: isDocument,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1084 offset: withinElement.offset() || { left: 0, top: 0 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1085 scrollLeft: withinElement.scrollLeft(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1086 scrollTop: withinElement.scrollTop(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1087 width: isWindow ? withinElement.width() : withinElement.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1088 height: isWindow ? withinElement.height() : withinElement.outerHeight()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1089 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1090 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1091 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1092
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1093 $.fn.position = function( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1094 if ( !options || !options.of ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1095 return _position.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1096 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1097
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1098 // make a copy, we don't want to modify arguments
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1099 options = $.extend( {}, options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1100
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1101 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1102 target = $( options.of ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1103 within = $.position.getWithinInfo( options.within ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1104 scrollInfo = $.position.getScrollInfo( within ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1105 collision = ( options.collision || "flip" ).split( " " ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1106 offsets = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1107
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1108 dimensions = getDimensions( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1109 if ( target[0].preventDefault ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1110 // force left top to allow flipping
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1111 options.at = "left top";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1112 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1113 targetWidth = dimensions.width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1114 targetHeight = dimensions.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1115 targetOffset = dimensions.offset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1116 // clone to reuse original targetOffset later
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1117 basePosition = $.extend( {}, targetOffset );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1118
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1119 // force my and at to have valid horizontal and vertical positions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1120 // if a value is missing or invalid, it will be converted to center
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1121 $.each( [ "my", "at" ], function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1122 var pos = ( options[ this ] || "" ).split( " " ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1123 horizontalOffset,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1124 verticalOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1125
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1126 if ( pos.length === 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1127 pos = rhorizontal.test( pos[ 0 ] ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1128 pos.concat( [ "center" ] ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1129 rvertical.test( pos[ 0 ] ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1130 [ "center" ].concat( pos ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1131 [ "center", "center" ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1132 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1133 pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1134 pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1135
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1136 // calculate offsets
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1137 horizontalOffset = roffset.exec( pos[ 0 ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1138 verticalOffset = roffset.exec( pos[ 1 ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1139 offsets[ this ] = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1140 horizontalOffset ? horizontalOffset[ 0 ] : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1141 verticalOffset ? verticalOffset[ 0 ] : 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1142 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1143
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1144 // reduce to just the positions without the offsets
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1145 options[ this ] = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1146 rposition.exec( pos[ 0 ] )[ 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1147 rposition.exec( pos[ 1 ] )[ 0 ]
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1148 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1149 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1150
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1151 // normalize collision option
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1152 if ( collision.length === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1153 collision[ 1 ] = collision[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1154 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1155
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1156 if ( options.at[ 0 ] === "right" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1157 basePosition.left += targetWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1158 } else if ( options.at[ 0 ] === "center" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1159 basePosition.left += targetWidth / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1160 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1161
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1162 if ( options.at[ 1 ] === "bottom" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1163 basePosition.top += targetHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1164 } else if ( options.at[ 1 ] === "center" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1165 basePosition.top += targetHeight / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1166 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1167
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1168 atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1169 basePosition.left += atOffset[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1170 basePosition.top += atOffset[ 1 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1171
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1172 return this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1173 var collisionPosition, using,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1174 elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1175 elemWidth = elem.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1176 elemHeight = elem.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1177 marginLeft = parseCss( this, "marginLeft" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1178 marginTop = parseCss( this, "marginTop" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1179 collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1180 collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1181 position = $.extend( {}, basePosition ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1182 myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1183
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1184 if ( options.my[ 0 ] === "right" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1185 position.left -= elemWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1186 } else if ( options.my[ 0 ] === "center" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1187 position.left -= elemWidth / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1188 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1189
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1190 if ( options.my[ 1 ] === "bottom" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1191 position.top -= elemHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1192 } else if ( options.my[ 1 ] === "center" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1193 position.top -= elemHeight / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1194 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1195
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1196 position.left += myOffset[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1197 position.top += myOffset[ 1 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1198
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1199 // if the browser doesn't support fractions, then round for consistent results
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1200 if ( !$.support.offsetFractions ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1201 position.left = round( position.left );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1202 position.top = round( position.top );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1203 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1204
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1205 collisionPosition = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1206 marginLeft: marginLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1207 marginTop: marginTop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1208 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1209
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1210 $.each( [ "left", "top" ], function( i, dir ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1211 if ( $.ui.position[ collision[ i ] ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1212 $.ui.position[ collision[ i ] ][ dir ]( position, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1213 targetWidth: targetWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1214 targetHeight: targetHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1215 elemWidth: elemWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1216 elemHeight: elemHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1217 collisionPosition: collisionPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1218 collisionWidth: collisionWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1219 collisionHeight: collisionHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1220 offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1221 my: options.my,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1222 at: options.at,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1223 within: within,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1224 elem : elem
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1225 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1226 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1227 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1228
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1229 if ( options.using ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1230 // adds feedback as second argument to using callback, if present
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1231 using = function( props ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1232 var left = targetOffset.left - position.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1233 right = left + targetWidth - elemWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1234 top = targetOffset.top - position.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1235 bottom = top + targetHeight - elemHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1236 feedback = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1237 target: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1238 element: target,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1239 left: targetOffset.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1240 top: targetOffset.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1241 width: targetWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1242 height: targetHeight
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1243 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1244 element: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1245 element: elem,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1246 left: position.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1247 top: position.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1248 width: elemWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1249 height: elemHeight
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1250 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1251 horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1252 vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1253 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1254 if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1255 feedback.horizontal = "center";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1256 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1257 if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1258 feedback.vertical = "middle";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1259 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1260 if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1261 feedback.important = "horizontal";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1262 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1263 feedback.important = "vertical";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1264 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1265 options.using.call( this, props, feedback );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1266 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1267 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1268
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1269 elem.offset( $.extend( position, { using: using } ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1270 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1271 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1272
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1273 $.ui.position = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1274 fit: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1275 left: function( position, data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1276 var within = data.within,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1277 withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1278 outerWidth = within.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1279 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1280 overLeft = withinOffset - collisionPosLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1281 overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1282 newOverRight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1283
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1284 // element is wider than within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1285 if ( data.collisionWidth > outerWidth ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1286 // element is initially over the left side of within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1287 if ( overLeft > 0 && overRight <= 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1288 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1289 position.left += overLeft - newOverRight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1290 // element is initially over right side of within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1291 } else if ( overRight > 0 && overLeft <= 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1292 position.left = withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1293 // element is initially over both left and right sides of within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1294 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1295 if ( overLeft > overRight ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1296 position.left = withinOffset + outerWidth - data.collisionWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1297 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1298 position.left = withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1299 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1300 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1301 // too far left -> align with left edge
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1302 } else if ( overLeft > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1303 position.left += overLeft;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1304 // too far right -> align with right edge
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1305 } else if ( overRight > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1306 position.left -= overRight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1307 // adjust based on position and margin
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1308 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1309 position.left = max( position.left - collisionPosLeft, position.left );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1310 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1311 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1312 top: function( position, data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1313 var within = data.within,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1314 withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1315 outerHeight = data.within.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1316 collisionPosTop = position.top - data.collisionPosition.marginTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1317 overTop = withinOffset - collisionPosTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1318 overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1319 newOverBottom;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1320
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1321 // element is taller than within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1322 if ( data.collisionHeight > outerHeight ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1323 // element is initially over the top of within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1324 if ( overTop > 0 && overBottom <= 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1325 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1326 position.top += overTop - newOverBottom;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1327 // element is initially over bottom of within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1328 } else if ( overBottom > 0 && overTop <= 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1329 position.top = withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1330 // element is initially over both top and bottom of within
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1331 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1332 if ( overTop > overBottom ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1333 position.top = withinOffset + outerHeight - data.collisionHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1334 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1335 position.top = withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1336 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1337 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1338 // too far up -> align with top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1339 } else if ( overTop > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1340 position.top += overTop;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1341 // too far down -> align with bottom edge
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1342 } else if ( overBottom > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1343 position.top -= overBottom;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1344 // adjust based on position and margin
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1345 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1346 position.top = max( position.top - collisionPosTop, position.top );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1347 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1348 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1349 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1350 flip: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1351 left: function( position, data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1352 var within = data.within,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1353 withinOffset = within.offset.left + within.scrollLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1354 outerWidth = within.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1355 offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1356 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1357 overLeft = collisionPosLeft - offsetLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1358 overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1359 myOffset = data.my[ 0 ] === "left" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1360 -data.elemWidth :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1361 data.my[ 0 ] === "right" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1362 data.elemWidth :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1363 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1364 atOffset = data.at[ 0 ] === "left" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1365 data.targetWidth :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1366 data.at[ 0 ] === "right" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1367 -data.targetWidth :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1368 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1369 offset = -2 * data.offset[ 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1370 newOverRight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1371 newOverLeft;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1372
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1373 if ( overLeft < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1374 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1375 if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1376 position.left += myOffset + atOffset + offset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1377 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1378 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1379 else if ( overRight > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1380 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1381 if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1382 position.left += myOffset + atOffset + offset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1383 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1384 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1385 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1386 top: function( position, data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1387 var within = data.within,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1388 withinOffset = within.offset.top + within.scrollTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1389 outerHeight = within.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1390 offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1391 collisionPosTop = position.top - data.collisionPosition.marginTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1392 overTop = collisionPosTop - offsetTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1393 overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1394 top = data.my[ 1 ] === "top",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1395 myOffset = top ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1396 -data.elemHeight :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1397 data.my[ 1 ] === "bottom" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1398 data.elemHeight :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1399 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1400 atOffset = data.at[ 1 ] === "top" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1401 data.targetHeight :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1402 data.at[ 1 ] === "bottom" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1403 -data.targetHeight :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1404 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1405 offset = -2 * data.offset[ 1 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1406 newOverTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1407 newOverBottom;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1408 if ( overTop < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1409 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1410 if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1411 position.top += myOffset + atOffset + offset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1412 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1413 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1414 else if ( overBottom > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1415 newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1416 if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1417 position.top += myOffset + atOffset + offset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1418 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1419 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1420 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1421 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1422 flipfit: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1423 left: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1424 $.ui.position.flip.left.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1425 $.ui.position.fit.left.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1426 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1427 top: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1428 $.ui.position.flip.top.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1429 $.ui.position.fit.top.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1430 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1431 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1432 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1433
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1434 // fraction support test
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1435 (function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1436 var testElement, testElementParent, testElementStyle, offsetLeft, i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1437 body = document.getElementsByTagName( "body" )[ 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1438 div = document.createElement( "div" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1439
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1440 //Create a "fake body" for testing based on method used in jQuery.support
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1441 testElement = document.createElement( body ? "div" : "body" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1442 testElementStyle = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1443 visibility: "hidden",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1444 width: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1445 height: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1446 border: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1447 margin: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1448 background: "none"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1449 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1450 if ( body ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1451 $.extend( testElementStyle, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1452 position: "absolute",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1453 left: "-1000px",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1454 top: "-1000px"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1455 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1456 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1457 for ( i in testElementStyle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1458 testElement.style[ i ] = testElementStyle[ i ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1459 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1460 testElement.appendChild( div );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1461 testElementParent = body || document.documentElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1462 testElementParent.insertBefore( testElement, testElementParent.firstChild );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1463
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1464 div.style.cssText = "position: absolute; left: 10.7432222px;";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1465
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1466 offsetLeft = $( div ).offset().left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1467 $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1468
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1469 testElement.innerHTML = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1470 testElementParent.removeChild( testElement );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1471 })();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1472
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1473 }( jQuery ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1474 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1475
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1476 var uid = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1477 hideProps = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1478 showProps = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1479
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1480 hideProps.height = hideProps.paddingTop = hideProps.paddingBottom =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1481 hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1482 showProps.height = showProps.paddingTop = showProps.paddingBottom =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1483 showProps.borderTopWidth = showProps.borderBottomWidth = "show";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1484
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1485 $.widget( "ui.accordion", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1486 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1487 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1488 active: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1489 animate: {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1490 collapsible: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1491 event: "click",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1492 header: "> li > :first-child,> :not(li):even",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1493 heightStyle: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1494 icons: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1495 activeHeader: "ui-icon-triangle-1-s",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1496 header: "ui-icon-triangle-1-e"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1497 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1498
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1499 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1500 activate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1501 beforeActivate: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1502 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1503
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1504 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1505 var options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1506 this.prevShow = this.prevHide = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1507 this.element.addClass( "ui-accordion ui-widget ui-helper-reset" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1508 // ARIA
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1509 .attr( "role", "tablist" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1510
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1511 // don't allow collapsible: false and active: false / null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1512 if ( !options.collapsible && (options.active === false || options.active == null) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1513 options.active = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1514 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1515
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1516 this._processPanels();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1517 // handle negative values
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1518 if ( options.active < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1519 options.active += this.headers.length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1520 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1521 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1522 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1523
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1524 _getCreateEventData: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1525 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1526 header: this.active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1527 panel: !this.active.length ? $() : this.active.next(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1528 content: !this.active.length ? $() : this.active.next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1529 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1530 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1531
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1532 _createIcons: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1533 var icons = this.options.icons;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1534 if ( icons ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1535 $( "<span>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1536 .addClass( "ui-accordion-header-icon ui-icon " + icons.header )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1537 .prependTo( this.headers );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1538 this.active.children( ".ui-accordion-header-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1539 .removeClass( icons.header )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1540 .addClass( icons.activeHeader );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1541 this.headers.addClass( "ui-accordion-icons" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1542 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1543 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1544
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1545 _destroyIcons: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1546 this.headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1547 .removeClass( "ui-accordion-icons" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1548 .children( ".ui-accordion-header-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1549 .remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1550 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1551
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1552 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1553 var contents;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1554
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1555 // clean up main element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1556 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1557 .removeClass( "ui-accordion ui-widget ui-helper-reset" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1558 .removeAttr( "role" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1559
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1560 // clean up headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1561 this.headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1562 .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1563 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1564 .removeAttr( "aria-expanded" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1565 .removeAttr( "aria-selected" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1566 .removeAttr( "aria-controls" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1567 .removeAttr( "tabIndex" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1568 .each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1569 if ( /^ui-accordion/.test( this.id ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1570 this.removeAttribute( "id" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1571 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1572 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1573 this._destroyIcons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1574
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1575 // clean up content panels
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1576 contents = this.headers.next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1577 .css( "display", "" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1578 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1579 .removeAttr( "aria-hidden" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1580 .removeAttr( "aria-labelledby" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1581 .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1582 .each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1583 if ( /^ui-accordion/.test( this.id ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1584 this.removeAttribute( "id" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1585 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1586 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1587 if ( this.options.heightStyle !== "content" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1588 contents.css( "height", "" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1589 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1590 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1591
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1592 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1593 if ( key === "active" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1594 // _activate() will handle invalid values and update this.options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1595 this._activate( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1596 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1597 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1598
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1599 if ( key === "event" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1600 if ( this.options.event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1601 this._off( this.headers, this.options.event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1602 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1603 this._setupEvents( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1604 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1605
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1606 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1607
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1608 // setting collapsible: false while collapsed; open first panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1609 if ( key === "collapsible" && !value && this.options.active === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1610 this._activate( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1611 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1612
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1613 if ( key === "icons" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1614 this._destroyIcons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1615 if ( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1616 this._createIcons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1617 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1618 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1619
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1620 // #5332 - opacity doesn't cascade to positioned elements in IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1621 // so we need to add the disabled class to the headers and panels
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1622 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1623 this.headers.add( this.headers.next() )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1624 .toggleClass( "ui-state-disabled", !!value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1625 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1626 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1627
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1628 _keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1629 if ( event.altKey || event.ctrlKey ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1630 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1631 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1632
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1633 var keyCode = $.ui.keyCode,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1634 length = this.headers.length,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1635 currentIndex = this.headers.index( event.target ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1636 toFocus = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1637
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1638 switch ( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1639 case keyCode.RIGHT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1640 case keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1641 toFocus = this.headers[ ( currentIndex + 1 ) % length ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1642 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1643 case keyCode.LEFT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1644 case keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1645 toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1646 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1647 case keyCode.SPACE:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1648 case keyCode.ENTER:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1649 this._eventHandler( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1650 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1651 case keyCode.HOME:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1652 toFocus = this.headers[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1653 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1654 case keyCode.END:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1655 toFocus = this.headers[ length - 1 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1656 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1657 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1658
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1659 if ( toFocus ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1660 $( event.target ).attr( "tabIndex", -1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1661 $( toFocus ).attr( "tabIndex", 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1662 toFocus.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1663 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1664 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1665 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1666
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1667 _panelKeyDown : function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1668 if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1669 $( event.currentTarget ).prev().focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1670 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1671 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1672
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1673 refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1674 var options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1675 this._processPanels();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1676
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1677 // was collapsed or no panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1678 if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1679 options.active = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1680 this.active = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1681 // active false only when collapsible is true
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1682 } else if ( options.active === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1683 this._activate( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1684 // was active, but active panel is gone
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1685 } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1686 // all remaining panel are disabled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1687 if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1688 options.active = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1689 this.active = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1690 // activate previous panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1691 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1692 this._activate( Math.max( 0, options.active - 1 ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1693 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1694 // was active, active panel still exists
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1695 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1696 // make sure active index is correct
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1697 options.active = this.headers.index( this.active );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1698 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1699
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1700 this._destroyIcons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1701
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1702 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1703 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1704
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1705 _processPanels: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1706 this.headers = this.element.find( this.options.header )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1707 .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1708
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1709 this.headers.next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1710 .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1711 .filter(":not(.ui-accordion-content-active)")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1712 .hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1713 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1714
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1715 _refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1716 var maxHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1717 options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1718 heightStyle = options.heightStyle,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1719 parent = this.element.parent(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1720 accordionId = this.accordionId = "ui-accordion-" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1721 (this.element.attr( "id" ) || ++uid);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1722
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1723 this.active = this._findActive( options.active )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1724 .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1725 .removeClass( "ui-corner-all" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1726 this.active.next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1727 .addClass( "ui-accordion-content-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1728 .show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1729
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1730 this.headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1731 .attr( "role", "tab" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1732 .each(function( i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1733 var header = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1734 headerId = header.attr( "id" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1735 panel = header.next(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1736 panelId = panel.attr( "id" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1737 if ( !headerId ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1738 headerId = accordionId + "-header-" + i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1739 header.attr( "id", headerId );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1740 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1741 if ( !panelId ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1742 panelId = accordionId + "-panel-" + i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1743 panel.attr( "id", panelId );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1744 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1745 header.attr( "aria-controls", panelId );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1746 panel.attr( "aria-labelledby", headerId );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1747 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1748 .next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1749 .attr( "role", "tabpanel" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1750
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1751 this.headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1752 .not( this.active )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1753 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1754 "aria-selected": "false",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1755 "aria-expanded": "false",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1756 tabIndex: -1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1757 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1758 .next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1759 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1760 "aria-hidden": "true"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1761 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1762 .hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1763
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1764 // make sure at least one header is in the tab order
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1765 if ( !this.active.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1766 this.headers.eq( 0 ).attr( "tabIndex", 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1767 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1768 this.active.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1769 "aria-selected": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1770 "aria-expanded": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1771 tabIndex: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1772 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1773 .next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1774 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1775 "aria-hidden": "false"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1776 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1777 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1778
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1779 this._createIcons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1780
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1781 this._setupEvents( options.event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1782
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1783 if ( heightStyle === "fill" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1784 maxHeight = parent.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1785 this.element.siblings( ":visible" ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1786 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1787 position = elem.css( "position" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1788
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1789 if ( position === "absolute" || position === "fixed" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1790 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1791 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1792 maxHeight -= elem.outerHeight( true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1793 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1794
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1795 this.headers.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1796 maxHeight -= $( this ).outerHeight( true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1797 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1798
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1799 this.headers.next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1800 .each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1801 $( this ).height( Math.max( 0, maxHeight -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1802 $( this ).innerHeight() + $( this ).height() ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1803 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1804 .css( "overflow", "auto" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1805 } else if ( heightStyle === "auto" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1806 maxHeight = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1807 this.headers.next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1808 .each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1809 maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1810 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1811 .height( maxHeight );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1812 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1813 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1814
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1815 _activate: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1816 var active = this._findActive( index )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1817
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1818 // trying to activate the already active panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1819 if ( active === this.active[ 0 ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1820 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1821 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1822
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1823 // trying to collapse, simulate a click on the currently active header
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1824 active = active || this.active[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1825
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1826 this._eventHandler({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1827 target: active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1828 currentTarget: active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1829 preventDefault: $.noop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1830 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1831 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1832
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1833 _findActive: function( selector ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1834 return typeof selector === "number" ? this.headers.eq( selector ) : $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1835 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1836
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1837 _setupEvents: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1838 var events = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1839 keydown: "_keydown"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1840 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1841 if ( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1842 $.each( event.split(" "), function( index, eventName ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1843 events[ eventName ] = "_eventHandler";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1844 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1845 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1846
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1847 this._off( this.headers.add( this.headers.next() ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1848 this._on( this.headers, events );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1849 this._on( this.headers.next(), { keydown: "_panelKeyDown" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1850 this._hoverable( this.headers );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1851 this._focusable( this.headers );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1852 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1853
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1854 _eventHandler: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1855 var options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1856 active = this.active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1857 clicked = $( event.currentTarget ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1858 clickedIsActive = clicked[ 0 ] === active[ 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1859 collapsing = clickedIsActive && options.collapsible,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1860 toShow = collapsing ? $() : clicked.next(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1861 toHide = active.next(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1862 eventData = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1863 oldHeader: active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1864 oldPanel: toHide,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1865 newHeader: collapsing ? $() : clicked,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1866 newPanel: toShow
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1867 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1868
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1869 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1870
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1871 if (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1872 // click on active header, but not collapsible
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1873 ( clickedIsActive && !options.collapsible ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1874 // allow canceling activation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1875 ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1876 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1877 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1878
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1879 options.active = collapsing ? false : this.headers.index( clicked );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1880
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1881 // when the call to ._toggle() comes after the class changes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1882 // it causes a very odd bug in IE 8 (see #6720)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1883 this.active = clickedIsActive ? $() : clicked;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1884 this._toggle( eventData );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1885
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1886 // switch classes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1887 // corner classes on the previously active header stay after the animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1888 active.removeClass( "ui-accordion-header-active ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1889 if ( options.icons ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1890 active.children( ".ui-accordion-header-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1891 .removeClass( options.icons.activeHeader )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1892 .addClass( options.icons.header );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1893 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1894
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1895 if ( !clickedIsActive ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1896 clicked
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1897 .removeClass( "ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1898 .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1899 if ( options.icons ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1900 clicked.children( ".ui-accordion-header-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1901 .removeClass( options.icons.header )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1902 .addClass( options.icons.activeHeader );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1903 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1904
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1905 clicked
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1906 .next()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1907 .addClass( "ui-accordion-content-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1908 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1909 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1910
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1911 _toggle: function( data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1912 var toShow = data.newPanel,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1913 toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1914
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1915 // handle activating a panel during the animation for another activation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1916 this.prevShow.add( this.prevHide ).stop( true, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1917 this.prevShow = toShow;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1918 this.prevHide = toHide;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1919
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1920 if ( this.options.animate ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1921 this._animate( toShow, toHide, data );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1922 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1923 toHide.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1924 toShow.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1925 this._toggleComplete( data );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1926 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1927
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1928 toHide.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1929 "aria-hidden": "true"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1930 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1931 toHide.prev().attr( "aria-selected", "false" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1932 // if we're switching panels, remove the old header from the tab order
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1933 // if we're opening from collapsed state, remove the previous header from the tab order
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1934 // if we're collapsing, then keep the collapsing header in the tab order
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1935 if ( toShow.length && toHide.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1936 toHide.prev().attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1937 "tabIndex": -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1938 "aria-expanded": "false"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1939 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1940 } else if ( toShow.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1941 this.headers.filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1942 return $( this ).attr( "tabIndex" ) === 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1943 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1944 .attr( "tabIndex", -1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1945 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1946
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1947 toShow
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1948 .attr( "aria-hidden", "false" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1949 .prev()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1950 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1951 "aria-selected": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1952 tabIndex: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1953 "aria-expanded": "true"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1954 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1955 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1956
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1957 _animate: function( toShow, toHide, data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1958 var total, easing, duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1959 that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1960 adjust = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1961 down = toShow.length &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1962 ( !toHide.length || ( toShow.index() < toHide.index() ) ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1963 animate = this.options.animate || {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1964 options = down && animate.down || animate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1965 complete = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1966 that._toggleComplete( data );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1967 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1968
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1969 if ( typeof options === "number" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1970 duration = options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1971 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1972 if ( typeof options === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1973 easing = options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1974 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1975 // fall back from options to animation in case of partial down settings
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1976 easing = easing || options.easing || animate.easing;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1977 duration = duration || options.duration || animate.duration;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1978
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1979 if ( !toHide.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1980 return toShow.animate( showProps, duration, easing, complete );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1981 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1982 if ( !toShow.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1983 return toHide.animate( hideProps, duration, easing, complete );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1984 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1985
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1986 total = toShow.show().outerHeight();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1987 toHide.animate( hideProps, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1988 duration: duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1989 easing: easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1990 step: function( now, fx ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1991 fx.now = Math.round( now );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1992 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1993 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1994 toShow
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1995 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1996 .animate( showProps, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1997 duration: duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1998 easing: easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1999 complete: complete,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2000 step: function( now, fx ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2001 fx.now = Math.round( now );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2002 if ( fx.prop !== "height" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2003 adjust += fx.now;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2004 } else if ( that.options.heightStyle !== "content" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2005 fx.now = Math.round( total - toHide.outerHeight() - adjust );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2006 adjust = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2007 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2008 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2009 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2010 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2011
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2012 _toggleComplete: function( data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2013 var toHide = data.oldPanel;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2014
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2015 toHide
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2016 .removeClass( "ui-accordion-content-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2017 .prev()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2018 .removeClass( "ui-corner-top" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2019 .addClass( "ui-corner-all" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2020
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2021 // Work around for rendering bug in IE (#5421)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2022 if ( toHide.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2023 toHide.parent()[0].className = toHide.parent()[0].className;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2024 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2025 this._trigger( "activate", null, data );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2026 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2027 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2028
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2029 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2030 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2031
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2032 $.widget( "ui.autocomplete", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2033 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2034 defaultElement: "<input>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2035 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2036 appendTo: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2037 autoFocus: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2038 delay: 300,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2039 minLength: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2040 position: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2041 my: "left top",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2042 at: "left bottom",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2043 collision: "none"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2044 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2045 source: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2046
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2047 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2048 change: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2049 close: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2050 focus: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2051 open: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2052 response: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2053 search: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2054 select: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2055 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2056
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2057 requestIndex: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2058 pending: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2059
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2060 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2061 // Some browsers only repeat keydown events, not keypress events,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2062 // so we use the suppressKeyPress flag to determine if we've already
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2063 // handled the keydown event. #7269
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2064 // Unfortunately the code for & in keypress is the same as the up arrow,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2065 // so we use the suppressKeyPressRepeat flag to avoid handling keypress
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2066 // events when we know the keydown event was used to modify the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2067 // search term. #7799
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2068 var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2069 nodeName = this.element[0].nodeName.toLowerCase(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2070 isTextarea = nodeName === "textarea",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2071 isInput = nodeName === "input";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2072
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2073 this.isMultiLine =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2074 // Textareas are always multi-line
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2075 isTextarea ? true :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2076 // Inputs are always single-line, even if inside a contentEditable element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2077 // IE also treats inputs as contentEditable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2078 isInput ? false :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2079 // All other element types are determined by whether or not they're contentEditable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2080 this.element.prop( "isContentEditable" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2081
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2082 this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2083 this.isNewMenu = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2084
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2085 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2086 .addClass( "ui-autocomplete-input" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2087 .attr( "autocomplete", "off" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2088
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2089 this._on( this.element, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2090 keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2091 if ( this.element.prop( "readOnly" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2092 suppressKeyPress = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2093 suppressInput = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2094 suppressKeyPressRepeat = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2095 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2096 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2097
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2098 suppressKeyPress = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2099 suppressInput = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2100 suppressKeyPressRepeat = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2101 var keyCode = $.ui.keyCode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2102 switch( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2103 case keyCode.PAGE_UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2104 suppressKeyPress = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2105 this._move( "previousPage", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2106 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2107 case keyCode.PAGE_DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2108 suppressKeyPress = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2109 this._move( "nextPage", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2110 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2111 case keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2112 suppressKeyPress = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2113 this._keyEvent( "previous", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2114 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2115 case keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2116 suppressKeyPress = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2117 this._keyEvent( "next", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2118 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2119 case keyCode.ENTER:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2120 case keyCode.NUMPAD_ENTER:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2121 // when menu is open and has focus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2122 if ( this.menu.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2123 // #6055 - Opera still allows the keypress to occur
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2124 // which causes forms to submit
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2125 suppressKeyPress = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2126 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2127 this.menu.select( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2128 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2129 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2130 case keyCode.TAB:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2131 if ( this.menu.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2132 this.menu.select( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2133 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2134 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2135 case keyCode.ESCAPE:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2136 if ( this.menu.element.is( ":visible" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2137 this._value( this.term );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2138 this.close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2139 // Different browsers have different default behavior for escape
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2140 // Single press can mean undo or clear
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2141 // Double press in IE means clear the whole form
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2142 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2143 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2144 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2145 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2146 suppressKeyPressRepeat = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2147 // search timeout should be triggered before the input value is changed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2148 this._searchTimeout( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2149 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2150 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2151 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2152 keypress: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2153 if ( suppressKeyPress ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2154 suppressKeyPress = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2155 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2156 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2157 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2158 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2159 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2160 if ( suppressKeyPressRepeat ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2161 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2162 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2163
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2164 // replicate some key handlers to allow them to repeat in Firefox and Opera
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2165 var keyCode = $.ui.keyCode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2166 switch( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2167 case keyCode.PAGE_UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2168 this._move( "previousPage", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2169 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2170 case keyCode.PAGE_DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2171 this._move( "nextPage", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2172 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2173 case keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2174 this._keyEvent( "previous", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2175 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2176 case keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2177 this._keyEvent( "next", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2178 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2179 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2180 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2181 input: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2182 if ( suppressInput ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2183 suppressInput = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2184 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2185 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2186 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2187 this._searchTimeout( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2188 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2189 focus: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2190 this.selectedItem = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2191 this.previous = this._value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2192 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2193 blur: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2194 if ( this.cancelBlur ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2195 delete this.cancelBlur;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2196 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2197 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2198
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2199 clearTimeout( this.searching );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2200 this.close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2201 this._change( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2202 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2203 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2204
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2205 this._initSource();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2206 this.menu = $( "<ul>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2207 .addClass( "ui-autocomplete ui-front" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2208 .appendTo( this._appendTo() )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2209 .menu({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2210 // disable ARIA support, the live region takes care of that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2211 role: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2212 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2213 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2214 .data( "ui-menu" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2215
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2216 this._on( this.menu.element, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2217 mousedown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2218 // prevent moving focus out of the text field
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2219 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2220
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2221 // IE doesn't prevent moving focus even with event.preventDefault()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2222 // so we set a flag to know when we should ignore the blur event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2223 this.cancelBlur = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2224 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2225 delete this.cancelBlur;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2226 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2227
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2228 // clicking on the scrollbar causes focus to shift to the body
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2229 // but we can't detect a mouseup or a click immediately afterward
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2230 // so we have to track the next mousedown and close the menu if
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2231 // the user clicks somewhere outside of the autocomplete
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2232 var menuElement = this.menu.element[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2233 if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2234 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2235 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2236 this.document.one( "mousedown", function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2237 if ( event.target !== that.element[ 0 ] &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2238 event.target !== menuElement &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2239 !$.contains( menuElement, event.target ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2240 that.close();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2241 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2242 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2243 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2244 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2245 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2246 menufocus: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2247 // support: Firefox
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2248 // Prevent accidental activation of menu items in Firefox (#7024 #9118)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2249 if ( this.isNewMenu ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2250 this.isNewMenu = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2251 if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2252 this.menu.blur();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2253
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2254 this.document.one( "mousemove", function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2255 $( event.target ).trigger( event.originalEvent );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2256 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2257
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2258 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2259 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2260 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2261
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2262 var item = ui.item.data( "ui-autocomplete-item" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2263 if ( false !== this._trigger( "focus", event, { item: item } ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2264 // use value to match what will end up in the input, if it was a key event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2265 if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2266 this._value( item.value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2267 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2268 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2269 // Normally the input is populated with the item's value as the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2270 // menu is navigated, causing screen readers to notice a change and
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2271 // announce the item. Since the focus event was canceled, this doesn't
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2272 // happen, so we update the live region so that screen readers can
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2273 // still notice the change and announce it.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2274 this.liveRegion.text( item.value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2275 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2276 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2277 menuselect: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2278 var item = ui.item.data( "ui-autocomplete-item" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2279 previous = this.previous;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2280
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2281 // only trigger when focus was lost (click on menu)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2282 if ( this.element[0] !== this.document[0].activeElement ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2283 this.element.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2284 this.previous = previous;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2285 // #6109 - IE triggers two focus events and the second
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2286 // is asynchronous, so we need to reset the previous
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2287 // term synchronously and asynchronously :-(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2288 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2289 this.previous = previous;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2290 this.selectedItem = item;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2291 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2292 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2293
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2294 if ( false !== this._trigger( "select", event, { item: item } ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2295 this._value( item.value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2296 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2297 // reset the term after the select event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2298 // this allows custom select handling to work properly
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2299 this.term = this._value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2300
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2301 this.close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2302 this.selectedItem = item;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2303 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2304 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2305
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2306 this.liveRegion = $( "<span>", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2307 role: "status",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2308 "aria-live": "polite"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2309 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2310 .addClass( "ui-helper-hidden-accessible" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2311 .insertBefore( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2312
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2313 // turning off autocomplete prevents the browser from remembering the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2314 // value when navigating through history, so we re-enable autocomplete
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2315 // if the page is unloaded before the widget is destroyed. #7790
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2316 this._on( this.window, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2317 beforeunload: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2318 this.element.removeAttr( "autocomplete" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2319 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2320 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2321 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2322
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2323 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2324 clearTimeout( this.searching );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2325 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2326 .removeClass( "ui-autocomplete-input" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2327 .removeAttr( "autocomplete" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2328 this.menu.element.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2329 this.liveRegion.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2330 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2331
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2332 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2333 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2334 if ( key === "source" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2335 this._initSource();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2336 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2337 if ( key === "appendTo" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2338 this.menu.element.appendTo( this._appendTo() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2339 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2340 if ( key === "disabled" && value && this.xhr ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2341 this.xhr.abort();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2342 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2343 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2344
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2345 _appendTo: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2346 var element = this.options.appendTo;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2347
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2348 if ( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2349 element = element.jquery || element.nodeType ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2350 $( element ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2351 this.document.find( element ).eq( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2352 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2353
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2354 if ( !element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2355 element = this.element.closest( ".ui-front" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2356 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2357
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2358 if ( !element.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2359 element = this.document[0].body;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2360 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2361
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2362 return element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2363 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2364
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2365 _initSource: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2366 var array, url,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2367 that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2368 if ( $.isArray(this.options.source) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2369 array = this.options.source;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2370 this.source = function( request, response ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2371 response( $.ui.autocomplete.filter( array, request.term ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2372 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2373 } else if ( typeof this.options.source === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2374 url = this.options.source;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2375 this.source = function( request, response ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2376 if ( that.xhr ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2377 that.xhr.abort();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2378 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2379 that.xhr = $.ajax({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2380 url: url,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2381 data: request,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2382 dataType: "json",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2383 success: function( data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2384 response( data );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2385 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2386 error: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2387 response( [] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2388 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2389 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2390 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2391 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2392 this.source = this.options.source;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2393 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2394 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2395
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2396 _searchTimeout: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2397 clearTimeout( this.searching );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2398 this.searching = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2399 // only search if the value has changed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2400 if ( this.term !== this._value() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2401 this.selectedItem = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2402 this.search( null, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2403 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2404 }, this.options.delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2405 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2406
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2407 search: function( value, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2408 value = value != null ? value : this._value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2409
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2410 // always save the actual value, not the one passed as an argument
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2411 this.term = this._value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2412
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2413 if ( value.length < this.options.minLength ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2414 return this.close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2415 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2416
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2417 if ( this._trigger( "search", event ) === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2418 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2419 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2420
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2421 return this._search( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2422 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2423
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2424 _search: function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2425 this.pending++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2426 this.element.addClass( "ui-autocomplete-loading" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2427 this.cancelSearch = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2428
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2429 this.source( { term: value }, this._response() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2430 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2431
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2432 _response: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2433 var index = ++this.requestIndex;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2434
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2435 return $.proxy(function( content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2436 if ( index === this.requestIndex ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2437 this.__response( content );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2438 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2439
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2440 this.pending--;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2441 if ( !this.pending ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2442 this.element.removeClass( "ui-autocomplete-loading" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2443 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2444 }, this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2445 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2446
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2447 __response: function( content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2448 if ( content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2449 content = this._normalize( content );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2450 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2451 this._trigger( "response", null, { content: content } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2452 if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2453 this._suggest( content );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2454 this._trigger( "open" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2455 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2456 // use ._close() instead of .close() so we don't cancel future searches
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2457 this._close();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2458 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2459 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2460
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2461 close: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2462 this.cancelSearch = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2463 this._close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2464 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2465
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2466 _close: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2467 if ( this.menu.element.is( ":visible" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2468 this.menu.element.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2469 this.menu.blur();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2470 this.isNewMenu = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2471 this._trigger( "close", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2472 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2473 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2474
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2475 _change: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2476 if ( this.previous !== this._value() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2477 this._trigger( "change", event, { item: this.selectedItem } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2478 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2479 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2480
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2481 _normalize: function( items ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2482 // assume all items have the right format when the first item is complete
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2483 if ( items.length && items[0].label && items[0].value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2484 return items;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2485 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2486 return $.map( items, function( item ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2487 if ( typeof item === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2488 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2489 label: item,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2490 value: item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2491 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2492 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2493 return $.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2494 label: item.label || item.value,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2495 value: item.value || item.label
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2496 }, item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2497 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2498 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2499
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2500 _suggest: function( items ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2501 var ul = this.menu.element.empty();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2502 this._renderMenu( ul, items );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2503 this.isNewMenu = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2504 this.menu.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2505
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2506 // size and position menu
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2507 ul.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2508 this._resizeMenu();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2509 ul.position( $.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2510 of: this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2511 }, this.options.position ));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2512
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2513 if ( this.options.autoFocus ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2514 this.menu.next();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2515 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2516 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2517
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2518 _resizeMenu: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2519 var ul = this.menu.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2520 ul.outerWidth( Math.max(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2521 // Firefox wraps long text (possibly a rounding bug)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2522 // so we add 1px to avoid the wrapping (#7513)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2523 ul.width( "" ).outerWidth() + 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2524 this.element.outerWidth()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2525 ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2526 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2527
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2528 _renderMenu: function( ul, items ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2529 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2530 $.each( items, function( index, item ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2531 that._renderItemData( ul, item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2532 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2533 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2535 _renderItemData: function( ul, item ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2536 return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2537 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2538
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2539 _renderItem: function( ul, item ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2540 return $( "<li>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2541 .append( $( "<a>" ).text( item.label ) )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2542 .appendTo( ul );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2543 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2544
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2545 _move: function( direction, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2546 if ( !this.menu.element.is( ":visible" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2547 this.search( null, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2548 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2549 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2550 if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2551 this.menu.isLastItem() && /^next/.test( direction ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2552 this._value( this.term );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2553 this.menu.blur();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2554 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2555 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2556 this.menu[ direction ]( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2557 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2558
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2559 widget: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2560 return this.menu.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2561 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2562
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2563 _value: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2564 return this.valueMethod.apply( this.element, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2565 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2566
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2567 _keyEvent: function( keyEvent, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2568 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2569 this._move( keyEvent, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2570
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2571 // prevents moving cursor to beginning/end of the text field in some browsers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2572 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2573 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2574 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2575 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2576
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2577 $.extend( $.ui.autocomplete, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2578 escapeRegex: function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2579 return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2580 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2581 filter: function(array, term) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2582 var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2583 return $.grep( array, function(value) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2584 return matcher.test( value.label || value.value || value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2585 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2586 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2587 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2588
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2589
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2590 // live region extension, adding a `messages` option
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2591 // NOTE: This is an experimental API. We are still investigating
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2592 // a full solution for string manipulation and internationalization.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2593 $.widget( "ui.autocomplete", $.ui.autocomplete, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2594 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2595 messages: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2596 noResults: "No search results.",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2597 results: function( amount ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2598 return amount + ( amount > 1 ? " results are" : " result is" ) +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2599 " available, use up and down arrow keys to navigate.";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2600 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2601 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2602 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2603
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2604 __response: function( content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2605 var message;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2606 this._superApply( arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2607 if ( this.options.disabled || this.cancelSearch ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2608 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2609 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2610 if ( content && content.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2611 message = this.options.messages.results( content.length );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2612 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2613 message = this.options.messages.noResults;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2614 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2615 this.liveRegion.text( message );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2616 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2617 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2618
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2619 }( jQuery ));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2620 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2621
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2622 var lastActive,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2623 baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2624 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",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2625 formResetHandler = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2626 var form = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2627 setTimeout(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2628 form.find( ":ui-button" ).button( "refresh" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2629 }, 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2630 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2631 radioGroup = function( radio ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2632 var name = radio.name,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2633 form = radio.form,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2634 radios = $( [] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2635 if ( name ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2636 name = name.replace( /'/g, "\\'" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2637 if ( form ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2638 radios = $( form ).find( "[name='" + name + "']" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2639 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2640 radios = $( "[name='" + name + "']", radio.ownerDocument )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2641 .filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2642 return !this.form;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2643 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2644 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2645 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2646 return radios;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2647 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2648
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2649 $.widget( "ui.button", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2650 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2651 defaultElement: "<button>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2652 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2653 disabled: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2654 text: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2655 label: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2656 icons: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2657 primary: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2658 secondary: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2659 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2660 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2661 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2662 this.element.closest( "form" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2663 .unbind( "reset" + this.eventNamespace )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2664 .bind( "reset" + this.eventNamespace, formResetHandler );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2665
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2666 if ( typeof this.options.disabled !== "boolean" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2667 this.options.disabled = !!this.element.prop( "disabled" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2668 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2669 this.element.prop( "disabled", this.options.disabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2670 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2671
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2672 this._determineButtonType();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2673 this.hasTitle = !!this.buttonElement.attr( "title" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2674
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2675 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2676 options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2677 toggleButton = this.type === "checkbox" || this.type === "radio",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2678 activeClass = !toggleButton ? "ui-state-active" : "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2679
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2680 if ( options.label === null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2681 options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2682 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2683
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2684 this._hoverable( this.buttonElement );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2685
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2686 this.buttonElement
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2687 .addClass( baseClasses )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2688 .attr( "role", "button" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2689 .bind( "mouseenter" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2690 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2691 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2692 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2693 if ( this === lastActive ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2694 $( this ).addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2695 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2696 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2697 .bind( "mouseleave" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2698 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2699 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2700 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2701 $( this ).removeClass( activeClass );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2702 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2703 .bind( "click" + this.eventNamespace, function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2704 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2705 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2706 event.stopImmediatePropagation();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2707 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2708 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2709
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2710 // Can't use _focusable() because the element that receives focus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2711 // and the element that gets the ui-state-focus class are different
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2712 this._on({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2713 focus: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2714 this.buttonElement.addClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2715 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2716 blur: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2717 this.buttonElement.removeClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2718 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2719 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2720
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2721 if ( toggleButton ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2722 this.element.bind( "change" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2723 that.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2724 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2725 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2726
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2727 if ( this.type === "checkbox" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2728 this.buttonElement.bind( "click" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2729 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2730 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2731 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2732 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2733 } else if ( this.type === "radio" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2734 this.buttonElement.bind( "click" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2735 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2736 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2737 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2738 $( this ).addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2739 that.buttonElement.attr( "aria-pressed", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2740
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2741 var radio = that.element[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2742 radioGroup( radio )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2743 .not( radio )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2744 .map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2745 return $( this ).button( "widget" )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2746 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2747 .removeClass( "ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2748 .attr( "aria-pressed", "false" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2749 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2750 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2751 this.buttonElement
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2752 .bind( "mousedown" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2753 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2754 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2755 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2756 $( this ).addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2757 lastActive = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2758 that.document.one( "mouseup", function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2759 lastActive = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2760 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2761 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2762 .bind( "mouseup" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2763 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2764 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2765 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2766 $( this ).removeClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2767 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2768 .bind( "keydown" + this.eventNamespace, function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2769 if ( options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2770 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2771 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2772 if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2773 $( this ).addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2774 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2775 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2776 // see #8559, we bind to blur here in case the button element loses
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2777 // focus between keydown and keyup, it would be left in an "active" state
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2778 .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2779 $( this ).removeClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2780 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2781
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2782 if ( this.buttonElement.is("a") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2783 this.buttonElement.keyup(function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2784 if ( event.keyCode === $.ui.keyCode.SPACE ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2785 // TODO pass through original event correctly (just as 2nd argument doesn't work)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2786 $( this ).click();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2787 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2788 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2789 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2790 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2791
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2792 // TODO: pull out $.Widget's handling for the disabled option into
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2793 // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2794 // be overridden by individual plugins
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2795 this._setOption( "disabled", options.disabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2796 this._resetButton();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2797 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2798
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2799 _determineButtonType: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2800 var ancestor, labelSelector, checked;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2801
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2802 if ( this.element.is("[type=checkbox]") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2803 this.type = "checkbox";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2804 } else if ( this.element.is("[type=radio]") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2805 this.type = "radio";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2806 } else if ( this.element.is("input") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2807 this.type = "input";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2808 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2809 this.type = "button";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2810 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2811
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2812 if ( this.type === "checkbox" || this.type === "radio" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2813 // we don't search against the document in case the element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2814 // is disconnected from the DOM
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2815 ancestor = this.element.parents().last();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2816 labelSelector = "label[for='" + this.element.attr("id") + "']";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2817 this.buttonElement = ancestor.find( labelSelector );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2818 if ( !this.buttonElement.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2819 ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2820 this.buttonElement = ancestor.filter( labelSelector );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2821 if ( !this.buttonElement.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2822 this.buttonElement = ancestor.find( labelSelector );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2823 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2824 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2825 this.element.addClass( "ui-helper-hidden-accessible" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2826
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2827 checked = this.element.is( ":checked" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2828 if ( checked ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2829 this.buttonElement.addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2830 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2831 this.buttonElement.prop( "aria-pressed", checked );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2832 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2833 this.buttonElement = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2834 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2835 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2836
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2837 widget: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2838 return this.buttonElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2839 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2840
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2841 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2842 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2843 .removeClass( "ui-helper-hidden-accessible" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2844 this.buttonElement
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2845 .removeClass( baseClasses + " ui-state-active " + typeClasses )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2846 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2847 .removeAttr( "aria-pressed" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2848 .html( this.buttonElement.find(".ui-button-text").html() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2849
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2850 if ( !this.hasTitle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2851 this.buttonElement.removeAttr( "title" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2852 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2853 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2854
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2855 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2856 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2857 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2858 this.element.prop( "disabled", !!value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2859 if ( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2860 this.buttonElement.removeClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2861 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2862 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2863 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2864 this._resetButton();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2865 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2866
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2867 refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2868 //See #8237 & #8828
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2869 var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2870
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2871 if ( isDisabled !== this.options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2872 this._setOption( "disabled", isDisabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2873 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2874 if ( this.type === "radio" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2875 radioGroup( this.element[0] ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2876 if ( $( this ).is( ":checked" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2877 $( this ).button( "widget" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2878 .addClass( "ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2879 .attr( "aria-pressed", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2880 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2881 $( this ).button( "widget" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2882 .removeClass( "ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2883 .attr( "aria-pressed", "false" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2884 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2885 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2886 } else if ( this.type === "checkbox" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2887 if ( this.element.is( ":checked" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2888 this.buttonElement
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2889 .addClass( "ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2890 .attr( "aria-pressed", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2891 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2892 this.buttonElement
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2893 .removeClass( "ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2894 .attr( "aria-pressed", "false" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2895 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2896 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2897 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2898
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2899 _resetButton: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2900 if ( this.type === "input" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2901 if ( this.options.label ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2902 this.element.val( this.options.label );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2903 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2904 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2905 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2906 var buttonElement = this.buttonElement.removeClass( typeClasses ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2907 buttonText = $( "<span></span>", this.document[0] )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2908 .addClass( "ui-button-text" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2909 .html( this.options.label )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2910 .appendTo( buttonElement.empty() )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2911 .text(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2912 icons = this.options.icons,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2913 multipleIcons = icons.primary && icons.secondary,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2914 buttonClasses = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2915
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2916 if ( icons.primary || icons.secondary ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2917 if ( this.options.text ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2918 buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2919 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2920
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2921 if ( icons.primary ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2922 buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2923 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2924
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2925 if ( icons.secondary ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2926 buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2927 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2928
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2929 if ( !this.options.text ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2930 buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2931
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2932 if ( !this.hasTitle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2933 buttonElement.attr( "title", $.trim( buttonText ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2934 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2935 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2936 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2937 buttonClasses.push( "ui-button-text-only" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2938 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2939 buttonElement.addClass( buttonClasses.join( " " ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2940 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2941 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2942
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2943 $.widget( "ui.buttonset", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2944 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2945 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2946 items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2947 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2948
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2949 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2950 this.element.addClass( "ui-buttonset" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2951 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2952
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2953 _init: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2954 this.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2955 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2956
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2957 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2958 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2959 this.buttons.button( "option", key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2960 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2961
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2962 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2963 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2964
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2965 refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2966 var rtl = this.element.css( "direction" ) === "rtl";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2967
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2968 this.buttons = this.element.find( this.options.items )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2969 .filter( ":ui-button" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2970 .button( "refresh" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2971 .end()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2972 .not( ":ui-button" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2973 .button()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2974 .end()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2975 .map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2976 return $( this ).button( "widget" )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2977 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2978 .removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2979 .filter( ":first" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2980 .addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2981 .end()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2982 .filter( ":last" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2983 .addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2984 .end()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2985 .end();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2986 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2987
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2988 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2989 this.element.removeClass( "ui-buttonset" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2990 this.buttons
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2991 .map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2992 return $( this ).button( "widget" )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2993 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2994 .removeClass( "ui-corner-left ui-corner-right" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2995 .end()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2996 .button( "destroy" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2997 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2998 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2999
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3000 }( jQuery ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3001 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3002
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3003 $.extend($.ui, { datepicker: { version: "1.10.4" } });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3004
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3005 var PROP_NAME = "datepicker",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3006 instActive;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3007
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3008 /* Date picker manager.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3009 Use the singleton instance of this class, $.datepicker, to interact with the date picker.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3010 Settings for (groups of) date pickers are maintained in an instance object,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3011 allowing multiple different settings on the same page. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3012
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3013 function Datepicker() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3014 this._curInst = null; // The current instance in use
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3015 this._keyEvent = false; // If the last event was a key event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3016 this._disabledInputs = []; // List of date picker inputs that have been disabled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3017 this._datepickerShowing = false; // True if the popup picker is showing , false if not
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3018 this._inDialog = false; // True if showing within a "dialog", false if not
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3019 this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3020 this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3021 this._appendClass = "ui-datepicker-append"; // The name of the append marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3022 this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3023 this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3024 this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3025 this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3026 this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3027 this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3028 this.regional = []; // Available regional settings, indexed by language code
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3029 this.regional[""] = { // Default regional settings
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3030 closeText: "Done", // Display text for close link
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3031 prevText: "Prev", // Display text for previous month link
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3032 nextText: "Next", // Display text for next month link
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3033 currentText: "Today", // Display text for current month link
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3034 monthNames: ["January","February","March","April","May","June",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3035 "July","August","September","October","November","December"], // Names of months for drop-down and formatting
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3036 monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3037 dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3038 dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3039 dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3040 weekHeader: "Wk", // Column header for week of the year
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3041 dateFormat: "mm/dd/yy", // See format options on parseDate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3042 firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3043 isRTL: false, // True if right-to-left language, false if left-to-right
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3044 showMonthAfterYear: false, // True if the year select precedes month, false for month then year
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3045 yearSuffix: "" // Additional text to append to the year in the month headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3046 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3047 this._defaults = { // Global defaults for all the date picker instances
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3048 showOn: "focus", // "focus" for popup on focus,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3049 // "button" for trigger button, or "both" for either
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3050 showAnim: "fadeIn", // Name of jQuery animation for popup
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3051 showOptions: {}, // Options for enhanced animations
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3052 defaultDate: null, // Used when field is blank: actual date,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3053 // +/-number for offset from today, null for today
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3054 appendText: "", // Display text following the input box, e.g. showing the format
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3055 buttonText: "...", // Text for trigger button
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3056 buttonImage: "", // URL for trigger button image
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3057 buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3058 hideIfNoPrevNext: false, // True to hide next/previous month links
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3059 // if not applicable, false to just disable them
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3060 navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3061 gotoCurrent: false, // True if today link goes back to current selection instead
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3062 changeMonth: false, // True if month can be selected directly, false if only prev/next
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3063 changeYear: false, // True if year can be selected directly, false if only prev/next
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3064 yearRange: "c-10:c+10", // Range of years to display in drop-down,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3065 // either relative to today's year (-nn:+nn), relative to currently displayed year
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3066 // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3067 showOtherMonths: false, // True to show dates in other months, false to leave blank
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3068 selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3069 showWeek: false, // True to show week of the year, false to not show it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3070 calculateWeek: this.iso8601Week, // How to calculate the week of the year,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3071 // takes a Date and returns the number of the week for it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3072 shortYearCutoff: "+10", // Short year values < this are in the current century,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3073 // > this are in the previous century,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3074 // string value starting with "+" for current year + value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3075 minDate: null, // The earliest selectable date, or null for no limit
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3076 maxDate: null, // The latest selectable date, or null for no limit
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3077 duration: "fast", // Duration of display/closure
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3078 beforeShowDay: null, // Function that takes a date and returns an array with
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3079 // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3080 // [2] = cell title (optional), e.g. $.datepicker.noWeekends
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3081 beforeShow: null, // Function that takes an input field and
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3082 // returns a set of custom settings for the date picker
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3083 onSelect: null, // Define a callback function when a date is selected
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3084 onChangeMonthYear: null, // Define a callback function when the month or year is changed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3085 onClose: null, // Define a callback function when the datepicker is closed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3086 numberOfMonths: 1, // Number of months to show at a time
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3087 showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3088 stepMonths: 1, // Number of months to step back/forward
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3089 stepBigMonths: 12, // Number of months to step back/forward for the big links
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3090 altField: "", // Selector for an alternate field to store selected dates into
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3091 altFormat: "", // The date format to use for the alternate field
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3092 constrainInput: true, // The input is constrained by the current date format
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3093 showButtonPanel: false, // True to show button panel, false to not show it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3094 autoSize: false, // True to size the input for the date format, false to leave as is
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3095 disabled: false // The initial disabled state
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3096 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3097 $.extend(this._defaults, this.regional[""]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3098 this.dpDiv = bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3099 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3100
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3101 $.extend(Datepicker.prototype, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3102 /* Class name added to elements to indicate already configured with a date picker. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3103 markerClassName: "hasDatepicker",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3104
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3105 //Keep track of the maximum number of rows displayed (see #7043)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3106 maxRows: 4,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3107
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3108 // TODO rename to "widget" when switching to widget factory
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3109 _widgetDatepicker: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3110 return this.dpDiv;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3111 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3112
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3113 /* Override the default settings for all instances of the date picker.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3114 * @param settings object - the new settings to use as defaults (anonymous object)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3115 * @return the manager object
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3116 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3117 setDefaults: function(settings) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3118 extendRemove(this._defaults, settings || {});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3119 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3120 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3121
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3122 /* Attach the date picker to a jQuery selection.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3123 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3124 * @param settings object - the new settings to use for this date picker instance (anonymous)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3125 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3126 _attachDatepicker: function(target, settings) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3127 var nodeName, inline, inst;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3128 nodeName = target.nodeName.toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3129 inline = (nodeName === "div" || nodeName === "span");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3130 if (!target.id) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3131 this.uuid += 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3132 target.id = "dp" + this.uuid;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3133 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3134 inst = this._newInst($(target), inline);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3135 inst.settings = $.extend({}, settings || {});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3136 if (nodeName === "input") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3137 this._connectDatepicker(target, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3138 } else if (inline) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3139 this._inlineDatepicker(target, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3140 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3141 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3142
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3143 /* Create a new instance object. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3144 _newInst: function(target, inline) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3145 var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3146 return {id: id, input: target, // associated target
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3147 selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3148 drawMonth: 0, drawYear: 0, // month being drawn
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3149 inline: inline, // is datepicker inline or not
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3150 dpDiv: (!inline ? this.dpDiv : // presentation div
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3151 bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3152 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3153
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3154 /* Attach the date picker to an input field. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3155 _connectDatepicker: function(target, inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3156 var input = $(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3157 inst.append = $([]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3158 inst.trigger = $([]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3159 if (input.hasClass(this.markerClassName)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3160 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3161 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3162 this._attachments(input, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3163 input.addClass(this.markerClassName).keydown(this._doKeyDown).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3164 keypress(this._doKeyPress).keyup(this._doKeyUp);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3165 this._autoSize(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3166 $.data(target, PROP_NAME, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3167 //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3168 if( inst.settings.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3169 this._disableDatepicker( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3170 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3171 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3172
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3173 /* Make attachments based on settings. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3174 _attachments: function(input, inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3175 var showOn, buttonText, buttonImage,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3176 appendText = this._get(inst, "appendText"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3177 isRTL = this._get(inst, "isRTL");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3178
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3179 if (inst.append) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3180 inst.append.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3181 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3182 if (appendText) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3183 inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3184 input[isRTL ? "before" : "after"](inst.append);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3185 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3186
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3187 input.unbind("focus", this._showDatepicker);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3188
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3189 if (inst.trigger) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3190 inst.trigger.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3191 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3192
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3193 showOn = this._get(inst, "showOn");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3194 if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3195 input.focus(this._showDatepicker);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3196 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3197 if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3198 buttonText = this._get(inst, "buttonText");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3199 buttonImage = this._get(inst, "buttonImage");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3200 inst.trigger = $(this._get(inst, "buttonImageOnly") ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3201 $("<img/>").addClass(this._triggerClass).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3202 attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3203 $("<button type='button'></button>").addClass(this._triggerClass).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3204 html(!buttonImage ? buttonText : $("<img/>").attr(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3205 { src:buttonImage, alt:buttonText, title:buttonText })));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3206 input[isRTL ? "before" : "after"](inst.trigger);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3207 inst.trigger.click(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3208 if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3209 $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3210 } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3211 $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3212 $.datepicker._showDatepicker(input[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3213 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3214 $.datepicker._showDatepicker(input[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3215 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3216 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3217 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3218 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3219 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3220
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3221 /* Apply the maximum length for the date format. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3222 _autoSize: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3223 if (this._get(inst, "autoSize") && !inst.inline) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3224 var findMax, max, maxI, i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3225 date = new Date(2009, 12 - 1, 20), // Ensure double digits
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3226 dateFormat = this._get(inst, "dateFormat");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3227
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3228 if (dateFormat.match(/[DM]/)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3229 findMax = function(names) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3230 max = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3231 maxI = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3232 for (i = 0; i < names.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3233 if (names[i].length > max) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3234 max = names[i].length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3235 maxI = i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3236 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3237 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3238 return maxI;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3239 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3240 date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3241 "monthNames" : "monthNamesShort"))));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3242 date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3243 "dayNames" : "dayNamesShort"))) + 20 - date.getDay());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3244 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3245 inst.input.attr("size", this._formatDate(inst, date).length);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3246 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3247 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3248
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3249 /* Attach an inline date picker to a div. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3250 _inlineDatepicker: function(target, inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3251 var divSpan = $(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3252 if (divSpan.hasClass(this.markerClassName)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3253 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3254 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3255 divSpan.addClass(this.markerClassName).append(inst.dpDiv);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3256 $.data(target, PROP_NAME, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3257 this._setDate(inst, this._getDefaultDate(inst), true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3258 this._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3259 this._updateAlternate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3260 //If disabled option is true, disable the datepicker before showing it (see ticket #5665)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3261 if( inst.settings.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3262 this._disableDatepicker( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3263 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3264 // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3265 // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3266 inst.dpDiv.css( "display", "block" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3267 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3268
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3269 /* Pop-up the date picker in a "dialog" box.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3270 * @param input element - ignored
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3271 * @param date string or Date - the initial date to display
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3272 * @param onSelect function - the function to call when a date is selected
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3273 * @param settings object - update the dialog date picker instance's settings (anonymous object)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3274 * @param pos int[2] - coordinates for the dialog's position within the screen or
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3275 * event - with x/y coordinates or
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3276 * leave empty for default (screen centre)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3277 * @return the manager object
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3278 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3279 _dialogDatepicker: function(input, date, onSelect, settings, pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3280 var id, browserWidth, browserHeight, scrollX, scrollY,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3281 inst = this._dialogInst; // internal instance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3282
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3283 if (!inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3284 this.uuid += 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3285 id = "dp" + this.uuid;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3286 this._dialogInput = $("<input type='text' id='" + id +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3287 "' style='position: absolute; top: -100px; width: 0px;'/>");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3288 this._dialogInput.keydown(this._doKeyDown);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3289 $("body").append(this._dialogInput);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3290 inst = this._dialogInst = this._newInst(this._dialogInput, false);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3291 inst.settings = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3292 $.data(this._dialogInput[0], PROP_NAME, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3293 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3294 extendRemove(inst.settings, settings || {});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3295 date = (date && date.constructor === Date ? this._formatDate(inst, date) : date);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3296 this._dialogInput.val(date);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3297
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3298 this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3299 if (!this._pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3300 browserWidth = document.documentElement.clientWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3301 browserHeight = document.documentElement.clientHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3302 scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3303 scrollY = document.documentElement.scrollTop || document.body.scrollTop;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3304 this._pos = // should use actual width/height below
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3305 [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3306 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3307
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3308 // move input on screen for focus, but hidden behind dialog
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3309 this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3310 inst.settings.onSelect = onSelect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3311 this._inDialog = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3312 this.dpDiv.addClass(this._dialogClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3313 this._showDatepicker(this._dialogInput[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3314 if ($.blockUI) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3315 $.blockUI(this.dpDiv);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3316 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3317 $.data(this._dialogInput[0], PROP_NAME, inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3318 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3319 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3320
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3321 /* Detach a datepicker from its control.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3322 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3323 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3324 _destroyDatepicker: function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3325 var nodeName,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3326 $target = $(target),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3327 inst = $.data(target, PROP_NAME);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3328
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3329 if (!$target.hasClass(this.markerClassName)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3330 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3331 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3332
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3333 nodeName = target.nodeName.toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3334 $.removeData(target, PROP_NAME);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3335 if (nodeName === "input") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3336 inst.append.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3337 inst.trigger.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3338 $target.removeClass(this.markerClassName).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3339 unbind("focus", this._showDatepicker).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3340 unbind("keydown", this._doKeyDown).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3341 unbind("keypress", this._doKeyPress).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3342 unbind("keyup", this._doKeyUp);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3343 } else if (nodeName === "div" || nodeName === "span") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3344 $target.removeClass(this.markerClassName).empty();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3345 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3346 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3347
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3348 /* Enable the date picker to a jQuery selection.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3349 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3350 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3351 _enableDatepicker: function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3352 var nodeName, inline,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3353 $target = $(target),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3354 inst = $.data(target, PROP_NAME);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3355
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3356 if (!$target.hasClass(this.markerClassName)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3357 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3358 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3359
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3360 nodeName = target.nodeName.toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3361 if (nodeName === "input") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3362 target.disabled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3363 inst.trigger.filter("button").
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3364 each(function() { this.disabled = false; }).end().
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3365 filter("img").css({opacity: "1.0", cursor: ""});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3366 } else if (nodeName === "div" || nodeName === "span") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3367 inline = $target.children("." + this._inlineClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3368 inline.children().removeClass("ui-state-disabled");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3369 inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3370 prop("disabled", false);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3371 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3372 this._disabledInputs = $.map(this._disabledInputs,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3373 function(value) { return (value === target ? null : value); }); // delete entry
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3374 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3375
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3376 /* Disable the date picker to a jQuery selection.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3377 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3378 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3379 _disableDatepicker: function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3380 var nodeName, inline,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3381 $target = $(target),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3382 inst = $.data(target, PROP_NAME);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3383
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3384 if (!$target.hasClass(this.markerClassName)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3385 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3386 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3387
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3388 nodeName = target.nodeName.toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3389 if (nodeName === "input") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3390 target.disabled = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3391 inst.trigger.filter("button").
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3392 each(function() { this.disabled = true; }).end().
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3393 filter("img").css({opacity: "0.5", cursor: "default"});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3394 } else if (nodeName === "div" || nodeName === "span") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3395 inline = $target.children("." + this._inlineClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3396 inline.children().addClass("ui-state-disabled");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3397 inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3398 prop("disabled", true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3399 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3400 this._disabledInputs = $.map(this._disabledInputs,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3401 function(value) { return (value === target ? null : value); }); // delete entry
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3402 this._disabledInputs[this._disabledInputs.length] = target;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3403 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3404
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3405 /* Is the first field in a jQuery collection disabled as a datepicker?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3406 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3407 * @return boolean - true if disabled, false if enabled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3408 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3409 _isDisabledDatepicker: function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3410 if (!target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3411 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3412 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3413 for (var i = 0; i < this._disabledInputs.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3414 if (this._disabledInputs[i] === target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3415 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3416 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3417 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3418 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3419 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3420
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3421 /* Retrieve the instance data for the target control.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3422 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3423 * @return object - the associated instance data
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3424 * @throws error if a jQuery problem getting data
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3425 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3426 _getInst: function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3427 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3428 return $.data(target, PROP_NAME);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3429 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3430 catch (err) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3431 throw "Missing instance data for this datepicker";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3432 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3433 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3434
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3435 /* Update or retrieve the settings for a date picker attached to an input field or division.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3436 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3437 * @param name object - the new settings to update or
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3438 * string - the name of the setting to change or retrieve,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3439 * when retrieving also "all" for all instance settings or
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3440 * "defaults" for all global defaults
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3441 * @param value any - the new value for the setting
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3442 * (omit if above is an object or to retrieve a value)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3443 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3444 _optionDatepicker: function(target, name, value) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3445 var settings, date, minDate, maxDate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3446 inst = this._getInst(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3447
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3448 if (arguments.length === 2 && typeof name === "string") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3449 return (name === "defaults" ? $.extend({}, $.datepicker._defaults) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3450 (inst ? (name === "all" ? $.extend({}, inst.settings) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3451 this._get(inst, name)) : null));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3452 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3453
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3454 settings = name || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3455 if (typeof name === "string") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3456 settings = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3457 settings[name] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3458 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3459
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3460 if (inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3461 if (this._curInst === inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3462 this._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3463 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3464
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3465 date = this._getDateDatepicker(target, true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3466 minDate = this._getMinMaxDate(inst, "min");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3467 maxDate = this._getMinMaxDate(inst, "max");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3468 extendRemove(inst.settings, settings);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3469 // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3470 if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3471 inst.settings.minDate = this._formatDate(inst, minDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3472 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3473 if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3474 inst.settings.maxDate = this._formatDate(inst, maxDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3475 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3476 if ( "disabled" in settings ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3477 if ( settings.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3478 this._disableDatepicker(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3479 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3480 this._enableDatepicker(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3481 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3482 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3483 this._attachments($(target), inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3484 this._autoSize(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3485 this._setDate(inst, date);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3486 this._updateAlternate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3487 this._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3488 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3489 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3490
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3491 // change method deprecated
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3492 _changeDatepicker: function(target, name, value) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3493 this._optionDatepicker(target, name, value);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3494 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3495
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3496 /* Redraw the date picker attached to an input field or division.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3497 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3498 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3499 _refreshDatepicker: function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3500 var inst = this._getInst(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3501 if (inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3502 this._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3503 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3504 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3505
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3506 /* Set the dates for a jQuery selection.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3507 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3508 * @param date Date - the new date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3509 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3510 _setDateDatepicker: function(target, date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3511 var inst = this._getInst(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3512 if (inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3513 this._setDate(inst, date);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3514 this._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3515 this._updateAlternate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3516 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3517 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3518
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3519 /* Get the date(s) for the first entry in a jQuery selection.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3520 * @param target element - the target input field or division or span
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3521 * @param noDefault boolean - true if no default date is to be used
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3522 * @return Date - the current date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3523 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3524 _getDateDatepicker: function(target, noDefault) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3525 var inst = this._getInst(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3526 if (inst && !inst.inline) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3527 this._setDateFromField(inst, noDefault);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3528 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3529 return (inst ? this._getDate(inst) : null);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3530 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3531
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3532 /* Handle keystrokes. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3533 _doKeyDown: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3534 var onSelect, dateStr, sel,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3535 inst = $.datepicker._getInst(event.target),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3536 handled = true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3537 isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3538
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3539 inst._keyEvent = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3540 if ($.datepicker._datepickerShowing) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3541 switch (event.keyCode) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3542 case 9: $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3543 handled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3544 break; // hide on tab out
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3545 case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3546 $.datepicker._currentClass + ")", inst.dpDiv);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3547 if (sel[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3548 $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3549 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3550
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3551 onSelect = $.datepicker._get(inst, "onSelect");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3552 if (onSelect) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3553 dateStr = $.datepicker._formatDate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3554
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3555 // trigger custom callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3556 onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3557 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3558 $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3559 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3560
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3561 return false; // don't submit the form
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3562 case 27: $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3563 break; // hide on escape
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3564 case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3565 -$.datepicker._get(inst, "stepBigMonths") :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3566 -$.datepicker._get(inst, "stepMonths")), "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3567 break; // previous month/year on page up/+ ctrl
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3568 case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3569 +$.datepicker._get(inst, "stepBigMonths") :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3570 +$.datepicker._get(inst, "stepMonths")), "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3571 break; // next month/year on page down/+ ctrl
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3572 case 35: if (event.ctrlKey || event.metaKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3573 $.datepicker._clearDate(event.target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3574 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3575 handled = event.ctrlKey || event.metaKey;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3576 break; // clear on ctrl or command +end
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3577 case 36: if (event.ctrlKey || event.metaKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3578 $.datepicker._gotoToday(event.target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3579 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3580 handled = event.ctrlKey || event.metaKey;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3581 break; // current on ctrl or command +home
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3582 case 37: if (event.ctrlKey || event.metaKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3583 $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3584 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3585 handled = event.ctrlKey || event.metaKey;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3586 // -1 day on ctrl or command +left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3587 if (event.originalEvent.altKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3588 $.datepicker._adjustDate(event.target, (event.ctrlKey ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3589 -$.datepicker._get(inst, "stepBigMonths") :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3590 -$.datepicker._get(inst, "stepMonths")), "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3591 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3592 // next month/year on alt +left on Mac
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3593 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3594 case 38: if (event.ctrlKey || event.metaKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3595 $.datepicker._adjustDate(event.target, -7, "D");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3596 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3597 handled = event.ctrlKey || event.metaKey;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3598 break; // -1 week on ctrl or command +up
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3599 case 39: if (event.ctrlKey || event.metaKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3600 $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3601 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3602 handled = event.ctrlKey || event.metaKey;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3603 // +1 day on ctrl or command +right
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3604 if (event.originalEvent.altKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3605 $.datepicker._adjustDate(event.target, (event.ctrlKey ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3606 +$.datepicker._get(inst, "stepBigMonths") :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3607 +$.datepicker._get(inst, "stepMonths")), "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3608 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3609 // next month/year on alt +right
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3610 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3611 case 40: if (event.ctrlKey || event.metaKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3612 $.datepicker._adjustDate(event.target, +7, "D");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3613 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3614 handled = event.ctrlKey || event.metaKey;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3615 break; // +1 week on ctrl or command +down
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3616 default: handled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3617 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3618 } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3619 $.datepicker._showDatepicker(this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3620 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3621 handled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3622 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3623
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3624 if (handled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3625 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3626 event.stopPropagation();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3627 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3628 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3629
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3630 /* Filter entered characters - based on date format. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3631 _doKeyPress: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3632 var chars, chr,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3633 inst = $.datepicker._getInst(event.target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3634
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3635 if ($.datepicker._get(inst, "constrainInput")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3636 chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3637 chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3638 return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3639 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3640 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3641
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3642 /* Synchronise manual entry and field/alternate field. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3643 _doKeyUp: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3644 var date,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3645 inst = $.datepicker._getInst(event.target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3646
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3647 if (inst.input.val() !== inst.lastVal) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3648 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3649 date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3650 (inst.input ? inst.input.val() : null),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3651 $.datepicker._getFormatConfig(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3652
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3653 if (date) { // only if valid
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3654 $.datepicker._setDateFromField(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3655 $.datepicker._updateAlternate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3656 $.datepicker._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3657 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3658 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3659 catch (err) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3660 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3661 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3662 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3663 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3664
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3665 /* Pop-up the date picker for a given input field.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3666 * If false returned from beforeShow event handler do not show.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3667 * @param input element - the input field attached to the date picker or
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3668 * event - if triggered by focus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3669 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3670 _showDatepicker: function(input) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3671 input = input.target || input;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3672 if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3673 input = $("input", input.parentNode)[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3674 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3675
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3676 if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3677 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3678 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3679
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3680 var inst, beforeShow, beforeShowSettings, isFixed,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3681 offset, showAnim, duration;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3682
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3683 inst = $.datepicker._getInst(input);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3684 if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3685 $.datepicker._curInst.dpDiv.stop(true, true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3686 if ( inst && $.datepicker._datepickerShowing ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3687 $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3688 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3689 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3690
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3691 beforeShow = $.datepicker._get(inst, "beforeShow");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3692 beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3693 if(beforeShowSettings === false){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3694 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3695 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3696 extendRemove(inst.settings, beforeShowSettings);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3697
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3698 inst.lastVal = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3699 $.datepicker._lastInput = input;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3700 $.datepicker._setDateFromField(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3701
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3702 if ($.datepicker._inDialog) { // hide cursor
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3703 input.value = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3704 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3705 if (!$.datepicker._pos) { // position below input
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3706 $.datepicker._pos = $.datepicker._findPos(input);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3707 $.datepicker._pos[1] += input.offsetHeight; // add the height
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3708 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3709
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3710 isFixed = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3711 $(input).parents().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3712 isFixed |= $(this).css("position") === "fixed";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3713 return !isFixed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3714 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3715
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3716 offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3717 $.datepicker._pos = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3718 //to avoid flashes on Firefox
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3719 inst.dpDiv.empty();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3720 // determine sizing offscreen
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3721 inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3722 $.datepicker._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3723 // fix width for dynamic number of date pickers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3724 // and adjust position before showing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3725 offset = $.datepicker._checkOffset(inst, offset, isFixed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3726 inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3727 "static" : (isFixed ? "fixed" : "absolute")), display: "none",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3728 left: offset.left + "px", top: offset.top + "px"});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3729
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3730 if (!inst.inline) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3731 showAnim = $.datepicker._get(inst, "showAnim");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3732 duration = $.datepicker._get(inst, "duration");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3733 inst.dpDiv.zIndex($(input).zIndex()+1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3734 $.datepicker._datepickerShowing = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3735
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3736 if ( $.effects && $.effects.effect[ showAnim ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3737 inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3738 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3739 inst.dpDiv[showAnim || "show"](showAnim ? duration : null);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3740 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3741
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3742 if ( $.datepicker._shouldFocusInput( inst ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3743 inst.input.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3744 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3745
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3746 $.datepicker._curInst = inst;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3747 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3748 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3749
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3750 /* Generate the date picker content. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3751 _updateDatepicker: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3752 this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3753 instActive = inst; // for delegate hover events
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3754 inst.dpDiv.empty().append(this._generateHTML(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3755 this._attachHandlers(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3756 inst.dpDiv.find("." + this._dayOverClass + " a").mouseover();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3757
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3758 var origyearshtml,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3759 numMonths = this._getNumberOfMonths(inst),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3760 cols = numMonths[1],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3761 width = 17;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3762
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3763 inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3764 if (cols > 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3765 inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3766 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3767 inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3768 "Class"]("ui-datepicker-multi");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3769 inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3770 "Class"]("ui-datepicker-rtl");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3771
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3772 if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3773 inst.input.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3774 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3775
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3776 // deffered render of the years select (to avoid flashes on Firefox)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3777 if( inst.yearshtml ){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3778 origyearshtml = inst.yearshtml;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3779 setTimeout(function(){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3780 //assure that inst.yearshtml didn't change.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3781 if( origyearshtml === inst.yearshtml && inst.yearshtml ){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3782 inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3783 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3784 origyearshtml = inst.yearshtml = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3785 }, 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3786 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3787 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3788
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3789 // #6694 - don't focus the input if it's already focused
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3790 // this breaks the change event in IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3791 // Support: IE and jQuery <1.9
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3792 _shouldFocusInput: function( inst ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3793 return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3794 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3795
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3796 /* Check positioning to remain on screen. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3797 _checkOffset: function(inst, offset, isFixed) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3798 var dpWidth = inst.dpDiv.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3799 dpHeight = inst.dpDiv.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3800 inputWidth = inst.input ? inst.input.outerWidth() : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3801 inputHeight = inst.input ? inst.input.outerHeight() : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3802 viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3803 viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3804
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3805 offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3806 offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3807 offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3808
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3809 // now check if datepicker is showing outside window viewport - move to a better place if so.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3810 offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3811 Math.abs(offset.left + dpWidth - viewWidth) : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3812 offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3813 Math.abs(dpHeight + inputHeight) : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3814
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3815 return offset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3816 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3817
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3818 /* Find an object's position on the screen. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3819 _findPos: function(obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3820 var position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3821 inst = this._getInst(obj),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3822 isRTL = this._get(inst, "isRTL");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3824 while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3825 obj = obj[isRTL ? "previousSibling" : "nextSibling"];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3826 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3827
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3828 position = $(obj).offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3829 return [position.left, position.top];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3830 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3831
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3832 /* Hide the date picker from view.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3833 * @param input element - the input field attached to the date picker
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3834 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3835 _hideDatepicker: function(input) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3836 var showAnim, duration, postProcess, onClose,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3837 inst = this._curInst;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3838
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3839 if (!inst || (input && inst !== $.data(input, PROP_NAME))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3840 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3841 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3842
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3843 if (this._datepickerShowing) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3844 showAnim = this._get(inst, "showAnim");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3845 duration = this._get(inst, "duration");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3846 postProcess = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3847 $.datepicker._tidyDialog(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3848 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3849
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3850 // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3851 if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3852 inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3853 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3854 inst.dpDiv[(showAnim === "slideDown" ? "slideUp" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3855 (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3856 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3857
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3858 if (!showAnim) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3859 postProcess();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3860 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3861 this._datepickerShowing = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3862
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3863 onClose = this._get(inst, "onClose");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3864 if (onClose) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3865 onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3866 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3867
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3868 this._lastInput = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3869 if (this._inDialog) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3870 this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3871 if ($.blockUI) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3872 $.unblockUI();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3873 $("body").append(this.dpDiv);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3874 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3875 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3876 this._inDialog = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3877 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3878 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3879
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3880 /* Tidy up after a dialog display. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3881 _tidyDialog: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3882 inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3883 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3884
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3885 /* Close date picker if clicked elsewhere. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3886 _checkExternalClick: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3887 if (!$.datepicker._curInst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3888 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3889 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3890
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3891 var $target = $(event.target),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3892 inst = $.datepicker._getInst($target[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3893
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3894 if ( ( ( $target[0].id !== $.datepicker._mainDivId &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3895 $target.parents("#" + $.datepicker._mainDivId).length === 0 &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3896 !$target.hasClass($.datepicker.markerClassName) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3897 !$target.closest("." + $.datepicker._triggerClass).length &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3898 $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3899 ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3900 $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3901 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3902 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3903
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3904 /* Adjust one of the date sub-fields. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3905 _adjustDate: function(id, offset, period) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3906 var target = $(id),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3907 inst = this._getInst(target[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3908
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3909 if (this._isDisabledDatepicker(target[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3910 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3911 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3912 this._adjustInstDate(inst, offset +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3913 (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3914 period);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3915 this._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3916 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3917
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3918 /* Action for current link. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3919 _gotoToday: function(id) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3920 var date,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3921 target = $(id),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3922 inst = this._getInst(target[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3923
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3924 if (this._get(inst, "gotoCurrent") && inst.currentDay) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3925 inst.selectedDay = inst.currentDay;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3926 inst.drawMonth = inst.selectedMonth = inst.currentMonth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3927 inst.drawYear = inst.selectedYear = inst.currentYear;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3928 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3929 date = new Date();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3930 inst.selectedDay = date.getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3931 inst.drawMonth = inst.selectedMonth = date.getMonth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3932 inst.drawYear = inst.selectedYear = date.getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3933 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3934 this._notifyChange(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3935 this._adjustDate(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3936 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3937
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3938 /* Action for selecting a new month/year. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3939 _selectMonthYear: function(id, select, period) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3940 var target = $(id),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3941 inst = this._getInst(target[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3942
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3943 inst["selected" + (period === "M" ? "Month" : "Year")] =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3944 inst["draw" + (period === "M" ? "Month" : "Year")] =
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3945 parseInt(select.options[select.selectedIndex].value,10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3946
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3947 this._notifyChange(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3948 this._adjustDate(target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3949 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3950
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3951 /* Action for selecting a day. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3952 _selectDay: function(id, month, year, td) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3953 var inst,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3954 target = $(id);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3955
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3956 if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3957 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3958 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3959
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3960 inst = this._getInst(target[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3961 inst.selectedDay = inst.currentDay = $("a", td).html();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3962 inst.selectedMonth = inst.currentMonth = month;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3963 inst.selectedYear = inst.currentYear = year;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3964 this._selectDate(id, this._formatDate(inst,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3965 inst.currentDay, inst.currentMonth, inst.currentYear));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3966 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3967
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3968 /* Erase the input field and hide the date picker. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3969 _clearDate: function(id) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3970 var target = $(id);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3971 this._selectDate(target, "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3972 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3973
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3974 /* Update the input field with the selected date. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3975 _selectDate: function(id, dateStr) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3976 var onSelect,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3977 target = $(id),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3978 inst = this._getInst(target[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3979
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3980 dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3981 if (inst.input) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3982 inst.input.val(dateStr);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3983 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3984 this._updateAlternate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3985
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3986 onSelect = this._get(inst, "onSelect");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3987 if (onSelect) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3988 onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3989 } else if (inst.input) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3990 inst.input.trigger("change"); // fire the change event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3991 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3992
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3993 if (inst.inline){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3994 this._updateDatepicker(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3995 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3996 this._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3997 this._lastInput = inst.input[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3998 if (typeof(inst.input[0]) !== "object") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3999 inst.input.focus(); // restore focus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4000 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4001 this._lastInput = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4002 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4003 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4004
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4005 /* Update any alternate field to synchronise with the main field. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4006 _updateAlternate: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4007 var altFormat, date, dateStr,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4008 altField = this._get(inst, "altField");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4009
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4010 if (altField) { // update alternate field too
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4011 altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4012 date = this._getDate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4013 dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4014 $(altField).each(function() { $(this).val(dateStr); });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4015 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4016 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4017
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4018 /* Set as beforeShowDay function to prevent selection of weekends.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4019 * @param date Date - the date to customise
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4020 * @return [boolean, string] - is this date selectable?, what is its CSS class?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4021 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4022 noWeekends: function(date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4023 var day = date.getDay();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4024 return [(day > 0 && day < 6), ""];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4025 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4026
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4027 /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4028 * @param date Date - the date to get the week for
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4029 * @return number - the number of the week within the year that contains this date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4030 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4031 iso8601Week: function(date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4032 var time,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4033 checkDate = new Date(date.getTime());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4034
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4035 // Find Thursday of this week starting on Monday
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4036 checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4037
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4038 time = checkDate.getTime();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4039 checkDate.setMonth(0); // Compare with Jan 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4040 checkDate.setDate(1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4041 return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4042 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4043
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4044 /* Parse a string value into a date object.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4045 * See formatDate below for the possible formats.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4046 *
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4047 * @param format string - the expected format of the date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4048 * @param value string - the date in the above format
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4049 * @param settings Object - attributes include:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4050 * shortYearCutoff number - the cutoff year for determining the century (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4051 * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4052 * dayNames string[7] - names of the days from Sunday (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4053 * monthNamesShort string[12] - abbreviated names of the months (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4054 * monthNames string[12] - names of the months (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4055 * @return Date - the extracted date value or null if value is blank
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4056 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4057 parseDate: function (format, value, settings) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4058 if (format == null || value == null) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4059 throw "Invalid arguments";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4060 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4061
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4062 value = (typeof value === "object" ? value.toString() : value + "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4063 if (value === "") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4064 return null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4065 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4066
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4067 var iFormat, dim, extra,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4068 iValue = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4069 shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4070 shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4071 new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4072 dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4073 dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4074 monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4075 monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4076 year = -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4077 month = -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4078 day = -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4079 doy = -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4080 literal = false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4081 date,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4082 // Check whether a format character is doubled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4083 lookAhead = function(match) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4084 var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4085 if (matches) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4086 iFormat++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4087 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4088 return matches;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4089 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4090 // Extract a number from the string value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4091 getNumber = function(match) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4092 var isDoubled = lookAhead(match),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4093 size = (match === "@" ? 14 : (match === "!" ? 20 :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4094 (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4095 digits = new RegExp("^\\d{1," + size + "}"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4096 num = value.substring(iValue).match(digits);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4097 if (!num) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4098 throw "Missing number at position " + iValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4099 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4100 iValue += num[0].length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4101 return parseInt(num[0], 10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4102 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4103 // Extract a name from the string value and convert to an index
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4104 getName = function(match, shortNames, longNames) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4105 var index = -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4106 names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4107 return [ [k, v] ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4108 }).sort(function (a, b) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4109 return -(a[1].length - b[1].length);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4110 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4111
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4112 $.each(names, function (i, pair) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4113 var name = pair[1];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4114 if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4115 index = pair[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4116 iValue += name.length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4117 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4118 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4119 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4120 if (index !== -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4121 return index + 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4122 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4123 throw "Unknown name at position " + iValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4124 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4125 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4126 // Confirm that a literal character matches the string value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4127 checkLiteral = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4128 if (value.charAt(iValue) !== format.charAt(iFormat)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4129 throw "Unexpected literal at position " + iValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4130 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4131 iValue++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4132 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4133
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4134 for (iFormat = 0; iFormat < format.length; iFormat++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4135 if (literal) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4136 if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4137 literal = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4138 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4139 checkLiteral();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4140 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4141 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4142 switch (format.charAt(iFormat)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4143 case "d":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4144 day = getNumber("d");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4145 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4146 case "D":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4147 getName("D", dayNamesShort, dayNames);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4148 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4149 case "o":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4150 doy = getNumber("o");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4151 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4152 case "m":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4153 month = getNumber("m");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4154 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4155 case "M":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4156 month = getName("M", monthNamesShort, monthNames);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4157 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4158 case "y":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4159 year = getNumber("y");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4160 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4161 case "@":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4162 date = new Date(getNumber("@"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4163 year = date.getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4164 month = date.getMonth() + 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4165 day = date.getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4166 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4167 case "!":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4168 date = new Date((getNumber("!") - this._ticksTo1970) / 10000);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4169 year = date.getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4170 month = date.getMonth() + 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4171 day = date.getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4172 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4173 case "'":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4174 if (lookAhead("'")){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4175 checkLiteral();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4176 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4177 literal = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4178 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4179 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4180 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4181 checkLiteral();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4182 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4183 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4184 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4185
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4186 if (iValue < value.length){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4187 extra = value.substr(iValue);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4188 if (!/^\s+/.test(extra)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4189 throw "Extra/unparsed characters found in date: " + extra;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4190 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4191 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4192
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4193 if (year === -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4194 year = new Date().getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4195 } else if (year < 100) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4196 year += new Date().getFullYear() - new Date().getFullYear() % 100 +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4197 (year <= shortYearCutoff ? 0 : -100);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4198 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4199
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4200 if (doy > -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4201 month = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4202 day = doy;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4203 do {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4204 dim = this._getDaysInMonth(year, month - 1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4205 if (day <= dim) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4206 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4207 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4208 month++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4209 day -= dim;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4210 } while (true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4211 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4212
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4213 date = this._daylightSavingAdjust(new Date(year, month - 1, day));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4214 if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4215 throw "Invalid date"; // E.g. 31/02/00
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4216 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4217 return date;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4218 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4219
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4220 /* Standard date formats. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4221 ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4222 COOKIE: "D, dd M yy",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4223 ISO_8601: "yy-mm-dd",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4224 RFC_822: "D, d M y",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4225 RFC_850: "DD, dd-M-y",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4226 RFC_1036: "D, d M y",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4227 RFC_1123: "D, d M yy",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4228 RFC_2822: "D, d M yy",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4229 RSS: "D, d M y", // RFC 822
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4230 TICKS: "!",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4231 TIMESTAMP: "@",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4232 W3C: "yy-mm-dd", // ISO 8601
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4233
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4234 _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4235 Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4236
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4237 /* Format a date object into a string value.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4238 * The format can be combinations of the following:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4239 * d - day of month (no leading zero)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4240 * dd - day of month (two digit)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4241 * o - day of year (no leading zeros)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4242 * oo - day of year (three digit)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4243 * D - day name short
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4244 * DD - day name long
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4245 * m - month of year (no leading zero)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4246 * mm - month of year (two digit)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4247 * M - month name short
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4248 * MM - month name long
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4249 * y - year (two digit)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4250 * yy - year (four digit)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4251 * @ - Unix timestamp (ms since 01/01/1970)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4252 * ! - Windows ticks (100ns since 01/01/0001)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4253 * "..." - literal text
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4254 * '' - single quote
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4255 *
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4256 * @param format string - the desired format of the date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4257 * @param date Date - the date value to format
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4258 * @param settings Object - attributes include:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4259 * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4260 * dayNames string[7] - names of the days from Sunday (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4261 * monthNamesShort string[12] - abbreviated names of the months (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4262 * monthNames string[12] - names of the months (optional)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4263 * @return string - the date in the above format
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4264 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4265 formatDate: function (format, date, settings) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4266 if (!date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4267 return "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4268 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4269
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4270 var iFormat,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4271 dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4272 dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4273 monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4274 monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4275 // Check whether a format character is doubled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4276 lookAhead = function(match) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4277 var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4278 if (matches) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4279 iFormat++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4280 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4281 return matches;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4282 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4283 // Format a number, with leading zero if necessary
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4284 formatNumber = function(match, value, len) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4285 var num = "" + value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4286 if (lookAhead(match)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4287 while (num.length < len) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4288 num = "0" + num;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4289 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4290 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4291 return num;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4292 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4293 // Format a name, short or long as requested
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4294 formatName = function(match, value, shortNames, longNames) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4295 return (lookAhead(match) ? longNames[value] : shortNames[value]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4296 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4297 output = "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4298 literal = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4299
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4300 if (date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4301 for (iFormat = 0; iFormat < format.length; iFormat++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4302 if (literal) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4303 if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4304 literal = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4305 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4306 output += format.charAt(iFormat);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4307 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4308 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4309 switch (format.charAt(iFormat)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4310 case "d":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4311 output += formatNumber("d", date.getDate(), 2);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4312 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4313 case "D":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4314 output += formatName("D", date.getDay(), dayNamesShort, dayNames);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4315 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4316 case "o":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4317 output += formatNumber("o",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4318 Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4319 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4320 case "m":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4321 output += formatNumber("m", date.getMonth() + 1, 2);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4322 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4323 case "M":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4324 output += formatName("M", date.getMonth(), monthNamesShort, monthNames);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4325 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4326 case "y":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4327 output += (lookAhead("y") ? date.getFullYear() :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4328 (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4329 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4330 case "@":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4331 output += date.getTime();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4332 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4333 case "!":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4334 output += date.getTime() * 10000 + this._ticksTo1970;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4335 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4336 case "'":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4337 if (lookAhead("'")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4338 output += "'";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4339 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4340 literal = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4341 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4342 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4343 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4344 output += format.charAt(iFormat);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4345 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4346 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4347 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4348 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4349 return output;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4350 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4351
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4352 /* Extract all possible characters from the date format. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4353 _possibleChars: function (format) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4354 var iFormat,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4355 chars = "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4356 literal = false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4357 // Check whether a format character is doubled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4358 lookAhead = function(match) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4359 var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4360 if (matches) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4361 iFormat++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4362 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4363 return matches;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4364 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4365
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4366 for (iFormat = 0; iFormat < format.length; iFormat++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4367 if (literal) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4368 if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4369 literal = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4370 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4371 chars += format.charAt(iFormat);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4372 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4373 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4374 switch (format.charAt(iFormat)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4375 case "d": case "m": case "y": case "@":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4376 chars += "0123456789";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4377 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4378 case "D": case "M":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4379 return null; // Accept anything
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4380 case "'":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4381 if (lookAhead("'")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4382 chars += "'";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4383 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4384 literal = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4385 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4386 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4387 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4388 chars += format.charAt(iFormat);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4389 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4390 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4391 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4392 return chars;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4393 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4394
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4395 /* Get a setting value, defaulting if necessary. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4396 _get: function(inst, name) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4397 return inst.settings[name] !== undefined ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4398 inst.settings[name] : this._defaults[name];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4399 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4400
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4401 /* Parse existing date and initialise date picker. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4402 _setDateFromField: function(inst, noDefault) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4403 if (inst.input.val() === inst.lastVal) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4404 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4405 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4406
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4407 var dateFormat = this._get(inst, "dateFormat"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4408 dates = inst.lastVal = inst.input ? inst.input.val() : null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4409 defaultDate = this._getDefaultDate(inst),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4410 date = defaultDate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4411 settings = this._getFormatConfig(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4412
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4413 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4414 date = this.parseDate(dateFormat, dates, settings) || defaultDate;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4415 } catch (event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4416 dates = (noDefault ? "" : dates);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4417 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4418 inst.selectedDay = date.getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4419 inst.drawMonth = inst.selectedMonth = date.getMonth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4420 inst.drawYear = inst.selectedYear = date.getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4421 inst.currentDay = (dates ? date.getDate() : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4422 inst.currentMonth = (dates ? date.getMonth() : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4423 inst.currentYear = (dates ? date.getFullYear() : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4424 this._adjustInstDate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4425 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4426
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4427 /* Retrieve the default date shown on opening. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4428 _getDefaultDate: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4429 return this._restrictMinMax(inst,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4430 this._determineDate(inst, this._get(inst, "defaultDate"), new Date()));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4431 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4432
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4433 /* A date may be specified as an exact value or a relative one. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4434 _determineDate: function(inst, date, defaultDate) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4435 var offsetNumeric = function(offset) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4436 var date = new Date();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4437 date.setDate(date.getDate() + offset);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4438 return date;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4439 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4440 offsetString = function(offset) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4441 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4442 return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4443 offset, $.datepicker._getFormatConfig(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4444 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4445 catch (e) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4446 // Ignore
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4447 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4448
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4449 var date = (offset.toLowerCase().match(/^c/) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4450 $.datepicker._getDate(inst) : null) || new Date(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4451 year = date.getFullYear(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4452 month = date.getMonth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4453 day = date.getDate(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4454 pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4455 matches = pattern.exec(offset);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4456
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4457 while (matches) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4458 switch (matches[2] || "d") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4459 case "d" : case "D" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4460 day += parseInt(matches[1],10); break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4461 case "w" : case "W" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4462 day += parseInt(matches[1],10) * 7; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4463 case "m" : case "M" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4464 month += parseInt(matches[1],10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4465 day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4466 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4467 case "y": case "Y" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4468 year += parseInt(matches[1],10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4469 day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4470 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4471 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4472 matches = pattern.exec(offset);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4473 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4474 return new Date(year, month, day);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4475 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4476 newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4477 (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4478
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4479 newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4480 if (newDate) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4481 newDate.setHours(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4482 newDate.setMinutes(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4483 newDate.setSeconds(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4484 newDate.setMilliseconds(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4485 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4486 return this._daylightSavingAdjust(newDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4487 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4488
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4489 /* Handle switch to/from daylight saving.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4490 * Hours may be non-zero on daylight saving cut-over:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4491 * > 12 when midnight changeover, but then cannot generate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4492 * midnight datetime, so jump to 1AM, otherwise reset.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4493 * @param date (Date) the date to check
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4494 * @return (Date) the corrected date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4495 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4496 _daylightSavingAdjust: function(date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4497 if (!date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4498 return null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4499 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4500 date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4501 return date;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4502 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4503
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4504 /* Set the date(s) directly. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4505 _setDate: function(inst, date, noChange) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4506 var clear = !date,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4507 origMonth = inst.selectedMonth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4508 origYear = inst.selectedYear,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4509 newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4510
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4511 inst.selectedDay = inst.currentDay = newDate.getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4512 inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4513 inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4514 if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4515 this._notifyChange(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4516 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4517 this._adjustInstDate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4518 if (inst.input) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4519 inst.input.val(clear ? "" : this._formatDate(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4520 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4521 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4522
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4523 /* Retrieve the date(s) directly. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4524 _getDate: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4525 var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4526 this._daylightSavingAdjust(new Date(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4527 inst.currentYear, inst.currentMonth, inst.currentDay)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4528 return startDate;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4529 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4530
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4531 /* Attach the onxxx handlers. These are declared statically so
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4532 * they work with static code transformers like Caja.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4533 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4534 _attachHandlers: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4535 var stepMonths = this._get(inst, "stepMonths"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4536 id = "#" + inst.id.replace( /\\\\/g, "\\" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4537 inst.dpDiv.find("[data-handler]").map(function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4538 var handler = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4539 prev: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4540 $.datepicker._adjustDate(id, -stepMonths, "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4541 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4542 next: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4543 $.datepicker._adjustDate(id, +stepMonths, "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4544 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4545 hide: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4546 $.datepicker._hideDatepicker();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4547 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4548 today: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4549 $.datepicker._gotoToday(id);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4550 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4551 selectDay: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4552 $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4553 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4554 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4555 selectMonth: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4556 $.datepicker._selectMonthYear(id, this, "M");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4557 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4558 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4559 selectYear: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4560 $.datepicker._selectMonthYear(id, this, "Y");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4561 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4562 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4563 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4564 $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4565 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4566 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4567
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4568 /* Generate the HTML for the current state of the date picker. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4569 _generateHTML: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4570 var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4571 controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4572 monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4573 selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4574 cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4575 printDate, dRow, tbody, daySettings, otherMonth, unselectable,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4576 tempDate = new Date(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4577 today = this._daylightSavingAdjust(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4578 new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4579 isRTL = this._get(inst, "isRTL"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4580 showButtonPanel = this._get(inst, "showButtonPanel"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4581 hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4582 navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4583 numMonths = this._getNumberOfMonths(inst),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4584 showCurrentAtPos = this._get(inst, "showCurrentAtPos"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4585 stepMonths = this._get(inst, "stepMonths"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4586 isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4587 currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4588 new Date(inst.currentYear, inst.currentMonth, inst.currentDay))),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4589 minDate = this._getMinMaxDate(inst, "min"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4590 maxDate = this._getMinMaxDate(inst, "max"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4591 drawMonth = inst.drawMonth - showCurrentAtPos,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4592 drawYear = inst.drawYear;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4593
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4594 if (drawMonth < 0) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4595 drawMonth += 12;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4596 drawYear--;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4597 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4598 if (maxDate) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4599 maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4600 maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4601 maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4602 while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4603 drawMonth--;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4604 if (drawMonth < 0) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4605 drawMonth = 11;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4606 drawYear--;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4607 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4608 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4609 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4610 inst.drawMonth = drawMonth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4611 inst.drawYear = drawYear;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4612
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4613 prevText = this._get(inst, "prevText");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4614 prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4615 this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4616 this._getFormatConfig(inst)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4617
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4618 prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4619 "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4620 " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4621 (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4622
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4623 nextText = this._get(inst, "nextText");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4624 nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4625 this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4626 this._getFormatConfig(inst)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4627
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4628 next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4629 "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4630 " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4631 (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4632
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4633 currentText = this._get(inst, "currentText");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4634 gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4635 currentText = (!navigationAsDateFormat ? currentText :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4636 this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4637
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4638 controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4639 this._get(inst, "closeText") + "</button>" : "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4640
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4641 buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4642 (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4643 ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4644
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4645 firstDay = parseInt(this._get(inst, "firstDay"),10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4646 firstDay = (isNaN(firstDay) ? 0 : firstDay);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4647
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4648 showWeek = this._get(inst, "showWeek");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4649 dayNames = this._get(inst, "dayNames");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4650 dayNamesMin = this._get(inst, "dayNamesMin");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4651 monthNames = this._get(inst, "monthNames");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4652 monthNamesShort = this._get(inst, "monthNamesShort");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4653 beforeShowDay = this._get(inst, "beforeShowDay");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4654 showOtherMonths = this._get(inst, "showOtherMonths");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4655 selectOtherMonths = this._get(inst, "selectOtherMonths");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4656 defaultDate = this._getDefaultDate(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4657 html = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4658 dow;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4659 for (row = 0; row < numMonths[0]; row++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4660 group = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4661 this.maxRows = 4;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4662 for (col = 0; col < numMonths[1]; col++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4663 selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4664 cornerClass = " ui-corner-all";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4665 calender = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4666 if (isMultiMonth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4667 calender += "<div class='ui-datepicker-group";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4668 if (numMonths[1] > 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4669 switch (col) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4670 case 0: calender += " ui-datepicker-group-first";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4671 cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4672 case numMonths[1]-1: calender += " ui-datepicker-group-last";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4673 cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4674 default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4675 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4676 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4677 calender += "'>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4678 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4679 calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4680 (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4681 (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4682 this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4683 row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4684 "</div><table class='ui-datepicker-calendar'><thead>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4685 "<tr>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4686 thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4687 for (dow = 0; dow < 7; dow++) { // days of the week
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4688 day = (dow + firstDay) % 7;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4689 thead += "<th" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4690 "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4691 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4692 calender += thead + "</tr></thead><tbody>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4693 daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4694 if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4695 inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4696 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4697 leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4698 curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4699 numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4700 this.maxRows = numRows;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4701 printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4702 for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4703 calender += "<tr>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4704 tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4705 this._get(inst, "calculateWeek")(printDate) + "</td>");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4706 for (dow = 0; dow < 7; dow++) { // create date picker days
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4707 daySettings = (beforeShowDay ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4708 beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4709 otherMonth = (printDate.getMonth() !== drawMonth);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4710 unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4711 (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4712 tbody += "<td class='" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4713 ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4714 (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4715 ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4716 (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4717 // or defaultDate is current printedDate and defaultDate is selectedDate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4718 " " + this._dayOverClass : "") + // highlight selected day
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4719 (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") + // highlight unselectable days
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4720 (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4721 (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4722 (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4723 ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "&#39;") + "'" : "") + // cell title
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4724 (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4725 (otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4726 (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4727 (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4728 (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4729 (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4730 "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4731 printDate.setDate(printDate.getDate() + 1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4732 printDate = this._daylightSavingAdjust(printDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4733 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4734 calender += tbody + "</tr>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4735 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4736 drawMonth++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4737 if (drawMonth > 11) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4738 drawMonth = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4739 drawYear++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4740 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4741 calender += "</tbody></table>" + (isMultiMonth ? "</div>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4742 ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4743 group += calender;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4744 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4745 html += group;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4746 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4747 html += buttonPanel;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4748 inst._keyEvent = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4749 return html;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4750 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4751
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4752 /* Generate the month and year header. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4753 _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4754 secondary, monthNames, monthNamesShort) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4755
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4756 var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4757 changeMonth = this._get(inst, "changeMonth"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4758 changeYear = this._get(inst, "changeYear"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4759 showMonthAfterYear = this._get(inst, "showMonthAfterYear"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4760 html = "<div class='ui-datepicker-title'>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4761 monthHtml = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4762
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4763 // month selection
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4764 if (secondary || !changeMonth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4765 monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4766 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4767 inMinYear = (minDate && minDate.getFullYear() === drawYear);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4768 inMaxYear = (maxDate && maxDate.getFullYear() === drawYear);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4769 monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4770 for ( month = 0; month < 12; month++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4771 if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4772 monthHtml += "<option value='" + month + "'" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4773 (month === drawMonth ? " selected='selected'" : "") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4774 ">" + monthNamesShort[month] + "</option>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4775 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4776 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4777 monthHtml += "</select>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4778 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4779
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4780 if (!showMonthAfterYear) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4781 html += monthHtml + (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4782 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4783
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4784 // year selection
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4785 if ( !inst.yearshtml ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4786 inst.yearshtml = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4787 if (secondary || !changeYear) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4788 html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4789 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4790 // determine range of years to display
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4791 years = this._get(inst, "yearRange").split(":");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4792 thisYear = new Date().getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4793 determineYear = function(value) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4794 var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4795 (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4796 parseInt(value, 10)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4797 return (isNaN(year) ? thisYear : year);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4798 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4799 year = determineYear(years[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4800 endYear = Math.max(year, determineYear(years[1] || ""));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4801 year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4802 endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4803 inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4804 for (; year <= endYear; year++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4805 inst.yearshtml += "<option value='" + year + "'" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4806 (year === drawYear ? " selected='selected'" : "") +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4807 ">" + year + "</option>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4808 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4809 inst.yearshtml += "</select>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4810
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4811 html += inst.yearshtml;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4812 inst.yearshtml = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4813 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4814 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4815
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4816 html += this._get(inst, "yearSuffix");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4817 if (showMonthAfterYear) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4818 html += (secondary || !(changeMonth && changeYear) ? "&#xa0;" : "") + monthHtml;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4819 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4820 html += "</div>"; // Close datepicker_header
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4821 return html;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4822 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4824 /* Adjust one of the date sub-fields. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4825 _adjustInstDate: function(inst, offset, period) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4826 var year = inst.drawYear + (period === "Y" ? offset : 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4827 month = inst.drawMonth + (period === "M" ? offset : 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4828 day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4829 date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4830
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4831 inst.selectedDay = date.getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4832 inst.drawMonth = inst.selectedMonth = date.getMonth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4833 inst.drawYear = inst.selectedYear = date.getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4834 if (period === "M" || period === "Y") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4835 this._notifyChange(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4836 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4837 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4838
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4839 /* Ensure a date is within any min/max bounds. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4840 _restrictMinMax: function(inst, date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4841 var minDate = this._getMinMaxDate(inst, "min"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4842 maxDate = this._getMinMaxDate(inst, "max"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4843 newDate = (minDate && date < minDate ? minDate : date);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4844 return (maxDate && newDate > maxDate ? maxDate : newDate);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4845 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4846
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4847 /* Notify change of month/year. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4848 _notifyChange: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4849 var onChange = this._get(inst, "onChangeMonthYear");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4850 if (onChange) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4851 onChange.apply((inst.input ? inst.input[0] : null),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4852 [inst.selectedYear, inst.selectedMonth + 1, inst]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4853 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4854 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4855
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4856 /* Determine the number of months to show. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4857 _getNumberOfMonths: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4858 var numMonths = this._get(inst, "numberOfMonths");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4859 return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4860 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4861
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4862 /* Determine the current maximum date - ensure no time components are set. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4863 _getMinMaxDate: function(inst, minMax) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4864 return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4865 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4866
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4867 /* Find the number of days in a given month. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4868 _getDaysInMonth: function(year, month) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4869 return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4870 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4871
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4872 /* Find the day of the week of the first of a month. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4873 _getFirstDayOfMonth: function(year, month) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4874 return new Date(year, month, 1).getDay();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4875 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4876
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4877 /* Determines if we should allow a "next/prev" month display change. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4878 _canAdjustMonth: function(inst, offset, curYear, curMonth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4879 var numMonths = this._getNumberOfMonths(inst),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4880 date = this._daylightSavingAdjust(new Date(curYear,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4881 curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4882
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4883 if (offset < 0) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4884 date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4885 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4886 return this._isInRange(inst, date);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4887 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4888
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4889 /* Is the given date in the accepted range? */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4890 _isInRange: function(inst, date) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4891 var yearSplit, currentYear,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4892 minDate = this._getMinMaxDate(inst, "min"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4893 maxDate = this._getMinMaxDate(inst, "max"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4894 minYear = null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4895 maxYear = null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4896 years = this._get(inst, "yearRange");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4897 if (years){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4898 yearSplit = years.split(":");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4899 currentYear = new Date().getFullYear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4900 minYear = parseInt(yearSplit[0], 10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4901 maxYear = parseInt(yearSplit[1], 10);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4902 if ( yearSplit[0].match(/[+\-].*/) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4903 minYear += currentYear;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4904 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4905 if ( yearSplit[1].match(/[+\-].*/) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4906 maxYear += currentYear;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4907 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4908 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4909
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4910 return ((!minDate || date.getTime() >= minDate.getTime()) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4911 (!maxDate || date.getTime() <= maxDate.getTime()) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4912 (!minYear || date.getFullYear() >= minYear) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4913 (!maxYear || date.getFullYear() <= maxYear));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4914 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4915
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4916 /* Provide the configuration settings for formatting/parsing. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4917 _getFormatConfig: function(inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4918 var shortYearCutoff = this._get(inst, "shortYearCutoff");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4919 shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4920 new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4921 return {shortYearCutoff: shortYearCutoff,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4922 dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4923 monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4924 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4925
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4926 /* Format the given date for display. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4927 _formatDate: function(inst, day, month, year) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4928 if (!day) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4929 inst.currentDay = inst.selectedDay;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4930 inst.currentMonth = inst.selectedMonth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4931 inst.currentYear = inst.selectedYear;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4932 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4933 var date = (day ? (typeof day === "object" ? day :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4934 this._daylightSavingAdjust(new Date(year, month, day))) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4935 this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4936 return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4937 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4938 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4939
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4940 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4941 * Bind hover events for datepicker elements.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4942 * Done via delegate so the binding only occurs once in the lifetime of the parent div.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4943 * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4944 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4945 function bindHover(dpDiv) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4946 var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4947 return dpDiv.delegate(selector, "mouseout", function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4948 $(this).removeClass("ui-state-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4949 if (this.className.indexOf("ui-datepicker-prev") !== -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4950 $(this).removeClass("ui-datepicker-prev-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4951 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4952 if (this.className.indexOf("ui-datepicker-next") !== -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4953 $(this).removeClass("ui-datepicker-next-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4954 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4955 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4956 .delegate(selector, "mouseover", function(){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4957 if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4958 $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4959 $(this).addClass("ui-state-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4960 if (this.className.indexOf("ui-datepicker-prev") !== -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4961 $(this).addClass("ui-datepicker-prev-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4962 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4963 if (this.className.indexOf("ui-datepicker-next") !== -1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4964 $(this).addClass("ui-datepicker-next-hover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4965 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4966 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4967 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4968 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4969
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4970 /* jQuery extend now ignores nulls! */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4971 function extendRemove(target, props) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4972 $.extend(target, props);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4973 for (var name in props) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4974 if (props[name] == null) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4975 target[name] = props[name];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4976 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4977 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4978 return target;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4979 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4980
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4981 /* Invoke the datepicker functionality.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4982 @param options string - a command, optionally followed by additional parameters or
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4983 Object - settings for attaching new datepicker functionality
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4984 @return jQuery object */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4985 $.fn.datepicker = function(options){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4986
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4987 /* Verify an empty collection wasn't passed - Fixes #6976 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4988 if ( !this.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4989 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4990 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4991
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4992 /* Initialise the date picker. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4993 if (!$.datepicker.initialized) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4994 $(document).mousedown($.datepicker._checkExternalClick);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4995 $.datepicker.initialized = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4996 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4997
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4998 /* Append datepicker main container to body if not exist. */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4999 if ($("#"+$.datepicker._mainDivId).length === 0) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5000 $("body").append($.datepicker.dpDiv);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5001 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5002
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5003 var otherArgs = Array.prototype.slice.call(arguments, 1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5004 if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5005 return $.datepicker["_" + options + "Datepicker"].
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5006 apply($.datepicker, [this[0]].concat(otherArgs));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5007 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5008 if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5009 return $.datepicker["_" + options + "Datepicker"].
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5010 apply($.datepicker, [this[0]].concat(otherArgs));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5011 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5012 return this.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5013 typeof options === "string" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5014 $.datepicker["_" + options + "Datepicker"].
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5015 apply($.datepicker, [this].concat(otherArgs)) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5016 $.datepicker._attachDatepicker(this, options);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5017 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5018 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5019
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5020 $.datepicker = new Datepicker(); // singleton instance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5021 $.datepicker.initialized = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5022 $.datepicker.uuid = new Date().getTime();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5023 $.datepicker.version = "1.10.4";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5024
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5025 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5026 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5027
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5028 var sizeRelatedOptions = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5029 buttons: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5030 height: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5031 maxHeight: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5032 maxWidth: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5033 minHeight: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5034 minWidth: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5035 width: true
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5036 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5037 resizableRelatedOptions = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5038 maxHeight: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5039 maxWidth: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5040 minHeight: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5041 minWidth: true
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5042 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5043
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5044 $.widget( "ui.dialog", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5045 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5046 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5047 appendTo: "body",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5048 autoOpen: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5049 buttons: [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5050 closeOnEscape: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5051 closeText: "close",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5052 dialogClass: "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5053 draggable: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5054 hide: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5055 height: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5056 maxHeight: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5057 maxWidth: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5058 minHeight: 150,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5059 minWidth: 150,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5060 modal: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5061 position: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5062 my: "center",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5063 at: "center",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5064 of: window,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5065 collision: "fit",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5066 // Ensure the titlebar is always visible
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5067 using: function( pos ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5068 var topOffset = $( this ).css( pos ).offset().top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5069 if ( topOffset < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5070 $( this ).css( "top", pos.top - topOffset );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5071 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5072 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5073 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5074 resizable: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5075 show: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5076 title: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5077 width: 300,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5078
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5079 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5080 beforeClose: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5081 close: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5082 drag: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5083 dragStart: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5084 dragStop: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5085 focus: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5086 open: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5087 resize: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5088 resizeStart: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5089 resizeStop: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5090 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5091
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5092 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5093 this.originalCss = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5094 display: this.element[0].style.display,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5095 width: this.element[0].style.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5096 minHeight: this.element[0].style.minHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5097 maxHeight: this.element[0].style.maxHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5098 height: this.element[0].style.height
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5099 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5100 this.originalPosition = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5101 parent: this.element.parent(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5102 index: this.element.parent().children().index( this.element )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5103 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5104 this.originalTitle = this.element.attr("title");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5105 this.options.title = this.options.title || this.originalTitle;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5106
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5107 this._createWrapper();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5108
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5109 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5110 .show()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5111 .removeAttr("title")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5112 .addClass("ui-dialog-content ui-widget-content")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5113 .appendTo( this.uiDialog );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5114
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5115 this._createTitlebar();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5116 this._createButtonPane();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5117
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5118 if ( this.options.draggable && $.fn.draggable ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5119 this._makeDraggable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5120 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5121 if ( this.options.resizable && $.fn.resizable ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5122 this._makeResizable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5123 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5124
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5125 this._isOpen = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5126 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5127
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5128 _init: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5129 if ( this.options.autoOpen ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5130 this.open();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5131 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5132 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5133
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5134 _appendTo: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5135 var element = this.options.appendTo;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5136 if ( element && (element.jquery || element.nodeType) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5137 return $( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5138 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5139 return this.document.find( element || "body" ).eq( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5140 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5141
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5142 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5143 var next,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5144 originalPosition = this.originalPosition;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5145
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5146 this._destroyOverlay();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5147
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5148 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5149 .removeUniqueId()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5150 .removeClass("ui-dialog-content ui-widget-content")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5151 .css( this.originalCss )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5152 // Without detaching first, the following becomes really slow
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5153 .detach();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5154
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5155 this.uiDialog.stop( true, true ).remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5156
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5157 if ( this.originalTitle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5158 this.element.attr( "title", this.originalTitle );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5159 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5160
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5161 next = originalPosition.parent.children().eq( originalPosition.index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5162 // Don't try to place the dialog next to itself (#8613)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5163 if ( next.length && next[0] !== this.element[0] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5164 next.before( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5165 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5166 originalPosition.parent.append( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5167 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5168 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5169
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5170 widget: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5171 return this.uiDialog;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5172 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5173
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5174 disable: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5175 enable: $.noop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5176
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5177 close: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5178 var activeElement,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5179 that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5180
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5181 if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5182 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5183 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5184
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5185 this._isOpen = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5186 this._destroyOverlay();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5187
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5188 if ( !this.opener.filter(":focusable").focus().length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5189
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5190 // support: IE9
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5191 // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5192 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5193 activeElement = this.document[ 0 ].activeElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5194
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5195 // Support: IE9, IE10
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5196 // If the <body> is blurred, IE will switch windows, see #4520
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5197 if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5198
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5199 // Hiding a focused element doesn't trigger blur in WebKit
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5200 // so in case we have nothing to focus on, explicitly blur the active element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5201 // https://bugs.webkit.org/show_bug.cgi?id=47182
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5202 $( activeElement ).blur();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5203 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5204 } catch ( error ) {}
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5205 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5206
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5207 this._hide( this.uiDialog, this.options.hide, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5208 that._trigger( "close", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5209 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5210 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5211
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5212 isOpen: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5213 return this._isOpen;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5214 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5215
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5216 moveToTop: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5217 this._moveToTop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5218 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5219
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5220 _moveToTop: function( event, silent ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5221 var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5222 if ( moved && !silent ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5223 this._trigger( "focus", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5224 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5225 return moved;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5226 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5227
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5228 open: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5229 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5230 if ( this._isOpen ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5231 if ( this._moveToTop() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5232 this._focusTabbable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5233 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5234 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5235 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5236
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5237 this._isOpen = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5238 this.opener = $( this.document[0].activeElement );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5239
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5240 this._size();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5241 this._position();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5242 this._createOverlay();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5243 this._moveToTop( null, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5244 this._show( this.uiDialog, this.options.show, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5245 that._focusTabbable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5246 that._trigger("focus");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5247 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5248
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5249 this._trigger("open");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5250 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5251
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5252 _focusTabbable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5253 // Set focus to the first match:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5254 // 1. First element inside the dialog matching [autofocus]
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5255 // 2. Tabbable element inside the content element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5256 // 3. Tabbable element inside the buttonpane
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5257 // 4. The close button
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5258 // 5. The dialog itself
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5259 var hasFocus = this.element.find("[autofocus]");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5260 if ( !hasFocus.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5261 hasFocus = this.element.find(":tabbable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5262 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5263 if ( !hasFocus.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5264 hasFocus = this.uiDialogButtonPane.find(":tabbable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5265 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5266 if ( !hasFocus.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5267 hasFocus = this.uiDialogTitlebarClose.filter(":tabbable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5268 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5269 if ( !hasFocus.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5270 hasFocus = this.uiDialog;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5271 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5272 hasFocus.eq( 0 ).focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5273 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5274
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5275 _keepFocus: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5276 function checkFocus() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5277 var activeElement = this.document[0].activeElement,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5278 isActive = this.uiDialog[0] === activeElement ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5279 $.contains( this.uiDialog[0], activeElement );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5280 if ( !isActive ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5281 this._focusTabbable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5282 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5283 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5284 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5285 checkFocus.call( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5286 // support: IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5287 // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5288 // so we check again later
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5289 this._delay( checkFocus );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5290 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5291
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5292 _createWrapper: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5293 this.uiDialog = $("<div>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5294 .addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5295 this.options.dialogClass )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5296 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5297 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5298 // Setting tabIndex makes the div focusable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5299 tabIndex: -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5300 role: "dialog"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5301 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5302 .appendTo( this._appendTo() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5303
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5304 this._on( this.uiDialog, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5305 keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5306 if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5307 event.keyCode === $.ui.keyCode.ESCAPE ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5308 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5309 this.close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5310 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5311 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5312
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5313 // prevent tabbing out of dialogs
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5314 if ( event.keyCode !== $.ui.keyCode.TAB ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5315 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5316 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5317 var tabbables = this.uiDialog.find(":tabbable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5318 first = tabbables.filter(":first"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5319 last = tabbables.filter(":last");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5320
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5321 if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5322 first.focus( 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5323 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5324 } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5325 last.focus( 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5326 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5327 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5328 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5329 mousedown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5330 if ( this._moveToTop( event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5331 this._focusTabbable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5332 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5333 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5334 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5335
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5336 // We assume that any existing aria-describedby attribute means
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5337 // that the dialog content is marked up properly
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5338 // otherwise we brute force the content as the description
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5339 if ( !this.element.find("[aria-describedby]").length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5340 this.uiDialog.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5341 "aria-describedby": this.element.uniqueId().attr("id")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5342 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5343 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5344 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5345
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5346 _createTitlebar: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5347 var uiDialogTitle;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5348
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5349 this.uiDialogTitlebar = $("<div>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5350 .addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5351 .prependTo( this.uiDialog );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5352 this._on( this.uiDialogTitlebar, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5353 mousedown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5354 // Don't prevent click on close button (#8838)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5355 // Focusing a dialog that is partially scrolled out of view
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5356 // causes the browser to scroll it into view, preventing the click event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5357 if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5358 // Dialog isn't getting focus when dragging (#8063)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5359 this.uiDialog.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5360 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5361 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5362 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5363
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5364 // support: IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5365 // Use type="button" to prevent enter keypresses in textboxes from closing the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5366 // dialog in IE (#9312)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5367 this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5368 .button({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5369 label: this.options.closeText,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5370 icons: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5371 primary: "ui-icon-closethick"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5372 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5373 text: false
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5374 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5375 .addClass("ui-dialog-titlebar-close")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5376 .appendTo( this.uiDialogTitlebar );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5377 this._on( this.uiDialogTitlebarClose, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5378 click: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5379 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5380 this.close( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5381 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5382 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5383
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5384 uiDialogTitle = $("<span>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5385 .uniqueId()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5386 .addClass("ui-dialog-title")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5387 .prependTo( this.uiDialogTitlebar );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5388 this._title( uiDialogTitle );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5389
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5390 this.uiDialog.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5391 "aria-labelledby": uiDialogTitle.attr("id")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5392 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5393 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5394
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5395 _title: function( title ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5396 if ( !this.options.title ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5397 title.html("&#160;");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5398 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5399 title.text( this.options.title );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5400 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5401
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5402 _createButtonPane: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5403 this.uiDialogButtonPane = $("<div>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5404 .addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5405
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5406 this.uiButtonSet = $("<div>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5407 .addClass("ui-dialog-buttonset")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5408 .appendTo( this.uiDialogButtonPane );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5409
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5410 this._createButtons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5411 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5412
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5413 _createButtons: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5414 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5415 buttons = this.options.buttons;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5416
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5417 // if we already have a button pane, remove it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5418 this.uiDialogButtonPane.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5419 this.uiButtonSet.empty();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5420
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5421 if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5422 this.uiDialog.removeClass("ui-dialog-buttons");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5423 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5424 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5425
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5426 $.each( buttons, function( name, props ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5427 var click, buttonOptions;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5428 props = $.isFunction( props ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5429 { click: props, text: name } :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5430 props;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5431 // Default to a non-submitting button
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5432 props = $.extend( { type: "button" }, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5433 // Change the context for the click callback to be the main element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5434 click = props.click;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5435 props.click = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5436 click.apply( that.element[0], arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5437 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5438 buttonOptions = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5439 icons: props.icons,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5440 text: props.showText
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5441 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5442 delete props.icons;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5443 delete props.showText;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5444 $( "<button></button>", props )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5445 .button( buttonOptions )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5446 .appendTo( that.uiButtonSet );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5447 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5448 this.uiDialog.addClass("ui-dialog-buttons");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5449 this.uiDialogButtonPane.appendTo( this.uiDialog );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5450 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5451
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5452 _makeDraggable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5453 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5454 options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5455
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5456 function filteredUi( ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5457 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5458 position: ui.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5459 offset: ui.offset
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5460 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5461 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5462
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5463 this.uiDialog.draggable({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5464 cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5465 handle: ".ui-dialog-titlebar",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5466 containment: "document",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5467 start: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5468 $( this ).addClass("ui-dialog-dragging");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5469 that._blockFrames();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5470 that._trigger( "dragStart", event, filteredUi( ui ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5471 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5472 drag: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5473 that._trigger( "drag", event, filteredUi( ui ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5474 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5475 stop: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5476 options.position = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5477 ui.position.left - that.document.scrollLeft(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5478 ui.position.top - that.document.scrollTop()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5479 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5480 $( this ).removeClass("ui-dialog-dragging");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5481 that._unblockFrames();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5482 that._trigger( "dragStop", event, filteredUi( ui ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5483 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5484 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5485 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5486
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5487 _makeResizable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5488 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5489 options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5490 handles = options.resizable,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5491 // .ui-resizable has position: relative defined in the stylesheet
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5492 // but dialogs have to use absolute or fixed positioning
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5493 position = this.uiDialog.css("position"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5494 resizeHandles = typeof handles === "string" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5495 handles :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5496 "n,e,s,w,se,sw,ne,nw";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5497
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5498 function filteredUi( ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5499 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5500 originalPosition: ui.originalPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5501 originalSize: ui.originalSize,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5502 position: ui.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5503 size: ui.size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5504 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5505 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5506
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5507 this.uiDialog.resizable({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5508 cancel: ".ui-dialog-content",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5509 containment: "document",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5510 alsoResize: this.element,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5511 maxWidth: options.maxWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5512 maxHeight: options.maxHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5513 minWidth: options.minWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5514 minHeight: this._minHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5515 handles: resizeHandles,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5516 start: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5517 $( this ).addClass("ui-dialog-resizing");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5518 that._blockFrames();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5519 that._trigger( "resizeStart", event, filteredUi( ui ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5520 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5521 resize: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5522 that._trigger( "resize", event, filteredUi( ui ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5523 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5524 stop: function( event, ui ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5525 options.height = $( this ).height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5526 options.width = $( this ).width();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5527 $( this ).removeClass("ui-dialog-resizing");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5528 that._unblockFrames();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5529 that._trigger( "resizeStop", event, filteredUi( ui ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5530 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5531 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5532 .css( "position", position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5533 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5535 _minHeight: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5536 var options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5537
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5538 return options.height === "auto" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5539 options.minHeight :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5540 Math.min( options.minHeight, options.height );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5541 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5542
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5543 _position: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5544 // Need to show the dialog to get the actual offset in the position plugin
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5545 var isVisible = this.uiDialog.is(":visible");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5546 if ( !isVisible ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5547 this.uiDialog.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5548 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5549 this.uiDialog.position( this.options.position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5550 if ( !isVisible ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5551 this.uiDialog.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5552 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5553 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5554
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5555 _setOptions: function( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5556 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5557 resize = false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5558 resizableOptions = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5559
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5560 $.each( options, function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5561 that._setOption( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5562
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5563 if ( key in sizeRelatedOptions ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5564 resize = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5565 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5566 if ( key in resizableRelatedOptions ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5567 resizableOptions[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5568 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5569 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5570
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5571 if ( resize ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5572 this._size();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5573 this._position();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5574 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5575 if ( this.uiDialog.is(":data(ui-resizable)") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5576 this.uiDialog.resizable( "option", resizableOptions );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5577 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5578 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5579
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5580 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5581 var isDraggable, isResizable,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5582 uiDialog = this.uiDialog;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5583
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5584 if ( key === "dialogClass" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5585 uiDialog
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5586 .removeClass( this.options.dialogClass )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5587 .addClass( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5588 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5589
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5590 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5591 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5592 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5593
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5594 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5596 if ( key === "appendTo" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5597 this.uiDialog.appendTo( this._appendTo() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5598 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5599
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5600 if ( key === "buttons" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5601 this._createButtons();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5602 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5603
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5604 if ( key === "closeText" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5605 this.uiDialogTitlebarClose.button({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5606 // Ensure that we always pass a string
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5607 label: "" + value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5608 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5609 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5610
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5611 if ( key === "draggable" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5612 isDraggable = uiDialog.is(":data(ui-draggable)");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5613 if ( isDraggable && !value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5614 uiDialog.draggable("destroy");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5615 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5616
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5617 if ( !isDraggable && value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5618 this._makeDraggable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5619 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5620 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5621
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5622 if ( key === "position" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5623 this._position();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5624 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5625
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5626 if ( key === "resizable" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5627 // currently resizable, becoming non-resizable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5628 isResizable = uiDialog.is(":data(ui-resizable)");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5629 if ( isResizable && !value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5630 uiDialog.resizable("destroy");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5631 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5632
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5633 // currently resizable, changing handles
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5634 if ( isResizable && typeof value === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5635 uiDialog.resizable( "option", "handles", value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5636 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5637
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5638 // currently non-resizable, becoming resizable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5639 if ( !isResizable && value !== false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5640 this._makeResizable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5641 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5642 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5643
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5644 if ( key === "title" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5645 this._title( this.uiDialogTitlebar.find(".ui-dialog-title") );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5646 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5647 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5648
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5649 _size: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5650 // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5651 // divs will both have width and height set, so we need to reset them
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5652 var nonContentHeight, minContentHeight, maxContentHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5653 options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5654
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5655 // Reset content sizing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5656 this.element.show().css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5657 width: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5658 minHeight: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5659 maxHeight: "none",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5660 height: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5661 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5662
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5663 if ( options.minWidth > options.width ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5664 options.width = options.minWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5665 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5666
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5667 // reset wrapper sizing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5668 // determine the height of all the non-content elements
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5669 nonContentHeight = this.uiDialog.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5670 height: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5671 width: options.width
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5672 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5673 .outerHeight();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5674 minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5675 maxContentHeight = typeof options.maxHeight === "number" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5676 Math.max( 0, options.maxHeight - nonContentHeight ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5677 "none";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5678
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5679 if ( options.height === "auto" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5680 this.element.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5681 minHeight: minContentHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5682 maxHeight: maxContentHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5683 height: "auto"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5684 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5685 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5686 this.element.height( Math.max( 0, options.height - nonContentHeight ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5687 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5688
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5689 if (this.uiDialog.is(":data(ui-resizable)") ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5690 this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5691 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5692 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5693
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5694 _blockFrames: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5695 this.iframeBlocks = this.document.find( "iframe" ).map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5696 var iframe = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5697
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5698 return $( "<div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5699 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5700 position: "absolute",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5701 width: iframe.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5702 height: iframe.outerHeight()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5703 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5704 .appendTo( iframe.parent() )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5705 .offset( iframe.offset() )[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5706 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5707 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5708
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5709 _unblockFrames: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5710 if ( this.iframeBlocks ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5711 this.iframeBlocks.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5712 delete this.iframeBlocks;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5713 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5714 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5715
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5716 _allowInteraction: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5717 if ( $( event.target ).closest(".ui-dialog").length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5718 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5719 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5720
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5721 // TODO: Remove hack when datepicker implements
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5722 // the .ui-front logic (#8989)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5723 return !!$( event.target ).closest(".ui-datepicker").length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5724 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5725
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5726 _createOverlay: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5727 if ( !this.options.modal ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5728 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5729 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5730
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5731 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5732 widgetFullName = this.widgetFullName;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5733 if ( !$.ui.dialog.overlayInstances ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5734 // Prevent use of anchors and inputs.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5735 // We use a delay in case the overlay is created from an
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5736 // event that we're going to be cancelling. (#2804)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5737 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5738 // Handle .dialog().dialog("close") (#4065)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5739 if ( $.ui.dialog.overlayInstances ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5740 this.document.bind( "focusin.dialog", function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5741 if ( !that._allowInteraction( event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5742 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5743 $(".ui-dialog:visible:last .ui-dialog-content")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5744 .data( widgetFullName )._focusTabbable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5745 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5746 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5747 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5748 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5749 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5750
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5751 this.overlay = $("<div>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5752 .addClass("ui-widget-overlay ui-front")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5753 .appendTo( this._appendTo() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5754 this._on( this.overlay, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5755 mousedown: "_keepFocus"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5756 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5757 $.ui.dialog.overlayInstances++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5758 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5759
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5760 _destroyOverlay: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5761 if ( !this.options.modal ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5762 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5763 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5764
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5765 if ( this.overlay ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5766 $.ui.dialog.overlayInstances--;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5767
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5768 if ( !$.ui.dialog.overlayInstances ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5769 this.document.unbind( "focusin.dialog" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5770 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5771 this.overlay.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5772 this.overlay = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5773 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5774 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5775 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5776
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5777 $.ui.dialog.overlayInstances = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5778
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5779 // DEPRECATED
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5780 if ( $.uiBackCompat !== false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5781 // position option with array notation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5782 // just override with old implementation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5783 $.widget( "ui.dialog", $.ui.dialog, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5784 _position: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5785 var position = this.options.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5786 myAt = [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5787 offset = [ 0, 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5788 isVisible;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5789
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5790 if ( position ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5791 if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5792 myAt = position.split ? position.split(" ") : [ position[0], position[1] ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5793 if ( myAt.length === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5794 myAt[1] = myAt[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5795 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5796
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5797 $.each( [ "left", "top" ], function( i, offsetPosition ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5798 if ( +myAt[ i ] === myAt[ i ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5799 offset[ i ] = myAt[ i ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5800 myAt[ i ] = offsetPosition;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5801 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5802 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5803
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5804 position = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5805 my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5806 myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5807 at: myAt.join(" ")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5808 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5809 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5810
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5811 position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5812 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5813 position = $.ui.dialog.prototype.options.position;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5814 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5815
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5816 // need to show the dialog to get the actual offset in the position plugin
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5817 isVisible = this.uiDialog.is(":visible");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5818 if ( !isVisible ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5819 this.uiDialog.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5820 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5821 this.uiDialog.position( position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5822 if ( !isVisible ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5823 this.uiDialog.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5824 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5825 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5826 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5827 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5828
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5829 }( jQuery ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5830 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5831
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5832 $.widget("ui.draggable", $.ui.mouse, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5833 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5834 widgetEventPrefix: "drag",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5835 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5836 addClasses: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5837 appendTo: "parent",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5838 axis: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5839 connectToSortable: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5840 containment: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5841 cursor: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5842 cursorAt: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5843 grid: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5844 handle: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5845 helper: "original",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5846 iframeFix: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5847 opacity: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5848 refreshPositions: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5849 revert: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5850 revertDuration: 500,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5851 scope: "default",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5852 scroll: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5853 scrollSensitivity: 20,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5854 scrollSpeed: 20,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5855 snap: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5856 snapMode: "both",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5857 snapTolerance: 20,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5858 stack: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5859 zIndex: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5860
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5861 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5862 drag: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5863 start: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5864 stop: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5865 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5866 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5867
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5868 if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5869 this.element[0].style.position = "relative";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5870 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5871 if (this.options.addClasses){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5872 this.element.addClass("ui-draggable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5873 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5874 if (this.options.disabled){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5875 this.element.addClass("ui-draggable-disabled");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5876 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5877
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5878 this._mouseInit();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5879
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5880 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5881
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5882 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5883 this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5884 this._mouseDestroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5885 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5886
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5887 _mouseCapture: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5888
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5889 var o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5890
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5891 // among others, prevent a drag on a resizable-handle
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5892 if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5893 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5894 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5895
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5896 //Quit if we're not on a valid handle
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5897 this.handle = this._getHandle(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5898 if (!this.handle) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5899 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5900 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5901
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5902 $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5903 $("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5904 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5905 width: this.offsetWidth+"px", height: this.offsetHeight+"px",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5906 position: "absolute", opacity: "0.001", zIndex: 1000
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5907 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5908 .css($(this).offset())
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5909 .appendTo("body");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5910 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5911
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5912 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5913
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5914 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5915
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5916 _mouseStart: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5917
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5918 var o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5919
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5920 //Create and append the visible helper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5921 this.helper = this._createHelper(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5922
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5923 this.helper.addClass("ui-draggable-dragging");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5924
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5925 //Cache the helper size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5926 this._cacheHelperProportions();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5927
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5928 //If ddmanager is used for droppables, set the global draggable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5929 if($.ui.ddmanager) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5930 $.ui.ddmanager.current = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5931 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5932
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5933 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5934 * - Position generation -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5935 * This block generates everything position related - it's the core of draggables.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5936 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5937
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5938 //Cache the margins of the original element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5939 this._cacheMargins();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5940
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5941 //Store the helper's css position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5942 this.cssPosition = this.helper.css( "position" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5943 this.scrollParent = this.helper.scrollParent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5944 this.offsetParent = this.helper.offsetParent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5945 this.offsetParentCssPosition = this.offsetParent.css( "position" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5946
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5947 //The element's absolute position on the page minus margins
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5948 this.offset = this.positionAbs = this.element.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5949 this.offset = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5950 top: this.offset.top - this.margins.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5951 left: this.offset.left - this.margins.left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5952 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5953
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5954 //Reset scroll cache
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5955 this.offset.scroll = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5956
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5957 $.extend(this.offset, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5958 click: { //Where the click happened, relative to the element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5959 left: event.pageX - this.offset.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5960 top: event.pageY - this.offset.top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5961 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5962 parent: this._getParentOffset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5963 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5964 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5965
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5966 //Generate the original position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5967 this.originalPosition = this.position = this._generatePosition(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5968 this.originalPageX = event.pageX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5969 this.originalPageY = event.pageY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5970
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5971 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5972 (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5973
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5974 //Set a containment if given in the options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5975 this._setContainment();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5976
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5977 //Trigger event + callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5978 if(this._trigger("start", event) === false) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5979 this._clear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5980 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5981 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5982
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5983 //Recache the helper size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5984 this._cacheHelperProportions();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5985
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5986 //Prepare the droppable offsets
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5987 if ($.ui.ddmanager && !o.dropBehaviour) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5988 $.ui.ddmanager.prepareOffsets(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5989 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5990
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5991
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5992 this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5993
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5994 //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5995 if ( $.ui.ddmanager ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5996 $.ui.ddmanager.dragStart(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5997 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5998
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5999 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6000 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6001
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6002 _mouseDrag: function(event, noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6003 // reset any necessary cached properties (see #5009)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6004 if ( this.offsetParentCssPosition === "fixed" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6005 this.offset.parent = this._getParentOffset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6006 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6007
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6008 //Compute the helpers position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6009 this.position = this._generatePosition(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6010 this.positionAbs = this._convertPositionTo("absolute");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6011
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6012 //Call plugins and callbacks and use the resulting position if something is returned
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6013 if (!noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6014 var ui = this._uiHash();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6015 if(this._trigger("drag", event, ui) === false) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6016 this._mouseUp({});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6017 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6018 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6019 this.position = ui.position;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6020 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6022 if(!this.options.axis || this.options.axis !== "y") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6023 this.helper[0].style.left = this.position.left+"px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6024 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6025 if(!this.options.axis || this.options.axis !== "x") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6026 this.helper[0].style.top = this.position.top+"px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6027 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6028 if($.ui.ddmanager) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6029 $.ui.ddmanager.drag(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6030 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6031
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6032 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6033 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6034
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6035 _mouseStop: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6036
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6037 //If we are using droppables, inform the manager about the drop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6038 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6039 dropped = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6040 if ($.ui.ddmanager && !this.options.dropBehaviour) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6041 dropped = $.ui.ddmanager.drop(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6042 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6043
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6044 //if a drop comes from outside (a sortable)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6045 if(this.dropped) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6046 dropped = this.dropped;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6047 this.dropped = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6048 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6049
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6050 //if the original element is no longer in the DOM don't bother to continue (see #8269)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6051 if ( this.options.helper === "original" && !$.contains( this.element[ 0 ].ownerDocument, this.element[ 0 ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6052 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6053 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6054
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6055 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))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6056 $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6057 if(that._trigger("stop", event) !== false) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6058 that._clear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6059 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6060 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6061 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6062 if(this._trigger("stop", event) !== false) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6063 this._clear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6064 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6065 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6066
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6067 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6068 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6069
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6070 _mouseUp: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6071 //Remove frame helpers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6072 $("div.ui-draggable-iframeFix").each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6073 this.parentNode.removeChild(this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6074 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6075
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6076 //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6077 if( $.ui.ddmanager ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6078 $.ui.ddmanager.dragStop(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6079 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6080
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6081 return $.ui.mouse.prototype._mouseUp.call(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6082 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6083
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6084 cancel: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6085
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6086 if(this.helper.is(".ui-draggable-dragging")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6087 this._mouseUp({});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6088 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6089 this._clear();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6090 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6091
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6092 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6093
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6094 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6095
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6096 _getHandle: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6097 return this.options.handle ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6098 !!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6099 true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6100 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6101
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6102 _createHelper: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6103
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6104 var o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6105 helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6106
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6107 if(!helper.parents("body").length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6108 helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6109 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6110
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6111 if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6112 helper.css("position", "absolute");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6113 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6114
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6115 return helper;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6116
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6117 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6118
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6119 _adjustOffsetFromHelper: function(obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6120 if (typeof obj === "string") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6121 obj = obj.split(" ");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6122 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6123 if ($.isArray(obj)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6124 obj = {left: +obj[0], top: +obj[1] || 0};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6125 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6126 if ("left" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6127 this.offset.click.left = obj.left + this.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6128 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6129 if ("right" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6130 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6131 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6132 if ("top" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6133 this.offset.click.top = obj.top + this.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6134 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6135 if ("bottom" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6136 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6137 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6138 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6139
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6140 _getParentOffset: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6141
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6142 //Get the offsetParent and cache its position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6143 var po = this.offsetParent.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6144
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6145 // This is a special case where we need to modify a offset calculated on start, since the following happened:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6146 // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6147 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6148 // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6149 if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6150 po.left += this.scrollParent.scrollLeft();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6151 po.top += this.scrollParent.scrollTop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6152 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6153
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6154 //This needs to be actually done for all browsers, since pageX/pageY includes this information
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6155 //Ugly IE fix
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6156 if((this.offsetParent[0] === document.body) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6157 (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6158 po = { top: 0, left: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6159 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6160
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6161 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6162 top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6163 left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6164 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6165
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6166 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6167
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6168 _getRelativeOffset: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6169
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6170 if(this.cssPosition === "relative") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6171 var p = this.element.position();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6172 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6173 top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6174 left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6175 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6176 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6177 return { top: 0, left: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6178 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6179
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6180 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6181
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6182 _cacheMargins: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6183 this.margins = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6184 left: (parseInt(this.element.css("marginLeft"),10) || 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6185 top: (parseInt(this.element.css("marginTop"),10) || 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6186 right: (parseInt(this.element.css("marginRight"),10) || 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6187 bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6188 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6189 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6190
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6191 _cacheHelperProportions: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6192 this.helperProportions = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6193 width: this.helper.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6194 height: this.helper.outerHeight()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6195 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6196 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6197
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6198 _setContainment: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6199
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6200 var over, c, ce,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6201 o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6202
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6203 if ( !o.containment ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6204 this.containment = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6205 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6206 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6207
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6208 if ( o.containment === "window" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6209 this.containment = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6210 $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6211 $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6212 $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6213 $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6214 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6215 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6216 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6217
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6218 if ( o.containment === "document") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6219 this.containment = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6220 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6221 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6222 $( document ).width() - this.helperProportions.width - this.margins.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6223 ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6224 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6225 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6226 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6227
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6228 if ( o.containment.constructor === Array ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6229 this.containment = o.containment;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6230 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6231 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6232
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6233 if ( o.containment === "parent" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6234 o.containment = this.helper[ 0 ].parentNode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6235 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6236
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6237 c = $( o.containment );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6238 ce = c[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6239
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6240 if( !ce ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6241 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6242 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6243
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6244 over = c.css( "overflow" ) !== "hidden";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6245
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6246 this.containment = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6247 ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6248 ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ) ,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6249 ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6250 ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top - this.margins.bottom
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6251 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6252 this.relative_container = c;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6253 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6254
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6255 _convertPositionTo: function(d, pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6256
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6257 if(!pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6258 pos = this.position;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6259 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6260
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6261 var mod = d === "absolute" ? 1 : -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6262 scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6263
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6264 //Cache the scroll
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6265 if (!this.offset.scroll) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6266 this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6267 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6268
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6269 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6270 top: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6271 pos.top + // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6272 this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6273 this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6274 ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top ) * mod )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6275 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6276 left: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6277 pos.left + // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6278 this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6279 this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6280 ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left ) * mod )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6281 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6282 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6283
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6284 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6285
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6286 _generatePosition: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6287
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6288 var containment, co, top, left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6289 o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6290 scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== document && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6291 pageX = event.pageX,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6292 pageY = event.pageY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6293
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6294 //Cache the scroll
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6295 if (!this.offset.scroll) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6296 this.offset.scroll = {top : scroll.scrollTop(), left : scroll.scrollLeft()};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6297 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6298
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6299 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6300 * - Position constraining -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6301 * Constrain the position to a mix of grid, containment.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6302 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6303
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6304 // If we are not dragging yet, we won't check for options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6305 if ( this.originalPosition ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6306 if ( this.containment ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6307 if ( this.relative_container ){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6308 co = this.relative_container.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6309 containment = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6310 this.containment[ 0 ] + co.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6311 this.containment[ 1 ] + co.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6312 this.containment[ 2 ] + co.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6313 this.containment[ 3 ] + co.top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6314 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6315 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6316 else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6317 containment = this.containment;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6318 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6319
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6320 if(event.pageX - this.offset.click.left < containment[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6321 pageX = containment[0] + this.offset.click.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6322 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6323 if(event.pageY - this.offset.click.top < containment[1]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6324 pageY = containment[1] + this.offset.click.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6325 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6326 if(event.pageX - this.offset.click.left > containment[2]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6327 pageX = containment[2] + this.offset.click.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6328 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6329 if(event.pageY - this.offset.click.top > containment[3]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6330 pageY = containment[3] + this.offset.click.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6331 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6332 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6333
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6334 if(o.grid) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6335 //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6336 top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6337 pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6338
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6339 left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6340 pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6341 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6342
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6343 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6344
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6345 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6346 top: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6347 pageY - // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6348 this.offset.click.top - // Click offset (relative to the element)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6349 this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6350 this.offset.parent.top + // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6351 ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : this.offset.scroll.top )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6352 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6353 left: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6354 pageX - // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6355 this.offset.click.left - // Click offset (relative to the element)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6356 this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6357 this.offset.parent.left + // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6358 ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : this.offset.scroll.left )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6359 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6360 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6361
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6362 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6363
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6364 _clear: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6365 this.helper.removeClass("ui-draggable-dragging");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6366 if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6367 this.helper.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6368 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6369 this.helper = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6370 this.cancelHelperRemoval = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6371 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6372
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6373 // From now on bulk stuff - mainly helpers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6374
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6375 _trigger: function(type, event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6376 ui = ui || this._uiHash();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6377 $.ui.plugin.call(this, type, [event, ui]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6378 //The absolute position has to be recalculated after plugins
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6379 if(type === "drag") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6380 this.positionAbs = this._convertPositionTo("absolute");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6381 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6382 return $.Widget.prototype._trigger.call(this, type, event, ui);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6383 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6384
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6385 plugins: {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6386
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6387 _uiHash: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6388 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6389 helper: this.helper,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6390 position: this.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6391 originalPosition: this.originalPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6392 offset: this.positionAbs
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6393 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6394 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6395
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6396 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6397
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6398 $.ui.plugin.add("draggable", "connectToSortable", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6399 start: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6400
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6401 var inst = $(this).data("ui-draggable"), o = inst.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6402 uiSortable = $.extend({}, ui, { item: inst.element });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6403 inst.sortables = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6404 $(o.connectToSortable).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6405 var sortable = $.data(this, "ui-sortable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6406 if (sortable && !sortable.options.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6407 inst.sortables.push({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6408 instance: sortable,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6409 shouldRevert: sortable.options.revert
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6410 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6411 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).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6412 sortable._trigger("activate", event, uiSortable);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6413 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6414 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6415
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6416 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6417 stop: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6418
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6419 //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6420 var inst = $(this).data("ui-draggable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6421 uiSortable = $.extend({}, ui, { item: inst.element });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6422
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6423 $.each(inst.sortables, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6424 if(this.instance.isOver) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6425
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6426 this.instance.isOver = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6427
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6428 inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6429 this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6430
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6431 //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6432 if(this.shouldRevert) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6433 this.instance.options.revert = this.shouldRevert;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6434 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6435
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6436 //Trigger the stop of the sortable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6437 this.instance._mouseStop(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6438
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6439 this.instance.options.helper = this.instance.options._helper;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6440
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6441 //If the helper has been the original item, restore properties in the sortable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6442 if(inst.options.helper === "original") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6443 this.instance.currentItem.css({ top: "auto", left: "auto" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6444 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6445
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6446 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6447 this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6448 this.instance._trigger("deactivate", event, uiSortable);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6449 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6450
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6451 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6452
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6453 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6454 drag: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6455
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6456 var inst = $(this).data("ui-draggable"), that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6457
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6458 $.each(inst.sortables, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6459
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6460 var innermostIntersecting = false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6461 thisSortable = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6462
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6463 //Copy over some variables to allow calling the sortable's native _intersectsWith
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6464 this.instance.positionAbs = inst.positionAbs;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6465 this.instance.helperProportions = inst.helperProportions;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6466 this.instance.offset.click = inst.offset.click;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6467
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6468 if(this.instance._intersectsWith(this.instance.containerCache)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6469 innermostIntersecting = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6470 $.each(inst.sortables, function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6471 this.instance.positionAbs = inst.positionAbs;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6472 this.instance.helperProportions = inst.helperProportions;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6473 this.instance.offset.click = inst.offset.click;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6474 if (this !== thisSortable &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6475 this.instance._intersectsWith(this.instance.containerCache) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6476 $.contains(thisSortable.instance.element[0], this.instance.element[0])
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6477 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6478 innermostIntersecting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6479 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6480 return innermostIntersecting;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6481 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6482 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6483
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6484
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6485 if(innermostIntersecting) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6486 //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6487 if(!this.instance.isOver) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6488
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6489 this.instance.isOver = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6490 //Now we fake the start of dragging for the sortable instance,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6491 //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6492 //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)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6493 this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6494 this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6495 this.instance.options.helper = function() { return ui.helper[0]; };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6496
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6497 event.target = this.instance.currentItem[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6498 this.instance._mouseCapture(event, true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6499 this.instance._mouseStart(event, true, true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6500
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6501 //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6502 this.instance.offset.click.top = inst.offset.click.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6503 this.instance.offset.click.left = inst.offset.click.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6504 this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6505 this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6506
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6507 inst._trigger("toSortable", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6508 inst.dropped = this.instance.element; //draggable revert needs that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6509 //hack so receive/update callbacks work (mostly)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6510 inst.currentItem = inst.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6511 this.instance.fromOutside = inst;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6512
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6513 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6514
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6515 //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
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6516 if(this.instance.currentItem) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6517 this.instance._mouseDrag(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6518 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6519
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6520 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6521
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6522 //If it doesn't intersect with the sortable, and it intersected before,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6523 //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6524 if(this.instance.isOver) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6525
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6526 this.instance.isOver = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6527 this.instance.cancelHelperRemoval = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6528
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6529 //Prevent reverting on this forced stop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6530 this.instance.options.revert = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6531
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6532 // The out event needs to be triggered independently
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6533 this.instance._trigger("out", event, this.instance._uiHash(this.instance));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6535 this.instance._mouseStop(event, true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6536 this.instance.options.helper = this.instance.options._helper;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6537
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6538 //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6539 this.instance.currentItem.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6540 if(this.instance.placeholder) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6541 this.instance.placeholder.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6542 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6543
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6544 inst._trigger("fromSortable", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6545 inst.dropped = false; //draggable revert needs that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6546 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6547
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6548 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6549
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6550 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6551
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6552 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6553 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6554
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6555 $.ui.plugin.add("draggable", "cursor", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6556 start: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6557 var t = $("body"), o = $(this).data("ui-draggable").options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6558 if (t.css("cursor")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6559 o._cursor = t.css("cursor");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6560 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6561 t.css("cursor", o.cursor);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6562 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6563 stop: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6564 var o = $(this).data("ui-draggable").options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6565 if (o._cursor) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6566 $("body").css("cursor", o._cursor);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6567 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6568 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6569 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6570
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6571 $.ui.plugin.add("draggable", "opacity", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6572 start: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6573 var t = $(ui.helper), o = $(this).data("ui-draggable").options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6574 if(t.css("opacity")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6575 o._opacity = t.css("opacity");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6576 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6577 t.css("opacity", o.opacity);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6578 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6579 stop: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6580 var o = $(this).data("ui-draggable").options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6581 if(o._opacity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6582 $(ui.helper).css("opacity", o._opacity);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6583 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6584 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6585 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6586
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6587 $.ui.plugin.add("draggable", "scroll", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6588 start: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6589 var i = $(this).data("ui-draggable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6590 if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6591 i.overflowOffset = i.scrollParent.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6592 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6593 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6594 drag: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6596 var i = $(this).data("ui-draggable"), o = i.options, scrolled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6597
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6598 if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6599
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6600 if(!o.axis || o.axis !== "x") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6601 if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6602 i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6603 } else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6604 i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6605 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6606 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6607
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6608 if(!o.axis || o.axis !== "y") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6609 if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6610 i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6611 } else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6612 i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6613 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6614 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6615
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6616 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6617
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6618 if(!o.axis || o.axis !== "x") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6619 if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6620 scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6621 } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6622 scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6623 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6624 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6625
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6626 if(!o.axis || o.axis !== "y") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6627 if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6628 scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6629 } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6630 scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6631 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6632 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6633
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6634 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6635
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6636 if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6637 $.ui.ddmanager.prepareOffsets(i, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6638 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6639
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6640 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6641 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6642
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6643 $.ui.plugin.add("draggable", "snap", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6644 start: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6645
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6646 var i = $(this).data("ui-draggable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6647 o = i.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6648
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6649 i.snapElements = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6650
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6651 $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6652 var $t = $(this),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6653 $o = $t.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6654 if(this !== i.element[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6655 i.snapElements.push({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6656 item: this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6657 width: $t.outerWidth(), height: $t.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6658 top: $o.top, left: $o.left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6659 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6660 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6661 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6662
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6663 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6664 drag: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6665
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6666 var ts, bs, ls, rs, l, r, t, b, i, first,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6667 inst = $(this).data("ui-draggable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6668 o = inst.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6669 d = o.snapTolerance,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6670 x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6671 y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6672
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6673 for (i = inst.snapElements.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6674
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6675 l = inst.snapElements[i].left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6676 r = l + inst.snapElements[i].width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6677 t = inst.snapElements[i].top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6678 b = t + inst.snapElements[i].height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6679
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6680 if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6681 if(inst.snapElements[i].snapping) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6682 (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6683 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6684 inst.snapElements[i].snapping = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6685 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6686 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6687
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6688 if(o.snapMode !== "inner") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6689 ts = Math.abs(t - y2) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6690 bs = Math.abs(b - y1) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6691 ls = Math.abs(l - x2) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6692 rs = Math.abs(r - x1) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6693 if(ts) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6694 ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6695 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6696 if(bs) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6697 ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6698 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6699 if(ls) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6700 ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6701 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6702 if(rs) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6703 ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6704 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6705 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6706
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6707 first = (ts || bs || ls || rs);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6708
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6709 if(o.snapMode !== "outer") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6710 ts = Math.abs(t - y1) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6711 bs = Math.abs(b - y2) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6712 ls = Math.abs(l - x1) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6713 rs = Math.abs(r - x2) <= d;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6714 if(ts) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6715 ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6716 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6717 if(bs) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6718 ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6719 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6720 if(ls) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6721 ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6722 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6723 if(rs) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6724 ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6725 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6726 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6727
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6728 if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6729 (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6730 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6731 inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6732
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6733 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6734
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6735 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6736 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6737
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6738 $.ui.plugin.add("draggable", "stack", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6739 start: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6740 var min,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6741 o = this.data("ui-draggable").options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6742 group = $.makeArray($(o.stack)).sort(function(a,b) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6743 return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6744 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6745
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6746 if (!group.length) { return; }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6747
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6748 min = parseInt($(group[0]).css("zIndex"), 10) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6749 $(group).each(function(i) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6750 $(this).css("zIndex", min + i);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6751 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6752 this.css("zIndex", (min + group.length));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6753 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6754 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6755
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6756 $.ui.plugin.add("draggable", "zIndex", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6757 start: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6758 var t = $(ui.helper), o = $(this).data("ui-draggable").options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6759 if(t.css("zIndex")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6760 o._zIndex = t.css("zIndex");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6761 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6762 t.css("zIndex", o.zIndex);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6763 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6764 stop: function(event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6765 var o = $(this).data("ui-draggable").options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6766 if(o._zIndex) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6767 $(ui.helper).css("zIndex", o._zIndex);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6768 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6769 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6770 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6771
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6772 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6773 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6774
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6775 function isOverAxis( x, reference, size ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6776 return ( x > reference ) && ( x < ( reference + size ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6777 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6778
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6779 $.widget("ui.droppable", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6780 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6781 widgetEventPrefix: "drop",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6782 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6783 accept: "*",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6784 activeClass: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6785 addClasses: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6786 greedy: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6787 hoverClass: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6788 scope: "default",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6789 tolerance: "intersect",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6790
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6791 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6792 activate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6793 deactivate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6794 drop: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6795 out: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6796 over: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6797 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6798 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6799
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6800 var proportions,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6801 o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6802 accept = o.accept;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6803
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6804 this.isover = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6805 this.isout = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6806
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6807 this.accept = $.isFunction(accept) ? accept : function(d) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6808 return d.is(accept);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6809 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6810
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6811 this.proportions = function( /* valueToWrite */ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6812 if ( arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6813 // Store the droppable's proportions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6814 proportions = arguments[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6815 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6816 // Retrieve or derive the droppable's proportions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6817 return proportions ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6818 proportions :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6819 proportions = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6820 width: this.element[ 0 ].offsetWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6821 height: this.element[ 0 ].offsetHeight
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6822 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6823 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6824 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6825
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6826 // Add the reference and positions to the manager
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6827 $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6828 $.ui.ddmanager.droppables[o.scope].push(this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6829
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6830 (o.addClasses && this.element.addClass("ui-droppable"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6831
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6832 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6833
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6834 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6835 var i = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6836 drop = $.ui.ddmanager.droppables[this.options.scope];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6837
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6838 for ( ; i < drop.length; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6839 if ( drop[i] === this ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6840 drop.splice(i, 1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6841 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6842 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6843
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6844 this.element.removeClass("ui-droppable ui-droppable-disabled");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6845 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6846
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6847 _setOption: function(key, value) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6848
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6849 if(key === "accept") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6850 this.accept = $.isFunction(value) ? value : function(d) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6851 return d.is(value);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6852 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6853 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6854 $.Widget.prototype._setOption.apply(this, arguments);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6855 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6856
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6857 _activate: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6858 var draggable = $.ui.ddmanager.current;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6859 if(this.options.activeClass) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6860 this.element.addClass(this.options.activeClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6861 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6862 if(draggable){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6863 this._trigger("activate", event, this.ui(draggable));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6864 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6865 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6866
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6867 _deactivate: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6868 var draggable = $.ui.ddmanager.current;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6869 if(this.options.activeClass) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6870 this.element.removeClass(this.options.activeClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6871 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6872 if(draggable){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6873 this._trigger("deactivate", event, this.ui(draggable));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6874 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6875 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6876
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6877 _over: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6878
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6879 var draggable = $.ui.ddmanager.current;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6880
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6881 // Bail if draggable and droppable are same element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6882 if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6883 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6884 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6885
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6886 if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6887 if(this.options.hoverClass) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6888 this.element.addClass(this.options.hoverClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6889 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6890 this._trigger("over", event, this.ui(draggable));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6891 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6892
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6893 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6894
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6895 _out: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6896
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6897 var draggable = $.ui.ddmanager.current;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6898
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6899 // Bail if draggable and droppable are same element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6900 if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6901 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6902 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6903
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6904 if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6905 if(this.options.hoverClass) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6906 this.element.removeClass(this.options.hoverClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6907 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6908 this._trigger("out", event, this.ui(draggable));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6909 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6910
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6911 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6912
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6913 _drop: function(event,custom) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6914
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6915 var draggable = custom || $.ui.ddmanager.current,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6916 childrenIntersection = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6917
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6918 // Bail if draggable and droppable are same element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6919 if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6920 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6921 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6922
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6923 this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6924 var inst = $.data(this, "ui-droppable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6925 if(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6926 inst.options.greedy &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6927 !inst.options.disabled &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6928 inst.options.scope === draggable.options.scope &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6929 inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6930 $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6931 ) { childrenIntersection = true; return false; }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6932 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6933 if(childrenIntersection) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6934 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6935 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6936
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6937 if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6938 if(this.options.activeClass) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6939 this.element.removeClass(this.options.activeClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6940 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6941 if(this.options.hoverClass) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6942 this.element.removeClass(this.options.hoverClass);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6943 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6944 this._trigger("drop", event, this.ui(draggable));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6945 return this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6946 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6947
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6948 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6949
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6950 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6951
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6952 ui: function(c) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6953 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6954 draggable: (c.currentItem || c.element),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6955 helper: c.helper,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6956 position: c.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6957 offset: c.positionAbs
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6958 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6959 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6960
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6961 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6962
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6963 $.ui.intersect = function(draggable, droppable, toleranceMode) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6964
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6965 if (!droppable.offset) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6966 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6967 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6968
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6969 var draggableLeft, draggableTop,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6970 x1 = (draggable.positionAbs || draggable.position.absolute).left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6971 y1 = (draggable.positionAbs || draggable.position.absolute).top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6972 x2 = x1 + draggable.helperProportions.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6973 y2 = y1 + draggable.helperProportions.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6974 l = droppable.offset.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6975 t = droppable.offset.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6976 r = l + droppable.proportions().width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6977 b = t + droppable.proportions().height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6978
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6979 switch (toleranceMode) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6980 case "fit":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6981 return (l <= x1 && x2 <= r && t <= y1 && y2 <= b);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6982 case "intersect":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6983 return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6984 x2 - (draggable.helperProportions.width / 2) < r && // Left Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6985 t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6986 y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6987 case "pointer":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6988 draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6989 draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6990 return isOverAxis( draggableTop, t, droppable.proportions().height ) && isOverAxis( draggableLeft, l, droppable.proportions().width );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6991 case "touch":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6992 return (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6993 (y1 >= t && y1 <= b) || // Top edge touching
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6994 (y2 >= t && y2 <= b) || // Bottom edge touching
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6995 (y1 < t && y2 > b) // Surrounded vertically
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6996 ) && (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6997 (x1 >= l && x1 <= r) || // Left edge touching
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6998 (x2 >= l && x2 <= r) || // Right edge touching
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6999 (x1 < l && x2 > r) // Surrounded horizontally
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7000 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7001 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7002 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7003 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7004
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7005 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7006
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7007 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7008 This manager tracks offsets of draggables and droppables
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7009 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7010 $.ui.ddmanager = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7011 current: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7012 droppables: { "default": [] },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7013 prepareOffsets: function(t, event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7014
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7015 var i, j,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7016 m = $.ui.ddmanager.droppables[t.options.scope] || [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7017 type = event ? event.type : null, // workaround for #2317
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7018 list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7019
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7020 droppablesLoop: for (i = 0; i < m.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7022 //No disabled and non-accepted
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7023 if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7024 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7025 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7026
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7027 // Filter out elements in the current dragged item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7028 for (j=0; j < list.length; j++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7029 if(list[j] === m[i].element[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7030 m[i].proportions().height = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7031 continue droppablesLoop;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7032 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7033 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7034
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7035 m[i].visible = m[i].element.css("display") !== "none";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7036 if(!m[i].visible) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7037 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7038 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7039
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7040 //Activate the droppable if used directly from draggables
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7041 if(type === "mousedown") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7042 m[i]._activate.call(m[i], event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7043 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7044
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7045 m[ i ].offset = m[ i ].element.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7046 m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7047
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7048 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7049
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7050 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7051 drop: function(draggable, event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7052
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7053 var dropped = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7054 // Create a copy of the droppables in case the list changes during the drop (#9116)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7055 $.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7056
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7057 if(!this.options) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7058 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7059 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7060 if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7061 dropped = this._drop.call(this, event) || dropped;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7062 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7063
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7064 if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7065 this.isout = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7066 this.isover = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7067 this._deactivate.call(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7068 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7069
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7070 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7071 return dropped;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7072
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7073 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7074 dragStart: function( draggable, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7075 //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7076 draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7077 if( !draggable.options.refreshPositions ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7078 $.ui.ddmanager.prepareOffsets( draggable, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7079 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7080 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7081 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7082 drag: function(draggable, event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7083
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7084 //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7085 if(draggable.options.refreshPositions) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7086 $.ui.ddmanager.prepareOffsets(draggable, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7087 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7088
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7089 //Run through all droppables and check their positions based on specific tolerance options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7090 $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7091
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7092 if(this.options.disabled || this.greedyChild || !this.visible) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7093 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7094 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7095
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7096 var parentInstance, scope, parent,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7097 intersects = $.ui.intersect(draggable, this, this.options.tolerance),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7098 c = !intersects && this.isover ? "isout" : (intersects && !this.isover ? "isover" : null);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7099 if(!c) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7100 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7101 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7102
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7103 if (this.options.greedy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7104 // find droppable parents with same scope
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7105 scope = this.options.scope;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7106 parent = this.element.parents(":data(ui-droppable)").filter(function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7107 return $.data(this, "ui-droppable").options.scope === scope;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7108 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7109
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7110 if (parent.length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7111 parentInstance = $.data(parent[0], "ui-droppable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7112 parentInstance.greedyChild = (c === "isover");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7113 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7114 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7115
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7116 // we just moved into a greedy child
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7117 if (parentInstance && c === "isover") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7118 parentInstance.isover = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7119 parentInstance.isout = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7120 parentInstance._out.call(parentInstance, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7121 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7122
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7123 this[c] = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7124 this[c === "isout" ? "isover" : "isout"] = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7125 this[c === "isover" ? "_over" : "_out"].call(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7126
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7127 // we just moved out of a greedy child
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7128 if (parentInstance && c === "isout") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7129 parentInstance.isout = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7130 parentInstance.isover = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7131 parentInstance._over.call(parentInstance, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7132 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7133 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7134
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7135 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7136 dragStop: function( draggable, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7137 draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7138 //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7139 if( !draggable.options.refreshPositions ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7140 $.ui.ddmanager.prepareOffsets( draggable, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7141 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7142 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7143 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7144
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7145 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7146 (function($, undefined) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7147
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7148 var dataSpace = "ui-effects-";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7149
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7150 $.effects = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7151 effect: {}
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7152 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7153
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7154 /*!
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7155 * jQuery Color Animations v2.1.2
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7156 * https://github.com/jquery/jquery-color
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7157 *
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7158 * Copyright 2013 jQuery Foundation and other contributors
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7159 * Released under the MIT license.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7160 * http://jquery.org/license
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7161 *
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7162 * Date: Wed Jan 16 08:47:09 2013 -0600
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7163 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7164 (function( jQuery, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7165
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7166 var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7167
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7168 // plusequals test for += 100 -= 100
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7169 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7170 // a set of RE's that can match strings and generate color tuples.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7171 stringParsers = [{
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7172 re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7173 parse: function( execResult ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7174 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7175 execResult[ 1 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7176 execResult[ 2 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7177 execResult[ 3 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7178 execResult[ 4 ]
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7179 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7180 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7181 }, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7182 re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7183 parse: function( execResult ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7184 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7185 execResult[ 1 ] * 2.55,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7186 execResult[ 2 ] * 2.55,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7187 execResult[ 3 ] * 2.55,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7188 execResult[ 4 ]
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7189 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7190 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7191 }, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7192 // this regex ignores A-F because it's compared against an already lowercased string
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7193 re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7194 parse: function( execResult ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7195 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7196 parseInt( execResult[ 1 ], 16 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7197 parseInt( execResult[ 2 ], 16 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7198 parseInt( execResult[ 3 ], 16 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7199 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7200 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7201 }, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7202 // this regex ignores A-F because it's compared against an already lowercased string
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7203 re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7204 parse: function( execResult ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7205 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7206 parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7207 parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7208 parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7209 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7210 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7211 }, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7212 re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7213 space: "hsla",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7214 parse: function( execResult ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7215 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7216 execResult[ 1 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7217 execResult[ 2 ] / 100,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7218 execResult[ 3 ] / 100,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7219 execResult[ 4 ]
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7220 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7221 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7222 }],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7223
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7224 // jQuery.Color( )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7225 color = jQuery.Color = function( color, green, blue, alpha ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7226 return new jQuery.Color.fn.parse( color, green, blue, alpha );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7227 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7228 spaces = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7229 rgba: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7230 props: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7231 red: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7232 idx: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7233 type: "byte"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7234 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7235 green: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7236 idx: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7237 type: "byte"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7238 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7239 blue: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7240 idx: 2,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7241 type: "byte"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7242 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7243 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7244 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7245
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7246 hsla: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7247 props: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7248 hue: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7249 idx: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7250 type: "degrees"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7251 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7252 saturation: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7253 idx: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7254 type: "percent"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7255 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7256 lightness: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7257 idx: 2,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7258 type: "percent"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7259 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7260 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7261 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7262 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7263 propTypes = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7264 "byte": {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7265 floor: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7266 max: 255
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7267 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7268 "percent": {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7269 max: 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7270 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7271 "degrees": {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7272 mod: 360,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7273 floor: true
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7274 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7275 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7276 support = color.support = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7277
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7278 // element for support tests
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7279 supportElem = jQuery( "<p>" )[ 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7280
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7281 // colors = jQuery.Color.names
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7282 colors,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7283
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7284 // local aliases of functions called often
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7285 each = jQuery.each;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7286
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7287 // determine rgba support immediately
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7288 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7289 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7290
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7291 // define cache name and alpha properties
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7292 // for rgba and hsla spaces
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7293 each( spaces, function( spaceName, space ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7294 space.cache = "_" + spaceName;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7295 space.props.alpha = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7296 idx: 3,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7297 type: "percent",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7298 def: 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7299 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7300 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7301
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7302 function clamp( value, prop, allowEmpty ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7303 var type = propTypes[ prop.type ] || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7304
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7305 if ( value == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7306 return (allowEmpty || !prop.def) ? null : prop.def;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7307 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7308
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7309 // ~~ is an short way of doing floor for positive numbers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7310 value = type.floor ? ~~value : parseFloat( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7311
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7312 // IE will pass in empty strings as value for alpha,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7313 // which will hit this case
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7314 if ( isNaN( value ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7315 return prop.def;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7316 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7317
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7318 if ( type.mod ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7319 // we add mod before modding to make sure that negatives values
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7320 // get converted properly: -10 -> 350
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7321 return (value + type.mod) % type.mod;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7322 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7323
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7324 // for now all property types without mod have min and max
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7325 return 0 > value ? 0 : type.max < value ? type.max : value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7326 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7327
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7328 function stringParse( string ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7329 var inst = color(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7330 rgba = inst._rgba = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7331
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7332 string = string.toLowerCase();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7333
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7334 each( stringParsers, function( i, parser ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7335 var parsed,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7336 match = parser.re.exec( string ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7337 values = match && parser.parse( match ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7338 spaceName = parser.space || "rgba";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7339
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7340 if ( values ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7341 parsed = inst[ spaceName ]( values );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7342
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7343 // if this was an rgba parse the assignment might happen twice
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7344 // oh well....
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7345 inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7346 rgba = inst._rgba = parsed._rgba;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7347
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7348 // exit each( stringParsers ) here because we matched
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7349 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7350 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7351 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7352
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7353 // Found a stringParser that handled it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7354 if ( rgba.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7355
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7356 // if this came from a parsed string, force "transparent" when alpha is 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7357 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7358 if ( rgba.join() === "0,0,0,0" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7359 jQuery.extend( rgba, colors.transparent );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7360 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7361 return inst;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7362 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7363
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7364 // named colors
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7365 return colors[ string ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7366 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7367
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7368 color.fn = jQuery.extend( color.prototype, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7369 parse: function( red, green, blue, alpha ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7370 if ( red === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7371 this._rgba = [ null, null, null, null ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7372 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7373 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7374 if ( red.jquery || red.nodeType ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7375 red = jQuery( red ).css( green );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7376 green = undefined;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7377 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7378
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7379 var inst = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7380 type = jQuery.type( red ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7381 rgba = this._rgba = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7382
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7383 // more than 1 argument specified - assume ( red, green, blue, alpha )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7384 if ( green !== undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7385 red = [ red, green, blue, alpha ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7386 type = "array";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7387 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7388
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7389 if ( type === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7390 return this.parse( stringParse( red ) || colors._default );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7391 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7392
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7393 if ( type === "array" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7394 each( spaces.rgba.props, function( key, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7395 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7396 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7397 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7398 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7399
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7400 if ( type === "object" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7401 if ( red instanceof color ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7402 each( spaces, function( spaceName, space ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7403 if ( red[ space.cache ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7404 inst[ space.cache ] = red[ space.cache ].slice();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7405 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7406 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7407 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7408 each( spaces, function( spaceName, space ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7409 var cache = space.cache;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7410 each( space.props, function( key, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7411
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7412 // if the cache doesn't exist, and we know how to convert
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7413 if ( !inst[ cache ] && space.to ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7414
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7415 // if the value was null, we don't need to copy it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7416 // if the key was alpha, we don't need to copy it either
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7417 if ( key === "alpha" || red[ key ] == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7418 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7419 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7420 inst[ cache ] = space.to( inst._rgba );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7421 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7422
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7423 // this is the only case where we allow nulls for ALL properties.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7424 // call clamp with alwaysAllowEmpty
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7425 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7426 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7427
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7428 // everything defined but alpha?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7429 if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7430 // use the default of 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7431 inst[ cache ][ 3 ] = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7432 if ( space.from ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7433 inst._rgba = space.from( inst[ cache ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7434 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7435 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7436 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7437 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7438 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7439 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7440 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7441 is: function( compare ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7442 var is = color( compare ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7443 same = true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7444 inst = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7445
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7446 each( spaces, function( _, space ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7447 var localCache,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7448 isCache = is[ space.cache ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7449 if (isCache) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7450 localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7451 each( space.props, function( _, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7452 if ( isCache[ prop.idx ] != null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7453 same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7454 return same;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7455 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7456 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7457 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7458 return same;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7459 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7460 return same;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7461 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7462 _space: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7463 var used = [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7464 inst = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7465 each( spaces, function( spaceName, space ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7466 if ( inst[ space.cache ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7467 used.push( spaceName );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7468 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7469 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7470 return used.pop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7471 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7472 transition: function( other, distance ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7473 var end = color( other ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7474 spaceName = end._space(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7475 space = spaces[ spaceName ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7476 startColor = this.alpha() === 0 ? color( "transparent" ) : this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7477 start = startColor[ space.cache ] || space.to( startColor._rgba ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7478 result = start.slice();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7479
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7480 end = end[ space.cache ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7481 each( space.props, function( key, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7482 var index = prop.idx,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7483 startValue = start[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7484 endValue = end[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7485 type = propTypes[ prop.type ] || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7486
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7487 // if null, don't override start value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7488 if ( endValue === null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7489 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7490 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7491 // if null - use end
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7492 if ( startValue === null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7493 result[ index ] = endValue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7494 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7495 if ( type.mod ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7496 if ( endValue - startValue > type.mod / 2 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7497 startValue += type.mod;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7498 } else if ( startValue - endValue > type.mod / 2 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7499 startValue -= type.mod;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7500 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7501 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7502 result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7503 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7504 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7505 return this[ spaceName ]( result );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7506 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7507 blend: function( opaque ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7508 // if we are already opaque - return ourself
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7509 if ( this._rgba[ 3 ] === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7510 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7511 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7512
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7513 var rgb = this._rgba.slice(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7514 a = rgb.pop(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7515 blend = color( opaque )._rgba;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7516
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7517 return color( jQuery.map( rgb, function( v, i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7518 return ( 1 - a ) * blend[ i ] + a * v;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7519 }));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7520 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7521 toRgbaString: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7522 var prefix = "rgba(",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7523 rgba = jQuery.map( this._rgba, function( v, i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7524 return v == null ? ( i > 2 ? 1 : 0 ) : v;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7525 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7526
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7527 if ( rgba[ 3 ] === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7528 rgba.pop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7529 prefix = "rgb(";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7530 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7531
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7532 return prefix + rgba.join() + ")";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7533 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7534 toHslaString: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7535 var prefix = "hsla(",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7536 hsla = jQuery.map( this.hsla(), function( v, i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7537 if ( v == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7538 v = i > 2 ? 1 : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7539 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7540
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7541 // catch 1 and 2
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7542 if ( i && i < 3 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7543 v = Math.round( v * 100 ) + "%";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7544 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7545 return v;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7546 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7547
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7548 if ( hsla[ 3 ] === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7549 hsla.pop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7550 prefix = "hsl(";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7551 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7552 return prefix + hsla.join() + ")";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7553 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7554 toHexString: function( includeAlpha ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7555 var rgba = this._rgba.slice(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7556 alpha = rgba.pop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7557
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7558 if ( includeAlpha ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7559 rgba.push( ~~( alpha * 255 ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7560 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7561
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7562 return "#" + jQuery.map( rgba, function( v ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7563
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7564 // default to 0 when nulls exist
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7565 v = ( v || 0 ).toString( 16 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7566 return v.length === 1 ? "0" + v : v;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7567 }).join("");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7568 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7569 toString: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7570 return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7571 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7572 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7573 color.fn.parse.prototype = color.fn;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7574
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7575 // hsla conversions adapted from:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7576 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7577
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7578 function hue2rgb( p, q, h ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7579 h = ( h + 1 ) % 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7580 if ( h * 6 < 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7581 return p + (q - p) * h * 6;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7582 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7583 if ( h * 2 < 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7584 return q;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7585 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7586 if ( h * 3 < 2 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7587 return p + (q - p) * ((2/3) - h) * 6;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7588 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7589 return p;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7590 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7591
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7592 spaces.hsla.to = function ( rgba ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7593 if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7594 return [ null, null, null, rgba[ 3 ] ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7595 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7596 var r = rgba[ 0 ] / 255,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7597 g = rgba[ 1 ] / 255,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7598 b = rgba[ 2 ] / 255,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7599 a = rgba[ 3 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7600 max = Math.max( r, g, b ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7601 min = Math.min( r, g, b ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7602 diff = max - min,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7603 add = max + min,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7604 l = add * 0.5,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7605 h, s;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7606
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7607 if ( min === max ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7608 h = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7609 } else if ( r === max ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7610 h = ( 60 * ( g - b ) / diff ) + 360;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7611 } else if ( g === max ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7612 h = ( 60 * ( b - r ) / diff ) + 120;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7613 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7614 h = ( 60 * ( r - g ) / diff ) + 240;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7615 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7616
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7617 // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7618 // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7619 if ( diff === 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7620 s = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7621 } else if ( l <= 0.5 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7622 s = diff / add;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7623 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7624 s = diff / ( 2 - add );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7625 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7626 return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7627 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7628
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7629 spaces.hsla.from = function ( hsla ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7630 if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7631 return [ null, null, null, hsla[ 3 ] ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7632 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7633 var h = hsla[ 0 ] / 360,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7634 s = hsla[ 1 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7635 l = hsla[ 2 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7636 a = hsla[ 3 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7637 q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7638 p = 2 * l - q;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7639
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7640 return [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7641 Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7642 Math.round( hue2rgb( p, q, h ) * 255 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7643 Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7644 a
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7645 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7646 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7647
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7648
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7649 each( spaces, function( spaceName, space ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7650 var props = space.props,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7651 cache = space.cache,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7652 to = space.to,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7653 from = space.from;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7654
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7655 // makes rgba() and hsla()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7656 color.fn[ spaceName ] = function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7657
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7658 // generate a cache for this space if it doesn't exist
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7659 if ( to && !this[ cache ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7660 this[ cache ] = to( this._rgba );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7661 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7662 if ( value === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7663 return this[ cache ].slice();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7664 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7665
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7666 var ret,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7667 type = jQuery.type( value ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7668 arr = ( type === "array" || type === "object" ) ? value : arguments,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7669 local = this[ cache ].slice();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7670
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7671 each( props, function( key, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7672 var val = arr[ type === "object" ? key : prop.idx ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7673 if ( val == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7674 val = local[ prop.idx ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7675 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7676 local[ prop.idx ] = clamp( val, prop );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7677 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7678
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7679 if ( from ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7680 ret = color( from( local ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7681 ret[ cache ] = local;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7682 return ret;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7683 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7684 return color( local );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7685 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7686 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7687
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7688 // makes red() green() blue() alpha() hue() saturation() lightness()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7689 each( props, function( key, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7690 // alpha is included in more than one space
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7691 if ( color.fn[ key ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7692 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7693 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7694 color.fn[ key ] = function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7695 var vtype = jQuery.type( value ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7696 fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7697 local = this[ fn ](),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7698 cur = local[ prop.idx ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7699 match;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7700
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7701 if ( vtype === "undefined" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7702 return cur;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7703 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7704
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7705 if ( vtype === "function" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7706 value = value.call( this, cur );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7707 vtype = jQuery.type( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7708 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7709 if ( value == null && prop.empty ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7710 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7711 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7712 if ( vtype === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7713 match = rplusequals.exec( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7714 if ( match ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7715 value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7716 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7717 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7718 local[ prop.idx ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7719 return this[ fn ]( local );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7720 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7721 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7722 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7723
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7724 // add cssHook and .fx.step function for each named hook.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7725 // accept a space separated string of properties
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7726 color.hook = function( hook ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7727 var hooks = hook.split( " " );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7728 each( hooks, function( i, hook ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7729 jQuery.cssHooks[ hook ] = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7730 set: function( elem, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7731 var parsed, curElem,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7732 backgroundColor = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7733
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7734 if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7735 value = color( parsed || value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7736 if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7737 curElem = hook === "backgroundColor" ? elem.parentNode : elem;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7738 while (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7739 (backgroundColor === "" || backgroundColor === "transparent") &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7740 curElem && curElem.style
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7741 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7742 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7743 backgroundColor = jQuery.css( curElem, "backgroundColor" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7744 curElem = curElem.parentNode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7745 } catch ( e ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7746 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7747 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7748
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7749 value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7750 backgroundColor :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7751 "_default" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7752 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7753
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7754 value = value.toRgbaString();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7755 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7756 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7757 elem.style[ hook ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7758 } catch( e ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7759 // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7760 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7761 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7762 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7763 jQuery.fx.step[ hook ] = function( fx ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7764 if ( !fx.colorInit ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7765 fx.start = color( fx.elem, hook );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7766 fx.end = color( fx.end );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7767 fx.colorInit = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7768 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7769 jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7770 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7771 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7772
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7773 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7774
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7775 color.hook( stepHooks );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7776
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7777 jQuery.cssHooks.borderColor = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7778 expand: function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7779 var expanded = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7780
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7781 each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7782 expanded[ "border" + part + "Color" ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7783 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7784 return expanded;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7785 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7786 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7787
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7788 // Basic color names only.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7789 // Usage of any of the other color names requires adding yourself or including
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7790 // jquery.color.svg-names.js.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7791 colors = jQuery.Color.names = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7792 // 4.1. Basic color keywords
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7793 aqua: "#00ffff",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7794 black: "#000000",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7795 blue: "#0000ff",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7796 fuchsia: "#ff00ff",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7797 gray: "#808080",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7798 green: "#008000",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7799 lime: "#00ff00",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7800 maroon: "#800000",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7801 navy: "#000080",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7802 olive: "#808000",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7803 purple: "#800080",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7804 red: "#ff0000",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7805 silver: "#c0c0c0",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7806 teal: "#008080",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7807 white: "#ffffff",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7808 yellow: "#ffff00",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7809
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7810 // 4.2.3. "transparent" color keyword
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7811 transparent: [ null, null, null, 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7812
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7813 _default: "#ffffff"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7814 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7815
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7816 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7817
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7818
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7819 /******************************************************************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7820 /****************************** CLASS ANIMATIONS ******************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7821 /******************************************************************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7822 (function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7824 var classAnimationActions = [ "add", "remove", "toggle" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7825 shorthandStyles = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7826 border: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7827 borderBottom: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7828 borderColor: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7829 borderLeft: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7830 borderRight: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7831 borderTop: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7832 borderWidth: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7833 margin: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7834 padding: 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7835 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7836
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7837 $.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7838 $.fx.step[ prop ] = function( fx ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7839 if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7840 jQuery.style( fx.elem, prop, fx.end );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7841 fx.setAttr = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7842 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7843 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7844 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7845
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7846 function getElementStyles( elem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7847 var key, len,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7848 style = elem.ownerDocument.defaultView ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7849 elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7850 elem.currentStyle,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7851 styles = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7852
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7853 if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7854 len = style.length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7855 while ( len-- ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7856 key = style[ len ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7857 if ( typeof style[ key ] === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7858 styles[ $.camelCase( key ) ] = style[ key ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7859 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7860 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7861 // support: Opera, IE <9
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7862 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7863 for ( key in style ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7864 if ( typeof style[ key ] === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7865 styles[ key ] = style[ key ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7866 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7867 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7868 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7869
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7870 return styles;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7871 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7872
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7873
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7874 function styleDifference( oldStyle, newStyle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7875 var diff = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7876 name, value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7877
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7878 for ( name in newStyle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7879 value = newStyle[ name ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7880 if ( oldStyle[ name ] !== value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7881 if ( !shorthandStyles[ name ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7882 if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7883 diff[ name ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7884 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7885 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7886 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7887 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7888
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7889 return diff;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7890 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7891
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7892 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7893 if ( !$.fn.addBack ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7894 $.fn.addBack = function( selector ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7895 return this.add( selector == null ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7896 this.prevObject : this.prevObject.filter( selector )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7897 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7898 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7899 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7900
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7901 $.effects.animateClass = function( value, duration, easing, callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7902 var o = $.speed( duration, easing, callback );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7903
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7904 return this.queue( function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7905 var animated = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7906 baseClass = animated.attr( "class" ) || "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7907 applyClassChange,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7908 allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7909
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7910 // map the animated objects to store the original styles.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7911 allAnimations = allAnimations.map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7912 var el = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7913 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7914 el: el,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7915 start: getElementStyles( this )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7916 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7917 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7918
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7919 // apply class change
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7920 applyClassChange = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7921 $.each( classAnimationActions, function(i, action) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7922 if ( value[ action ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7923 animated[ action + "Class" ]( value[ action ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7924 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7925 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7926 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7927 applyClassChange();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7928
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7929 // map all animated objects again - calculate new styles and diff
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7930 allAnimations = allAnimations.map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7931 this.end = getElementStyles( this.el[ 0 ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7932 this.diff = styleDifference( this.start, this.end );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7933 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7934 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7935
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7936 // apply original class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7937 animated.attr( "class", baseClass );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7938
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7939 // map all animated objects again - this time collecting a promise
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7940 allAnimations = allAnimations.map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7941 var styleInfo = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7942 dfd = $.Deferred(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7943 opts = $.extend({}, o, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7944 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7945 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7946 dfd.resolve( styleInfo );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7947 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7948 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7949
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7950 this.el.animate( this.diff, opts );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7951 return dfd.promise();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7952 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7953
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7954 // once all animations have completed:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7955 $.when.apply( $, allAnimations.get() ).done(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7956
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7957 // set the final class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7958 applyClassChange();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7959
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7960 // for each animated element,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7961 // clear all css properties that were animated
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7962 $.each( arguments, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7963 var el = this.el;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7964 $.each( this.diff, function(key) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7965 el.css( key, "" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7966 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7967 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7968
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7969 // this is guarnteed to be there if you use jQuery.speed()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7970 // it also handles dequeuing the next anim...
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7971 o.complete.call( animated[ 0 ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7972 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7973 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7974 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7975
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7976 $.fn.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7977 addClass: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7978 return function( classNames, speed, easing, callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7979 return speed ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7980 $.effects.animateClass.call( this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7981 { add: classNames }, speed, easing, callback ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7982 orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7983 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7984 })( $.fn.addClass ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7985
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7986 removeClass: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7987 return function( classNames, speed, easing, callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7988 return arguments.length > 1 ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7989 $.effects.animateClass.call( this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7990 { remove: classNames }, speed, easing, callback ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7991 orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7992 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7993 })( $.fn.removeClass ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7994
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7995 toggleClass: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7996 return function( classNames, force, speed, easing, callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7997 if ( typeof force === "boolean" || force === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7998 if ( !speed ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7999 // without speed parameter
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8000 return orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8001 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8002 return $.effects.animateClass.call( this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8003 (force ? { add: classNames } : { remove: classNames }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8004 speed, easing, callback );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8005 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8006 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8007 // without force parameter
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8008 return $.effects.animateClass.call( this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8009 { toggle: classNames }, force, speed, easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8010 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8011 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8012 })( $.fn.toggleClass ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8013
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8014 switchClass: function( remove, add, speed, easing, callback) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8015 return $.effects.animateClass.call( this, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8016 add: add,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8017 remove: remove
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8018 }, speed, easing, callback );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8019 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8020 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8022 })();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8023
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8024 /******************************************************************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8025 /*********************************** EFFECTS **********************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8026 /******************************************************************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8027
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8028 (function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8029
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8030 $.extend( $.effects, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8031 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8032
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8033 // Saves a set of properties in a data storage
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8034 save: function( element, set ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8035 for( var i=0; i < set.length; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8036 if ( set[ i ] !== null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8037 element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8038 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8039 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8040 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8041
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8042 // Restores a set of previously saved properties from a data storage
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8043 restore: function( element, set ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8044 var val, i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8045 for( i=0; i < set.length; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8046 if ( set[ i ] !== null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8047 val = element.data( dataSpace + set[ i ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8048 // support: jQuery 1.6.2
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8049 // http://bugs.jquery.com/ticket/9917
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8050 // jQuery 1.6.2 incorrectly returns undefined for any falsy value.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8051 // We can't differentiate between "" and 0 here, so we just assume
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8052 // empty string since it's likely to be a more common value...
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8053 if ( val === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8054 val = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8055 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8056 element.css( set[ i ], val );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8057 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8058 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8059 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8060
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8061 setMode: function( el, mode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8062 if (mode === "toggle") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8063 mode = el.is( ":hidden" ) ? "show" : "hide";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8064 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8065 return mode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8066 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8067
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8068 // Translates a [top,left] array into a baseline value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8069 // this should be a little more flexible in the future to handle a string & hash
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8070 getBaseline: function( origin, original ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8071 var y, x;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8072 switch ( origin[ 0 ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8073 case "top": y = 0; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8074 case "middle": y = 0.5; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8075 case "bottom": y = 1; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8076 default: y = origin[ 0 ] / original.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8077 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8078 switch ( origin[ 1 ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8079 case "left": x = 0; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8080 case "center": x = 0.5; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8081 case "right": x = 1; break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8082 default: x = origin[ 1 ] / original.width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8083 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8084 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8085 x: x,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8086 y: y
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8087 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8088 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8089
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8090 // Wraps the element around a wrapper that copies position properties
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8091 createWrapper: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8092
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8093 // if the element is already wrapped, return it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8094 if ( element.parent().is( ".ui-effects-wrapper" )) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8095 return element.parent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8096 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8097
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8098 // wrap the element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8099 var props = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8100 width: element.outerWidth(true),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8101 height: element.outerHeight(true),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8102 "float": element.css( "float" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8103 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8104 wrapper = $( "<div></div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8105 .addClass( "ui-effects-wrapper" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8106 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8107 fontSize: "100%",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8108 background: "transparent",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8109 border: "none",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8110 margin: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8111 padding: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8112 }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8113 // Store the size in case width/height are defined in % - Fixes #5245
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8114 size = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8115 width: element.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8116 height: element.height()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8117 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8118 active = document.activeElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8119
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8120 // support: Firefox
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8121 // Firefox incorrectly exposes anonymous content
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8122 // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8123 try {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8124 active.id;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8125 } catch( e ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8126 active = document.body;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8127 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8128
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8129 element.wrap( wrapper );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8130
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8131 // Fixes #7595 - Elements lose focus when wrapped.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8132 if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8133 $( active ).focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8134 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8135
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8136 wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8137
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8138 // transfer positioning properties to the wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8139 if ( element.css( "position" ) === "static" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8140 wrapper.css({ position: "relative" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8141 element.css({ position: "relative" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8142 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8143 $.extend( props, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8144 position: element.css( "position" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8145 zIndex: element.css( "z-index" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8146 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8147 $.each([ "top", "left", "bottom", "right" ], function(i, pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8148 props[ pos ] = element.css( pos );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8149 if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8150 props[ pos ] = "auto";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8151 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8152 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8153 element.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8154 position: "relative",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8155 top: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8156 left: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8157 right: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8158 bottom: "auto"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8159 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8160 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8161 element.css(size);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8162
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8163 return wrapper.css( props ).show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8164 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8165
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8166 removeWrapper: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8167 var active = document.activeElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8168
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8169 if ( element.parent().is( ".ui-effects-wrapper" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8170 element.parent().replaceWith( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8171
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8172 // Fixes #7595 - Elements lose focus when wrapped.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8173 if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8174 $( active ).focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8175 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8176 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8177
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8178
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8179 return element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8180 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8181
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8182 setTransition: function( element, list, factor, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8183 value = value || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8184 $.each( list, function( i, x ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8185 var unit = element.cssUnit( x );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8186 if ( unit[ 0 ] > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8187 value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8188 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8189 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8190 return value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8191 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8192 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8193
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8194 // return an effect options object for the given parameters:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8195 function _normalizeArguments( effect, options, speed, callback ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8196
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8197 // allow passing all options as the first parameter
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8198 if ( $.isPlainObject( effect ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8199 options = effect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8200 effect = effect.effect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8201 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8202
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8203 // convert to an object
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8204 effect = { effect: effect };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8205
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8206 // catch (effect, null, ...)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8207 if ( options == null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8208 options = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8209 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8210
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8211 // catch (effect, callback)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8212 if ( $.isFunction( options ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8213 callback = options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8214 speed = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8215 options = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8216 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8217
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8218 // catch (effect, speed, ?)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8219 if ( typeof options === "number" || $.fx.speeds[ options ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8220 callback = speed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8221 speed = options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8222 options = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8223 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8224
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8225 // catch (effect, options, callback)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8226 if ( $.isFunction( speed ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8227 callback = speed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8228 speed = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8229 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8230
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8231 // add options to effect
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8232 if ( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8233 $.extend( effect, options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8234 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8235
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8236 speed = speed || options.duration;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8237 effect.duration = $.fx.off ? 0 :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8238 typeof speed === "number" ? speed :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8239 speed in $.fx.speeds ? $.fx.speeds[ speed ] :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8240 $.fx.speeds._default;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8241
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8242 effect.complete = callback || options.complete;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8243
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8244 return effect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8245 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8246
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8247 function standardAnimationOption( option ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8248 // Valid standard speeds (nothing, number, named speed)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8249 if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8250 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8251 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8252
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8253 // Invalid strings - treat as "normal" speed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8254 if ( typeof option === "string" && !$.effects.effect[ option ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8255 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8256 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8257
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8258 // Complete callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8259 if ( $.isFunction( option ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8260 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8261 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8262
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8263 // Options hash (but not naming an effect)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8264 if ( typeof option === "object" && !option.effect ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8265 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8266 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8267
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8268 // Didn't match any standard API
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8269 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8270 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8271
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8272 $.fn.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8273 effect: function( /* effect, options, speed, callback */ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8274 var args = _normalizeArguments.apply( this, arguments ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8275 mode = args.mode,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8276 queue = args.queue,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8277 effectMethod = $.effects.effect[ args.effect ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8278
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8279 if ( $.fx.off || !effectMethod ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8280 // delegate to the original method (e.g., .show()) if possible
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8281 if ( mode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8282 return this[ mode ]( args.duration, args.complete );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8283 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8284 return this.each( function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8285 if ( args.complete ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8286 args.complete.call( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8287 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8288 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8289 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8290 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8291
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8292 function run( next ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8293 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8294 complete = args.complete,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8295 mode = args.mode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8296
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8297 function done() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8298 if ( $.isFunction( complete ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8299 complete.call( elem[0] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8300 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8301 if ( $.isFunction( next ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8302 next();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8303 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8304 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8305
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8306 // If the element already has the correct final state, delegate to
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8307 // the core methods so the internal tracking of "olddisplay" works.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8308 if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8309 elem[ mode ]();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8310 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8311 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8312 effectMethod.call( elem[0], args, done );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8313 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8314 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8315
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8316 return queue === false ? this.each( run ) : this.queue( queue || "fx", run );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8317 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8318
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8319 show: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8320 return function( option ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8321 if ( standardAnimationOption( option ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8322 return orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8323 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8324 var args = _normalizeArguments.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8325 args.mode = "show";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8326 return this.effect.call( this, args );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8327 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8328 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8329 })( $.fn.show ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8330
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8331 hide: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8332 return function( option ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8333 if ( standardAnimationOption( option ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8334 return orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8335 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8336 var args = _normalizeArguments.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8337 args.mode = "hide";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8338 return this.effect.call( this, args );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8339 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8340 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8341 })( $.fn.hide ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8342
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8343 toggle: (function( orig ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8344 return function( option ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8345 if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8346 return orig.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8347 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8348 var args = _normalizeArguments.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8349 args.mode = "toggle";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8350 return this.effect.call( this, args );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8351 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8352 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8353 })( $.fn.toggle ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8354
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8355 // helper functions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8356 cssUnit: function(key) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8357 var style = this.css( key ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8358 val = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8359
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8360 $.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8361 if ( style.indexOf( unit ) > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8362 val = [ parseFloat( style ), unit ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8363 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8364 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8365 return val;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8366 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8367 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8368
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8369 })();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8370
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8371 /******************************************************************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8372 /*********************************** EASING ***********************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8373 /******************************************************************************/
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8374
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8375 (function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8376
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8377 // based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8378
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8379 var baseEasings = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8380
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8381 $.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8382 baseEasings[ name ] = function( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8383 return Math.pow( p, i + 2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8384 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8385 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8386
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8387 $.extend( baseEasings, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8388 Sine: function ( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8389 return 1 - Math.cos( p * Math.PI / 2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8390 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8391 Circ: function ( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8392 return 1 - Math.sqrt( 1 - p * p );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8393 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8394 Elastic: function( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8395 return p === 0 || p === 1 ? p :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8396 -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8397 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8398 Back: function( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8399 return p * p * ( 3 * p - 2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8400 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8401 Bounce: function ( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8402 var pow2,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8403 bounce = 4;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8404
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8405 while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8406 return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8407 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8408 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8409
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8410 $.each( baseEasings, function( name, easeIn ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8411 $.easing[ "easeIn" + name ] = easeIn;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8412 $.easing[ "easeOut" + name ] = function( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8413 return 1 - easeIn( 1 - p );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8414 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8415 $.easing[ "easeInOut" + name ] = function( p ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8416 return p < 0.5 ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8417 easeIn( p * 2 ) / 2 :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8418 1 - easeIn( p * -2 + 2 ) / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8419 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8420 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8421
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8422 })();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8423
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8424 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8425 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8426
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8427 var rvertical = /up|down|vertical/,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8428 rpositivemotion = /up|left|vertical|horizontal/;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8429
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8430 $.effects.effect.blind = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8431 // Create element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8432 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8433 props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8434 mode = $.effects.setMode( el, o.mode || "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8435 direction = o.direction || "up",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8436 vertical = rvertical.test( direction ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8437 ref = vertical ? "height" : "width",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8438 ref2 = vertical ? "top" : "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8439 motion = rpositivemotion.test( direction ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8440 animation = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8441 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8442 wrapper, distance, margin;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8443
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8444 // if already wrapped, the wrapper's properties are my property. #6245
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8445 if ( el.parent().is( ".ui-effects-wrapper" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8446 $.effects.save( el.parent(), props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8447 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8448 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8449 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8450 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8451 wrapper = $.effects.createWrapper( el ).css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8452 overflow: "hidden"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8453 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8454
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8455 distance = wrapper[ ref ]();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8456 margin = parseFloat( wrapper.css( ref2 ) ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8457
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8458 animation[ ref ] = show ? distance : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8459 if ( !motion ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8460 el
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8461 .css( vertical ? "bottom" : "right", 0 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8462 .css( vertical ? "top" : "left", "auto" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8463 .css({ position: "absolute" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8464
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8465 animation[ ref2 ] = show ? margin : distance + margin;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8466 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8467
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8468 // start at 0 if we are showing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8469 if ( show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8470 wrapper.css( ref, 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8471 if ( ! motion ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8472 wrapper.css( ref2, margin + distance );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8473 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8474 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8475
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8476 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8477 wrapper.animate( animation, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8478 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8479 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8480 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8481 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8482 if ( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8483 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8484 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8485 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8486 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8487 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8488 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8489 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8490
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8491 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8492
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8493 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8494 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8495
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8496 $.effects.effect.bounce = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8497 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8498 props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8499
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8500 // defaults:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8501 mode = $.effects.setMode( el, o.mode || "effect" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8502 hide = mode === "hide",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8503 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8504 direction = o.direction || "up",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8505 distance = o.distance,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8506 times = o.times || 5,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8507
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8508 // number of internal animations
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8509 anims = times * 2 + ( show || hide ? 1 : 0 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8510 speed = o.duration / anims,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8511 easing = o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8512
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8513 // utility:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8514 ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8515 motion = ( direction === "up" || direction === "left" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8516 i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8517 upAnim,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8518 downAnim,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8519
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8520 // we will need to re-assemble the queue to stack our animations in place
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8521 queue = el.queue(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8522 queuelen = queue.length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8523
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8524 // Avoid touching opacity to prevent clearType and PNG issues in IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8525 if ( show || hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8526 props.push( "opacity" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8527 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8528
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8529 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8530 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8531 $.effects.createWrapper( el ); // Create Wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8532
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8533 // default distance for the BIGGEST bounce is the outer Distance / 3
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8534 if ( !distance ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8535 distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8536 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8537
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8538 if ( show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8539 downAnim = { opacity: 1 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8540 downAnim[ ref ] = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8541
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8542 // if we are showing, force opacity 0 and set the initial position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8543 // then do the "first" animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8544 el.css( "opacity", 0 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8545 .css( ref, motion ? -distance * 2 : distance * 2 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8546 .animate( downAnim, speed, easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8547 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8548
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8549 // start at the smallest distance if we are hiding
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8550 if ( hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8551 distance = distance / Math.pow( 2, times - 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8552 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8553
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8554 downAnim = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8555 downAnim[ ref ] = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8556 // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8557 for ( i = 0; i < times; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8558 upAnim = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8559 upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8560
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8561 el.animate( upAnim, speed, easing )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8562 .animate( downAnim, speed, easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8563
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8564 distance = hide ? distance * 2 : distance / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8565 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8566
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8567 // Last Bounce when Hiding
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8568 if ( hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8569 upAnim = { opacity: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8570 upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8571
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8572 el.animate( upAnim, speed, easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8573 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8574
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8575 el.queue(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8576 if ( hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8577 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8578 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8579 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8580 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8581 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8582 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8583
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8584 // inject all the animations we just queued to be first in line (after "inprogress")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8585 if ( queuelen > 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8586 queue.splice.apply( queue,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8587 [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8588 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8589 el.dequeue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8590
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8591 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8592
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8593 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8594 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8596 $.effects.effect.clip = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8597 // Create element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8598 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8599 props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8600 mode = $.effects.setMode( el, o.mode || "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8601 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8602 direction = o.direction || "vertical",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8603 vert = direction === "vertical",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8604 size = vert ? "height" : "width",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8605 position = vert ? "top" : "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8606 animation = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8607 wrapper, animate, distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8608
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8609 // Save & Show
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8610 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8611 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8612
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8613 // Create Wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8614 wrapper = $.effects.createWrapper( el ).css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8615 overflow: "hidden"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8616 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8617 animate = ( el[0].tagName === "IMG" ) ? wrapper : el;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8618 distance = animate[ size ]();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8619
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8620 // Shift
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8621 if ( show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8622 animate.css( size, 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8623 animate.css( position, distance / 2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8624 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8625
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8626 // Create Animation Object:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8627 animation[ size ] = show ? distance : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8628 animation[ position ] = show ? 0 : distance / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8629
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8630 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8631 animate.animate( animation, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8632 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8633 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8634 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8635 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8636 if ( !show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8637 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8638 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8639 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8640 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8641 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8642 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8643 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8644
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8645 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8646
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8647 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8648 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8649
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8650 $.effects.effect.drop = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8651
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8652 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8653 props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8654 mode = $.effects.setMode( el, o.mode || "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8655 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8656 direction = o.direction || "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8657 ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8658 motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8659 animation = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8660 opacity: show ? 1 : 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8661 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8662 distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8663
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8664 // Adjust
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8665 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8666 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8667 $.effects.createWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8668
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8669 distance = o.distance || el[ ref === "top" ? "outerHeight": "outerWidth" ]( true ) / 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8670
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8671 if ( show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8672 el
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8673 .css( "opacity", 0 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8674 .css( ref, motion === "pos" ? -distance : distance );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8675 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8676
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8677 // Animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8678 animation[ ref ] = ( show ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8679 ( motion === "pos" ? "+=" : "-=" ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8680 ( motion === "pos" ? "-=" : "+=" ) ) +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8681 distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8682
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8683 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8684 el.animate( animation, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8685 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8686 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8687 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8688 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8689 if ( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8690 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8691 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8692 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8693 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8694 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8695 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8696 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8697 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8698
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8699 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8700 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8701
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8702 $.effects.effect.explode = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8703
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8704 var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8705 cells = rows,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8706 el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8707 mode = $.effects.setMode( el, o.mode || "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8708 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8709
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8710 // show and then visibility:hidden the element before calculating offset
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8711 offset = el.show().css( "visibility", "hidden" ).offset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8712
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8713 // width and height of a piece
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8714 width = Math.ceil( el.outerWidth() / cells ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8715 height = Math.ceil( el.outerHeight() / rows ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8716 pieces = [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8717
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8718 // loop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8719 i, j, left, top, mx, my;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8720
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8721 // children animate complete:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8722 function childComplete() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8723 pieces.push( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8724 if ( pieces.length === rows * cells ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8725 animComplete();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8726 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8727 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8728
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8729 // clone the element for each row and cell.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8730 for( i = 0; i < rows ; i++ ) { // ===>
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8731 top = offset.top + i * height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8732 my = i - ( rows - 1 ) / 2 ;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8733
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8734 for( j = 0; j < cells ; j++ ) { // |||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8735 left = offset.left + j * width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8736 mx = j - ( cells - 1 ) / 2 ;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8737
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8738 // Create a clone of the now hidden main element that will be absolute positioned
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8739 // within a wrapper div off the -left and -top equal to size of our pieces
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8740 el
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8741 .clone()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8742 .appendTo( "body" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8743 .wrap( "<div></div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8744 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8745 position: "absolute",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8746 visibility: "visible",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8747 left: -j * width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8748 top: -i * height
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8749 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8750
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8751 // select the wrapper - make it overflow: hidden and absolute positioned based on
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8752 // where the original was located +left and +top equal to the size of pieces
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8753 .parent()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8754 .addClass( "ui-effects-explode" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8755 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8756 position: "absolute",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8757 overflow: "hidden",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8758 width: width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8759 height: height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8760 left: left + ( show ? mx * width : 0 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8761 top: top + ( show ? my * height : 0 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8762 opacity: show ? 0 : 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8763 }).animate({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8764 left: left + ( show ? 0 : mx * width ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8765 top: top + ( show ? 0 : my * height ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8766 opacity: show ? 1 : 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8767 }, o.duration || 500, o.easing, childComplete );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8768 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8769 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8770
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8771 function animComplete() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8772 el.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8773 visibility: "visible"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8774 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8775 $( pieces ).remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8776 if ( !show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8777 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8778 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8779 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8780 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8781 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8782
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8783 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8784 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8785
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8786 $.effects.effect.fade = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8787 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8788 mode = $.effects.setMode( el, o.mode || "toggle" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8789
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8790 el.animate({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8791 opacity: mode
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8792 }, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8793 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8794 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8795 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8796 complete: done
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8797 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8798 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8799
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8800 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8801 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8802
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8803 $.effects.effect.fold = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8804
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8805 // Create element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8806 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8807 props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8808 mode = $.effects.setMode( el, o.mode || "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8809 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8810 hide = mode === "hide",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8811 size = o.size || 15,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8812 percent = /([0-9]+)%/.exec( size ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8813 horizFirst = !!o.horizFirst,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8814 widthFirst = show !== horizFirst,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8815 ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8816 duration = o.duration / 2,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8817 wrapper, distance,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8818 animation1 = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8819 animation2 = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8820
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8821 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8822 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8824 // Create Wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8825 wrapper = $.effects.createWrapper( el ).css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8826 overflow: "hidden"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8827 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8828 distance = widthFirst ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8829 [ wrapper.width(), wrapper.height() ] :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8830 [ wrapper.height(), wrapper.width() ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8831
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8832 if ( percent ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8833 size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8834 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8835 if ( show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8836 wrapper.css( horizFirst ? {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8837 height: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8838 width: size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8839 } : {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8840 height: size,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8841 width: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8842 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8843 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8844
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8845 // Animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8846 animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8847 animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8848
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8849 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8850 wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8851 .animate( animation1, duration, o.easing )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8852 .animate( animation2, duration, o.easing, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8853 if ( hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8854 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8855 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8856 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8857 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8858 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8859 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8860
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8861 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8862
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8863 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8864 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8865
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8866 $.effects.effect.highlight = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8867 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8868 props = [ "backgroundImage", "backgroundColor", "opacity" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8869 mode = $.effects.setMode( elem, o.mode || "show" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8870 animation = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8871 backgroundColor: elem.css( "backgroundColor" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8872 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8873
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8874 if (mode === "hide") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8875 animation.opacity = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8876 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8877
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8878 $.effects.save( elem, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8879
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8880 elem
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8881 .show()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8882 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8883 backgroundImage: "none",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8884 backgroundColor: o.color || "#ffff99"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8885 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8886 .animate( animation, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8887 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8888 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8889 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8890 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8891 if ( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8892 elem.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8893 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8894 $.effects.restore( elem, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8895 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8896 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8897 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8898 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8899
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8900 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8901 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8902
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8903 $.effects.effect.pulsate = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8904 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8905 mode = $.effects.setMode( elem, o.mode || "show" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8906 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8907 hide = mode === "hide",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8908 showhide = ( show || mode === "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8909
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8910 // showing or hiding leaves of the "last" animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8911 anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8912 duration = o.duration / anims,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8913 animateTo = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8914 queue = elem.queue(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8915 queuelen = queue.length,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8916 i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8917
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8918 if ( show || !elem.is(":visible")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8919 elem.css( "opacity", 0 ).show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8920 animateTo = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8921 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8922
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8923 // anims - 1 opacity "toggles"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8924 for ( i = 1; i < anims; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8925 elem.animate({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8926 opacity: animateTo
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8927 }, duration, o.easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8928 animateTo = 1 - animateTo;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8929 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8930
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8931 elem.animate({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8932 opacity: animateTo
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8933 }, duration, o.easing);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8934
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8935 elem.queue(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8936 if ( hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8937 elem.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8938 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8939 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8940 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8941
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8942 // We just queued up "anims" animations, we need to put them next in the queue
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8943 if ( queuelen > 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8944 queue.splice.apply( queue,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8945 [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8946 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8947 elem.dequeue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8948 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8949
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8950 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8951 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8952
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8953 $.effects.effect.puff = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8954 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8955 mode = $.effects.setMode( elem, o.mode || "hide" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8956 hide = mode === "hide",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8957 percent = parseInt( o.percent, 10 ) || 150,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8958 factor = percent / 100,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8959 original = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8960 height: elem.height(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8961 width: elem.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8962 outerHeight: elem.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8963 outerWidth: elem.outerWidth()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8964 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8965
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8966 $.extend( o, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8967 effect: "scale",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8968 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8969 fade: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8970 mode: mode,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8971 complete: done,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8972 percent: hide ? percent : 100,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8973 from: hide ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8974 original :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8975 {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8976 height: original.height * factor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8977 width: original.width * factor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8978 outerHeight: original.outerHeight * factor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8979 outerWidth: original.outerWidth * factor
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8980 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8981 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8982
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8983 elem.effect( o );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8984 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8985
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8986 $.effects.effect.scale = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8987
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8988 // Create element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8989 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8990 options = $.extend( true, {}, o ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8991 mode = $.effects.setMode( el, o.mode || "effect" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8992 percent = parseInt( o.percent, 10 ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8993 ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8994 direction = o.direction || "both",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8995 origin = o.origin,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8996 original = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8997 height: el.height(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8998 width: el.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8999 outerHeight: el.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9000 outerWidth: el.outerWidth()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9001 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9002 factor = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9003 y: direction !== "horizontal" ? (percent / 100) : 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9004 x: direction !== "vertical" ? (percent / 100) : 1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9005 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9006
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9007 // We are going to pass this effect to the size effect:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9008 options.effect = "size";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9009 options.queue = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9010 options.complete = done;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9011
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9012 // Set default origin and restore for show/hide
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9013 if ( mode !== "effect" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9014 options.origin = origin || ["middle","center"];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9015 options.restore = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9016 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9017
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9018 options.from = o.from || ( mode === "show" ? {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9019 height: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9020 width: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9021 outerHeight: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9022 outerWidth: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9023 } : original );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9024 options.to = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9025 height: original.height * factor.y,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9026 width: original.width * factor.x,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9027 outerHeight: original.outerHeight * factor.y,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9028 outerWidth: original.outerWidth * factor.x
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9029 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9030
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9031 // Fade option to support puff
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9032 if ( options.fade ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9033 if ( mode === "show" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9034 options.from.opacity = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9035 options.to.opacity = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9036 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9037 if ( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9038 options.from.opacity = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9039 options.to.opacity = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9040 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9041 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9042
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9043 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9044 el.effect( options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9045
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9046 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9047
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9048 $.effects.effect.size = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9049
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9050 // Create element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9051 var original, baseline, factor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9052 el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9053 props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9054
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9055 // Always restore
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9056 props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9057
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9058 // Copy for children
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9059 props2 = [ "width", "height", "overflow" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9060 cProps = [ "fontSize" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9061 vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9062 hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9063
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9064 // Set options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9065 mode = $.effects.setMode( el, o.mode || "effect" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9066 restore = o.restore || mode !== "effect",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9067 scale = o.scale || "both",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9068 origin = o.origin || [ "middle", "center" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9069 position = el.css( "position" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9070 props = restore ? props0 : props1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9071 zero = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9072 height: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9073 width: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9074 outerHeight: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9075 outerWidth: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9076 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9077
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9078 if ( mode === "show" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9079 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9080 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9081 original = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9082 height: el.height(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9083 width: el.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9084 outerHeight: el.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9085 outerWidth: el.outerWidth()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9086 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9087
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9088 if ( o.mode === "toggle" && mode === "show" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9089 el.from = o.to || zero;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9090 el.to = o.from || original;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9091 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9092 el.from = o.from || ( mode === "show" ? zero : original );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9093 el.to = o.to || ( mode === "hide" ? zero : original );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9094 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9095
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9096 // Set scaling factor
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9097 factor = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9098 from: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9099 y: el.from.height / original.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9100 x: el.from.width / original.width
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9101 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9102 to: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9103 y: el.to.height / original.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9104 x: el.to.width / original.width
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9105 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9106 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9107
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9108 // Scale the css box
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9109 if ( scale === "box" || scale === "both" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9110
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9111 // Vertical props scaling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9112 if ( factor.from.y !== factor.to.y ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9113 props = props.concat( vProps );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9114 el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9115 el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9116 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9117
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9118 // Horizontal props scaling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9119 if ( factor.from.x !== factor.to.x ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9120 props = props.concat( hProps );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9121 el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9122 el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9123 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9124 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9125
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9126 // Scale the content
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9127 if ( scale === "content" || scale === "both" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9128
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9129 // Vertical props scaling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9130 if ( factor.from.y !== factor.to.y ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9131 props = props.concat( cProps ).concat( props2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9132 el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9133 el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9134 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9135 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9136
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9137 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9138 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9139 $.effects.createWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9140 el.css( "overflow", "hidden" ).css( el.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9141
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9142 // Adjust
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9143 if (origin) { // Calculate baseline shifts
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9144 baseline = $.effects.getBaseline( origin, original );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9145 el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9146 el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9147 el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9148 el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9149 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9150 el.css( el.from ); // set top & left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9151
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9152 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9153 if ( scale === "content" || scale === "both" ) { // Scale the children
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9154
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9155 // Add margins/font-size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9156 vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9157 hProps = hProps.concat([ "marginLeft", "marginRight" ]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9158 props2 = props0.concat(vProps).concat(hProps);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9159
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9160 el.find( "*[width]" ).each( function(){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9161 var child = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9162 c_original = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9163 height: child.height(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9164 width: child.width(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9165 outerHeight: child.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9166 outerWidth: child.outerWidth()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9167 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9168 if (restore) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9169 $.effects.save(child, props2);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9170 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9171
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9172 child.from = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9173 height: c_original.height * factor.from.y,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9174 width: c_original.width * factor.from.x,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9175 outerHeight: c_original.outerHeight * factor.from.y,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9176 outerWidth: c_original.outerWidth * factor.from.x
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9177 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9178 child.to = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9179 height: c_original.height * factor.to.y,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9180 width: c_original.width * factor.to.x,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9181 outerHeight: c_original.height * factor.to.y,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9182 outerWidth: c_original.width * factor.to.x
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9183 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9184
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9185 // Vertical props scaling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9186 if ( factor.from.y !== factor.to.y ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9187 child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9188 child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9189 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9190
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9191 // Horizontal props scaling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9192 if ( factor.from.x !== factor.to.x ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9193 child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9194 child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9195 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9196
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9197 // Animate children
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9198 child.css( child.from );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9199 child.animate( child.to, o.duration, o.easing, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9200
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9201 // Restore children
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9202 if ( restore ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9203 $.effects.restore( child, props2 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9204 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9205 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9206 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9207 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9208
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9209 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9210 el.animate( el.to, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9211 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9212 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9213 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9214 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9215 if ( el.to.opacity === 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9216 el.css( "opacity", el.from.opacity );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9217 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9218 if( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9219 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9220 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9221 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9222 if ( !restore ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9223
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9224 // we need to calculate our new positioning based on the scaling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9225 if ( position === "static" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9226 el.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9227 position: "relative",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9228 top: el.to.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9229 left: el.to.left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9230 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9231 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9232 $.each([ "top", "left" ], function( idx, pos ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9233 el.css( pos, function( _, str ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9234 var val = parseInt( str, 10 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9235 toRef = idx ? el.to.left : el.to.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9236
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9237 // if original was "auto", recalculate the new value from wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9238 if ( str === "auto" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9239 return toRef + "px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9240 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9241
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9242 return val + toRef + "px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9243 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9244 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9245 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9246 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9247
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9248 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9249 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9250 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9251 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9252
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9253 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9254
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9255 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9256 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9257
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9258 $.effects.effect.shake = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9259
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9260 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9261 props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9262 mode = $.effects.setMode( el, o.mode || "effect" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9263 direction = o.direction || "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9264 distance = o.distance || 20,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9265 times = o.times || 3,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9266 anims = times * 2 + 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9267 speed = Math.round(o.duration/anims),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9268 ref = (direction === "up" || direction === "down") ? "top" : "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9269 positiveMotion = (direction === "up" || direction === "left"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9270 animation = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9271 animation1 = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9272 animation2 = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9273 i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9274
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9275 // we will need to re-assemble the queue to stack our animations in place
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9276 queue = el.queue(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9277 queuelen = queue.length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9278
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9279 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9280 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9281 $.effects.createWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9282
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9283 // Animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9284 animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9285 animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9286 animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9287
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9288 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9289 el.animate( animation, speed, o.easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9290
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9291 // Shakes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9292 for ( i = 1; i < times; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9293 el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9294 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9295 el
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9296 .animate( animation1, speed, o.easing )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9297 .animate( animation, speed / 2, o.easing )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9298 .queue(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9299 if ( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9300 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9301 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9302 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9303 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9304 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9305 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9306
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9307 // inject all the animations we just queued to be first in line (after "inprogress")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9308 if ( queuelen > 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9309 queue.splice.apply( queue,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9310 [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9311 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9312 el.dequeue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9313
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9314 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9315
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9316 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9317 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9318
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9319 $.effects.effect.slide = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9320
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9321 // Create element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9322 var el = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9323 props = [ "position", "top", "bottom", "left", "right", "width", "height" ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9324 mode = $.effects.setMode( el, o.mode || "show" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9325 show = mode === "show",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9326 direction = o.direction || "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9327 ref = (direction === "up" || direction === "down") ? "top" : "left",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9328 positiveMotion = (direction === "up" || direction === "left"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9329 distance,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9330 animation = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9331
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9332 // Adjust
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9333 $.effects.save( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9334 el.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9335 distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9336
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9337 $.effects.createWrapper( el ).css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9338 overflow: "hidden"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9339 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9340
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9341 if ( show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9342 el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9343 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9344
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9345 // Animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9346 animation[ ref ] = ( show ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9347 ( positiveMotion ? "+=" : "-=") :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9348 ( positiveMotion ? "-=" : "+=")) +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9349 distance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9350
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9351 // Animate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9352 el.animate( animation, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9353 queue: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9354 duration: o.duration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9355 easing: o.easing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9356 complete: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9357 if ( mode === "hide" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9358 el.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9359 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9360 $.effects.restore( el, props );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9361 $.effects.removeWrapper( el );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9362 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9363 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9364 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9365 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9366
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9367 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9368 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9369
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9370 $.effects.effect.transfer = function( o, done ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9371 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9372 target = $( o.to ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9373 targetFixed = target.css( "position" ) === "fixed",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9374 body = $("body"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9375 fixTop = targetFixed ? body.scrollTop() : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9376 fixLeft = targetFixed ? body.scrollLeft() : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9377 endPosition = target.offset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9378 animation = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9379 top: endPosition.top - fixTop ,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9380 left: endPosition.left - fixLeft ,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9381 height: target.innerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9382 width: target.innerWidth()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9383 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9384 startPosition = elem.offset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9385 transfer = $( "<div class='ui-effects-transfer'></div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9386 .appendTo( document.body )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9387 .addClass( o.className )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9388 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9389 top: startPosition.top - fixTop ,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9390 left: startPosition.left - fixLeft ,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9391 height: elem.innerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9392 width: elem.innerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9393 position: targetFixed ? "fixed" : "absolute"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9394 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9395 .animate( animation, o.duration, o.easing, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9396 transfer.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9397 done();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9398 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9399 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9400
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9401 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9402 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9403
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9404 $.widget( "ui.menu", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9405 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9406 defaultElement: "<ul>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9407 delay: 300,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9408 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9409 icons: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9410 submenu: "ui-icon-carat-1-e"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9411 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9412 menus: "ul",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9413 position: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9414 my: "left top",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9415 at: "right top"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9416 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9417 role: "menu",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9418
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9419 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9420 blur: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9421 focus: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9422 select: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9423 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9424
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9425 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9426 this.activeMenu = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9427 // flag used to prevent firing of the click handler
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9428 // as the event bubbles up through nested menus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9429 this.mouseHandled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9430 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9431 .uniqueId()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9432 .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9433 .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9434 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9435 role: this.options.role,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9436 tabIndex: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9437 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9438 // need to catch all clicks on disabled menu
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9439 // not possible through _on
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9440 .bind( "click" + this.eventNamespace, $.proxy(function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9441 if ( this.options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9442 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9443 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9444 }, this ));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9445
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9446 if ( this.options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9447 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9448 .addClass( "ui-state-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9449 .attr( "aria-disabled", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9450 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9451
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9452 this._on({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9453 // Prevent focus from sticking to links inside menu after clicking
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9454 // them (focus should always stay on UL during navigation).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9455 "mousedown .ui-menu-item > a": function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9456 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9457 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9458 "click .ui-state-disabled > a": function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9459 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9460 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9461 "click .ui-menu-item:has(a)": function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9462 var target = $( event.target ).closest( ".ui-menu-item" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9463 if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9464 this.select( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9465
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9466 // Only set the mouseHandled flag if the event will bubble, see #9469.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9467 if ( !event.isPropagationStopped() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9468 this.mouseHandled = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9469 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9470
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9471 // Open submenu on click
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9472 if ( target.has( ".ui-menu" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9473 this.expand( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9474 } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9475
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9476 // Redirect focus to the menu
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9477 this.element.trigger( "focus", [ true ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9478
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9479 // If the active item is on the top level, let it stay active.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9480 // Otherwise, blur the active item since it is no longer visible.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9481 if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9482 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9483 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9484 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9485 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9486 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9487 "mouseenter .ui-menu-item": function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9488 var target = $( event.currentTarget );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9489 // Remove ui-state-active class from siblings of the newly focused menu item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9490 // to avoid a jump caused by adjacent elements both having a class with a border
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9491 target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9492 this.focus( event, target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9493 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9494 mouseleave: "collapseAll",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9495 "mouseleave .ui-menu": "collapseAll",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9496 focus: function( event, keepActiveItem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9497 // If there's already an active item, keep it active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9498 // If not, activate the first item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9499 var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9500
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9501 if ( !keepActiveItem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9502 this.focus( event, item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9503 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9504 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9505 blur: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9506 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9507 if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9508 this.collapseAll( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9509 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9510 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9511 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9512 keydown: "_keydown"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9513 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9514
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9515 this.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9516
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9517 // Clicks outside of a menu collapse any open menus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9518 this._on( this.document, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9519 click: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9520 if ( !$( event.target ).closest( ".ui-menu" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9521 this.collapseAll( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9522 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9523
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9524 // Reset the mouseHandled flag
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9525 this.mouseHandled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9526 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9527 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9528 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9529
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9530 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9531 // Destroy (sub)menus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9532 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9533 .removeAttr( "aria-activedescendant" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9534 .find( ".ui-menu" ).addBack()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9535 .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9536 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9537 .removeAttr( "tabIndex" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9538 .removeAttr( "aria-labelledby" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9539 .removeAttr( "aria-expanded" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9540 .removeAttr( "aria-hidden" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9541 .removeAttr( "aria-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9542 .removeUniqueId()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9543 .show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9544
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9545 // Destroy menu items
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9546 this.element.find( ".ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9547 .removeClass( "ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9548 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9549 .removeAttr( "aria-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9550 .children( "a" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9551 .removeUniqueId()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9552 .removeClass( "ui-corner-all ui-state-hover" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9553 .removeAttr( "tabIndex" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9554 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9555 .removeAttr( "aria-haspopup" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9556 .children().each( function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9557 var elem = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9558 if ( elem.data( "ui-menu-submenu-carat" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9559 elem.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9560 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9561 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9562
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9563 // Destroy menu dividers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9564 this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9565 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9566
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9567 _keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9568 var match, prev, character, skip, regex,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9569 preventDefault = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9570
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9571 function escape( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9572 return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9573 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9574
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9575 switch ( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9576 case $.ui.keyCode.PAGE_UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9577 this.previousPage( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9578 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9579 case $.ui.keyCode.PAGE_DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9580 this.nextPage( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9581 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9582 case $.ui.keyCode.HOME:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9583 this._move( "first", "first", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9584 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9585 case $.ui.keyCode.END:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9586 this._move( "last", "last", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9587 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9588 case $.ui.keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9589 this.previous( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9590 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9591 case $.ui.keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9592 this.next( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9593 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9594 case $.ui.keyCode.LEFT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9595 this.collapse( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9596 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9597 case $.ui.keyCode.RIGHT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9598 if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9599 this.expand( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9600 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9601 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9602 case $.ui.keyCode.ENTER:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9603 case $.ui.keyCode.SPACE:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9604 this._activate( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9605 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9606 case $.ui.keyCode.ESCAPE:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9607 this.collapse( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9608 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9609 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9610 preventDefault = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9611 prev = this.previousFilter || "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9612 character = String.fromCharCode( event.keyCode );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9613 skip = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9614
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9615 clearTimeout( this.filterTimer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9616
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9617 if ( character === prev ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9618 skip = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9619 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9620 character = prev + character;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9621 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9622
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9623 regex = new RegExp( "^" + escape( character ), "i" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9624 match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9625 return regex.test( $( this ).children( "a" ).text() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9626 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9627 match = skip && match.index( this.active.next() ) !== -1 ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9628 this.active.nextAll( ".ui-menu-item" ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9629 match;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9630
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9631 // If no matches on the current filter, reset to the last character pressed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9632 // to move down the menu to the first item that starts with that character
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9633 if ( !match.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9634 character = String.fromCharCode( event.keyCode );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9635 regex = new RegExp( "^" + escape( character ), "i" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9636 match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9637 return regex.test( $( this ).children( "a" ).text() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9638 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9639 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9640
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9641 if ( match.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9642 this.focus( event, match );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9643 if ( match.length > 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9644 this.previousFilter = character;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9645 this.filterTimer = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9646 delete this.previousFilter;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9647 }, 1000 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9648 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9649 delete this.previousFilter;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9650 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9651 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9652 delete this.previousFilter;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9653 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9654 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9655
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9656 if ( preventDefault ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9657 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9658 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9659 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9660
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9661 _activate: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9662 if ( !this.active.is( ".ui-state-disabled" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9663 if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9664 this.expand( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9665 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9666 this.select( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9667 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9668 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9669 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9670
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9671 refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9672 var menus,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9673 icon = this.options.icons.submenu,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9674 submenus = this.element.find( this.options.menus );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9675
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9676 this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9677
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9678 // Initialize nested menus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9679 submenus.filter( ":not(.ui-menu)" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9680 .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9681 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9682 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9683 role: this.options.role,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9684 "aria-hidden": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9685 "aria-expanded": "false"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9686 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9687 .each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9688 var menu = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9689 item = menu.prev( "a" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9690 submenuCarat = $( "<span>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9691 .addClass( "ui-menu-icon ui-icon " + icon )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9692 .data( "ui-menu-submenu-carat", true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9693
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9694 item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9695 .attr( "aria-haspopup", "true" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9696 .prepend( submenuCarat );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9697 menu.attr( "aria-labelledby", item.attr( "id" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9698 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9699
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9700 menus = submenus.add( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9701
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9702 // Don't refresh list items that are already adapted
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9703 menus.children( ":not(.ui-menu-item):has(a)" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9704 .addClass( "ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9705 .attr( "role", "presentation" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9706 .children( "a" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9707 .uniqueId()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9708 .addClass( "ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9709 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9710 tabIndex: -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9711 role: this._itemRole()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9712 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9713
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9714 // Initialize unlinked menu-items containing spaces and/or dashes only as dividers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9715 menus.children( ":not(.ui-menu-item)" ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9716 var item = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9717 // hyphen, em dash, en dash
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9718 if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9719 item.addClass( "ui-widget-content ui-menu-divider" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9720 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9721 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9722
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9723 // Add aria-disabled attribute to any disabled menu item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9724 menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9725
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9726 // If the active item has been removed, blur the menu
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9727 if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9728 this.blur();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9729 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9730 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9731
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9732 _itemRole: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9733 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9734 menu: "menuitem",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9735 listbox: "option"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9736 }[ this.options.role ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9737 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9738
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9739 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9740 if ( key === "icons" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9741 this.element.find( ".ui-menu-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9742 .removeClass( this.options.icons.submenu )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9743 .addClass( value.submenu );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9744 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9745 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9746 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9747
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9748 focus: function( event, item ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9749 var nested, focused;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9750 this.blur( event, event && event.type === "focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9751
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9752 this._scrollIntoView( item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9753
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9754 this.active = item.first();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9755 focused = this.active.children( "a" ).addClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9756 // Only update aria-activedescendant if there's a role
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9757 // otherwise we assume focus is managed elsewhere
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9758 if ( this.options.role ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9759 this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9760 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9761
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9762 // Highlight active parent menu item, if any
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9763 this.active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9764 .parent()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9765 .closest( ".ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9766 .children( "a:first" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9767 .addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9768
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9769 if ( event && event.type === "keydown" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9770 this._close();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9771 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9772 this.timer = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9773 this._close();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9774 }, this.delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9775 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9776
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9777 nested = item.children( ".ui-menu" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9778 if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9779 this._startOpening(nested);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9780 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9781 this.activeMenu = item.parent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9782
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9783 this._trigger( "focus", event, { item: item } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9784 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9785
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9786 _scrollIntoView: function( item ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9787 var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9788 if ( this._hasScroll() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9789 borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9790 paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9791 offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9792 scroll = this.activeMenu.scrollTop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9793 elementHeight = this.activeMenu.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9794 itemHeight = item.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9795
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9796 if ( offset < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9797 this.activeMenu.scrollTop( scroll + offset );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9798 } else if ( offset + itemHeight > elementHeight ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9799 this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9800 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9801 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9802 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9803
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9804 blur: function( event, fromFocus ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9805 if ( !fromFocus ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9806 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9807 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9808
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9809 if ( !this.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9810 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9811 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9812
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9813 this.active.children( "a" ).removeClass( "ui-state-focus" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9814 this.active = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9815
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9816 this._trigger( "blur", event, { item: this.active } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9817 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9818
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9819 _startOpening: function( submenu ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9820 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9821
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9822 // Don't open if already open fixes a Firefox bug that caused a .5 pixel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9823 // shift in the submenu position when mousing over the carat icon
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9824 if ( submenu.attr( "aria-hidden" ) !== "true" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9825 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9826 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9827
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9828 this.timer = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9829 this._close();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9830 this._open( submenu );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9831 }, this.delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9832 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9833
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9834 _open: function( submenu ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9835 var position = $.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9836 of: this.active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9837 }, this.options.position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9838
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9839 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9840 this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9841 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9842 .attr( "aria-hidden", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9843
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9844 submenu
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9845 .show()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9846 .removeAttr( "aria-hidden" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9847 .attr( "aria-expanded", "true" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9848 .position( position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9849 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9850
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9851 collapseAll: function( event, all ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9852 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9853 this.timer = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9854 // If we were passed an event, look for the submenu that contains the event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9855 var currentMenu = all ? this.element :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9856 $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9857
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9858 // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9859 if ( !currentMenu.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9860 currentMenu = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9861 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9862
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9863 this._close( currentMenu );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9864
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9865 this.blur( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9866 this.activeMenu = currentMenu;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9867 }, this.delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9868 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9869
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9870 // With no arguments, closes the currently active menu - if nothing is active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9871 // it closes all menus. If passed an argument, it will search for menus BELOW
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9872 _close: function( startMenu ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9873 if ( !startMenu ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9874 startMenu = this.active ? this.active.parent() : this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9875 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9876
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9877 startMenu
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9878 .find( ".ui-menu" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9879 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9880 .attr( "aria-hidden", "true" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9881 .attr( "aria-expanded", "false" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9882 .end()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9883 .find( "a.ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9884 .removeClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9885 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9886
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9887 collapse: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9888 var newItem = this.active &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9889 this.active.parent().closest( ".ui-menu-item", this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9890 if ( newItem && newItem.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9891 this._close();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9892 this.focus( event, newItem );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9893 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9894 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9895
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9896 expand: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9897 var newItem = this.active &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9898 this.active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9899 .children( ".ui-menu " )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9900 .children( ".ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9901 .first();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9902
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9903 if ( newItem && newItem.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9904 this._open( newItem.parent() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9905
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9906 // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9907 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9908 this.focus( event, newItem );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9909 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9910 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9911 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9912
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9913 next: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9914 this._move( "next", "first", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9915 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9916
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9917 previous: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9918 this._move( "prev", "last", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9919 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9920
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9921 isFirstItem: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9922 return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9923 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9924
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9925 isLastItem: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9926 return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9927 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9928
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9929 _move: function( direction, filter, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9930 var next;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9931 if ( this.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9932 if ( direction === "first" || direction === "last" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9933 next = this.active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9934 [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9935 .eq( -1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9936 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9937 next = this.active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9938 [ direction + "All" ]( ".ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9939 .eq( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9940 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9941 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9942 if ( !next || !next.length || !this.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9943 next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9944 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9945
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9946 this.focus( event, next );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9947 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9948
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9949 nextPage: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9950 var item, base, height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9951
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9952 if ( !this.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9953 this.next( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9954 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9955 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9956 if ( this.isLastItem() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9957 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9958 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9959 if ( this._hasScroll() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9960 base = this.active.offset().top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9961 height = this.element.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9962 this.active.nextAll( ".ui-menu-item" ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9963 item = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9964 return item.offset().top - base - height < 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9965 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9966
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9967 this.focus( event, item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9968 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9969 this.focus( event, this.activeMenu.children( ".ui-menu-item" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9970 [ !this.active ? "first" : "last" ]() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9971 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9972 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9973
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9974 previousPage: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9975 var item, base, height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9976 if ( !this.active ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9977 this.next( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9978 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9979 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9980 if ( this.isFirstItem() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9981 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9982 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9983 if ( this._hasScroll() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9984 base = this.active.offset().top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9985 height = this.element.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9986 this.active.prevAll( ".ui-menu-item" ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9987 item = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9988 return item.offset().top - base + height > 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9989 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9990
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9991 this.focus( event, item );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9992 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9993 this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9994 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9995 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9996
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9997 _hasScroll: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9998 return this.element.outerHeight() < this.element.prop( "scrollHeight" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9999 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10000
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10001 select: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10002 // TODO: It should never be possible to not have an active item at this
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10003 // point, but the tests don't trigger mouseenter before click.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10004 this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10005 var ui = { item: this.active };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10006 if ( !this.active.has( ".ui-menu" ).length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10007 this.collapseAll( event, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10008 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10009 this._trigger( "select", event, ui );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10010 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10011 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10012
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10013 }( jQuery ));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10014 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10015
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10016 $.widget( "ui.progressbar", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10017 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10018 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10019 max: 100,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10020 value: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10022 change: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10023 complete: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10024 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10025
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10026 min: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10027
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10028 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10029 // Constrain initial value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10030 this.oldValue = this.options.value = this._constrainedValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10031
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10032 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10033 .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10034 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10035 // Only set static values, aria-valuenow and aria-valuemax are
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10036 // set inside _refreshValue()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10037 role: "progressbar",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10038 "aria-valuemin": this.min
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10039 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10040
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10041 this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10042 .appendTo( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10043
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10044 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10045 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10046
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10047 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10048 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10049 .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10050 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10051 .removeAttr( "aria-valuemin" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10052 .removeAttr( "aria-valuemax" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10053 .removeAttr( "aria-valuenow" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10054
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10055 this.valueDiv.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10056 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10057
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10058 value: function( newValue ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10059 if ( newValue === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10060 return this.options.value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10061 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10062
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10063 this.options.value = this._constrainedValue( newValue );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10064 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10065 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10066
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10067 _constrainedValue: function( newValue ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10068 if ( newValue === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10069 newValue = this.options.value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10070 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10071
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10072 this.indeterminate = newValue === false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10073
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10074 // sanitize value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10075 if ( typeof newValue !== "number" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10076 newValue = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10077 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10078
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10079 return this.indeterminate ? false :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10080 Math.min( this.options.max, Math.max( this.min, newValue ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10081 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10082
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10083 _setOptions: function( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10084 // Ensure "value" option is set after other values (like max)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10085 var value = options.value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10086 delete options.value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10087
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10088 this._super( options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10089
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10090 this.options.value = this._constrainedValue( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10091 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10092 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10093
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10094 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10095 if ( key === "max" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10096 // Don't allow a max less than min
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10097 value = Math.max( this.min, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10098 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10099
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10100 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10101 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10102
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10103 _percentage: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10104 return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10105 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10106
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10107 _refreshValue: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10108 var value = this.options.value,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10109 percentage = this._percentage();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10110
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10111 this.valueDiv
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10112 .toggle( this.indeterminate || value > this.min )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10113 .toggleClass( "ui-corner-right", value === this.options.max )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10114 .width( percentage.toFixed(0) + "%" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10115
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10116 this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10117
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10118 if ( this.indeterminate ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10119 this.element.removeAttr( "aria-valuenow" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10120 if ( !this.overlayDiv ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10121 this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10122 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10123 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10124 this.element.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10125 "aria-valuemax": this.options.max,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10126 "aria-valuenow": value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10127 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10128 if ( this.overlayDiv ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10129 this.overlayDiv.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10130 this.overlayDiv = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10131 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10132 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10133
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10134 if ( this.oldValue !== value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10135 this.oldValue = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10136 this._trigger( "change" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10137 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10138 if ( value === this.options.max ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10139 this._trigger( "complete" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10140 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10141 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10142 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10143
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10144 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10145 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10146
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10147 function num(v) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10148 return parseInt(v, 10) || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10149 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10150
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10151 function isNumber(value) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10152 return !isNaN(parseInt(value, 10));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10153 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10154
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10155 $.widget("ui.resizable", $.ui.mouse, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10156 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10157 widgetEventPrefix: "resize",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10158 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10159 alsoResize: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10160 animate: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10161 animateDuration: "slow",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10162 animateEasing: "swing",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10163 aspectRatio: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10164 autoHide: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10165 containment: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10166 ghost: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10167 grid: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10168 handles: "e,s,se",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10169 helper: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10170 maxHeight: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10171 maxWidth: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10172 minHeight: 10,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10173 minWidth: 10,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10174 // See #7960
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10175 zIndex: 90,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10176
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10177 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10178 resize: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10179 start: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10180 stop: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10181 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10182 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10183
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10184 var n, i, handle, axis, hname,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10185 that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10186 o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10187 this.element.addClass("ui-resizable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10188
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10189 $.extend(this, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10190 _aspectRatio: !!(o.aspectRatio),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10191 aspectRatio: o.aspectRatio,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10192 originalElement: this.element,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10193 _proportionallyResizeElements: [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10194 _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10195 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10196
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10197 //Wrap the element if it cannot hold child nodes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10198 if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10199
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10200 //Create a wrapper element and set the wrapper to the new current internal element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10201 this.element.wrap(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10202 $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10203 position: this.element.css("position"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10204 width: this.element.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10205 height: this.element.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10206 top: this.element.css("top"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10207 left: this.element.css("left")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10208 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10209 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10210
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10211 //Overwrite the original this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10212 this.element = this.element.parent().data(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10213 "ui-resizable", this.element.data("ui-resizable")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10214 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10215
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10216 this.elementIsWrapper = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10217
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10218 //Move margins to the wrapper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10219 this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10220 this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10221
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10222 //Prevent Safari textarea resize
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10223 this.originalResizeStyle = this.originalElement.css("resize");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10224 this.originalElement.css("resize", "none");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10225
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10226 //Push the actual element to our proportionallyResize internal array
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10227 this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" }));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10228
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10229 // avoid IE jump (hard set the margin)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10230 this.originalElement.css({ margin: this.originalElement.css("margin") });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10231
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10232 // fix handlers offset
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10233 this._proportionallyResize();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10234
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10235 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10236
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10237 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" });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10238 if(this.handles.constructor === String) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10239
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10240 if ( this.handles === "all") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10241 this.handles = "n,e,s,w,se,sw,ne,nw";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10242 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10243
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10244 n = this.handles.split(",");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10245 this.handles = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10246
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10247 for(i = 0; i < n.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10248
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10249 handle = $.trim(n[i]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10250 hname = "ui-resizable-"+handle;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10251 axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10252
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10253 // Apply zIndex to all handles - see #7960
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10254 axis.css({ zIndex: o.zIndex });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10255
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10256 //TODO : What's going on here?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10257 if ("se" === handle) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10258 axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10259 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10260
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10261 //Insert into internal handles object and append to element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10262 this.handles[handle] = ".ui-resizable-"+handle;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10263 this.element.append(axis);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10264 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10265
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10266 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10267
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10268 this._renderAxis = function(target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10269
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10270 var i, axis, padPos, padWrapper;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10271
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10272 target = target || this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10273
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10274 for(i in this.handles) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10275
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10276 if(this.handles[i].constructor === String) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10277 this.handles[i] = $(this.handles[i], this.element).show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10278 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10279
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10280 //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10281 if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10282
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10283 axis = $(this.handles[i], this.element);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10284
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10285 //Checking the correct pad and border
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10286 padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10287
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10288 //The padding type i have to apply...
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10289 padPos = [ "padding",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10290 /ne|nw|n/.test(i) ? "Top" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10291 /se|sw|s/.test(i) ? "Bottom" :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10292 /^e$/.test(i) ? "Right" : "Left" ].join("");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10293
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10294 target.css(padPos, padWrapper);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10295
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10296 this._proportionallyResize();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10297
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10298 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10299
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10300 //TODO: What's that good for? There's not anything to be executed left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10301 if(!$(this.handles[i]).length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10302 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10303 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10304 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10305 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10306
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10307 //TODO: make renderAxis a prototype function
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10308 this._renderAxis(this.element);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10309
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10310 this._handles = $(".ui-resizable-handle", this.element)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10311 .disableSelection();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10312
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10313 //Matching axis name
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10314 this._handles.mouseover(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10315 if (!that.resizing) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10316 if (this.className) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10317 axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10318 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10319 //Axis, default = se
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10320 that.axis = axis && axis[1] ? axis[1] : "se";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10321 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10322 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10323
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10324 //If we want to auto hide the elements
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10325 if (o.autoHide) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10326 this._handles.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10327 $(this.element)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10328 .addClass("ui-resizable-autohide")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10329 .mouseenter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10330 if (o.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10331 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10332 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10333 $(this).removeClass("ui-resizable-autohide");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10334 that._handles.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10335 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10336 .mouseleave(function(){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10337 if (o.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10338 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10339 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10340 if (!that.resizing) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10341 $(this).addClass("ui-resizable-autohide");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10342 that._handles.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10343 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10344 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10345 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10346
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10347 //Initialize the mouse interaction
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10348 this._mouseInit();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10349
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10350 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10351
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10352 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10353
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10354 this._mouseDestroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10355
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10356 var wrapper,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10357 _destroy = function(exp) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10358 $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10359 .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10360 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10361
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10362 //TODO: Unwrap at same DOM position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10363 if (this.elementIsWrapper) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10364 _destroy(this.element);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10365 wrapper = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10366 this.originalElement.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10367 position: wrapper.css("position"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10368 width: wrapper.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10369 height: wrapper.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10370 top: wrapper.css("top"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10371 left: wrapper.css("left")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10372 }).insertAfter( wrapper );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10373 wrapper.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10374 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10375
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10376 this.originalElement.css("resize", this.originalResizeStyle);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10377 _destroy(this.originalElement);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10378
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10379 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10380 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10381
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10382 _mouseCapture: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10383 var i, handle,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10384 capture = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10385
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10386 for (i in this.handles) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10387 handle = $(this.handles[i])[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10388 if (handle === event.target || $.contains(handle, event.target)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10389 capture = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10390 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10391 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10392
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10393 return !this.options.disabled && capture;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10394 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10395
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10396 _mouseStart: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10397
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10398 var curleft, curtop, cursor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10399 o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10400 iniPos = this.element.position(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10401 el = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10402
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10403 this.resizing = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10404
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10405 // bugfix for http://dev.jquery.com/ticket/1749
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10406 if ( (/absolute/).test( el.css("position") ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10407 el.css({ position: "absolute", top: el.css("top"), left: el.css("left") });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10408 } else if (el.is(".ui-draggable")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10409 el.css({ position: "absolute", top: iniPos.top, left: iniPos.left });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10410 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10411
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10412 this._renderProxy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10413
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10414 curleft = num(this.helper.css("left"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10415 curtop = num(this.helper.css("top"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10416
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10417 if (o.containment) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10418 curleft += $(o.containment).scrollLeft() || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10419 curtop += $(o.containment).scrollTop() || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10420 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10421
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10422 //Store needed variables
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10423 this.offset = this.helper.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10424 this.position = { left: curleft, top: curtop };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10425 this.size = this._helper ? { width: this.helper.width(), height: this.helper.height() } : { width: el.width(), height: el.height() };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10426 this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10427 this.originalPosition = { left: curleft, top: curtop };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10428 this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10429 this.originalMousePosition = { left: event.pageX, top: event.pageY };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10430
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10431 //Aspect Ratio
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10432 this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10433
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10434 cursor = $(".ui-resizable-" + this.axis).css("cursor");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10435 $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10436
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10437 el.addClass("ui-resizable-resizing");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10438 this._propagate("start", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10439 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10440 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10441
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10442 _mouseDrag: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10443
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10444 //Increase performance, avoid regex
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10445 var data,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10446 el = this.helper, props = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10447 smp = this.originalMousePosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10448 a = this.axis,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10449 prevTop = this.position.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10450 prevLeft = this.position.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10451 prevWidth = this.size.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10452 prevHeight = this.size.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10453 dx = (event.pageX-smp.left)||0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10454 dy = (event.pageY-smp.top)||0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10455 trigger = this._change[a];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10456
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10457 if (!trigger) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10458 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10459 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10460
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10461 // Calculate the attrs that will be change
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10462 data = trigger.apply(this, [event, dx, dy]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10463
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10464 // Put this in the mouseDrag handler since the user can start pressing shift while resizing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10465 this._updateVirtualBoundaries(event.shiftKey);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10466 if (this._aspectRatio || event.shiftKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10467 data = this._updateRatio(data, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10468 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10469
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10470 data = this._respectSize(data, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10471
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10472 this._updateCache(data);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10473
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10474 // plugins callbacks need to be called first
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10475 this._propagate("resize", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10476
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10477 if (this.position.top !== prevTop) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10478 props.top = this.position.top + "px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10479 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10480 if (this.position.left !== prevLeft) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10481 props.left = this.position.left + "px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10482 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10483 if (this.size.width !== prevWidth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10484 props.width = this.size.width + "px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10485 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10486 if (this.size.height !== prevHeight) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10487 props.height = this.size.height + "px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10488 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10489 el.css(props);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10490
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10491 if (!this._helper && this._proportionallyResizeElements.length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10492 this._proportionallyResize();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10493 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10494
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10495 // Call the user callback if the element was resized
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10496 if ( ! $.isEmptyObject(props) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10497 this._trigger("resize", event, this.ui());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10498 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10499
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10500 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10501 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10502
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10503 _mouseStop: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10504
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10505 this.resizing = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10506 var pr, ista, soffseth, soffsetw, s, left, top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10507 o = this.options, that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10508
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10509 if(this._helper) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10510
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10511 pr = this._proportionallyResizeElements;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10512 ista = pr.length && (/textarea/i).test(pr[0].nodeName);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10513 soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10514 soffsetw = ista ? 0 : that.sizeDiff.width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10515
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10516 s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10517 left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10518 top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10519
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10520 if (!o.animate) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10521 this.element.css($.extend(s, { top: top, left: left }));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10522 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10523
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10524 that.helper.height(that.size.height);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10525 that.helper.width(that.size.width);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10526
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10527 if (this._helper && !o.animate) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10528 this._proportionallyResize();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10529 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10530 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10531
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10532 $("body").css("cursor", "auto");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10533
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10534 this.element.removeClass("ui-resizable-resizing");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10535
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10536 this._propagate("stop", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10537
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10538 if (this._helper) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10539 this.helper.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10540 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10541
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10542 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10543
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10544 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10545
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10546 _updateVirtualBoundaries: function(forceAspectRatio) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10547 var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10548 o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10549
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10550 b = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10551 minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10552 maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10553 minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10554 maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10555 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10556
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10557 if(this._aspectRatio || forceAspectRatio) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10558 // We want to create an enclosing box whose aspect ration is the requested one
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10559 // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10560 pMinWidth = b.minHeight * this.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10561 pMinHeight = b.minWidth / this.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10562 pMaxWidth = b.maxHeight * this.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10563 pMaxHeight = b.maxWidth / this.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10564
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10565 if(pMinWidth > b.minWidth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10566 b.minWidth = pMinWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10567 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10568 if(pMinHeight > b.minHeight) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10569 b.minHeight = pMinHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10570 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10571 if(pMaxWidth < b.maxWidth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10572 b.maxWidth = pMaxWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10573 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10574 if(pMaxHeight < b.maxHeight) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10575 b.maxHeight = pMaxHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10576 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10577 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10578 this._vBoundaries = b;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10579 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10580
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10581 _updateCache: function(data) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10582 this.offset = this.helper.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10583 if (isNumber(data.left)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10584 this.position.left = data.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10585 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10586 if (isNumber(data.top)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10587 this.position.top = data.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10588 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10589 if (isNumber(data.height)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10590 this.size.height = data.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10591 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10592 if (isNumber(data.width)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10593 this.size.width = data.width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10594 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10595 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10596
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10597 _updateRatio: function( data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10598
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10599 var cpos = this.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10600 csize = this.size,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10601 a = this.axis;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10602
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10603 if (isNumber(data.height)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10604 data.width = (data.height * this.aspectRatio);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10605 } else if (isNumber(data.width)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10606 data.height = (data.width / this.aspectRatio);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10607 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10608
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10609 if (a === "sw") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10610 data.left = cpos.left + (csize.width - data.width);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10611 data.top = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10612 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10613 if (a === "nw") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10614 data.top = cpos.top + (csize.height - data.height);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10615 data.left = cpos.left + (csize.width - data.width);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10616 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10617
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10618 return data;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10619 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10620
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10621 _respectSize: function( data ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10622
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10623 var o = this._vBoundaries,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10624 a = this.axis,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10625 ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10626 isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10627 dw = this.originalPosition.left + this.originalSize.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10628 dh = this.position.top + this.size.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10629 cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10630 if (isminw) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10631 data.width = o.minWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10632 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10633 if (isminh) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10634 data.height = o.minHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10635 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10636 if (ismaxw) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10637 data.width = o.maxWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10638 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10639 if (ismaxh) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10640 data.height = o.maxHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10641 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10642
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10643 if (isminw && cw) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10644 data.left = dw - o.minWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10645 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10646 if (ismaxw && cw) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10647 data.left = dw - o.maxWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10648 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10649 if (isminh && ch) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10650 data.top = dh - o.minHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10651 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10652 if (ismaxh && ch) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10653 data.top = dh - o.maxHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10654 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10655
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10656 // fixing jump error on top/left - bug #2330
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10657 if (!data.width && !data.height && !data.left && data.top) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10658 data.top = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10659 } else if (!data.width && !data.height && !data.top && data.left) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10660 data.left = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10661 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10662
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10663 return data;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10664 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10665
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10666 _proportionallyResize: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10667
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10668 if (!this._proportionallyResizeElements.length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10669 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10670 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10671
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10672 var i, j, borders, paddings, prel,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10673 element = this.helper || this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10674
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10675 for ( i=0; i < this._proportionallyResizeElements.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10676
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10677 prel = this._proportionallyResizeElements[i];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10678
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10679 if (!this.borderDif) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10680 this.borderDif = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10681 borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10682 paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10683
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10684 for ( j = 0; j < borders.length; j++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10685 this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10686 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10687 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10688
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10689 prel.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10690 height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10691 width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10692 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10693
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10694 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10695
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10696 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10697
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10698 _renderProxy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10699
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10700 var el = this.element, o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10701 this.elementOffset = el.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10702
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10703 if(this._helper) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10704
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10705 this.helper = this.helper || $("<div style='overflow:hidden;'></div>");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10706
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10707 this.helper.addClass(this._helper).css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10708 width: this.element.outerWidth() - 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10709 height: this.element.outerHeight() - 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10710 position: "absolute",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10711 left: this.elementOffset.left +"px",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10712 top: this.elementOffset.top +"px",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10713 zIndex: ++o.zIndex //TODO: Don't modify option
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10714 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10715
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10716 this.helper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10717 .appendTo("body")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10718 .disableSelection();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10719
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10720 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10721 this.helper = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10722 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10723
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10724 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10725
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10726 _change: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10727 e: function(event, dx) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10728 return { width: this.originalSize.width + dx };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10729 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10730 w: function(event, dx) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10731 var cs = this.originalSize, sp = this.originalPosition;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10732 return { left: sp.left + dx, width: cs.width - dx };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10733 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10734 n: function(event, dx, dy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10735 var cs = this.originalSize, sp = this.originalPosition;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10736 return { top: sp.top + dy, height: cs.height - dy };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10737 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10738 s: function(event, dx, dy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10739 return { height: this.originalSize.height + dy };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10740 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10741 se: function(event, dx, dy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10742 return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10743 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10744 sw: function(event, dx, dy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10745 return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10746 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10747 ne: function(event, dx, dy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10748 return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10749 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10750 nw: function(event, dx, dy) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10751 return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10752 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10753 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10754
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10755 _propagate: function(n, event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10756 $.ui.plugin.call(this, n, [event, this.ui()]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10757 (n !== "resize" && this._trigger(n, event, this.ui()));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10758 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10759
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10760 plugins: {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10761
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10762 ui: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10763 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10764 originalElement: this.originalElement,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10765 element: this.element,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10766 helper: this.helper,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10767 position: this.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10768 size: this.size,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10769 originalSize: this.originalSize,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10770 originalPosition: this.originalPosition
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10771 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10772 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10773
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10774 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10775
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10776 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10777 * Resizable Extensions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10778 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10779
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10780 $.ui.plugin.add("resizable", "animate", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10781
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10782 stop: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10783 var that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10784 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10785 pr = that._proportionallyResizeElements,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10786 ista = pr.length && (/textarea/i).test(pr[0].nodeName),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10787 soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10788 soffsetw = ista ? 0 : that.sizeDiff.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10789 style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10790 left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10791 top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10792
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10793 that.element.animate(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10794 $.extend(style, top && left ? { top: top, left: left } : {}), {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10795 duration: o.animateDuration,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10796 easing: o.animateEasing,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10797 step: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10798
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10799 var data = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10800 width: parseInt(that.element.css("width"), 10),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10801 height: parseInt(that.element.css("height"), 10),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10802 top: parseInt(that.element.css("top"), 10),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10803 left: parseInt(that.element.css("left"), 10)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10804 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10805
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10806 if (pr && pr.length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10807 $(pr[0]).css({ width: data.width, height: data.height });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10808 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10809
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10810 // propagating resize, and updating values for each animation step
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10811 that._updateCache(data);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10812 that._propagate("resize", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10813
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10814 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10815 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10816 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10817 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10818
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10819 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10820
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10821 $.ui.plugin.add("resizable", "containment", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10822
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10823 start: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10824 var element, p, co, ch, cw, width, height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10825 that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10826 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10827 el = that.element,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10828 oc = o.containment,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10829 ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10830
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10831 if (!ce) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10832 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10833 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10834
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10835 that.containerElement = $(ce);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10836
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10837 if (/document/.test(oc) || oc === document) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10838 that.containerOffset = { left: 0, top: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10839 that.containerPosition = { left: 0, top: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10840
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10841 that.parentData = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10842 element: $(document), left: 0, top: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10843 width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10844 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10845 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10846
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10847 // i'm a node, so compute top, left, right, bottom
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10848 else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10849 element = $(ce);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10850 p = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10851 $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10852
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10853 that.containerOffset = element.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10854 that.containerPosition = element.position();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10855 that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10856
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10857 co = that.containerOffset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10858 ch = that.containerSize.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10859 cw = that.containerSize.width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10860 width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10861 height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10862
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10863 that.parentData = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10864 element: ce, left: co.left, top: co.top, width: width, height: height
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10865 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10866 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10867 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10868
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10869 resize: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10870 var woset, hoset, isParent, isOffsetRelative,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10871 that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10872 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10873 co = that.containerOffset, cp = that.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10874 pRatio = that._aspectRatio || event.shiftKey,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10875 cop = { top:0, left:0 }, ce = that.containerElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10876
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10877 if (ce[0] !== document && (/static/).test(ce.css("position"))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10878 cop = co;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10879 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10880
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10881 if (cp.left < (that._helper ? co.left : 0)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10882 that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10883 if (pRatio) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10884 that.size.height = that.size.width / that.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10885 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10886 that.position.left = o.helper ? co.left : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10887 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10888
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10889 if (cp.top < (that._helper ? co.top : 0)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10890 that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10891 if (pRatio) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10892 that.size.width = that.size.height * that.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10893 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10894 that.position.top = that._helper ? co.top : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10895 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10896
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10897 that.offset.left = that.parentData.left+that.position.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10898 that.offset.top = that.parentData.top+that.position.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10899
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10900 woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10901 hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10902
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10903 isParent = that.containerElement.get(0) === that.element.parent().get(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10904 isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10905
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10906 if ( isParent && isOffsetRelative ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10907 woset -= Math.abs( that.parentData.left );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10908 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10909
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10910 if (woset + that.size.width >= that.parentData.width) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10911 that.size.width = that.parentData.width - woset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10912 if (pRatio) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10913 that.size.height = that.size.width / that.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10914 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10915 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10916
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10917 if (hoset + that.size.height >= that.parentData.height) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10918 that.size.height = that.parentData.height - hoset;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10919 if (pRatio) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10920 that.size.width = that.size.height * that.aspectRatio;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10921 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10922 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10923 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10924
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10925 stop: function(){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10926 var that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10927 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10928 co = that.containerOffset,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10929 cop = that.containerPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10930 ce = that.containerElement,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10931 helper = $(that.helper),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10932 ho = helper.offset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10933 w = helper.outerWidth() - that.sizeDiff.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10934 h = helper.outerHeight() - that.sizeDiff.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10935
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10936 if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10937 $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10938 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10939
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10940 if (that._helper && !o.animate && (/static/).test(ce.css("position"))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10941 $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10942 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10943
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10944 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10945 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10946
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10947 $.ui.plugin.add("resizable", "alsoResize", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10948
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10949 start: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10950 var that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10951 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10952 _store = function (exp) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10953 $(exp).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10954 var el = $(this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10955 el.data("ui-resizable-alsoresize", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10956 width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10957 left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10958 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10959 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10960 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10961
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10962 if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10963 if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10964 else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10965 }else{
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10966 _store(o.alsoResize);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10967 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10968 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10969
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10970 resize: function (event, ui) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10971 var that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10972 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10973 os = that.originalSize,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10974 op = that.originalPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10975 delta = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10976 height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10977 top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10978 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10979
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10980 _alsoResize = function (exp, c) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10981 $(exp).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10982 var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10983 css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10984
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10985 $.each(css, function (i, prop) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10986 var sum = (start[prop]||0) + (delta[prop]||0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10987 if (sum && sum >= 0) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10988 style[prop] = sum || null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10989 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10990 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10991
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10992 el.css(style);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10993 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10994 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10995
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10996 if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10997 $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10998 }else{
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10999 _alsoResize(o.alsoResize);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11000 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11001 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11002
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11003 stop: function () {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11004 $(this).removeData("resizable-alsoresize");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11005 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11006 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11007
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11008 $.ui.plugin.add("resizable", "ghost", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11009
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11010 start: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11011
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11012 var that = $(this).data("ui-resizable"), o = that.options, cs = that.size;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11013
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11014 that.ghost = that.originalElement.clone();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11015 that.ghost
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11016 .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11017 .addClass("ui-resizable-ghost")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11018 .addClass(typeof o.ghost === "string" ? o.ghost : "");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11019
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11020 that.ghost.appendTo(that.helper);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11022 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11023
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11024 resize: function(){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11025 var that = $(this).data("ui-resizable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11026 if (that.ghost) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11027 that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11028 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11029 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11030
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11031 stop: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11032 var that = $(this).data("ui-resizable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11033 if (that.ghost && that.helper) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11034 that.helper.get(0).removeChild(that.ghost.get(0));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11035 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11036 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11037
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11038 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11039
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11040 $.ui.plugin.add("resizable", "grid", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11041
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11042 resize: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11043 var that = $(this).data("ui-resizable"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11044 o = that.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11045 cs = that.size,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11046 os = that.originalSize,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11047 op = that.originalPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11048 a = that.axis,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11049 grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11050 gridX = (grid[0]||1),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11051 gridY = (grid[1]||1),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11052 ox = Math.round((cs.width - os.width) / gridX) * gridX,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11053 oy = Math.round((cs.height - os.height) / gridY) * gridY,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11054 newWidth = os.width + ox,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11055 newHeight = os.height + oy,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11056 isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11057 isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11058 isMinWidth = o.minWidth && (o.minWidth > newWidth),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11059 isMinHeight = o.minHeight && (o.minHeight > newHeight);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11060
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11061 o.grid = grid;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11062
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11063 if (isMinWidth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11064 newWidth = newWidth + gridX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11065 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11066 if (isMinHeight) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11067 newHeight = newHeight + gridY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11068 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11069 if (isMaxWidth) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11070 newWidth = newWidth - gridX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11071 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11072 if (isMaxHeight) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11073 newHeight = newHeight - gridY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11074 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11075
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11076 if (/^(se|s|e)$/.test(a)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11077 that.size.width = newWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11078 that.size.height = newHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11079 } else if (/^(ne)$/.test(a)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11080 that.size.width = newWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11081 that.size.height = newHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11082 that.position.top = op.top - oy;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11083 } else if (/^(sw)$/.test(a)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11084 that.size.width = newWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11085 that.size.height = newHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11086 that.position.left = op.left - ox;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11087 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11088 if ( newHeight - gridY > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11089 that.size.height = newHeight;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11090 that.position.top = op.top - oy;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11091 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11092 that.size.height = gridY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11093 that.position.top = op.top + os.height - gridY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11094 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11095 if ( newWidth - gridX > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11096 that.size.width = newWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11097 that.position.left = op.left - ox;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11098 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11099 that.size.width = gridX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11100 that.position.left = op.left + os.width - gridX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11101 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11102 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11103 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11104
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11105 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11106
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11107 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11108 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11109
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11110 $.widget("ui.selectable", $.ui.mouse, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11111 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11112 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11113 appendTo: "body",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11114 autoRefresh: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11115 distance: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11116 filter: "*",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11117 tolerance: "touch",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11118
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11119 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11120 selected: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11121 selecting: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11122 start: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11123 stop: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11124 unselected: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11125 unselecting: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11126 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11127 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11128 var selectees,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11129 that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11130
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11131 this.element.addClass("ui-selectable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11132
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11133 this.dragged = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11134
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11135 // cache selectee children based on filter
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11136 this.refresh = function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11137 selectees = $(that.options.filter, that.element[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11138 selectees.addClass("ui-selectee");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11139 selectees.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11140 var $this = $(this),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11141 pos = $this.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11142 $.data(this, "selectable-item", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11143 element: this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11144 $element: $this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11145 left: pos.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11146 top: pos.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11147 right: pos.left + $this.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11148 bottom: pos.top + $this.outerHeight(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11149 startselected: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11150 selected: $this.hasClass("ui-selected"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11151 selecting: $this.hasClass("ui-selecting"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11152 unselecting: $this.hasClass("ui-unselecting")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11153 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11154 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11155 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11156 this.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11157
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11158 this.selectees = selectees.addClass("ui-selectee");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11159
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11160 this._mouseInit();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11161
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11162 this.helper = $("<div class='ui-selectable-helper'></div>");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11163 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11164
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11165 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11166 this.selectees
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11167 .removeClass("ui-selectee")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11168 .removeData("selectable-item");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11169 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11170 .removeClass("ui-selectable ui-selectable-disabled");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11171 this._mouseDestroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11172 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11173
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11174 _mouseStart: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11175 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11176 options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11177
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11178 this.opos = [event.pageX, event.pageY];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11179
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11180 if (this.options.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11181 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11182 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11183
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11184 this.selectees = $(options.filter, this.element[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11185
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11186 this._trigger("start", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11187
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11188 $(options.appendTo).append(this.helper);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11189 // position helper (lasso)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11190 this.helper.css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11191 "left": event.pageX,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11192 "top": event.pageY,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11193 "width": 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11194 "height": 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11195 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11196
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11197 if (options.autoRefresh) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11198 this.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11199 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11200
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11201 this.selectees.filter(".ui-selected").each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11202 var selectee = $.data(this, "selectable-item");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11203 selectee.startselected = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11204 if (!event.metaKey && !event.ctrlKey) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11205 selectee.$element.removeClass("ui-selected");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11206 selectee.selected = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11207 selectee.$element.addClass("ui-unselecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11208 selectee.unselecting = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11209 // selectable UNSELECTING callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11210 that._trigger("unselecting", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11211 unselecting: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11212 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11213 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11214 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11215
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11216 $(event.target).parents().addBack().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11217 var doSelect,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11218 selectee = $.data(this, "selectable-item");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11219 if (selectee) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11220 doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11221 selectee.$element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11222 .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11223 .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11224 selectee.unselecting = !doSelect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11225 selectee.selecting = doSelect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11226 selectee.selected = doSelect;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11227 // selectable (UN)SELECTING callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11228 if (doSelect) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11229 that._trigger("selecting", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11230 selecting: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11231 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11232 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11233 that._trigger("unselecting", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11234 unselecting: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11235 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11236 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11237 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11238 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11239 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11240
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11241 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11242
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11243 _mouseDrag: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11244
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11245 this.dragged = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11246
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11247 if (this.options.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11248 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11249 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11250
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11251 var tmp,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11252 that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11253 options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11254 x1 = this.opos[0],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11255 y1 = this.opos[1],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11256 x2 = event.pageX,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11257 y2 = event.pageY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11258
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11259 if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11260 if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11261 this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11262
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11263 this.selectees.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11264 var selectee = $.data(this, "selectable-item"),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11265 hit = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11266
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11267 //prevent helper from being selected if appendTo: selectable
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11268 if (!selectee || selectee.element === that.element[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11269 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11270 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11271
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11272 if (options.tolerance === "touch") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11273 hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11274 } else if (options.tolerance === "fit") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11275 hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11276 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11277
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11278 if (hit) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11279 // SELECT
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11280 if (selectee.selected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11281 selectee.$element.removeClass("ui-selected");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11282 selectee.selected = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11283 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11284 if (selectee.unselecting) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11285 selectee.$element.removeClass("ui-unselecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11286 selectee.unselecting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11287 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11288 if (!selectee.selecting) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11289 selectee.$element.addClass("ui-selecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11290 selectee.selecting = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11291 // selectable SELECTING callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11292 that._trigger("selecting", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11293 selecting: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11294 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11295 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11296 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11297 // UNSELECT
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11298 if (selectee.selecting) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11299 if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11300 selectee.$element.removeClass("ui-selecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11301 selectee.selecting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11302 selectee.$element.addClass("ui-selected");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11303 selectee.selected = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11304 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11305 selectee.$element.removeClass("ui-selecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11306 selectee.selecting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11307 if (selectee.startselected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11308 selectee.$element.addClass("ui-unselecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11309 selectee.unselecting = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11310 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11311 // selectable UNSELECTING callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11312 that._trigger("unselecting", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11313 unselecting: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11314 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11315 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11316 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11317 if (selectee.selected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11318 if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11319 selectee.$element.removeClass("ui-selected");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11320 selectee.selected = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11321
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11322 selectee.$element.addClass("ui-unselecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11323 selectee.unselecting = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11324 // selectable UNSELECTING callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11325 that._trigger("unselecting", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11326 unselecting: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11327 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11328 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11329 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11330 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11331 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11332
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11333 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11334 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11335
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11336 _mouseStop: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11337 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11338
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11339 this.dragged = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11340
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11341 $(".ui-unselecting", this.element[0]).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11342 var selectee = $.data(this, "selectable-item");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11343 selectee.$element.removeClass("ui-unselecting");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11344 selectee.unselecting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11345 selectee.startselected = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11346 that._trigger("unselected", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11347 unselected: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11348 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11349 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11350 $(".ui-selecting", this.element[0]).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11351 var selectee = $.data(this, "selectable-item");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11352 selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11353 selectee.selecting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11354 selectee.selected = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11355 selectee.startselected = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11356 that._trigger("selected", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11357 selected: selectee.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11358 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11359 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11360 this._trigger("stop", event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11361
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11362 this.helper.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11363
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11364 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11365 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11366
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11367 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11368
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11369 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11370 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11371
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11372 // number of pages in a slider
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11373 // (how many times can you page up/down to go through the whole range)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11374 var numPages = 5;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11375
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11376 $.widget( "ui.slider", $.ui.mouse, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11377 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11378 widgetEventPrefix: "slide",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11379
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11380 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11381 animate: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11382 distance: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11383 max: 100,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11384 min: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11385 orientation: "horizontal",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11386 range: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11387 step: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11388 value: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11389 values: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11390
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11391 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11392 change: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11393 slide: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11394 start: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11395 stop: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11396 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11397
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11398 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11399 this._keySliding = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11400 this._mouseSliding = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11401 this._animateOff = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11402 this._handleIndex = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11403 this._detectOrientation();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11404 this._mouseInit();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11405
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11406 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11407 .addClass( "ui-slider" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11408 " ui-slider-" + this.orientation +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11409 " ui-widget" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11410 " ui-widget-content" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11411 " ui-corner-all");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11412
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11413 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11414 this._setOption( "disabled", this.options.disabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11415
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11416 this._animateOff = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11417 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11418
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11419 _refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11420 this._createRange();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11421 this._createHandles();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11422 this._setupEvents();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11423 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11424 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11425
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11426 _createHandles: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11427 var i, handleCount,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11428 options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11429 existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11430 handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11431 handles = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11432
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11433 handleCount = ( options.values && options.values.length ) || 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11434
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11435 if ( existingHandles.length > handleCount ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11436 existingHandles.slice( handleCount ).remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11437 existingHandles = existingHandles.slice( 0, handleCount );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11438 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11439
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11440 for ( i = existingHandles.length; i < handleCount; i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11441 handles.push( handle );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11442 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11443
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11444 this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11445
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11446 this.handle = this.handles.eq( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11447
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11448 this.handles.each(function( i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11449 $( this ).data( "ui-slider-handle-index", i );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11450 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11451 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11452
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11453 _createRange: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11454 var options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11455 classes = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11456
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11457 if ( options.range ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11458 if ( options.range === true ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11459 if ( !options.values ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11460 options.values = [ this._valueMin(), this._valueMin() ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11461 } else if ( options.values.length && options.values.length !== 2 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11462 options.values = [ options.values[0], options.values[0] ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11463 } else if ( $.isArray( options.values ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11464 options.values = options.values.slice(0);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11465 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11466 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11467
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11468 if ( !this.range || !this.range.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11469 this.range = $( "<div></div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11470 .appendTo( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11471
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11472 classes = "ui-slider-range" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11473 // note: this isn't the most fittingly semantic framework class for this element,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11474 // but worked best visually with a variety of themes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11475 " ui-widget-header ui-corner-all";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11476 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11477 this.range.removeClass( "ui-slider-range-min ui-slider-range-max" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11478 // Handle range switching from true to min/max
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11479 .css({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11480 "left": "",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11481 "bottom": ""
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11482 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11483 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11484
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11485 this.range.addClass( classes +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11486 ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11487 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11488 if ( this.range ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11489 this.range.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11490 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11491 this.range = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11492 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11493 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11494
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11495 _setupEvents: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11496 var elements = this.handles.add( this.range ).filter( "a" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11497 this._off( elements );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11498 this._on( elements, this._handleEvents );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11499 this._hoverable( elements );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11500 this._focusable( elements );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11501 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11502
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11503 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11504 this.handles.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11505 if ( this.range ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11506 this.range.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11507 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11508
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11509 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11510 .removeClass( "ui-slider" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11511 " ui-slider-horizontal" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11512 " ui-slider-vertical" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11513 " ui-widget" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11514 " ui-widget-content" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11515 " ui-corner-all" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11516
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11517 this._mouseDestroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11518 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11519
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11520 _mouseCapture: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11521 var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11522 that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11523 o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11524
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11525 if ( o.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11526 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11527 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11528
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11529 this.elementSize = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11530 width: this.element.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11531 height: this.element.outerHeight()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11532 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11533 this.elementOffset = this.element.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11535 position = { x: event.pageX, y: event.pageY };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11536 normValue = this._normValueFromMouse( position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11537 distance = this._valueMax() - this._valueMin() + 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11538 this.handles.each(function( i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11539 var thisDistance = Math.abs( normValue - that.values(i) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11540 if (( distance > thisDistance ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11541 ( distance === thisDistance &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11542 (i === that._lastChangedValue || that.values(i) === o.min ))) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11543 distance = thisDistance;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11544 closestHandle = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11545 index = i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11546 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11547 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11548
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11549 allowed = this._start( event, index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11550 if ( allowed === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11551 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11552 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11553 this._mouseSliding = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11554
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11555 this._handleIndex = index;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11556
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11557 closestHandle
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11558 .addClass( "ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11559 .focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11560
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11561 offset = closestHandle.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11562 mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11563 this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11564 left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11565 top: event.pageY - offset.top -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11566 ( closestHandle.height() / 2 ) -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11567 ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11568 ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11569 ( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11570 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11571
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11572 if ( !this.handles.hasClass( "ui-state-hover" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11573 this._slide( event, index, normValue );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11574 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11575 this._animateOff = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11576 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11577 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11578
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11579 _mouseStart: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11580 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11581 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11582
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11583 _mouseDrag: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11584 var position = { x: event.pageX, y: event.pageY },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11585 normValue = this._normValueFromMouse( position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11586
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11587 this._slide( event, this._handleIndex, normValue );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11588
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11589 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11590 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11591
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11592 _mouseStop: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11593 this.handles.removeClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11594 this._mouseSliding = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11596 this._stop( event, this._handleIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11597 this._change( event, this._handleIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11598
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11599 this._handleIndex = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11600 this._clickOffset = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11601 this._animateOff = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11602
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11603 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11604 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11605
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11606 _detectOrientation: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11607 this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11608 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11609
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11610 _normValueFromMouse: function( position ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11611 var pixelTotal,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11612 pixelMouse,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11613 percentMouse,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11614 valueTotal,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11615 valueMouse;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11616
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11617 if ( this.orientation === "horizontal" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11618 pixelTotal = this.elementSize.width;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11619 pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11620 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11621 pixelTotal = this.elementSize.height;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11622 pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11623 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11624
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11625 percentMouse = ( pixelMouse / pixelTotal );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11626 if ( percentMouse > 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11627 percentMouse = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11628 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11629 if ( percentMouse < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11630 percentMouse = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11631 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11632 if ( this.orientation === "vertical" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11633 percentMouse = 1 - percentMouse;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11634 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11635
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11636 valueTotal = this._valueMax() - this._valueMin();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11637 valueMouse = this._valueMin() + percentMouse * valueTotal;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11638
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11639 return this._trimAlignValue( valueMouse );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11640 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11641
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11642 _start: function( event, index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11643 var uiHash = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11644 handle: this.handles[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11645 value: this.value()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11646 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11647 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11648 uiHash.value = this.values( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11649 uiHash.values = this.values();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11650 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11651 return this._trigger( "start", event, uiHash );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11652 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11653
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11654 _slide: function( event, index, newVal ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11655 var otherVal,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11656 newValues,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11657 allowed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11658
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11659 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11660 otherVal = this.values( index ? 0 : 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11661
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11662 if ( ( this.options.values.length === 2 && this.options.range === true ) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11663 ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11664 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11665 newVal = otherVal;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11666 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11667
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11668 if ( newVal !== this.values( index ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11669 newValues = this.values();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11670 newValues[ index ] = newVal;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11671 // A slide can be canceled by returning false from the slide callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11672 allowed = this._trigger( "slide", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11673 handle: this.handles[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11674 value: newVal,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11675 values: newValues
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11676 } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11677 otherVal = this.values( index ? 0 : 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11678 if ( allowed !== false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11679 this.values( index, newVal );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11680 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11681 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11682 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11683 if ( newVal !== this.value() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11684 // A slide can be canceled by returning false from the slide callback
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11685 allowed = this._trigger( "slide", event, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11686 handle: this.handles[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11687 value: newVal
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11688 } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11689 if ( allowed !== false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11690 this.value( newVal );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11691 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11692 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11693 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11694 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11695
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11696 _stop: function( event, index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11697 var uiHash = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11698 handle: this.handles[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11699 value: this.value()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11700 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11701 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11702 uiHash.value = this.values( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11703 uiHash.values = this.values();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11704 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11705
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11706 this._trigger( "stop", event, uiHash );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11707 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11708
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11709 _change: function( event, index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11710 if ( !this._keySliding && !this._mouseSliding ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11711 var uiHash = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11712 handle: this.handles[ index ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11713 value: this.value()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11714 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11715 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11716 uiHash.value = this.values( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11717 uiHash.values = this.values();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11718 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11719
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11720 //store the last changed value index for reference when handles overlap
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11721 this._lastChangedValue = index;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11722
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11723 this._trigger( "change", event, uiHash );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11724 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11725 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11726
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11727 value: function( newValue ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11728 if ( arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11729 this.options.value = this._trimAlignValue( newValue );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11730 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11731 this._change( null, 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11732 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11733 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11734
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11735 return this._value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11736 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11737
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11738 values: function( index, newValue ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11739 var vals,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11740 newValues,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11741 i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11742
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11743 if ( arguments.length > 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11744 this.options.values[ index ] = this._trimAlignValue( newValue );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11745 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11746 this._change( null, index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11747 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11748 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11749
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11750 if ( arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11751 if ( $.isArray( arguments[ 0 ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11752 vals = this.options.values;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11753 newValues = arguments[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11754 for ( i = 0; i < vals.length; i += 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11755 vals[ i ] = this._trimAlignValue( newValues[ i ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11756 this._change( null, i );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11757 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11758 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11759 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11760 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11761 return this._values( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11762 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11763 return this.value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11764 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11765 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11766 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11767 return this._values();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11768 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11769 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11770
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11771 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11772 var i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11773 valsLength = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11774
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11775 if ( key === "range" && this.options.range === true ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11776 if ( value === "min" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11777 this.options.value = this._values( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11778 this.options.values = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11779 } else if ( value === "max" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11780 this.options.value = this._values( this.options.values.length-1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11781 this.options.values = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11782 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11783 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11784
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11785 if ( $.isArray( this.options.values ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11786 valsLength = this.options.values.length;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11787 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11788
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11789 $.Widget.prototype._setOption.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11790
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11791 switch ( key ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11792 case "orientation":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11793 this._detectOrientation();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11794 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11795 .removeClass( "ui-slider-horizontal ui-slider-vertical" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11796 .addClass( "ui-slider-" + this.orientation );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11797 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11798 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11799 case "value":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11800 this._animateOff = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11801 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11802 this._change( null, 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11803 this._animateOff = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11804 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11805 case "values":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11806 this._animateOff = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11807 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11808 for ( i = 0; i < valsLength; i += 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11809 this._change( null, i );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11810 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11811 this._animateOff = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11812 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11813 case "min":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11814 case "max":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11815 this._animateOff = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11816 this._refreshValue();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11817 this._animateOff = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11818 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11819 case "range":
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11820 this._animateOff = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11821 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11822 this._animateOff = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11823 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11824 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11825 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11826
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11827 //internal value getter
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11828 // _value() returns value trimmed by min and max, aligned by step
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11829 _value: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11830 var val = this.options.value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11831 val = this._trimAlignValue( val );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11832
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11833 return val;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11834 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11835
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11836 //internal values getter
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11837 // _values() returns array of values trimmed by min and max, aligned by step
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11838 // _values( index ) returns single value trimmed by min and max, aligned by step
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11839 _values: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11840 var val,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11841 vals,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11842 i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11843
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11844 if ( arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11845 val = this.options.values[ index ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11846 val = this._trimAlignValue( val );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11847
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11848 return val;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11849 } else if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11850 // .slice() creates a copy of the array
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11851 // this copy gets trimmed by min and max and then returned
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11852 vals = this.options.values.slice();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11853 for ( i = 0; i < vals.length; i+= 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11854 vals[ i ] = this._trimAlignValue( vals[ i ] );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11855 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11856
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11857 return vals;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11858 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11859 return [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11860 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11861 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11862
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11863 // returns the step-aligned value that val is closest to, between (inclusive) min and max
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11864 _trimAlignValue: function( val ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11865 if ( val <= this._valueMin() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11866 return this._valueMin();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11867 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11868 if ( val >= this._valueMax() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11869 return this._valueMax();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11870 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11871 var step = ( this.options.step > 0 ) ? this.options.step : 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11872 valModStep = (val - this._valueMin()) % step,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11873 alignValue = val - valModStep;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11874
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11875 if ( Math.abs(valModStep) * 2 >= step ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11876 alignValue += ( valModStep > 0 ) ? step : ( -step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11877 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11878
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11879 // Since JavaScript has problems with large floats, round
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11880 // the final value to 5 digits after the decimal point (see #4124)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11881 return parseFloat( alignValue.toFixed(5) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11882 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11883
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11884 _valueMin: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11885 return this.options.min;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11886 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11887
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11888 _valueMax: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11889 return this.options.max;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11890 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11891
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11892 _refreshValue: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11893 var lastValPercent, valPercent, value, valueMin, valueMax,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11894 oRange = this.options.range,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11895 o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11896 that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11897 animate = ( !this._animateOff ) ? o.animate : false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11898 _set = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11899
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11900 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11901 this.handles.each(function( i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11902 valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11903 _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11904 $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11905 if ( that.options.range === true ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11906 if ( that.orientation === "horizontal" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11907 if ( i === 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11908 that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11909 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11910 if ( i === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11911 that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11912 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11913 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11914 if ( i === 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11915 that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11916 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11917 if ( i === 1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11918 that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11919 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11920 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11921 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11922 lastValPercent = valPercent;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11923 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11924 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11925 value = this.value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11926 valueMin = this._valueMin();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11927 valueMax = this._valueMax();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11928 valPercent = ( valueMax !== valueMin ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11929 ( value - valueMin ) / ( valueMax - valueMin ) * 100 :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11930 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11931 _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11932 this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11933
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11934 if ( oRange === "min" && this.orientation === "horizontal" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11935 this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11936 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11937 if ( oRange === "max" && this.orientation === "horizontal" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11938 this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11939 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11940 if ( oRange === "min" && this.orientation === "vertical" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11941 this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11942 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11943 if ( oRange === "max" && this.orientation === "vertical" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11944 this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11945 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11946 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11947 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11948
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11949 _handleEvents: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11950 keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11951 var allowed, curVal, newVal, step,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11952 index = $( event.target ).data( "ui-slider-handle-index" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11953
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11954 switch ( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11955 case $.ui.keyCode.HOME:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11956 case $.ui.keyCode.END:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11957 case $.ui.keyCode.PAGE_UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11958 case $.ui.keyCode.PAGE_DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11959 case $.ui.keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11960 case $.ui.keyCode.RIGHT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11961 case $.ui.keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11962 case $.ui.keyCode.LEFT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11963 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11964 if ( !this._keySliding ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11965 this._keySliding = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11966 $( event.target ).addClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11967 allowed = this._start( event, index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11968 if ( allowed === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11969 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11970 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11971 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11972 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11973 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11974
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11975 step = this.options.step;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11976 if ( this.options.values && this.options.values.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11977 curVal = newVal = this.values( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11978 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11979 curVal = newVal = this.value();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11980 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11981
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11982 switch ( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11983 case $.ui.keyCode.HOME:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11984 newVal = this._valueMin();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11985 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11986 case $.ui.keyCode.END:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11987 newVal = this._valueMax();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11988 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11989 case $.ui.keyCode.PAGE_UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11990 newVal = this._trimAlignValue( curVal + ( (this._valueMax() - this._valueMin()) / numPages ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11991 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11992 case $.ui.keyCode.PAGE_DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11993 newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / numPages ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11994 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11995 case $.ui.keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11996 case $.ui.keyCode.RIGHT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11997 if ( curVal === this._valueMax() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11998 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11999 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12000 newVal = this._trimAlignValue( curVal + step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12001 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12002 case $.ui.keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12003 case $.ui.keyCode.LEFT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12004 if ( curVal === this._valueMin() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12005 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12006 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12007 newVal = this._trimAlignValue( curVal - step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12008 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12009 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12010
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12011 this._slide( event, index, newVal );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12012 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12013 click: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12014 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12015 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12016 keyup: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12017 var index = $( event.target ).data( "ui-slider-handle-index" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12018
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12019 if ( this._keySliding ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12020 this._keySliding = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12021 this._stop( event, index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12022 this._change( event, index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12023 $( event.target ).removeClass( "ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12024 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12025 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12026 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12027
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12028 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12029
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12030 }(jQuery));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12031 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12032
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12033 function isOverAxis( x, reference, size ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12034 return ( x > reference ) && ( x < ( reference + size ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12035 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12036
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12037 function isFloating(item) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12038 return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display"));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12039 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12040
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12041 $.widget("ui.sortable", $.ui.mouse, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12042 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12043 widgetEventPrefix: "sort",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12044 ready: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12045 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12046 appendTo: "parent",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12047 axis: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12048 connectWith: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12049 containment: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12050 cursor: "auto",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12051 cursorAt: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12052 dropOnEmpty: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12053 forcePlaceholderSize: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12054 forceHelperSize: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12055 grid: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12056 handle: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12057 helper: "original",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12058 items: "> *",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12059 opacity: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12060 placeholder: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12061 revert: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12062 scroll: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12063 scrollSensitivity: 20,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12064 scrollSpeed: 20,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12065 scope: "default",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12066 tolerance: "intersect",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12067 zIndex: 1000,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12068
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12069 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12070 activate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12071 beforeStop: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12072 change: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12073 deactivate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12074 out: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12075 over: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12076 receive: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12077 remove: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12078 sort: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12079 start: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12080 stop: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12081 update: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12082 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12083 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12084
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12085 var o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12086 this.containerCache = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12087 this.element.addClass("ui-sortable");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12088
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12089 //Get the items
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12090 this.refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12091
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12092 //Let's determine if the items are being displayed horizontally
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12093 this.floating = this.items.length ? o.axis === "x" || isFloating(this.items[0].item) : false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12094
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12095 //Let's determine the parent's offset
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12096 this.offset = this.element.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12097
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12098 //Initialize mouse events for interaction
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12099 this._mouseInit();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12100
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12101 //We're ready to go
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12102 this.ready = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12103
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12104 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12105
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12106 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12107 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12108 .removeClass("ui-sortable ui-sortable-disabled");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12109 this._mouseDestroy();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12110
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12111 for ( var i = this.items.length - 1; i >= 0; i-- ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12112 this.items[i].item.removeData(this.widgetName + "-item");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12113 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12114
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12115 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12116 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12117
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12118 _setOption: function(key, value){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12119 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12120 this.options[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12121
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12122 this.widget().toggleClass( "ui-sortable-disabled", !!value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12123 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12124 // Don't call widget base _setOption for disable as it adds ui-state-disabled class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12125 $.Widget.prototype._setOption.apply(this, arguments);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12126 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12127 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12128
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12129 _mouseCapture: function(event, overrideHandle) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12130 var currentItem = null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12131 validHandle = false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12132 that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12133
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12134 if (this.reverting) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12135 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12136 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12137
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12138 if(this.options.disabled || this.options.type === "static") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12139 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12140 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12141
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12142 //We have to refresh the items data once first
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12143 this._refreshItems(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12144
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12145 //Find out if the clicked node (or one of its parents) is a actual item in this.items
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12146 $(event.target).parents().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12147 if($.data(this, that.widgetName + "-item") === that) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12148 currentItem = $(this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12149 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12150 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12151 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12152 if($.data(event.target, that.widgetName + "-item") === that) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12153 currentItem = $(event.target);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12154 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12155
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12156 if(!currentItem) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12157 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12158 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12159 if(this.options.handle && !overrideHandle) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12160 $(this.options.handle, currentItem).find("*").addBack().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12161 if(this === event.target) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12162 validHandle = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12163 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12164 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12165 if(!validHandle) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12166 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12167 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12168 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12169
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12170 this.currentItem = currentItem;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12171 this._removeCurrentsFromItems();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12172 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12173
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12174 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12175
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12176 _mouseStart: function(event, overrideHandle, noActivation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12177
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12178 var i, body,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12179 o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12180
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12181 this.currentContainer = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12182
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12183 //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12184 this.refreshPositions();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12185
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12186 //Create and append the visible helper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12187 this.helper = this._createHelper(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12188
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12189 //Cache the helper size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12190 this._cacheHelperProportions();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12191
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12192 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12193 * - Position generation -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12194 * This block generates everything position related - it's the core of draggables.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12195 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12196
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12197 //Cache the margins of the original element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12198 this._cacheMargins();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12199
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12200 //Get the next scrolling parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12201 this.scrollParent = this.helper.scrollParent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12202
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12203 //The element's absolute position on the page minus margins
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12204 this.offset = this.currentItem.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12205 this.offset = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12206 top: this.offset.top - this.margins.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12207 left: this.offset.left - this.margins.left
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12208 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12209
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12210 $.extend(this.offset, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12211 click: { //Where the click happened, relative to the element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12212 left: event.pageX - this.offset.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12213 top: event.pageY - this.offset.top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12214 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12215 parent: this._getParentOffset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12216 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12217 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12218
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12219 // Only after we got the offset, we can change the helper's position to absolute
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12220 // TODO: Still need to figure out a way to make relative sorting possible
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12221 this.helper.css("position", "absolute");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12222 this.cssPosition = this.helper.css("position");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12223
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12224 //Generate the original position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12225 this.originalPosition = this._generatePosition(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12226 this.originalPageX = event.pageX;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12227 this.originalPageY = event.pageY;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12228
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12229 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12230 (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12231
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12232 //Cache the former DOM position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12233 this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12234
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12235 //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
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12236 if(this.helper[0] !== this.currentItem[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12237 this.currentItem.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12238 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12239
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12240 //Create the placeholder
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12241 this._createPlaceholder();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12242
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12243 //Set a containment if given in the options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12244 if(o.containment) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12245 this._setContainment();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12246 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12247
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12248 if( o.cursor && o.cursor !== "auto" ) { // cursor option
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12249 body = this.document.find( "body" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12250
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12251 // support: IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12252 this.storedCursor = body.css( "cursor" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12253 body.css( "cursor", o.cursor );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12254
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12255 this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12256 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12257
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12258 if(o.opacity) { // opacity option
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12259 if (this.helper.css("opacity")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12260 this._storedOpacity = this.helper.css("opacity");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12261 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12262 this.helper.css("opacity", o.opacity);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12263 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12264
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12265 if(o.zIndex) { // zIndex option
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12266 if (this.helper.css("zIndex")) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12267 this._storedZIndex = this.helper.css("zIndex");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12268 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12269 this.helper.css("zIndex", o.zIndex);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12270 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12271
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12272 //Prepare scrolling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12273 if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12274 this.overflowOffset = this.scrollParent.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12275 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12276
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12277 //Call callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12278 this._trigger("start", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12279
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12280 //Recache the helper size
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12281 if(!this._preserveHelperProportions) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12282 this._cacheHelperProportions();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12283 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12284
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12285
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12286 //Post "activate" events to possible containers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12287 if( !noActivation ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12288 for ( i = this.containers.length - 1; i >= 0; i-- ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12289 this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12290 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12291 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12292
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12293 //Prepare possible droppables
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12294 if($.ui.ddmanager) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12295 $.ui.ddmanager.current = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12296 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12297
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12298 if ($.ui.ddmanager && !o.dropBehaviour) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12299 $.ui.ddmanager.prepareOffsets(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12300 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12301
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12302 this.dragging = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12303
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12304 this.helper.addClass("ui-sortable-helper");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12305 this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12306 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12307
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12308 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12309
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12310 _mouseDrag: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12311 var i, item, itemElement, intersection,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12312 o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12313 scrolled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12314
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12315 //Compute the helpers position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12316 this.position = this._generatePosition(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12317 this.positionAbs = this._convertPositionTo("absolute");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12318
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12319 if (!this.lastPositionAbs) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12320 this.lastPositionAbs = this.positionAbs;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12321 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12322
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12323 //Do scrolling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12324 if(this.options.scroll) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12325 if(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== "HTML") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12326
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12327 if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12328 this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12329 } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12330 this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12331 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12332
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12333 if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12334 this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12335 } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12336 this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12337 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12338
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12339 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12340
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12341 if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12342 scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12343 } else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12344 scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12345 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12346
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12347 if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12348 scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12349 } else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12350 scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12351 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12352
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12353 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12354
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12355 if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12356 $.ui.ddmanager.prepareOffsets(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12357 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12358 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12359
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12360 //Regenerate the absolute position used for position checks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12361 this.positionAbs = this._convertPositionTo("absolute");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12362
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12363 //Set the helper position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12364 if(!this.options.axis || this.options.axis !== "y") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12365 this.helper[0].style.left = this.position.left+"px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12366 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12367 if(!this.options.axis || this.options.axis !== "x") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12368 this.helper[0].style.top = this.position.top+"px";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12369 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12370
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12371 //Rearrange
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12372 for (i = this.items.length - 1; i >= 0; i--) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12373
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12374 //Cache variables and intersection, continue if no intersection
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12375 item = this.items[i];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12376 itemElement = item.item[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12377 intersection = this._intersectsWithPointer(item);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12378 if (!intersection) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12379 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12380 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12381
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12382 // Only put the placeholder inside the current Container, skip all
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12383 // items from other containers. This works because when moving
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12384 // an item from one container to another the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12385 // currentContainer is switched before the placeholder is moved.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12386 //
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12387 // Without this, moving items in "sub-sortables" can cause
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12388 // the placeholder to jitter beetween the outer and inner container.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12389 if (item.instance !== this.currentContainer) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12390 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12391 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12392
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12393 // cannot intersect with itself
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12394 // no useless actions that have been done before
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12395 // no action if the item moved is the parent of the item checked
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12396 if (itemElement !== this.currentItem[0] &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12397 this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12398 !$.contains(this.placeholder[0], itemElement) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12399 (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12400 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12401
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12402 this.direction = intersection === 1 ? "down" : "up";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12403
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12404 if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12405 this._rearrange(event, item);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12406 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12407 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12408 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12409
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12410 this._trigger("change", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12411 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12412 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12413 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12414
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12415 //Post events to containers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12416 this._contactContainers(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12417
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12418 //Interconnect with droppables
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12419 if($.ui.ddmanager) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12420 $.ui.ddmanager.drag(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12421 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12422
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12423 //Call callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12424 this._trigger("sort", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12425
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12426 this.lastPositionAbs = this.positionAbs;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12427 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12428
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12429 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12430
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12431 _mouseStop: function(event, noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12432
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12433 if(!event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12434 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12435 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12436
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12437 //If we are using droppables, inform the manager about the drop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12438 if ($.ui.ddmanager && !this.options.dropBehaviour) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12439 $.ui.ddmanager.drop(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12440 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12441
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12442 if(this.options.revert) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12443 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12444 cur = this.placeholder.offset(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12445 axis = this.options.axis,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12446 animation = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12447
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12448 if ( !axis || axis === "x" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12449 animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12450 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12451 if ( !axis || axis === "y" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12452 animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12453 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12454 this.reverting = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12455 $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12456 that._clear(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12457 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12458 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12459 this._clear(event, noPropagation);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12460 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12461
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12462 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12463
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12464 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12465
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12466 cancel: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12467
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12468 if(this.dragging) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12469
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12470 this._mouseUp({ target: null });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12471
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12472 if(this.options.helper === "original") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12473 this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12474 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12475 this.currentItem.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12476 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12477
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12478 //Post deactivating events to containers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12479 for (var i = this.containers.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12480 this.containers[i]._trigger("deactivate", null, this._uiHash(this));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12481 if(this.containers[i].containerCache.over) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12482 this.containers[i]._trigger("out", null, this._uiHash(this));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12483 this.containers[i].containerCache.over = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12484 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12485 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12486
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12487 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12488
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12489 if (this.placeholder) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12490 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12491 if(this.placeholder[0].parentNode) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12492 this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12493 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12494 if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12495 this.helper.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12496 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12497
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12498 $.extend(this, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12499 helper: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12500 dragging: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12501 reverting: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12502 _noFinalSort: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12503 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12504
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12505 if(this.domPosition.prev) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12506 $(this.domPosition.prev).after(this.currentItem);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12507 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12508 $(this.domPosition.parent).prepend(this.currentItem);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12509 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12510 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12511
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12512 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12513
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12514 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12515
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12516 serialize: function(o) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12517
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12518 var items = this._getItemsAsjQuery(o && o.connected),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12519 str = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12520 o = o || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12521
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12522 $(items).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12523 var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12524 if (res) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12525 str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2]));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12526 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12527 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12528
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12529 if(!str.length && o.key) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12530 str.push(o.key + "=");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12531 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12532
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12533 return str.join("&");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12535 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12536
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12537 toArray: function(o) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12538
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12539 var items = this._getItemsAsjQuery(o && o.connected),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12540 ret = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12541
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12542 o = o || {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12543
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12544 items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12545 return ret;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12546
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12547 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12548
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12549 /* Be careful with the following core functions */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12550 _intersectsWith: function(item) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12551
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12552 var x1 = this.positionAbs.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12553 x2 = x1 + this.helperProportions.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12554 y1 = this.positionAbs.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12555 y2 = y1 + this.helperProportions.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12556 l = item.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12557 r = l + item.width,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12558 t = item.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12559 b = t + item.height,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12560 dyClick = this.offset.click.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12561 dxClick = this.offset.click.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12562 isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12563 isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12564 isOverElement = isOverElementHeight && isOverElementWidth;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12565
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12566 if ( this.options.tolerance === "pointer" ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12567 this.options.forcePointerForContainers ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12568 (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"])
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12569 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12570 return isOverElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12571 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12572
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12573 return (l < x1 + (this.helperProportions.width / 2) && // Right Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12574 x2 - (this.helperProportions.width / 2) < r && // Left Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12575 t < y1 + (this.helperProportions.height / 2) && // Bottom Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12576 y2 - (this.helperProportions.height / 2) < b ); // Top Half
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12577
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12578 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12579 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12580
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12581 _intersectsWithPointer: function(item) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12582
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12583 var isOverElementHeight = (this.options.axis === "x") || isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12584 isOverElementWidth = (this.options.axis === "y") || isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12585 isOverElement = isOverElementHeight && isOverElementWidth,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12586 verticalDirection = this._getDragVerticalDirection(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12587 horizontalDirection = this._getDragHorizontalDirection();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12588
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12589 if (!isOverElement) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12590 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12591 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12592
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12593 return this.floating ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12594 ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12595 : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12596
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12597 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12598
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12599 _intersectsWithSides: function(item) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12600
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12601 var isOverBottomHalf = isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12602 isOverRightHalf = isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12603 verticalDirection = this._getDragVerticalDirection(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12604 horizontalDirection = this._getDragHorizontalDirection();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12605
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12606 if (this.floating && horizontalDirection) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12607 return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12608 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12609 return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12610 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12611
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12612 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12613
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12614 _getDragVerticalDirection: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12615 var delta = this.positionAbs.top - this.lastPositionAbs.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12616 return delta !== 0 && (delta > 0 ? "down" : "up");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12617 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12618
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12619 _getDragHorizontalDirection: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12620 var delta = this.positionAbs.left - this.lastPositionAbs.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12621 return delta !== 0 && (delta > 0 ? "right" : "left");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12622 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12623
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12624 refresh: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12625 this._refreshItems(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12626 this.refreshPositions();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12627 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12628 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12629
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12630 _connectWith: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12631 var options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12632 return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12633 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12634
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12635 _getItemsAsjQuery: function(connected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12636
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12637 var i, j, cur, inst,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12638 items = [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12639 queries = [],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12640 connectWith = this._connectWith();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12641
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12642 if(connectWith && connected) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12643 for (i = connectWith.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12644 cur = $(connectWith[i]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12645 for ( j = cur.length - 1; j >= 0; j--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12646 inst = $.data(cur[j], this.widgetFullName);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12647 if(inst && inst !== this && !inst.options.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12648 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]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12649 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12650 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12651 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12652 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12653
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12654 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]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12655
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12656 function addItems() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12657 items.push( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12658 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12659 for (i = queries.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12660 queries[i][0].each( addItems );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12661 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12662
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12663 return $(items);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12664
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12665 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12666
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12667 _removeCurrentsFromItems: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12668
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12669 var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12670
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12671 this.items = $.grep(this.items, function (item) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12672 for (var j=0; j < list.length; j++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12673 if(list[j] === item.item[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12674 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12675 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12676 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12677 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12678 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12679
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12680 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12681
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12682 _refreshItems: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12683
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12684 this.items = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12685 this.containers = [this];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12686
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12687 var i, j, cur, inst, targetData, _queries, item, queriesLength,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12688 items = this.items,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12689 queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12690 connectWith = this._connectWith();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12691
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12692 if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12693 for (i = connectWith.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12694 cur = $(connectWith[i]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12695 for (j = cur.length - 1; j >= 0; j--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12696 inst = $.data(cur[j], this.widgetFullName);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12697 if(inst && inst !== this && !inst.options.disabled) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12698 queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12699 this.containers.push(inst);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12700 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12701 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12702 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12703 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12704
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12705 for (i = queries.length - 1; i >= 0; i--) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12706 targetData = queries[i][1];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12707 _queries = queries[i][0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12708
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12709 for (j=0, queriesLength = _queries.length; j < queriesLength; j++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12710 item = $(_queries[j]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12711
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12712 item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12713
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12714 items.push({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12715 item: item,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12716 instance: targetData,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12717 width: 0, height: 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12718 left: 0, top: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12719 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12720 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12721 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12722
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12723 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12724
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12725 refreshPositions: function(fast) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12726
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12727 //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12728 if(this.offsetParent && this.helper) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12729 this.offset.parent = this._getParentOffset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12730 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12731
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12732 var i, item, t, p;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12733
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12734 for (i = this.items.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12735 item = this.items[i];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12736
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12737 //We ignore calculating positions of all connected containers when we're not over them
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12738 if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12739 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12740 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12741
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12742 t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12743
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12744 if (!fast) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12745 item.width = t.outerWidth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12746 item.height = t.outerHeight();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12747 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12748
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12749 p = t.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12750 item.left = p.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12751 item.top = p.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12752 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12753
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12754 if(this.options.custom && this.options.custom.refreshContainers) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12755 this.options.custom.refreshContainers.call(this);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12756 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12757 for (i = this.containers.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12758 p = this.containers[i].element.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12759 this.containers[i].containerCache.left = p.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12760 this.containers[i].containerCache.top = p.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12761 this.containers[i].containerCache.width = this.containers[i].element.outerWidth();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12762 this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12763 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12764 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12765
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12766 return this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12767 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12768
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12769 _createPlaceholder: function(that) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12770 that = that || this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12771 var className,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12772 o = that.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12773
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12774 if(!o.placeholder || o.placeholder.constructor === String) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12775 className = o.placeholder;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12776 o.placeholder = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12777 element: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12778
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12779 var nodeName = that.currentItem[0].nodeName.toLowerCase(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12780 element = $( "<" + nodeName + ">", that.document[0] )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12781 .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12782 .removeClass("ui-sortable-helper");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12783
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12784 if ( nodeName === "tr" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12785 that.currentItem.children().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12786 $( "<td>&#160;</td>", that.document[0] )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12787 .attr( "colspan", $( this ).attr( "colspan" ) || 1 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12788 .appendTo( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12789 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12790 } else if ( nodeName === "img" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12791 element.attr( "src", that.currentItem.attr( "src" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12792 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12793
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12794 if ( !className ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12795 element.css( "visibility", "hidden" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12796 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12797
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12798 return element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12799 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12800 update: function(container, p) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12801
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12802 // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12803 // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12804 if(className && !o.forcePlaceholderSize) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12805 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12806 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12807
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12808 //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
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12809 if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12810 if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12811 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12812 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12813 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12814
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12815 //Create the placeholder
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12816 that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12817
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12818 //Append it after the actual current item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12819 that.currentItem.after(that.placeholder);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12820
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12821 //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12822 o.placeholder.update(that, that.placeholder);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12824 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12825
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12826 _contactContainers: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12827 var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12828 innermostContainer = null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12829 innermostIndex = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12830
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12831 // get innermost container that intersects with item
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12832 for (i = this.containers.length - 1; i >= 0; i--) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12833
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12834 // never consider a container that's located within the item itself
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12835 if($.contains(this.currentItem[0], this.containers[i].element[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12836 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12837 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12838
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12839 if(this._intersectsWith(this.containers[i].containerCache)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12840
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12841 // if we've already found a container and it's more "inner" than this, then continue
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12842 if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12843 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12844 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12845
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12846 innermostContainer = this.containers[i];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12847 innermostIndex = i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12848
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12849 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12850 // container doesn't intersect. trigger "out" event if necessary
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12851 if(this.containers[i].containerCache.over) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12852 this.containers[i]._trigger("out", event, this._uiHash(this));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12853 this.containers[i].containerCache.over = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12854 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12855 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12856
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12857 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12858
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12859 // if no intersecting containers found, return
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12860 if(!innermostContainer) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12861 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12862 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12863
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12864 // move the item into the container if it's not there already
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12865 if(this.containers.length === 1) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12866 if (!this.containers[innermostIndex].containerCache.over) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12867 this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12868 this.containers[innermostIndex].containerCache.over = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12869 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12870 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12871
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12872 //When entering a new container, we will find the item with the least distance and append our item near it
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12873 dist = 10000;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12874 itemWithLeastDistance = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12875 floating = innermostContainer.floating || isFloating(this.currentItem);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12876 posProperty = floating ? "left" : "top";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12877 sizeProperty = floating ? "width" : "height";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12878 base = this.positionAbs[posProperty] + this.offset.click[posProperty];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12879 for (j = this.items.length - 1; j >= 0; j--) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12880 if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12881 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12882 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12883 if(this.items[j].item[0] === this.currentItem[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12884 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12885 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12886 if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12887 continue;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12888 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12889 cur = this.items[j].item.offset()[posProperty];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12890 nearBottom = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12891 if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12892 nearBottom = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12893 cur += this.items[j][sizeProperty];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12894 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12895
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12896 if(Math.abs(cur - base) < dist) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12897 dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12898 this.direction = nearBottom ? "up": "down";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12899 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12900 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12901
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12902 //Check if dropOnEmpty is enabled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12903 if(!itemWithLeastDistance && !this.options.dropOnEmpty) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12904 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12905 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12906
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12907 if(this.currentContainer === this.containers[innermostIndex]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12908 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12909 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12910
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12911 itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12912 this._trigger("change", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12913 this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12914 this.currentContainer = this.containers[innermostIndex];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12915
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12916 //Update the placeholder
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12917 this.options.placeholder.update(this.currentContainer, this.placeholder);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12918
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12919 this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12920 this.containers[innermostIndex].containerCache.over = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12921 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12922
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12923
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12924 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12925
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12926 _createHelper: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12927
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12928 var o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12929 helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12930
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12931 //Add the helper to the DOM if that didn't happen already
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12932 if(!helper.parents("body").length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12933 $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12934 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12935
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12936 if(helper[0] === this.currentItem[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12937 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") };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12938 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12939
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12940 if(!helper[0].style.width || o.forceHelperSize) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12941 helper.width(this.currentItem.width());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12942 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12943 if(!helper[0].style.height || o.forceHelperSize) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12944 helper.height(this.currentItem.height());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12945 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12946
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12947 return helper;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12948
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12949 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12950
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12951 _adjustOffsetFromHelper: function(obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12952 if (typeof obj === "string") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12953 obj = obj.split(" ");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12954 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12955 if ($.isArray(obj)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12956 obj = {left: +obj[0], top: +obj[1] || 0};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12957 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12958 if ("left" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12959 this.offset.click.left = obj.left + this.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12960 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12961 if ("right" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12962 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12963 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12964 if ("top" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12965 this.offset.click.top = obj.top + this.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12966 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12967 if ("bottom" in obj) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12968 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12969 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12970 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12971
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12972 _getParentOffset: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12973
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12974
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12975 //Get the offsetParent and cache its position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12976 this.offsetParent = this.helper.offsetParent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12977 var po = this.offsetParent.offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12978
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12979 // This is a special case where we need to modify a offset calculated on start, since the following happened:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12980 // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12981 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12982 // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12983 if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12984 po.left += this.scrollParent.scrollLeft();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12985 po.top += this.scrollParent.scrollTop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12986 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12987
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12988 // This needs to be actually done for all browsers, since pageX/pageY includes this information
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12989 // with an ugly IE fix
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12990 if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12991 po = { top: 0, left: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12992 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12993
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12994 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12995 top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12996 left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12997 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12998
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12999 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13000
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13001 _getRelativeOffset: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13002
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13003 if(this.cssPosition === "relative") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13004 var p = this.currentItem.position();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13005 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13006 top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13007 left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13008 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13009 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13010 return { top: 0, left: 0 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13011 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13012
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13013 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13014
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13015 _cacheMargins: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13016 this.margins = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13017 left: (parseInt(this.currentItem.css("marginLeft"),10) || 0),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13018 top: (parseInt(this.currentItem.css("marginTop"),10) || 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13019 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13020 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13021
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13022 _cacheHelperProportions: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13023 this.helperProportions = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13024 width: this.helper.outerWidth(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13025 height: this.helper.outerHeight()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13026 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13027 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13028
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13029 _setContainment: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13030
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13031 var ce, co, over,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13032 o = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13033 if(o.containment === "parent") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13034 o.containment = this.helper[0].parentNode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13035 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13036 if(o.containment === "document" || o.containment === "window") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13037 this.containment = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13038 0 - this.offset.relative.left - this.offset.parent.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13039 0 - this.offset.relative.top - this.offset.parent.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13040 $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13041 ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13042 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13043 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13044
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13045 if(!(/^(document|window|parent)$/).test(o.containment)) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13046 ce = $(o.containment)[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13047 co = $(o.containment).offset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13048 over = ($(ce).css("overflow") !== "hidden");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13049
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13050 this.containment = [
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13051 co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13052 co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13053 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,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13054 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
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13055 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13056 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13057
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13058 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13059
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13060 _convertPositionTo: function(d, pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13061
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13062 if(!pos) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13063 pos = this.position;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13064 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13065 var mod = d === "absolute" ? 1 : -1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13066 scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13067 scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13068
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13069 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13070 top: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13071 pos.top + // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13072 this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13073 this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13074 ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13075 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13076 left: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13077 pos.left + // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13078 this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13079 this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13080 ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13081 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13082 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13083
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13084 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13085
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13086 _generatePosition: function(event) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13087
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13088 var top, left,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13089 o = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13090 pageX = event.pageX,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13091 pageY = event.pageY,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13092 scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13093
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13094 // This is another very weird special case that only happens for relative elements:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13095 // 1. If the css position is relative
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13096 // 2. and the scroll parent is the document or similar to the offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13097 // we have to refresh the relative offset during the scroll so there are no jumps
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13098 if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13099 this.offset.relative = this._getRelativeOffset();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13100 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13101
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13102 /*
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13103 * - Position constraining -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13104 * Constrain the position to a mix of grid, containment.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13105 */
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13106
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13107 if(this.originalPosition) { //If we are not dragging yet, we won't check for options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13108
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13109 if(this.containment) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13110 if(event.pageX - this.offset.click.left < this.containment[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13111 pageX = this.containment[0] + this.offset.click.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13112 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13113 if(event.pageY - this.offset.click.top < this.containment[1]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13114 pageY = this.containment[1] + this.offset.click.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13115 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13116 if(event.pageX - this.offset.click.left > this.containment[2]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13117 pageX = this.containment[2] + this.offset.click.left;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13118 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13119 if(event.pageY - this.offset.click.top > this.containment[3]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13120 pageY = this.containment[3] + this.offset.click.top;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13121 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13122 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13123
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13124 if(o.grid) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13125 top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13126 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;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13127
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13128 left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13129 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;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13130 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13131
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13132 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13133
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13134 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13135 top: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13136 pageY - // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13137 this.offset.click.top - // Click offset (relative to the element)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13138 this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13139 this.offset.parent.top + // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13140 ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13141 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13142 left: (
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13143 pageX - // The absolute mouse position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13144 this.offset.click.left - // Click offset (relative to the element)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13145 this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13146 this.offset.parent.left + // The offsetParent's offset without borders (offset + border)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13147 ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13148 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13149 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13150
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13151 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13152
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13153 _rearrange: function(event, i, a, hardRefresh) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13154
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13155 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));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13156
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13157 //Various things done here to improve the performance:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13158 // 1. we create a setTimeout, that calls refreshPositions
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13159 // 2. on the instance, we have a counter variable, that get's higher after every append
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13160 // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13161 // 4. this lets only the last addition to the timeout stack through
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13162 this.counter = this.counter ? ++this.counter : 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13163 var counter = this.counter;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13164
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13165 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13166 if(counter === this.counter) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13167 this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13168 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13169 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13170
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13171 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13172
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13173 _clear: function(event, noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13174
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13175 this.reverting = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13176 // We delay all events that have to be triggered to after the point where the placeholder has been removed and
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13177 // everything else normalized again
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13178 var i,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13179 delayedTriggers = [];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13180
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13181 // We first have to update the dom position of the actual currentItem
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13182 // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13183 if(!this._noFinalSort && this.currentItem.parent().length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13184 this.placeholder.before(this.currentItem);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13185 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13186 this._noFinalSort = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13187
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13188 if(this.helper[0] === this.currentItem[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13189 for(i in this._storedCSS) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13190 if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13191 this._storedCSS[i] = "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13192 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13193 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13194 this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13195 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13196 this.currentItem.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13197 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13198
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13199 if(this.fromOutside && !noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13200 delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13201 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13202 if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13203 delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13204 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13205
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13206 // Check if the items Container has Changed and trigger appropriate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13207 // events.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13208 if (this !== this.currentContainer) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13209 if(!noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13210 delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13211 delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13212 delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer));
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13213 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13214 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13215
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13216
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13217 //Post events to containers
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13218 function delayEvent( type, instance, container ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13219 return function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13220 container._trigger( type, event, instance._uiHash( instance ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13221 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13222 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13223 for (i = this.containers.length - 1; i >= 0; i--){
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13224 if (!noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13225 delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13226 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13227 if(this.containers[i].containerCache.over) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13228 delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13229 this.containers[i].containerCache.over = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13230 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13231 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13232
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13233 //Do what was originally in plugins
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13234 if ( this.storedCursor ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13235 this.document.find( "body" ).css( "cursor", this.storedCursor );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13236 this.storedStylesheet.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13237 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13238 if(this._storedOpacity) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13239 this.helper.css("opacity", this._storedOpacity);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13240 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13241 if(this._storedZIndex) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13242 this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13243 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13244
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13245 this.dragging = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13246 if(this.cancelHelperRemoval) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13247 if(!noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13248 this._trigger("beforeStop", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13249 for (i=0; i < delayedTriggers.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13250 delayedTriggers[i].call(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13251 } //Trigger all delayed events
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13252 this._trigger("stop", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13253 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13254
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13255 this.fromOutside = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13256 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13257 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13258
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13259 if(!noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13260 this._trigger("beforeStop", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13261 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13262
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13263 //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13264 this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13265
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13266 if(this.helper[0] !== this.currentItem[0]) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13267 this.helper.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13268 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13269 this.helper = null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13270
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13271 if(!noPropagation) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13272 for (i=0; i < delayedTriggers.length; i++) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13273 delayedTriggers[i].call(this, event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13274 } //Trigger all delayed events
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13275 this._trigger("stop", event, this._uiHash());
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13276 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13277
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13278 this.fromOutside = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13279 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13280
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13281 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13282
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13283 _trigger: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13284 if ($.Widget.prototype._trigger.apply(this, arguments) === false) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13285 this.cancel();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13286 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13287 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13288
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13289 _uiHash: function(_inst) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13290 var inst = _inst || this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13291 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13292 helper: inst.helper,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13293 placeholder: inst.placeholder || $([]),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13294 position: inst.position,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13295 originalPosition: inst.originalPosition,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13296 offset: inst.positionAbs,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13297 item: inst.currentItem,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13298 sender: _inst ? _inst.element : null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13299 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13300 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13301
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13302 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13303
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13304 })(jQuery);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13305 (function( $ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13306
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13307 function modifier( fn ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13308 return function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13309 var previous = this.element.val();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13310 fn.apply( this, arguments );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13311 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13312 if ( previous !== this.element.val() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13313 this._trigger( "change" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13314 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13315 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13316 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13317
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13318 $.widget( "ui.spinner", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13319 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13320 defaultElement: "<input>",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13321 widgetEventPrefix: "spin",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13322 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13323 culture: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13324 icons: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13325 down: "ui-icon-triangle-1-s",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13326 up: "ui-icon-triangle-1-n"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13327 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13328 incremental: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13329 max: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13330 min: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13331 numberFormat: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13332 page: 10,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13333 step: 1,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13334
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13335 change: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13336 spin: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13337 start: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13338 stop: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13339 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13340
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13341 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13342 // handle string values that need to be parsed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13343 this._setOption( "max", this.options.max );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13344 this._setOption( "min", this.options.min );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13345 this._setOption( "step", this.options.step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13346
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13347 // Only format if there is a value, prevents the field from being marked
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13348 // as invalid in Firefox, see #9573.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13349 if ( this.value() !== "" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13350 // Format the value, but don't constrain.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13351 this._value( this.element.val(), true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13352 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13353
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13354 this._draw();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13355 this._on( this._events );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13356 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13357
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13358 // turning off autocomplete prevents the browser from remembering the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13359 // value when navigating through history, so we re-enable autocomplete
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13360 // if the page is unloaded before the widget is destroyed. #7790
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13361 this._on( this.window, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13362 beforeunload: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13363 this.element.removeAttr( "autocomplete" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13364 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13365 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13366 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13367
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13368 _getCreateOptions: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13369 var options = {},
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13370 element = this.element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13371
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13372 $.each( [ "min", "max", "step" ], function( i, option ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13373 var value = element.attr( option );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13374 if ( value !== undefined && value.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13375 options[ option ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13376 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13377 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13378
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13379 return options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13380 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13381
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13382 _events: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13383 keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13384 if ( this._start( event ) && this._keydown( event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13385 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13386 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13387 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13388 keyup: "_stop",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13389 focus: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13390 this.previous = this.element.val();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13391 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13392 blur: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13393 if ( this.cancelBlur ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13394 delete this.cancelBlur;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13395 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13396 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13397
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13398 this._stop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13399 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13400 if ( this.previous !== this.element.val() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13401 this._trigger( "change", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13402 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13403 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13404 mousewheel: function( event, delta ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13405 if ( !delta ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13406 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13407 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13408 if ( !this.spinning && !this._start( event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13409 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13410 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13411
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13412 this._spin( (delta > 0 ? 1 : -1) * this.options.step, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13413 clearTimeout( this.mousewheelTimer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13414 this.mousewheelTimer = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13415 if ( this.spinning ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13416 this._stop( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13417 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13418 }, 100 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13419 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13420 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13421 "mousedown .ui-spinner-button": function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13422 var previous;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13423
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13424 // We never want the buttons to have focus; whenever the user is
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13425 // interacting with the spinner, the focus should be on the input.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13426 // If the input is focused then this.previous is properly set from
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13427 // when the input first received focus. If the input is not focused
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13428 // then we need to set this.previous based on the value before spinning.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13429 previous = this.element[0] === this.document[0].activeElement ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13430 this.previous : this.element.val();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13431 function checkFocus() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13432 var isActive = this.element[0] === this.document[0].activeElement;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13433 if ( !isActive ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13434 this.element.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13435 this.previous = previous;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13436 // support: IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13437 // IE sets focus asynchronously, so we need to check if focus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13438 // moved off of the input because the user clicked on the button.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13439 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13440 this.previous = previous;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13441 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13442 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13443 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13444
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13445 // ensure focus is on (or stays on) the text field
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13446 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13447 checkFocus.call( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13448
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13449 // support: IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13450 // IE doesn't prevent moving focus even with event.preventDefault()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13451 // so we set a flag to know when we should ignore the blur event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13452 // and check (again) if focus moved off of the input.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13453 this.cancelBlur = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13454 this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13455 delete this.cancelBlur;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13456 checkFocus.call( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13457 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13458
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13459 if ( this._start( event ) === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13460 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13461 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13462
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13463 this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13464 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13465 "mouseup .ui-spinner-button": "_stop",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13466 "mouseenter .ui-spinner-button": function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13467 // button will add ui-state-active if mouse was down while mouseleave and kept down
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13468 if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13469 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13470 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13471
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13472 if ( this._start( event ) === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13473 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13474 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13475 this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13476 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13477 // TODO: do we really want to consider this a stop?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13478 // shouldn't we just stop the repeater and wait until mouseup before
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13479 // we trigger the stop event?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13480 "mouseleave .ui-spinner-button": "_stop"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13481 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13482
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13483 _draw: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13484 var uiSpinner = this.uiSpinner = this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13485 .addClass( "ui-spinner-input" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13486 .attr( "autocomplete", "off" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13487 .wrap( this._uiSpinnerHtml() )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13488 .parent()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13489 // add buttons
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13490 .append( this._buttonHtml() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13491
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13492 this.element.attr( "role", "spinbutton" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13493
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13494 // button bindings
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13495 this.buttons = uiSpinner.find( ".ui-spinner-button" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13496 .attr( "tabIndex", -1 )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13497 .button()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13498 .removeClass( "ui-corner-all" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13499
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13500 // IE 6 doesn't understand height: 50% for the buttons
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13501 // unless the wrapper has an explicit height
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13502 if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13503 uiSpinner.height() > 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13504 uiSpinner.height( uiSpinner.height() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13505 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13506
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13507 // disable spinner if element was already disabled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13508 if ( this.options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13509 this.disable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13510 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13511 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13512
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13513 _keydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13514 var options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13515 keyCode = $.ui.keyCode;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13516
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13517 switch ( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13518 case keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13519 this._repeat( null, 1, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13520 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13521 case keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13522 this._repeat( null, -1, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13523 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13524 case keyCode.PAGE_UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13525 this._repeat( null, options.page, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13526 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13527 case keyCode.PAGE_DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13528 this._repeat( null, -options.page, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13529 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13530 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13531
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13532 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13533 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13535 _uiSpinnerHtml: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13536 return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13537 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13538
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13539 _buttonHtml: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13540 return "" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13541 "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13542 "<span class='ui-icon " + this.options.icons.up + "'>&#9650;</span>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13543 "</a>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13544 "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13545 "<span class='ui-icon " + this.options.icons.down + "'>&#9660;</span>" +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13546 "</a>";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13547 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13548
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13549 _start: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13550 if ( !this.spinning && this._trigger( "start", event ) === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13551 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13552 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13553
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13554 if ( !this.counter ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13555 this.counter = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13556 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13557 this.spinning = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13558 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13559 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13560
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13561 _repeat: function( i, steps, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13562 i = i || 500;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13563
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13564 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13565 this.timer = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13566 this._repeat( 40, steps, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13567 }, i );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13568
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13569 this._spin( steps * this.options.step, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13570 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13571
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13572 _spin: function( step, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13573 var value = this.value() || 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13574
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13575 if ( !this.counter ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13576 this.counter = 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13577 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13578
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13579 value = this._adjustValue( value + step * this._increment( this.counter ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13580
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13581 if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13582 this._value( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13583 this.counter++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13584 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13585 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13586
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13587 _increment: function( i ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13588 var incremental = this.options.incremental;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13589
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13590 if ( incremental ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13591 return $.isFunction( incremental ) ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13592 incremental( i ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13593 Math.floor( i*i*i/50000 - i*i/500 + 17*i/200 + 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13594 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13596 return 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13597 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13598
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13599 _precision: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13600 var precision = this._precisionOf( this.options.step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13601 if ( this.options.min !== null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13602 precision = Math.max( precision, this._precisionOf( this.options.min ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13603 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13604 return precision;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13605 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13606
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13607 _precisionOf: function( num ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13608 var str = num.toString(),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13609 decimal = str.indexOf( "." );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13610 return decimal === -1 ? 0 : str.length - decimal - 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13611 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13612
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13613 _adjustValue: function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13614 var base, aboveMin,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13615 options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13616
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13617 // make sure we're at a valid step
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13618 // - find out where we are relative to the base (min or 0)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13619 base = options.min !== null ? options.min : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13620 aboveMin = value - base;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13621 // - round to the nearest step
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13622 aboveMin = Math.round(aboveMin / options.step) * options.step;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13623 // - rounding is based on 0, so adjust back to our base
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13624 value = base + aboveMin;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13625
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13626 // fix precision from bad JS floating point math
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13627 value = parseFloat( value.toFixed( this._precision() ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13628
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13629 // clamp the value
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13630 if ( options.max !== null && value > options.max) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13631 return options.max;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13632 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13633 if ( options.min !== null && value < options.min ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13634 return options.min;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13635 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13636
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13637 return value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13638 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13639
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13640 _stop: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13641 if ( !this.spinning ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13642 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13643 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13644
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13645 clearTimeout( this.timer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13646 clearTimeout( this.mousewheelTimer );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13647 this.counter = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13648 this.spinning = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13649 this._trigger( "stop", event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13650 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13651
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13652 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13653 if ( key === "culture" || key === "numberFormat" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13654 var prevValue = this._parse( this.element.val() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13655 this.options[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13656 this.element.val( this._format( prevValue ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13657 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13658 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13659
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13660 if ( key === "max" || key === "min" || key === "step" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13661 if ( typeof value === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13662 value = this._parse( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13663 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13664 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13665 if ( key === "icons" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13666 this.buttons.first().find( ".ui-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13667 .removeClass( this.options.icons.up )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13668 .addClass( value.up );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13669 this.buttons.last().find( ".ui-icon" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13670 .removeClass( this.options.icons.down )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13671 .addClass( value.down );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13672 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13673
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13674 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13675
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13676 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13677 if ( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13678 this.element.prop( "disabled", true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13679 this.buttons.button( "disable" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13680 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13681 this.element.prop( "disabled", false );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13682 this.buttons.button( "enable" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13683 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13684 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13685 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13686
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13687 _setOptions: modifier(function( options ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13688 this._super( options );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13689 this._value( this.element.val() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13690 }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13691
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13692 _parse: function( val ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13693 if ( typeof val === "string" && val !== "" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13694 val = window.Globalize && this.options.numberFormat ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13695 Globalize.parseFloat( val, 10, this.options.culture ) : +val;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13696 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13697 return val === "" || isNaN( val ) ? null : val;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13698 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13699
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13700 _format: function( value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13701 if ( value === "" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13702 return "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13703 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13704 return window.Globalize && this.options.numberFormat ?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13705 Globalize.format( value, this.options.numberFormat, this.options.culture ) :
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13706 value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13707 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13708
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13709 _refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13710 this.element.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13711 "aria-valuemin": this.options.min,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13712 "aria-valuemax": this.options.max,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13713 // TODO: what should we do with values that can't be parsed?
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13714 "aria-valuenow": this._parse( this.element.val() )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13715 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13716 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13717
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13718 // update the value without triggering change
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13719 _value: function( value, allowAny ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13720 var parsed;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13721 if ( value !== "" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13722 parsed = this._parse( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13723 if ( parsed !== null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13724 if ( !allowAny ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13725 parsed = this._adjustValue( parsed );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13726 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13727 value = this._format( parsed );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13728 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13729 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13730 this.element.val( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13731 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13732 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13733
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13734 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13735 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13736 .removeClass( "ui-spinner-input" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13737 .prop( "disabled", false )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13738 .removeAttr( "autocomplete" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13739 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13740 .removeAttr( "aria-valuemin" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13741 .removeAttr( "aria-valuemax" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13742 .removeAttr( "aria-valuenow" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13743 this.uiSpinner.replaceWith( this.element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13744 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13745
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13746 stepUp: modifier(function( steps ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13747 this._stepUp( steps );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13748 }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13749 _stepUp: function( steps ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13750 if ( this._start() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13751 this._spin( (steps || 1) * this.options.step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13752 this._stop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13753 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13754 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13755
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13756 stepDown: modifier(function( steps ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13757 this._stepDown( steps );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13758 }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13759 _stepDown: function( steps ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13760 if ( this._start() ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13761 this._spin( (steps || 1) * -this.options.step );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13762 this._stop();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13763 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13764 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13765
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13766 pageUp: modifier(function( pages ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13767 this._stepUp( (pages || 1) * this.options.page );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13768 }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13769
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13770 pageDown: modifier(function( pages ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13771 this._stepDown( (pages || 1) * this.options.page );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13772 }),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13773
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13774 value: function( newVal ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13775 if ( !arguments.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13776 return this._parse( this.element.val() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13777 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13778 modifier( this._value ).call( this, newVal );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13779 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13780
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13781 widget: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13782 return this.uiSpinner;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13783 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13784 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13785
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13786 }( jQuery ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13787 (function( $, undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13788
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13789 var tabId = 0,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13790 rhash = /#.*$/;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13791
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13792 function getNextTabId() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13793 return ++tabId;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13794 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13795
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13796 function isLocal( anchor ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13797 // support: IE7
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13798 // IE7 doesn't normalize the href property when set via script (#9317)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13799 anchor = anchor.cloneNode( false );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13800
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13801 return anchor.hash.length > 1 &&
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13802 decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13803 decodeURIComponent( location.href.replace( rhash, "" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13804 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13805
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13806 $.widget( "ui.tabs", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13807 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13808 delay: 300,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13809 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13810 active: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13811 collapsible: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13812 event: "click",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13813 heightStyle: "content",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13814 hide: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13815 show: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13816
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13817 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13818 activate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13819 beforeActivate: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13820 beforeLoad: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13821 load: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13822 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13824 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13825 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13826 options = this.options;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13827
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13828 this.running = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13829
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13830 this.element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13831 .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13832 .toggleClass( "ui-tabs-collapsible", options.collapsible )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13833 // Prevent users from focusing disabled tabs via click
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13834 .delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13835 if ( $( this ).is( ".ui-state-disabled" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13836 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13837 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13838 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13839 // support: IE <9
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13840 // Preventing the default action in mousedown doesn't prevent IE
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13841 // from focusing the element, so if the anchor gets focused, blur.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13842 // We don't have to worry about focusing the previously focused
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13843 // element since clicking on a non-focusable element should focus
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13844 // the body anyway.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13845 .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13846 if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13847 this.blur();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13848 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13849 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13850
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13851 this._processTabs();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13852 options.active = this._initialActive();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13853
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13854 // Take disabling tabs via class attribute from HTML
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13855 // into account and update option properly.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13856 if ( $.isArray( options.disabled ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13857 options.disabled = $.unique( options.disabled.concat(
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13858 $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13859 return that.tabs.index( li );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13860 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13861 ) ).sort();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13862 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13863
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13864 // check for length avoids error when initializing empty list
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13865 if ( this.options.active !== false && this.anchors.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13866 this.active = this._findActive( options.active );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13867 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13868 this.active = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13869 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13870
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13871 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13872
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13873 if ( this.active.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13874 this.load( options.active );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13875 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13876 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13877
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13878 _initialActive: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13879 var active = this.options.active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13880 collapsible = this.options.collapsible,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13881 locationHash = location.hash.substring( 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13882
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13883 if ( active === null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13884 // check the fragment identifier in the URL
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13885 if ( locationHash ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13886 this.tabs.each(function( i, tab ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13887 if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13888 active = i;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13889 return false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13890 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13891 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13892 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13893
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13894 // check for a tab marked active via a class
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13895 if ( active === null ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13896 active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13897 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13898
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13899 // no active tab, set to false
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13900 if ( active === null || active === -1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13901 active = this.tabs.length ? 0 : false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13902 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13903 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13904
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13905 // handle numbers: negative, out of range
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13906 if ( active !== false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13907 active = this.tabs.index( this.tabs.eq( active ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13908 if ( active === -1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13909 active = collapsible ? false : 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13910 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13911 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13912
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13913 // don't allow collapsible: false and active: false
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13914 if ( !collapsible && active === false && this.anchors.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13915 active = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13916 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13917
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13918 return active;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13919 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13920
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13921 _getCreateEventData: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13922 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13923 tab: this.active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13924 panel: !this.active.length ? $() : this._getPanelForTab( this.active )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13925 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13926 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13927
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13928 _tabKeydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13929 var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13930 selectedIndex = this.tabs.index( focusedTab ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13931 goingForward = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13932
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13933 if ( this._handlePageNav( event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13934 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13935 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13936
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13937 switch ( event.keyCode ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13938 case $.ui.keyCode.RIGHT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13939 case $.ui.keyCode.DOWN:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13940 selectedIndex++;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13941 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13942 case $.ui.keyCode.UP:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13943 case $.ui.keyCode.LEFT:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13944 goingForward = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13945 selectedIndex--;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13946 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13947 case $.ui.keyCode.END:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13948 selectedIndex = this.anchors.length - 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13949 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13950 case $.ui.keyCode.HOME:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13951 selectedIndex = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13952 break;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13953 case $.ui.keyCode.SPACE:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13954 // Activate only, no collapsing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13955 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13956 clearTimeout( this.activating );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13957 this._activate( selectedIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13958 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13959 case $.ui.keyCode.ENTER:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13960 // Toggle (cancel delayed activation, allow collapsing)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13961 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13962 clearTimeout( this.activating );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13963 // Determine if we should collapse or activate
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13964 this._activate( selectedIndex === this.options.active ? false : selectedIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13965 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13966 default:
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13967 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13968 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13969
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13970 // Focus the appropriate tab, based on which key was pressed
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13971 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13972 clearTimeout( this.activating );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13973 selectedIndex = this._focusNextTab( selectedIndex, goingForward );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13974
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13975 // Navigating with control key will prevent automatic activation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13976 if ( !event.ctrlKey ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13977 // Update aria-selected immediately so that AT think the tab is already selected.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13978 // Otherwise AT may confuse the user by stating that they need to activate the tab,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13979 // but the tab will already be activated by the time the announcement finishes.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13980 focusedTab.attr( "aria-selected", "false" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13981 this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13982
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13983 this.activating = this._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13984 this.option( "active", selectedIndex );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13985 }, this.delay );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13986 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13987 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13988
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13989 _panelKeydown: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13990 if ( this._handlePageNav( event ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13991 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13992 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13993
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13994 // Ctrl+up moves focus to the current tab
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13995 if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13996 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13997 this.active.focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13998 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13999 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14000
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14001 // Alt+page up/down moves focus to the previous/next tab (and activates)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14002 _handlePageNav: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14003 if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14004 this._activate( this._focusNextTab( this.options.active - 1, false ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14005 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14006 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14007 if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14008 this._activate( this._focusNextTab( this.options.active + 1, true ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14009 return true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14010 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14011 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14012
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14013 _findNextTab: function( index, goingForward ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14014 var lastTabIndex = this.tabs.length - 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14015
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14016 function constrain() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14017 if ( index > lastTabIndex ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14018 index = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14019 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14020 if ( index < 0 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14021 index = lastTabIndex;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14022 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14023 return index;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14024 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14025
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14026 while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14027 index = goingForward ? index + 1 : index - 1;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14028 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14029
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14030 return index;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14031 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14032
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14033 _focusNextTab: function( index, goingForward ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14034 index = this._findNextTab( index, goingForward );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14035 this.tabs.eq( index ).focus();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14036 return index;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14037 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14038
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14039 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14040 if ( key === "active" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14041 // _activate() will handle invalid values and update this.options
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14042 this._activate( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14043 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14044 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14045
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14046 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14047 // don't use the widget factory's disabled handling
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14048 this._setupDisabled( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14049 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14050 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14051
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14052 this._super( key, value);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14053
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14054 if ( key === "collapsible" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14055 this.element.toggleClass( "ui-tabs-collapsible", value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14056 // Setting collapsible: false while collapsed; open first panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14057 if ( !value && this.options.active === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14058 this._activate( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14059 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14060 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14061
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14062 if ( key === "event" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14063 this._setupEvents( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14064 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14065
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14066 if ( key === "heightStyle" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14067 this._setupHeightStyle( value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14068 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14069 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14070
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14071 _tabId: function( tab ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14072 return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14073 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14074
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14075 _sanitizeSelector: function( hash ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14076 return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14077 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14078
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14079 refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14080 var options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14081 lis = this.tablist.children( ":has(a[href])" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14082
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14083 // get disabled tabs from class attribute from HTML
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14084 // this will get converted to a boolean if needed in _refresh()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14085 options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14086 return lis.index( tab );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14087 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14088
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14089 this._processTabs();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14090
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14091 // was collapsed or no tabs
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14092 if ( options.active === false || !this.anchors.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14093 options.active = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14094 this.active = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14095 // was active, but active tab is gone
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14096 } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14097 // all remaining tabs are disabled
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14098 if ( this.tabs.length === options.disabled.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14099 options.active = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14100 this.active = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14101 // activate previous tab
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14102 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14103 this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14104 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14105 // was active, active tab still exists
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14106 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14107 // make sure active index is correct
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14108 options.active = this.tabs.index( this.active );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14109 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14110
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14111 this._refresh();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14112 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14113
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14114 _refresh: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14115 this._setupDisabled( this.options.disabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14116 this._setupEvents( this.options.event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14117 this._setupHeightStyle( this.options.heightStyle );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14118
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14119 this.tabs.not( this.active ).attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14120 "aria-selected": "false",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14121 tabIndex: -1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14122 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14123 this.panels.not( this._getPanelForTab( this.active ) )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14124 .hide()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14125 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14126 "aria-expanded": "false",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14127 "aria-hidden": "true"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14128 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14129
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14130 // Make sure one tab is in the tab order
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14131 if ( !this.active.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14132 this.tabs.eq( 0 ).attr( "tabIndex", 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14133 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14134 this.active
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14135 .addClass( "ui-tabs-active ui-state-active" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14136 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14137 "aria-selected": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14138 tabIndex: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14139 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14140 this._getPanelForTab( this.active )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14141 .show()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14142 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14143 "aria-expanded": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14144 "aria-hidden": "false"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14145 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14146 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14147 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14148
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14149 _processTabs: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14150 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14151
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14152 this.tablist = this._getList()
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14153 .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14154 .attr( "role", "tablist" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14155
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14156 this.tabs = this.tablist.find( "> li:has(a[href])" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14157 .addClass( "ui-state-default ui-corner-top" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14158 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14159 role: "tab",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14160 tabIndex: -1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14161 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14162
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14163 this.anchors = this.tabs.map(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14164 return $( "a", this )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14165 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14166 .addClass( "ui-tabs-anchor" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14167 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14168 role: "presentation",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14169 tabIndex: -1
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14170 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14171
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14172 this.panels = $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14173
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14174 this.anchors.each(function( i, anchor ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14175 var selector, panel, panelId,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14176 anchorId = $( anchor ).uniqueId().attr( "id" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14177 tab = $( anchor ).closest( "li" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14178 originalAriaControls = tab.attr( "aria-controls" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14179
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14180 // inline tab
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14181 if ( isLocal( anchor ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14182 selector = anchor.hash;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14183 panel = that.element.find( that._sanitizeSelector( selector ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14184 // remote tab
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14185 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14186 panelId = that._tabId( tab );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14187 selector = "#" + panelId;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14188 panel = that.element.find( selector );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14189 if ( !panel.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14190 panel = that._createPanel( panelId );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14191 panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14192 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14193 panel.attr( "aria-live", "polite" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14194 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14195
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14196 if ( panel.length) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14197 that.panels = that.panels.add( panel );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14198 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14199 if ( originalAriaControls ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14200 tab.data( "ui-tabs-aria-controls", originalAriaControls );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14201 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14202 tab.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14203 "aria-controls": selector.substring( 1 ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14204 "aria-labelledby": anchorId
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14205 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14206 panel.attr( "aria-labelledby", anchorId );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14207 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14208
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14209 this.panels
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14210 .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14211 .attr( "role", "tabpanel" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14212 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14213
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14214 // allow overriding how to find the list for rare usage scenarios (#7715)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14215 _getList: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14216 return this.tablist || this.element.find( "ol,ul" ).eq( 0 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14217 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14218
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14219 _createPanel: function( id ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14220 return $( "<div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14221 .attr( "id", id )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14222 .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14223 .data( "ui-tabs-destroy", true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14224 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14225
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14226 _setupDisabled: function( disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14227 if ( $.isArray( disabled ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14228 if ( !disabled.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14229 disabled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14230 } else if ( disabled.length === this.anchors.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14231 disabled = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14232 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14233 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14234
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14235 // disable tabs
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14236 for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14237 if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14238 $( li )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14239 .addClass( "ui-state-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14240 .attr( "aria-disabled", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14241 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14242 $( li )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14243 .removeClass( "ui-state-disabled" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14244 .removeAttr( "aria-disabled" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14245 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14246 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14247
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14248 this.options.disabled = disabled;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14249 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14250
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14251 _setupEvents: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14252 var events = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14253 click: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14254 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14255 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14256 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14257 if ( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14258 $.each( event.split(" "), function( index, eventName ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14259 events[ eventName ] = "_eventHandler";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14260 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14261 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14262
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14263 this._off( this.anchors.add( this.tabs ).add( this.panels ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14264 this._on( this.anchors, events );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14265 this._on( this.tabs, { keydown: "_tabKeydown" } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14266 this._on( this.panels, { keydown: "_panelKeydown" } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14267
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14268 this._focusable( this.tabs );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14269 this._hoverable( this.tabs );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14270 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14271
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14272 _setupHeightStyle: function( heightStyle ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14273 var maxHeight,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14274 parent = this.element.parent();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14275
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14276 if ( heightStyle === "fill" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14277 maxHeight = parent.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14278 maxHeight -= this.element.outerHeight() - this.element.height();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14279
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14280 this.element.siblings( ":visible" ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14281 var elem = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14282 position = elem.css( "position" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14283
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14284 if ( position === "absolute" || position === "fixed" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14285 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14286 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14287 maxHeight -= elem.outerHeight( true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14288 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14289
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14290 this.element.children().not( this.panels ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14291 maxHeight -= $( this ).outerHeight( true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14292 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14293
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14294 this.panels.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14295 $( this ).height( Math.max( 0, maxHeight -
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14296 $( this ).innerHeight() + $( this ).height() ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14297 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14298 .css( "overflow", "auto" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14299 } else if ( heightStyle === "auto" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14300 maxHeight = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14301 this.panels.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14302 maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14303 }).height( maxHeight );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14304 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14305 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14306
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14307 _eventHandler: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14308 var options = this.options,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14309 active = this.active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14310 anchor = $( event.currentTarget ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14311 tab = anchor.closest( "li" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14312 clickedIsActive = tab[ 0 ] === active[ 0 ],
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14313 collapsing = clickedIsActive && options.collapsible,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14314 toShow = collapsing ? $() : this._getPanelForTab( tab ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14315 toHide = !active.length ? $() : this._getPanelForTab( active ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14316 eventData = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14317 oldTab: active,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14318 oldPanel: toHide,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14319 newTab: collapsing ? $() : tab,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14320 newPanel: toShow
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14321 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14322
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14323 event.preventDefault();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14324
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14325 if ( tab.hasClass( "ui-state-disabled" ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14326 // tab is already loading
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14327 tab.hasClass( "ui-tabs-loading" ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14328 // can't switch durning an animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14329 this.running ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14330 // click on active header, but not collapsible
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14331 ( clickedIsActive && !options.collapsible ) ||
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14332 // allow canceling activation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14333 ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14334 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14335 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14336
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14337 options.active = collapsing ? false : this.tabs.index( tab );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14338
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14339 this.active = clickedIsActive ? $() : tab;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14340 if ( this.xhr ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14341 this.xhr.abort();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14342 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14343
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14344 if ( !toHide.length && !toShow.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14345 $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14346 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14347
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14348 if ( toShow.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14349 this.load( this.tabs.index( tab ), event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14350 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14351 this._toggle( event, eventData );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14352 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14353
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14354 // handles show/hide for selecting tabs
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14355 _toggle: function( event, eventData ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14356 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14357 toShow = eventData.newPanel,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14358 toHide = eventData.oldPanel;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14359
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14360 this.running = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14361
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14362 function complete() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14363 that.running = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14364 that._trigger( "activate", event, eventData );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14365 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14366
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14367 function show() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14368 eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14369
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14370 if ( toShow.length && that.options.show ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14371 that._show( toShow, that.options.show, complete );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14372 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14373 toShow.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14374 complete();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14375 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14376 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14377
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14378 // start out by hiding, then showing, then completing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14379 if ( toHide.length && this.options.hide ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14380 this._hide( toHide, this.options.hide, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14381 eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14382 show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14383 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14384 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14385 eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14386 toHide.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14387 show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14388 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14389
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14390 toHide.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14391 "aria-expanded": "false",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14392 "aria-hidden": "true"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14393 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14394 eventData.oldTab.attr( "aria-selected", "false" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14395 // If we're switching tabs, remove the old tab from the tab order.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14396 // If we're opening from collapsed state, remove the previous tab from the tab order.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14397 // If we're collapsing, then keep the collapsing tab in the tab order.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14398 if ( toShow.length && toHide.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14399 eventData.oldTab.attr( "tabIndex", -1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14400 } else if ( toShow.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14401 this.tabs.filter(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14402 return $( this ).attr( "tabIndex" ) === 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14403 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14404 .attr( "tabIndex", -1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14405 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14406
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14407 toShow.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14408 "aria-expanded": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14409 "aria-hidden": "false"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14410 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14411 eventData.newTab.attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14412 "aria-selected": "true",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14413 tabIndex: 0
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14414 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14415 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14416
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14417 _activate: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14418 var anchor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14419 active = this._findActive( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14420
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14421 // trying to activate the already active panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14422 if ( active[ 0 ] === this.active[ 0 ] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14423 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14424 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14425
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14426 // trying to collapse, simulate a click on the current active header
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14427 if ( !active.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14428 active = this.active;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14429 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14430
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14431 anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14432 this._eventHandler({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14433 target: anchor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14434 currentTarget: anchor,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14435 preventDefault: $.noop
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14436 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14437 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14438
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14439 _findActive: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14440 return index === false ? $() : this.tabs.eq( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14441 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14442
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14443 _getIndex: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14444 // meta-function to give users option to provide a href string instead of a numerical index.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14445 if ( typeof index === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14446 index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14447 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14448
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14449 return index;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14450 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14451
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14452 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14453 if ( this.xhr ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14454 this.xhr.abort();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14455 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14456
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14457 this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14458
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14459 this.tablist
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14460 .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14461 .removeAttr( "role" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14462
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14463 this.anchors
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14464 .removeClass( "ui-tabs-anchor" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14465 .removeAttr( "role" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14466 .removeAttr( "tabIndex" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14467 .removeUniqueId();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14468
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14469 this.tabs.add( this.panels ).each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14470 if ( $.data( this, "ui-tabs-destroy" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14471 $( this ).remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14472 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14473 $( this )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14474 .removeClass( "ui-state-default ui-state-active ui-state-disabled " +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14475 "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14476 .removeAttr( "tabIndex" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14477 .removeAttr( "aria-live" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14478 .removeAttr( "aria-busy" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14479 .removeAttr( "aria-selected" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14480 .removeAttr( "aria-labelledby" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14481 .removeAttr( "aria-hidden" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14482 .removeAttr( "aria-expanded" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14483 .removeAttr( "role" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14484 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14485 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14486
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14487 this.tabs.each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14488 var li = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14489 prev = li.data( "ui-tabs-aria-controls" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14490 if ( prev ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14491 li
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14492 .attr( "aria-controls", prev )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14493 .removeData( "ui-tabs-aria-controls" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14494 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14495 li.removeAttr( "aria-controls" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14496 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14497 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14498
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14499 this.panels.show();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14500
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14501 if ( this.options.heightStyle !== "content" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14502 this.panels.css( "height", "" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14503 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14504 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14505
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14506 enable: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14507 var disabled = this.options.disabled;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14508 if ( disabled === false ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14509 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14510 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14511
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14512 if ( index === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14513 disabled = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14514 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14515 index = this._getIndex( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14516 if ( $.isArray( disabled ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14517 disabled = $.map( disabled, function( num ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14518 return num !== index ? num : null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14519 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14520 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14521 disabled = $.map( this.tabs, function( li, num ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14522 return num !== index ? num : null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14523 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14524 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14525 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14526 this._setupDisabled( disabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14527 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14528
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14529 disable: function( index ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14530 var disabled = this.options.disabled;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14531 if ( disabled === true ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14532 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14533 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14534
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14535 if ( index === undefined ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14536 disabled = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14537 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14538 index = this._getIndex( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14539 if ( $.inArray( index, disabled ) !== -1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14540 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14541 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14542 if ( $.isArray( disabled ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14543 disabled = $.merge( [ index ], disabled ).sort();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14544 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14545 disabled = [ index ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14546 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14547 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14548 this._setupDisabled( disabled );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14549 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14550
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14551 load: function( index, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14552 index = this._getIndex( index );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14553 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14554 tab = this.tabs.eq( index ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14555 anchor = tab.find( ".ui-tabs-anchor" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14556 panel = this._getPanelForTab( tab ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14557 eventData = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14558 tab: tab,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14559 panel: panel
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14560 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14561
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14562 // not remote
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14563 if ( isLocal( anchor[ 0 ] ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14564 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14565 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14566
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14567 this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14568
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14569 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14570 // jQuery <1.8 returns false if the request is canceled in beforeSend,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14571 // but as of 1.8, $.ajax() always returns a jqXHR object.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14572 if ( this.xhr && this.xhr.statusText !== "canceled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14573 tab.addClass( "ui-tabs-loading" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14574 panel.attr( "aria-busy", "true" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14575
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14576 this.xhr
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14577 .success(function( response ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14578 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14579 // http://bugs.jquery.com/ticket/11778
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14580 setTimeout(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14581 panel.html( response );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14582 that._trigger( "load", event, eventData );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14583 }, 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14584 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14585 .complete(function( jqXHR, status ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14586 // support: jQuery <1.8
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14587 // http://bugs.jquery.com/ticket/11778
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14588 setTimeout(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14589 if ( status === "abort" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14590 that.panels.stop( false, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14591 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14592
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14593 tab.removeClass( "ui-tabs-loading" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14594 panel.removeAttr( "aria-busy" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14595
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14596 if ( jqXHR === that.xhr ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14597 delete that.xhr;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14598 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14599 }, 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14600 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14601 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14602 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14603
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14604 _ajaxSettings: function( anchor, event, eventData ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14605 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14606 return {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14607 url: anchor.attr( "href" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14608 beforeSend: function( jqXHR, settings ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14609 return that._trigger( "beforeLoad", event,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14610 $.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14611 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14612 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14613 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14614
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14615 _getPanelForTab: function( tab ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14616 var id = $( tab ).attr( "aria-controls" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14617 return this.element.find( this._sanitizeSelector( "#" + id ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14618 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14619 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14620
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14621 })( jQuery );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14622 (function( $ ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14623
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14624 var increments = 0;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14625
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14626 function addDescribedBy( elem, id ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14627 var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14628 describedby.push( id );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14629 elem
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14630 .data( "ui-tooltip-id", id )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14631 .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14632 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14633
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14634 function removeDescribedBy( elem ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14635 var id = elem.data( "ui-tooltip-id" ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14636 describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14637 index = $.inArray( id, describedby );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14638 if ( index !== -1 ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14639 describedby.splice( index, 1 );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14640 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14641
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14642 elem.removeData( "ui-tooltip-id" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14643 describedby = $.trim( describedby.join( " " ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14644 if ( describedby ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14645 elem.attr( "aria-describedby", describedby );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14646 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14647 elem.removeAttr( "aria-describedby" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14648 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14649 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14650
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14651 $.widget( "ui.tooltip", {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14652 version: "1.10.4",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14653 options: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14654 content: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14655 // support: IE<9, Opera in jQuery <1.7
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14656 // .text() can't accept undefined, so coerce to a string
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14657 var title = $( this ).attr( "title" ) || "";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14658 // Escape title, since we're going from an attribute to raw HTML
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14659 return $( "<a>" ).text( title ).html();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14660 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14661 hide: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14662 // Disabled elements have inconsistent behavior across browsers (#8661)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14663 items: "[title]:not([disabled])",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14664 position: {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14665 my: "left top+15",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14666 at: "left bottom",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14667 collision: "flipfit flip"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14668 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14669 show: true,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14670 tooltipClass: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14671 track: false,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14672
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14673 // callbacks
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14674 close: null,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14675 open: null
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14676 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14677
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14678 _create: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14679 this._on({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14680 mouseover: "open",
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14681 focusin: "open"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14682 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14683
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14684 // IDs of generated tooltips, needed for destroy
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14685 this.tooltips = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14686 // IDs of parent tooltips where we removed the title attribute
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14687 this.parents = {};
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14688
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14689 if ( this.options.disabled ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14690 this._disable();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14691 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14692 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14693
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14694 _setOption: function( key, value ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14695 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14696
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14697 if ( key === "disabled" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14698 this[ value ? "_disable" : "_enable" ]();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14699 this.options[ key ] = value;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14700 // disable element style changes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14701 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14702 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14703
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14704 this._super( key, value );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14705
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14706 if ( key === "content" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14707 $.each( this.tooltips, function( id, element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14708 that._updateContent( element );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14709 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14710 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14711 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14712
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14713 _disable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14714 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14715
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14716 // close open tooltips
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14717 $.each( this.tooltips, function( id, element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14718 var event = $.Event( "blur" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14719 event.target = event.currentTarget = element[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14720 that.close( event, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14721 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14722
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14723 // remove title attributes to prevent native tooltips
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14724 this.element.find( this.options.items ).addBack().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14725 var element = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14726 if ( element.is( "[title]" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14727 element
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14728 .data( "ui-tooltip-title", element.attr( "title" ) )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14729 .attr( "title", "" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14730 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14731 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14732 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14733
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14734 _enable: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14735 // restore title attributes
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14736 this.element.find( this.options.items ).addBack().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14737 var element = $( this );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14738 if ( element.data( "ui-tooltip-title" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14739 element.attr( "title", element.data( "ui-tooltip-title" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14740 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14741 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14742 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14743
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14744 open: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14745 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14746 target = $( event ? event.target : this.element )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14747 // we need closest here due to mouseover bubbling,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14748 // but always pointing at the same event target
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14749 .closest( this.options.items );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14750
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14751 // No element to show a tooltip for or the tooltip is already open
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14752 if ( !target.length || target.data( "ui-tooltip-id" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14753 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14754 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14755
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14756 if ( target.attr( "title" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14757 target.data( "ui-tooltip-title", target.attr( "title" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14758 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14759
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14760 target.data( "ui-tooltip-open", true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14761
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14762 // kill parent tooltips, custom or native, for hover
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14763 if ( event && event.type === "mouseover" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14764 target.parents().each(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14765 var parent = $( this ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14766 blurEvent;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14767 if ( parent.data( "ui-tooltip-open" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14768 blurEvent = $.Event( "blur" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14769 blurEvent.target = blurEvent.currentTarget = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14770 that.close( blurEvent, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14771 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14772 if ( parent.attr( "title" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14773 parent.uniqueId();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14774 that.parents[ this.id ] = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14775 element: this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14776 title: parent.attr( "title" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14777 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14778 parent.attr( "title", "" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14779 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14780 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14781 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14782
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14783 this._updateContent( target, event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14784 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14785
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14786 _updateContent: function( target, event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14787 var content,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14788 contentOption = this.options.content,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14789 that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14790 eventType = event ? event.type : null;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14791
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14792 if ( typeof contentOption === "string" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14793 return this._open( event, target, contentOption );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14794 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14795
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14796 content = contentOption.call( target[0], function( response ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14797 // ignore async response if tooltip was closed already
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14798 if ( !target.data( "ui-tooltip-open" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14799 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14800 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14801 // IE may instantly serve a cached response for ajax requests
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14802 // delay this call to _open so the other call to _open runs first
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14803 that._delay(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14804 // jQuery creates a special event for focusin when it doesn't
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14805 // exist natively. To improve performance, the native event
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14806 // object is reused and the type is changed. Therefore, we can't
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14807 // rely on the type being correct after the event finished
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14808 // bubbling, so we set it back to the previous value. (#8740)
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14809 if ( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14810 event.type = eventType;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14811 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14812 this._open( event, target, response );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14813 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14814 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14815 if ( content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14816 this._open( event, target, content );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14817 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14818 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14819
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14820 _open: function( event, target, content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14821 var tooltip, events, delayedShow,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14822 positionOption = $.extend( {}, this.options.position );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14823
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14824 if ( !content ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14825 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14826 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14827
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14828 // Content can be updated multiple times. If the tooltip already
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14829 // exists, then just update the content and bail.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14830 tooltip = this._find( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14831 if ( tooltip.length ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14832 tooltip.find( ".ui-tooltip-content" ).html( content );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14833 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14834 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14835
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14836 // if we have a title, clear it to prevent the native tooltip
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14837 // we have to check first to avoid defining a title if none exists
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14838 // (we don't want to cause an element to start matching [title])
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14839 //
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14840 // We use removeAttr only for key events, to allow IE to export the correct
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14841 // accessible attributes. For mouse events, set to empty string to avoid
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14842 // native tooltip showing up (happens only when removing inside mouseover).
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14843 if ( target.is( "[title]" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14844 if ( event && event.type === "mouseover" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14845 target.attr( "title", "" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14846 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14847 target.removeAttr( "title" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14848 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14849 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14850
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14851 tooltip = this._tooltip( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14852 addDescribedBy( target, tooltip.attr( "id" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14853 tooltip.find( ".ui-tooltip-content" ).html( content );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14854
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14855 function position( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14856 positionOption.of = event;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14857 if ( tooltip.is( ":hidden" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14858 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14859 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14860 tooltip.position( positionOption );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14861 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14862 if ( this.options.track && event && /^mouse/.test( event.type ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14863 this._on( this.document, {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14864 mousemove: position
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14865 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14866 // trigger once to override element-relative positioning
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14867 position( event );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14868 } else {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14869 tooltip.position( $.extend({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14870 of: target
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14871 }, this.options.position ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14872 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14873
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14874 tooltip.hide();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14875
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14876 this._show( tooltip, this.options.show );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14877 // Handle tracking tooltips that are shown with a delay (#8644). As soon
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14878 // as the tooltip is visible, position the tooltip using the most recent
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14879 // event.
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14880 if ( this.options.show && this.options.show.delay ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14881 delayedShow = this.delayedShow = setInterval(function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14882 if ( tooltip.is( ":visible" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14883 position( positionOption.of );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14884 clearInterval( delayedShow );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14885 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14886 }, $.fx.interval );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14887 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14888
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14889 this._trigger( "open", event, { tooltip: tooltip } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14890
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14891 events = {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14892 keyup: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14893 if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14894 var fakeEvent = $.Event(event);
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14895 fakeEvent.currentTarget = target[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14896 this.close( fakeEvent, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14897 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14898 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14899 remove: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14900 this._removeTooltip( tooltip );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14901 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14902 };
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14903 if ( !event || event.type === "mouseover" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14904 events.mouseleave = "close";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14905 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14906 if ( !event || event.type === "focusin" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14907 events.focusout = "close";
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14908 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14909 this._on( true, target, events );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14910 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14911
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14912 close: function( event ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14913 var that = this,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14914 target = $( event ? event.currentTarget : this.element ),
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14915 tooltip = this._find( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14916
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14917 // disabling closes the tooltip, so we need to track when we're closing
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14918 // to avoid an infinite loop in case the tooltip becomes disabled on close
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14919 if ( this.closing ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14920 return;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14921 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14922
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14923 // Clear the interval for delayed tracking tooltips
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14924 clearInterval( this.delayedShow );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14925
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14926 // only set title if we had one before (see comment in _open())
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14927 if ( target.data( "ui-tooltip-title" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14928 target.attr( "title", target.data( "ui-tooltip-title" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14929 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14930
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14931 removeDescribedBy( target );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14932
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14933 tooltip.stop( true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14934 this._hide( tooltip, this.options.hide, function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14935 that._removeTooltip( $( this ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14936 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14937
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14938 target.removeData( "ui-tooltip-open" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14939 this._off( target, "mouseleave focusout keyup" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14940 // Remove 'remove' binding only on delegated targets
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14941 if ( target[0] !== this.element[0] ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14942 this._off( target, "remove" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14943 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14944 this._off( this.document, "mousemove" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14945
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14946 if ( event && event.type === "mouseleave" ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14947 $.each( this.parents, function( id, parent ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14948 $( parent.element ).attr( "title", parent.title );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14949 delete that.parents[ id ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14950 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14951 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14952
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14953 this.closing = true;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14954 this._trigger( "close", event, { tooltip: tooltip } );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14955 this.closing = false;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14956 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14957
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14958 _tooltip: function( element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14959 var id = "ui-tooltip-" + increments++,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14960 tooltip = $( "<div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14961 .attr({
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14962 id: id,
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14963 role: "tooltip"
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14964 })
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14965 .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " +
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14966 ( this.options.tooltipClass || "" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14967 $( "<div>" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14968 .addClass( "ui-tooltip-content" )
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14969 .appendTo( tooltip );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14970 tooltip.appendTo( this.document[0].body );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14971 this.tooltips[ id ] = element;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14972 return tooltip;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14973 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14974
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14975 _find: function( target ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14976 var id = target.data( "ui-tooltip-id" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14977 return id ? $( "#" + id ) : $();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14978 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14979
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14980 _removeTooltip: function( tooltip ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14981 tooltip.remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14982 delete this.tooltips[ tooltip.attr( "id" ) ];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14983 },
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14984
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14985 _destroy: function() {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14986 var that = this;
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14987
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14988 // close open tooltips
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14989 $.each( this.tooltips, function( id, element ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14990 // Delegate to close method to handle common cleanup
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14991 var event = $.Event( "blur" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14992 event.target = event.currentTarget = element[0];
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14993 that.close( event, true );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14994
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14995 // Remove immediately; destroying an open tooltip doesn't use the
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14996 // hide animation
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14997 $( "#" + id ).remove();
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14998
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14999 // Restore the title
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15000 if ( element.data( "ui-tooltip-title" ) ) {
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15001 element.attr( "title", element.data( "ui-tooltip-title" ) );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15002 element.removeData( "ui-tooltip-title" );
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15003 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15004 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15005 }
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15006 });
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15007
1cf7bb8db5dd modify passwd popup
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15008 }( jQuery ) );