changed git call from https to git readonly
[atutor.git] / mods / photo_album / fluid / component-templates / js / jquery.ui-1.0 / ui.selectable.js
1 (function($)\r
2 {\r
3         \r
4         //Make nodes selectable by expression\r
5         $.extend($.expr[':'], { selectable: "(' '+a.className+' ').indexOf(' ui-selectable ')" });\r
6         $.extend($.expr[':'], { selectee: "(' '+a.className+' ').indexOf(' ui-selectee ')" });\r
7 \r
8         $.fn.selectable = function(o) {\r
9                 return this.each(function() {\r
10                         if (!$(this).is(".ui-selectable")) new $.ui.selectable(this, o);\r
11                 });\r
12         }\r
13 \r
14         $.ui.selectable = function(el, o) {\r
15                 \r
16                 var options = {\r
17                         filter: '*'\r
18                 };\r
19                 var o = o || {}; $.extend(options, o); //Extend and copy options\r
20                 this.element = el; var self = this; //Do bindings\r
21                 self.dragged = false;\r
22 \r
23                 $.extend(options, {\r
24                         helper: function() { return $(document.createElement('div')).css({border:'1px dotted black'}); },\r
25                         _start: function(h,p,c,t,e) {\r
26                                 self.start.apply(t, [self, e]); // Trigger the start callback\r
27                         },\r
28                         _drag: function(h,p,c,t,e) {\r
29                                 self.dragged = true;\r
30                                 self.drag.apply(t, [self, e]); // Trigger the drag callback\r
31                         },\r
32                         _stop: function(h,p,c,t,e) {\r
33                                 self.stop.apply(t, [self, e]); // Trigger the end callback\r
34                                 self.dragged = false;\r
35                         }\r
36                 });\r
37 \r
38                 //Initialize mouse interaction\r
39                 this.mouse = new $.ui.mouseInteraction(el, options);\r
40 \r
41                 //Add the class for themeing\r
42                 $(this.element).addClass("ui-selectable");\r
43                 $(this.element).children(options.filter).addClass("ui-selectee");\r
44 \r
45         }\r
46 \r
47         $.extend($.ui.selectable.prototype, {\r
48                 plugins: {},\r
49                 start: function(self, ev) {\r
50                         $(self.mouse.helper).css({'z-index': 100, position: 'absolute', left: ev.clientX, top: ev.clientY, width:0, height: 0});\r
51                         if (ev.ctrlKey) {\r
52                                 if ($(ev.target).is('.ui-selected')) {\r
53                                         $(ev.target).removeClass('ui-selected').addClass('ui-unselecting');\r
54                                         $(self.element).triggerHandler("selectableunselecting", [ev, {\r
55                                                 selectable: self.element,\r
56                                                 unselecting: ev.target,\r
57                                                 options: this.options\r
58                                         }], this.options.unselecting);\r
59                                 }\r
60                         } else {\r
61                                 self.unselecting(self, ev, this.options);\r
62                                 self.selectingTarget(self, ev, this.options);\r
63                         }\r
64                 },\r
65                 drag: function(self, ev) {\r
66                         var x1 = self.mouse.opos[0], y1 = self.mouse.opos[1], x2 = ev.pageX, y2 = ev.pageY;\r
67                         if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }\r
68                         if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }\r
69                         $(self.mouse.helper).css({left: x1, top: y1, width: x2-x1, height: y2-y1});\r
70                         self.selectingTarget(self, ev, this.options);\r
71                 },\r
72                 stop: function(self, ev) {\r
73                         var options = this.options;\r
74                         $('.ui-selecting', self.element).each(function() {\r
75                                 $(this).removeClass('ui-selecting').addClass('ui-selected');\r
76                                 $(self.element).triggerHandler("selectableselected", [ev, {\r
77                                         selectable: self.element,\r
78                                         selected: this,\r
79                                         options: options\r
80                                 }], options.selected);\r
81                         });\r
82                         $('.ui-unselecting', self.element).each(function() {\r
83                                 $(this).removeClass('ui-unselecting');\r
84                                 $(self.element).triggerHandler("selectableunselected", [ev, {\r
85                                         selectable: self.element,\r
86                                         unselected: this,\r
87                                         options: options\r
88                                 }], options.unselected);\r
89                         });\r
90                 },\r
91                 unselecting: function(self, ev, options) {\r
92                         $('.ui-selected', self.element).each(function() {\r
93                                 if (this != ev.target) {\r
94                                         $(this).removeClass('ui-selected').addClass('ui-unselecting');\r
95                                         $(self.element).triggerHandler("selectableunselecting", [ev, {\r
96                                                 selectable: self.element,\r
97                                                 unselecting: this,\r
98                                                 options: options\r
99                                         }], options.unselecting);\r
100                                 }\r
101                         });\r
102                 },\r
103                 selectingTarget: function(self, ev, options) {\r
104                         var target = $(ev.target);\r
105                         if (target.is('.ui-selectee:not(.ui-selecting)')) {\r
106                                 target.removeClass('ui-selected').removeClass('ui-unselecting').addClass('ui-selecting');\r
107                                 $(self.element).triggerHandler("selectableselecting", [ev, {\r
108                                         selectable: self.element,\r
109                                         selecting: ev.target,\r
110                                         options: options\r
111                                 }], options.selecting);\r
112                         }\r
113                 }\r
114         });\r
115         \r
116 })(jQuery);