concen 0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/LICENSE +20 -0
  2. data/lib/concen/version.rb +1 -1
  3. data/public/concen/images/button-grid.png +0 -0
  4. data/public/concen/images/button-next-disabled.png +0 -0
  5. data/public/concen/images/button-next.png +0 -0
  6. data/public/concen/images/button-prev-disabled.png +0 -0
  7. data/public/concen/images/button-prev.png +0 -0
  8. data/public/concen/images/fileuploader-loading.gif +0 -0
  9. data/public/concen/images/glyph-small-check-alt.png +0 -0
  10. data/public/concen/images/glyph-small-check.png +0 -0
  11. data/public/concen/images/glyph-small-delete.png +0 -0
  12. data/public/concen/images/glyph-small-handle.png +0 -0
  13. data/public/concen/images/grid.png +0 -0
  14. data/public/concen/images/icon-handle.png +0 -0
  15. data/public/concen/images/magnifying-glass.png +0 -0
  16. data/public/concen/images/original/button-grid.png +0 -0
  17. data/public/concen/images/original/button-next-disabled.png +0 -0
  18. data/public/concen/images/original/button-next.png +0 -0
  19. data/public/concen/images/original/button-prev-disabled.png +0 -0
  20. data/public/concen/images/original/button-prev.png +0 -0
  21. data/public/concen/images/original/glyph-small-check-alt.png +0 -0
  22. data/public/concen/images/original/glyph-small-check.png +0 -0
  23. data/public/concen/images/original/glyph-small-delete.png +0 -0
  24. data/public/concen/images/original/glyph-small-handle.png +0 -0
  25. data/public/concen/images/original/magnifying-glass.png +0 -0
  26. data/public/concen/images/original/record-visit.gif +0 -0
  27. data/public/concen/images/original/search-field.png +0 -0
  28. data/public/concen/images/record-visit.gif +0 -0
  29. data/public/concen/images/search-field.png +0 -0
  30. data/public/concen/javascripts/ace/ace-uncompressed.js +17635 -0
  31. data/public/concen/javascripts/ace/ace.js +1 -0
  32. data/public/concen/javascripts/ace/cockpit-uncompressed.js +2504 -0
  33. data/public/concen/javascripts/ace/cockpit.js +1 -0
  34. data/public/concen/javascripts/ace/keybinding-emacs.js +1 -0
  35. data/public/concen/javascripts/ace/keybinding-vim.js +1 -0
  36. data/public/concen/javascripts/ace/mode-c_cpp.js +1 -0
  37. data/public/concen/javascripts/ace/mode-clojure.js +1 -0
  38. data/public/concen/javascripts/ace/mode-coffee.js +1 -0
  39. data/public/concen/javascripts/ace/mode-csharp.js +1 -0
  40. data/public/concen/javascripts/ace/mode-css.js +1 -0
  41. data/public/concen/javascripts/ace/mode-groovy.js +1 -0
  42. data/public/concen/javascripts/ace/mode-html.js +1 -0
  43. data/public/concen/javascripts/ace/mode-java.js +1 -0
  44. data/public/concen/javascripts/ace/mode-javascript.js +1 -0
  45. data/public/concen/javascripts/ace/mode-json.js +1 -0
  46. data/public/concen/javascripts/ace/mode-ocaml.js +1 -0
  47. data/public/concen/javascripts/ace/mode-perl.js +1 -0
  48. data/public/concen/javascripts/ace/mode-php.js +1 -0
  49. data/public/concen/javascripts/ace/mode-python.js +1 -0
  50. data/public/concen/javascripts/ace/mode-ruby.js +1 -0
  51. data/public/concen/javascripts/ace/mode-scad.js +1 -0
  52. data/public/concen/javascripts/ace/mode-scala.js +1 -0
  53. data/public/concen/javascripts/ace/mode-scss.js +1 -0
  54. data/public/concen/javascripts/ace/mode-svg.js +1 -0
  55. data/public/concen/javascripts/ace/mode-textile.js +1 -0
  56. data/public/concen/javascripts/ace/mode-xml.js +1 -0
  57. data/public/concen/javascripts/ace/theme-clouds.js +1 -0
  58. data/public/concen/javascripts/ace/theme-clouds_midnight.js +1 -0
  59. data/public/concen/javascripts/ace/theme-cobalt.js +1 -0
  60. data/public/concen/javascripts/ace/theme-crimson_editor.js +1 -0
  61. data/public/concen/javascripts/ace/theme-dawn.js +1 -0
  62. data/public/concen/javascripts/ace/theme-eclipse.js +1 -0
  63. data/public/concen/javascripts/ace/theme-idle_fingers.js +1 -0
  64. data/public/concen/javascripts/ace/theme-kr_theme.js +1 -0
  65. data/public/concen/javascripts/ace/theme-merbivore.js +1 -0
  66. data/public/concen/javascripts/ace/theme-merbivore_soft.js +1 -0
  67. data/public/concen/javascripts/ace/theme-mono_industrial.js +1 -0
  68. data/public/concen/javascripts/ace/theme-monokai.js +1 -0
  69. data/public/concen/javascripts/ace/theme-pastel_on_dark.js +1 -0
  70. data/public/concen/javascripts/ace/theme-solarized_dark.js +1 -0
  71. data/public/concen/javascripts/ace/theme-solarized_light.js +1 -0
  72. data/public/concen/javascripts/ace/theme-textmate.js +1 -0
  73. data/public/concen/javascripts/ace/theme-twilight.js +1 -0
  74. data/public/concen/javascripts/ace/theme-vibrant_ink.js +1 -0
  75. data/public/concen/javascripts/ace/worker-coffee.js +1 -0
  76. data/public/concen/javascripts/ace/worker-css.js +1 -0
  77. data/public/concen/javascripts/ace/worker-javascript.js +1 -0
  78. data/public/concen/javascripts/blank.gif +0 -0
  79. data/public/concen/javascripts/controlcenter.js +173 -0
  80. data/public/concen/javascripts/excanvas.js +1427 -0
  81. data/public/concen/javascripts/fileuploader.js +1251 -0
  82. data/public/concen/javascripts/jquery-ui/jquery.ui.autocomplete.js +612 -0
  83. data/public/concen/javascripts/jquery-ui/jquery.ui.core.js +312 -0
  84. data/public/concen/javascripts/jquery-ui/jquery.ui.draggable.js +823 -0
  85. data/public/concen/javascripts/jquery-ui/jquery.ui.droppable.js +296 -0
  86. data/public/concen/javascripts/jquery-ui/jquery.ui.mouse.js +160 -0
  87. data/public/concen/javascripts/jquery-ui/jquery.ui.position.js +252 -0
  88. data/public/concen/javascripts/jquery-ui/jquery.ui.resizable.js +842 -0
  89. data/public/concen/javascripts/jquery-ui/jquery.ui.sortable.js +1077 -0
  90. data/public/concen/javascripts/jquery-ui/jquery.ui.widget.js +262 -0
  91. data/public/concen/javascripts/jquery.browser.min.js +1 -0
  92. data/public/concen/javascripts/jquery.easing.1.3.js +205 -0
  93. data/public/concen/javascripts/jquery.equal-heights.js +30 -0
  94. data/public/concen/javascripts/jquery.flot.js +2599 -0
  95. data/public/concen/javascripts/jquery.flot.resize.js +60 -0
  96. data/public/concen/javascripts/jquery.flot.stack.js +184 -0
  97. data/public/concen/javascripts/jquery.js +8981 -0
  98. data/public/concen/javascripts/jquery.min.js +18 -0
  99. data/public/concen/javascripts/jquery.placeholder.js +101 -0
  100. data/public/concen/javascripts/jquery.ui.nestedSortable.js +356 -0
  101. data/public/concen/javascripts/jquery_ujs.js +316 -0
  102. data/public/concen/javascripts/modernizr.js +1116 -0
  103. data/public/concen/javascripts/page.js +153 -0
  104. data/public/concen/javascripts/performance.js +110 -0
  105. data/public/concen/javascripts/pxToEm.js +56 -0
  106. data/public/concen/javascripts/status.js +15 -0
  107. data/public/concen/javascripts/traffic.js +113 -0
  108. data/public/concen/javascripts/user.js +14 -0
  109. data/public/concen/stylesheets/application.css +1342 -0
  110. data/public/concen/stylesheets/fileuploader.css +31 -0
  111. data/public/concen/stylesheets/ie.css +124 -0
  112. data/public/concen/stylesheets/jquery.ui.base.css +11 -0
  113. data/public/concen/stylesheets/jquery.ui.core.css +41 -0
  114. data/public/concen/stylesheets/jquery.ui.resizable.css +20 -0
  115. data/public/concen/stylesheets/main.css +1225 -0
  116. data/public/concen/stylesheets/non_ios.css +28 -0
  117. data/public/concen/stylesheets/print.css +84 -0
  118. metadata +141 -25
@@ -0,0 +1,296 @@
1
+ /*
2
+ * jQuery UI Droppable 1.8.14
3
+ *
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Droppables
9
+ *
10
+ * Depends:
11
+ * jquery.ui.core.js
12
+ * jquery.ui.widget.js
13
+ * jquery.ui.mouse.js
14
+ * jquery.ui.draggable.js
15
+ */
16
+ (function( $, undefined ) {
17
+
18
+ $.widget("ui.droppable", {
19
+ widgetEventPrefix: "drop",
20
+ options: {
21
+ accept: '*',
22
+ activeClass: false,
23
+ addClasses: true,
24
+ greedy: false,
25
+ hoverClass: false,
26
+ scope: 'default',
27
+ tolerance: 'intersect'
28
+ },
29
+ _create: function() {
30
+
31
+ var o = this.options, accept = o.accept;
32
+ this.isover = 0; this.isout = 1;
33
+
34
+ this.accept = $.isFunction(accept) ? accept : function(d) {
35
+ return d.is(accept);
36
+ };
37
+
38
+ //Store the droppable's proportions
39
+ this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight };
40
+
41
+ // Add the reference and positions to the manager
42
+ $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || [];
43
+ $.ui.ddmanager.droppables[o.scope].push(this);
44
+
45
+ (o.addClasses && this.element.addClass("ui-droppable"));
46
+
47
+ },
48
+
49
+ destroy: function() {
50
+ var drop = $.ui.ddmanager.droppables[this.options.scope];
51
+ for ( var i = 0; i < drop.length; i++ )
52
+ if ( drop[i] == this )
53
+ drop.splice(i, 1);
54
+
55
+ this.element
56
+ .removeClass("ui-droppable ui-droppable-disabled")
57
+ .removeData("droppable")
58
+ .unbind(".droppable");
59
+
60
+ return this;
61
+ },
62
+
63
+ _setOption: function(key, value) {
64
+
65
+ if(key == 'accept') {
66
+ this.accept = $.isFunction(value) ? value : function(d) {
67
+ return d.is(value);
68
+ };
69
+ }
70
+ $.Widget.prototype._setOption.apply(this, arguments);
71
+ },
72
+
73
+ _activate: function(event) {
74
+ var draggable = $.ui.ddmanager.current;
75
+ if(this.options.activeClass) this.element.addClass(this.options.activeClass);
76
+ (draggable && this._trigger('activate', event, this.ui(draggable)));
77
+ },
78
+
79
+ _deactivate: function(event) {
80
+ var draggable = $.ui.ddmanager.current;
81
+ if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
82
+ (draggable && this._trigger('deactivate', event, this.ui(draggable)));
83
+ },
84
+
85
+ _over: function(event) {
86
+
87
+ var draggable = $.ui.ddmanager.current;
88
+ if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
89
+
90
+ if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
91
+ if(this.options.hoverClass) this.element.addClass(this.options.hoverClass);
92
+ this._trigger('over', event, this.ui(draggable));
93
+ }
94
+
95
+ },
96
+
97
+ _out: function(event) {
98
+
99
+ var draggable = $.ui.ddmanager.current;
100
+ if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
101
+
102
+ if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
103
+ if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
104
+ this._trigger('out', event, this.ui(draggable));
105
+ }
106
+
107
+ },
108
+
109
+ _drop: function(event,custom) {
110
+
111
+ var draggable = custom || $.ui.ddmanager.current;
112
+ if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element
113
+
114
+ var childrenIntersection = false;
115
+ this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
116
+ var inst = $.data(this, 'droppable');
117
+ if(
118
+ inst.options.greedy
119
+ && !inst.options.disabled
120
+ && inst.options.scope == draggable.options.scope
121
+ && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
122
+ && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
123
+ ) { childrenIntersection = true; return false; }
124
+ });
125
+ if(childrenIntersection) return false;
126
+
127
+ if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
128
+ if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
129
+ if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
130
+ this._trigger('drop', event, this.ui(draggable));
131
+ return this.element;
132
+ }
133
+
134
+ return false;
135
+
136
+ },
137
+
138
+ ui: function(c) {
139
+ return {
140
+ draggable: (c.currentItem || c.element),
141
+ helper: c.helper,
142
+ position: c.position,
143
+ offset: c.positionAbs
144
+ };
145
+ }
146
+
147
+ });
148
+
149
+ $.extend($.ui.droppable, {
150
+ version: "1.8.14"
151
+ });
152
+
153
+ $.ui.intersect = function(draggable, droppable, toleranceMode) {
154
+
155
+ if (!droppable.offset) return false;
156
+
157
+ var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
158
+ y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;
159
+ var l = droppable.offset.left, r = l + droppable.proportions.width,
160
+ t = droppable.offset.top, b = t + droppable.proportions.height;
161
+
162
+ switch (toleranceMode) {
163
+ case 'fit':
164
+ return (l <= x1 && x2 <= r
165
+ && t <= y1 && y2 <= b);
166
+ break;
167
+ case 'intersect':
168
+ return (l < x1 + (draggable.helperProportions.width / 2) // Right Half
169
+ && x2 - (draggable.helperProportions.width / 2) < r // Left Half
170
+ && t < y1 + (draggable.helperProportions.height / 2) // Bottom Half
171
+ && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
172
+ break;
173
+ case 'pointer':
174
+ var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
175
+ draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
176
+ isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
177
+ return isOver;
178
+ break;
179
+ case 'touch':
180
+ return (
181
+ (y1 >= t && y1 <= b) || // Top edge touching
182
+ (y2 >= t && y2 <= b) || // Bottom edge touching
183
+ (y1 < t && y2 > b) // Surrounded vertically
184
+ ) && (
185
+ (x1 >= l && x1 <= r) || // Left edge touching
186
+ (x2 >= l && x2 <= r) || // Right edge touching
187
+ (x1 < l && x2 > r) // Surrounded horizontally
188
+ );
189
+ break;
190
+ default:
191
+ return false;
192
+ break;
193
+ }
194
+
195
+ };
196
+
197
+ /*
198
+ This manager tracks offsets of draggables and droppables
199
+ */
200
+ $.ui.ddmanager = {
201
+ current: null,
202
+ droppables: { 'default': [] },
203
+ prepareOffsets: function(t, event) {
204
+
205
+ var m = $.ui.ddmanager.droppables[t.options.scope] || [];
206
+ var type = event ? event.type : null; // workaround for #2317
207
+ var list = (t.currentItem || t.element).find(":data(droppable)").andSelf();
208
+
209
+ droppablesLoop: for (var i = 0; i < m.length; i++) {
210
+
211
+ if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue; //No disabled and non-accepted
212
+ for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item
213
+ m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
214
+
215
+ if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
216
+
217
+ m[i].offset = m[i].element.offset();
218
+ m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
219
+
220
+ }
221
+
222
+ },
223
+ drop: function(draggable, event) {
224
+
225
+ var dropped = false;
226
+ $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
227
+
228
+ if(!this.options) return;
229
+ if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
230
+ dropped = dropped || this._drop.call(this, event);
231
+
232
+ if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
233
+ this.isout = 1; this.isover = 0;
234
+ this._deactivate.call(this, event);
235
+ }
236
+
237
+ });
238
+ return dropped;
239
+
240
+ },
241
+ dragStart: function( draggable, event ) {
242
+ //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
243
+ draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
244
+ if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
245
+ });
246
+ },
247
+ drag: function(draggable, event) {
248
+
249
+ //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
250
+ if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);
251
+
252
+ //Run through all droppables and check their positions based on specific tolerance options
253
+ $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
254
+
255
+ if(this.options.disabled || this.greedyChild || !this.visible) return;
256
+ var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
257
+
258
+ var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null);
259
+ if(!c) return;
260
+
261
+ var parentInstance;
262
+ if (this.options.greedy) {
263
+ var parent = this.element.parents(':data(droppable):eq(0)');
264
+ if (parent.length) {
265
+ parentInstance = $.data(parent[0], 'droppable');
266
+ parentInstance.greedyChild = (c == 'isover' ? 1 : 0);
267
+ }
268
+ }
269
+
270
+ // we just moved into a greedy child
271
+ if (parentInstance && c == 'isover') {
272
+ parentInstance['isover'] = 0;
273
+ parentInstance['isout'] = 1;
274
+ parentInstance._out.call(parentInstance, event);
275
+ }
276
+
277
+ this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;
278
+ this[c == "isover" ? "_over" : "_out"].call(this, event);
279
+
280
+ // we just moved out of a greedy child
281
+ if (parentInstance && c == 'isout') {
282
+ parentInstance['isout'] = 0;
283
+ parentInstance['isover'] = 1;
284
+ parentInstance._over.call(parentInstance, event);
285
+ }
286
+ });
287
+
288
+ },
289
+ dragStop: function( draggable, event ) {
290
+ draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
291
+ //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
292
+ if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
293
+ }
294
+ };
295
+
296
+ })(jQuery);
@@ -0,0 +1,160 @@
1
+ /*!
2
+ * jQuery UI Mouse 1.8.14
3
+ *
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Mouse
9
+ *
10
+ * Depends:
11
+ * jquery.ui.widget.js
12
+ */
13
+ (function( $, undefined ) {
14
+
15
+ var mouseHandled = false;
16
+ $(document).mousedown(function(e) {
17
+ mouseHandled = false;
18
+ });
19
+
20
+ $.widget("ui.mouse", {
21
+ options: {
22
+ cancel: ':input,option',
23
+ distance: 1,
24
+ delay: 0
25
+ },
26
+ _mouseInit: function() {
27
+ var self = this;
28
+
29
+ this.element
30
+ .bind('mousedown.'+this.widgetName, function(event) {
31
+ return self._mouseDown(event);
32
+ })
33
+ .bind('click.'+this.widgetName, function(event) {
34
+ if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
35
+ $.removeData(event.target, self.widgetName + '.preventClickEvent');
36
+ event.stopImmediatePropagation();
37
+ return false;
38
+ }
39
+ });
40
+
41
+ this.started = false;
42
+ },
43
+
44
+ // TODO: make sure destroying one instance of mouse doesn't mess with
45
+ // other instances of mouse
46
+ _mouseDestroy: function() {
47
+ this.element.unbind('.'+this.widgetName);
48
+ },
49
+
50
+ _mouseDown: function(event) {
51
+ // don't let more than one widget handle mouseStart
52
+ if(mouseHandled) {return};
53
+
54
+ // we may have missed mouseup (out of window)
55
+ (this._mouseStarted && this._mouseUp(event));
56
+
57
+ this._mouseDownEvent = event;
58
+
59
+ var self = this,
60
+ btnIsLeft = (event.which == 1),
61
+ elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).closest(this.options.cancel).length : false);
62
+ if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
63
+ return true;
64
+ }
65
+
66
+ this.mouseDelayMet = !this.options.delay;
67
+ if (!this.mouseDelayMet) {
68
+ this._mouseDelayTimer = setTimeout(function() {
69
+ self.mouseDelayMet = true;
70
+ }, this.options.delay);
71
+ }
72
+
73
+ if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
74
+ this._mouseStarted = (this._mouseStart(event) !== false);
75
+ if (!this._mouseStarted) {
76
+ event.preventDefault();
77
+ return true;
78
+ }
79
+ }
80
+
81
+ // Click event may never have fired (Gecko & Opera)
82
+ if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
83
+ $.removeData(event.target, this.widgetName + '.preventClickEvent');
84
+ }
85
+
86
+ // these delegates are required to keep context
87
+ this._mouseMoveDelegate = function(event) {
88
+ return self._mouseMove(event);
89
+ };
90
+ this._mouseUpDelegate = function(event) {
91
+ return self._mouseUp(event);
92
+ };
93
+ $(document)
94
+ .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
95
+ .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
96
+
97
+ event.preventDefault();
98
+
99
+ mouseHandled = true;
100
+ return true;
101
+ },
102
+
103
+ _mouseMove: function(event) {
104
+ // IE mouseup check - mouseup happened when mouse was out of window
105
+ if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
106
+ return this._mouseUp(event);
107
+ }
108
+
109
+ if (this._mouseStarted) {
110
+ this._mouseDrag(event);
111
+ return event.preventDefault();
112
+ }
113
+
114
+ if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
115
+ this._mouseStarted =
116
+ (this._mouseStart(this._mouseDownEvent, event) !== false);
117
+ (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
118
+ }
119
+
120
+ return !this._mouseStarted;
121
+ },
122
+
123
+ _mouseUp: function(event) {
124
+ $(document)
125
+ .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
126
+ .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
127
+
128
+ if (this._mouseStarted) {
129
+ this._mouseStarted = false;
130
+
131
+ if (event.target == this._mouseDownEvent.target) {
132
+ $.data(event.target, this.widgetName + '.preventClickEvent', true);
133
+ }
134
+
135
+ this._mouseStop(event);
136
+ }
137
+
138
+ return false;
139
+ },
140
+
141
+ _mouseDistanceMet: function(event) {
142
+ return (Math.max(
143
+ Math.abs(this._mouseDownEvent.pageX - event.pageX),
144
+ Math.abs(this._mouseDownEvent.pageY - event.pageY)
145
+ ) >= this.options.distance
146
+ );
147
+ },
148
+
149
+ _mouseDelayMet: function(event) {
150
+ return this.mouseDelayMet;
151
+ },
152
+
153
+ // These are placeholder methods, to be overriden by extending plugin
154
+ _mouseStart: function(event) {},
155
+ _mouseDrag: function(event) {},
156
+ _mouseStop: function(event) {},
157
+ _mouseCapture: function(event) { return true; }
158
+ });
159
+
160
+ })(jQuery);