applicious_utils 0.0.6

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 (35) hide show
  1. data/Gemfile +4 -0
  2. data/Rakefile +2 -0
  3. data/app/assets/javascripts/applicious_utils/Applicious/applicious.coffee +9 -0
  4. data/app/assets/javascripts/applicious_utils/Applicious/facebook.coffee +12 -0
  5. data/app/assets/javascripts/applicious_utils/FbMultiFriendSelector/README.md +122 -0
  6. data/app/assets/javascripts/applicious_utils/FbMultiFriendSelector/index.html +100 -0
  7. data/app/assets/javascripts/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select-list.css +158 -0
  8. data/app/assets/javascripts/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select.css +160 -0
  9. data/app/assets/javascripts/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select.js +366 -0
  10. data/app/assets/javascripts/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select.min.js +11 -0
  11. data/app/assets/javascripts/applicious_utils/LightboxMe/LICENSE +11 -0
  12. data/app/assets/javascripts/applicious_utils/LightboxMe/README.markdown +44 -0
  13. data/app/assets/javascripts/applicious_utils/LightboxMe/jquery.lightbox_me.js +250 -0
  14. data/app/assets/javascripts/applicious_utils/index.js +4 -0
  15. data/app/assets/stylesheets/applicious_utils/Applicious/applicious.css +0 -0
  16. data/app/assets/stylesheets/applicious_utils/FbMultiFriendSelector/README.md +122 -0
  17. data/app/assets/stylesheets/applicious_utils/FbMultiFriendSelector/index.html +100 -0
  18. data/app/assets/stylesheets/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select-list.css +158 -0
  19. data/app/assets/stylesheets/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select.css +160 -0
  20. data/app/assets/stylesheets/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select.js +366 -0
  21. data/app/assets/stylesheets/applicious_utils/FbMultiFriendSelector/jquery.facebook.multifriend.select.min.js +11 -0
  22. data/app/assets/stylesheets/applicious_utils/index.css +9 -0
  23. data/applicious_utils-0.0.1.gem +0 -0
  24. data/applicious_utils-0.0.2.gem +0 -0
  25. data/applicious_utils-0.0.3.gem +0 -0
  26. data/applicious_utils-0.0.4.gem +0 -0
  27. data/applicious_utils-0.0.5.gem +0 -0
  28. data/applicious_utils.gemspec +22 -0
  29. data/lib/applicious_utils/applicious_railtie.rb +11 -0
  30. data/lib/applicious_utils/engine.rb +5 -0
  31. data/lib/applicious_utils/version.rb +3 -0
  32. data/lib/applicious_utils/view_helpers.rb +16 -0
  33. data/lib/applicious_utils.rb +4 -0
  34. data/pkg/applicious_utils-0.0.4.gem +0 -0
  35. metadata +81 -0
@@ -0,0 +1,366 @@
1
+ // Copyright 2010 Mike Brevoort http://mike.brevoort.com @mbrevoort
2
+ //
3
+ // v1.0 jquery-facebook-multi-friend-selector
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ (function($) {
18
+ var JFMFS = function(element, options) {
19
+ var elem = $(element),
20
+ obj = this,
21
+ uninitializedImagefriendElements = [], // for images that are initialized
22
+ keyUpTimer,
23
+ friends_per_row = 0,
24
+ friend_height_px = 0,
25
+ first_element_offset_px;
26
+
27
+ var settings = $.extend({
28
+ max_selected: -1,
29
+ max_selected_message: "{0} of {1} selected",
30
+ pre_selected_friends: [],
31
+ exclude_friends: [],
32
+ friend_fields: "id,name",
33
+ sorter: function(a, b) {
34
+ var x = a.name.toLowerCase();
35
+ var y = b.name.toLowerCase();
36
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
37
+ },
38
+ labels: {
39
+ selected: "Selected",
40
+ filter_default: "Start typing a name",
41
+ filter_title: "Find Friends:",
42
+ all: "All",
43
+ max_selected_message: "{0} of {1} selected"
44
+ }
45
+ }, options || {});
46
+ var lastSelected; // used when shift-click is performed to know where to start from to select multiple elements
47
+
48
+ var arrayToObjectGraph = function(a) {
49
+ var o = {};
50
+ for(var i=0, l=a.length; i<l; i++){
51
+ o[a[i]]='';
52
+ }
53
+ return o;
54
+ };
55
+
56
+ // ----------+----------+----------+----------+----------+----------+----------+
57
+ // Initialization of container
58
+ // ----------+----------+----------+----------+----------+----------+----------+
59
+ elem.html(
60
+ "<div id='jfmfs-friend-selector'>" +
61
+ " <div id='jfmfs-inner-header'>" +
62
+ " <span class='jfmfs-title'>" + settings.labels.filter_title + " </span><input type='text' id='jfmfs-friend-filter-text' value='" + settings.labels.filter_default + "'/>" +
63
+ " <a class='filter-link selected' id='jfmfs-filter-all' href='#'>" + settings.labels.all + "</a>" +
64
+ " <a class='filter-link' id='jfmfs-filter-selected' href='#'>" + settings.labels.selected + " (<span id='jfmfs-selected-count'>0</span>)</a>" +
65
+ ((settings.max_selected > 0) ? "<div id='jfmfs-max-selected-wrapper'></div>" : "") +
66
+ " </div>" +
67
+ " <div id='jfmfs-friend-container'></div>" +
68
+ "</div>"
69
+ );
70
+
71
+ var friend_container = $("#jfmfs-friend-container"),
72
+ container = $("#jfmfs-friend-selector"),
73
+ preselected_friends_graph = arrayToObjectGraph(settings.pre_selected_friends),
74
+ excluded_friends_graph = arrayToObjectGraph(settings.exclude_friends),
75
+ all_friends;
76
+
77
+ FB.api('/me/friends?fields=' + settings.friend_fields, function(response) {
78
+ var sortedFriendData = response.data.sort(settings.sorter),
79
+ preselectedFriends = {},
80
+ buffer = [],
81
+ selectedClass = "";
82
+
83
+ $.each(sortedFriendData, function(i, friend) {
84
+ if(! (friend.id in excluded_friends_graph)) {
85
+ selectedClass = (friend.id in preselected_friends_graph) ? "selected" : "";
86
+ buffer.push("<div class='jfmfs-friend " + selectedClass + " ' id='" + friend.id +"'><img/><div class='friend-name'>" + friend.name + "</div></div>");
87
+ }
88
+ });
89
+ friend_container.append(buffer.join(""));
90
+
91
+ uninitializedImagefriendElements = $(".jfmfs-friend", elem);
92
+ uninitializedImagefriendElements.bind('inview', function (event, visible) {
93
+ if( $(this).attr('src') === undefined) {
94
+ $("img", $(this)).attr("src", "//graph.facebook.com/" + this.id + "/picture");
95
+ }
96
+ $(this).unbind('inview');
97
+ });
98
+
99
+ init();
100
+ });
101
+
102
+
103
+ // ----------+----------+----------+----------+----------+----------+----------+
104
+ // Public functions
105
+ // ----------+----------+----------+----------+----------+----------+----------+
106
+
107
+ this.getSelectedIds = function() {
108
+ var ids = [];
109
+ $.each(elem.find(".jfmfs-friend.selected"), function(i, friend) {
110
+ ids.push($(friend).attr("id"));
111
+ });
112
+ return ids;
113
+ };
114
+
115
+ this.getSelectedIdsAndNames = function() {
116
+ var selected = [];
117
+ $.each(elem.find(".jfmfs-friend.selected"), function(i, friend) {
118
+ selected.push( {id: $(friend).attr("id"), name: $(friend).find(".friend-name").text()});
119
+ });
120
+ return selected;
121
+ };
122
+
123
+ this.clearSelected = function () {
124
+ all_friends.removeClass("selected");
125
+ };
126
+
127
+ // ----------+----------+----------+----------+----------+----------+----------+
128
+ // Private functions
129
+ // ----------+----------+----------+----------+----------+----------+----------+
130
+
131
+ var init = function() {
132
+ all_friends = $(".jfmfs-friend", elem);
133
+
134
+ // calculate friends per row
135
+ first_element_offset_px = all_friends.first().offset().top;
136
+ for(var i=0, l=all_friends.length; i < l; i++ ) {
137
+ if($(all_friends[i]).offset().top === first_element_offset_px) {
138
+ friends_per_row++;
139
+ } else {
140
+ friend_height_px = $(all_friends[i]).offset().top - first_element_offset_px;
141
+ break;
142
+ }
143
+ }
144
+
145
+ // handle when a friend is clicked for selection
146
+ elem.delegate(".jfmfs-friend", 'click', function(event) {
147
+
148
+ // if the element is being selected, test if the max number of items have
149
+ // already been selected, if so, just return
150
+ if(!$(this).hasClass("selected") &&
151
+ maxSelectedEnabled() &&
152
+ $(".jfmfs-friend.selected").length >= settings.max_selected &&
153
+ settings.max_selected != 1) {
154
+ return;
155
+ }
156
+
157
+ // if the max is 1 then unselect the current and select the new
158
+ if(settings.max_selected == 1) {
159
+ elem.find(".selected").removeClass("selected");
160
+ }
161
+
162
+ $(this).toggleClass("selected");
163
+ $(this).removeClass("hover");
164
+
165
+ // support shift-click operations to select multiple items at a time
166
+ if( $(this).hasClass("selected")) {
167
+ if ( !lastSelected ) {
168
+ lastSelected = $(this);
169
+ }
170
+ else {
171
+ if( event.shiftKey ) {
172
+ var selIndex = $(this).index();
173
+ var lastIndex = lastSelected.index();
174
+ var end = Math.max(selIndex,lastIndex);
175
+ var start = Math.min(selIndex,lastIndex);
176
+ for(var i=start; i<=end; i++) {
177
+ var aFriend = $( all_friends[i] );
178
+ if(!aFriend.hasClass("hide-non-selected") && !aFriend.hasClass("hide-filtered")) {
179
+ if( maxSelectedEnabled() && $(".jfmfs-friend.selected").length < settings.max_selected ) {
180
+ $( all_friends[i] ).addClass("selected");
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+
188
+ // keep track of last selected, this is used for the shift-select functionality
189
+ lastSelected = $(this);
190
+
191
+ // update the count of the total number selected
192
+ updateSelectedCount();
193
+
194
+ if( maxSelectedEnabled() ) {
195
+ updateMaxSelectedMessage();
196
+ }
197
+ elem.trigger("jfmfs.selection.changed", [obj.getSelectedIdsAndNames()]);
198
+ });
199
+
200
+ // filter by selected, hide all non-selected
201
+ $("#jfmfs-filter-selected").click(function(event) {
202
+ event.preventDefault();
203
+ all_friends.not(".selected").addClass("hide-non-selected");
204
+ $(".filter-link").removeClass("selected");
205
+ $(this).addClass("selected");
206
+ });
207
+
208
+ // remove filter, show all
209
+ $("#jfmfs-filter-all").click(function(event) {
210
+ event.preventDefault();
211
+ all_friends.removeClass("hide-non-selected");
212
+ $(".filter-link").removeClass("selected");
213
+ $(this).addClass("selected");
214
+ });
215
+
216
+ // hover effect on friends
217
+ elem.find(".jfmfs-friend:not(.selected)").live(
218
+ 'hover', function (ev) {
219
+ if (ev.type == 'mouseover') {
220
+ $(this).addClass("hover");
221
+ }
222
+ if (ev.type == 'mouseout') {
223
+ $(this).removeClass("hover");
224
+ }
225
+ });
226
+
227
+ // filter as you type
228
+ elem.find("#jfmfs-friend-filter-text")
229
+ .keyup( function() {
230
+ var filter = $(this).val();
231
+ clearTimeout(keyUpTimer);
232
+ keyUpTimer = setTimeout( function() {
233
+ if(filter == '') {
234
+ all_friends.removeClass("hide-filtered");
235
+ }
236
+ else {
237
+ container.find(".friend-name:not(:Contains(" + filter +"))").parent().addClass("hide-filtered");
238
+ container.find(".friend-name:Contains(" + filter +")").parent().removeClass("hide-filtered");
239
+ }
240
+ showImagesInViewPort();
241
+ }, 400);
242
+ })
243
+ .focus( function() {
244
+ if($.trim($(this).val()) == 'Start typing a name') {
245
+ $(this).val('');
246
+ }
247
+ })
248
+ .blur(function() {
249
+ if($.trim($(this).val()) == '') {
250
+ $(this).val('Start typing a name');
251
+ }
252
+ });
253
+
254
+ // hover states on the buttons
255
+ elem.find(".jfmfs-button").hover(
256
+ function(){ $(this).addClass("jfmfs-button-hover");} ,
257
+ function(){ $(this).removeClass("jfmfs-button-hover");}
258
+ );
259
+
260
+ // manages lazy loading of images
261
+ var getViewportHeight = function() {
262
+ var height = window.innerHeight; // Safari, Opera
263
+ var mode = document.compatMode;
264
+
265
+ if ( (mode || !$.support.boxModel) ) { // IE, Gecko
266
+ height = (mode == 'CSS1Compat') ?
267
+ document.documentElement.clientHeight : // Standards
268
+ document.body.clientHeight; // Quirks
269
+ }
270
+
271
+ return height;
272
+ };
273
+
274
+ var showImagesInViewPort = function() {
275
+ var container_height_px = friend_container.innerHeight(),
276
+ scroll_top_px = friend_container.scrollTop(),
277
+ container_offset_px = friend_container.offset().top,
278
+ $el, top_px,
279
+ elementVisitedCount = 0,
280
+ foundVisible = false,
281
+ allVisibleFriends = $(".jfmfs-friend:not(.hide-filtered )");
282
+
283
+ $.each(allVisibleFriends, function(i, $el){
284
+ elementVisitedCount++;
285
+ if($el !== null) {
286
+ $el = $(allVisibleFriends[i]);
287
+ top_px = (first_element_offset_px + (friend_height_px * Math.ceil(elementVisitedCount/friends_per_row))) - scroll_top_px - container_offset_px;
288
+ if (top_px + friend_height_px >= -10 &&
289
+ top_px - friend_height_px < container_height_px) { // give some extra padding for broser differences
290
+ $el.data('inview', true);
291
+ $el.trigger('inview', [ true ]);
292
+ foundVisible = true;
293
+ }
294
+ else {
295
+ if(foundVisible) {
296
+ return false;
297
+ }
298
+ }
299
+ }
300
+ });
301
+ };
302
+
303
+ var updateSelectedCount = function() {
304
+ $("#jfmfs-selected-count").html( selectedCount() );
305
+ };
306
+
307
+ friend_container.bind('scroll', $.debounce( 250, showImagesInViewPort ));
308
+
309
+ updateMaxSelectedMessage();
310
+ showImagesInViewPort();
311
+ updateSelectedCount();
312
+ elem.trigger("jfmfs.friendload.finished");
313
+ };
314
+
315
+ var selectedCount = function() {
316
+ return $(".jfmfs-friend.selected").length;
317
+ };
318
+
319
+ var maxSelectedEnabled = function () {
320
+ return settings.max_selected > 0;
321
+ };
322
+
323
+ var updateMaxSelectedMessage = function() {
324
+ var message = settings.labels.max_selected_message.replace("{0}", selectedCount()).replace("{1}", settings.max_selected);
325
+ $("#jfmfs-max-selected-wrapper").html( message );
326
+ };
327
+
328
+ };
329
+
330
+
331
+
332
+ $.fn.jfmfs = function(options) {
333
+ return this.each(function() {
334
+ var element = $(this);
335
+
336
+ // Return early if this element already has a plugin instance
337
+ if (element.data('jfmfs')) { return; }
338
+
339
+ // pass options to plugin constructor
340
+ var jfmfs = new JFMFS(this, options);
341
+
342
+ // Store plugin object in this element's data
343
+ element.data('jfmfs', jfmfs);
344
+
345
+ });
346
+ };
347
+
348
+ // todo, make this more ambiguous
349
+ jQuery.expr[':'].Contains = function(a, i, m) {
350
+ return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
351
+ };
352
+
353
+
354
+ })(jQuery);
355
+
356
+ if($.debounce === undefined) {
357
+ /*
358
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
359
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
360
+ *
361
+ * Copyright (c) 2010 "Cowboy" Ben Alman
362
+ * Dual licensed under the MIT and GPL licenses.
363
+ * http://benalman.com/about/license/
364
+ */
365
+ (function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);
366
+ }
@@ -0,0 +1,11 @@
1
+ (function(a){var t=function(j,l){var b=a(j),m=this,g=[],o,v=0,k=0,r,c=a.extend({max_selected:-1,max_selected_message:"{0} of {1} selected",pre_selected_friends:[],exclude_friends:[],friend_fields:"id,name",sorter:function(d,h){var f=d.name.toLowerCase(),p=h.name.toLowerCase();return f<p?-1:f>p?1:0},labels:{selected:"Selected",filter_default:"Start typing a name",filter_title:"Find Friends:",all:"All",max_selected_message:"{0} of {1} selected"}},l||{}),u,w=function(d){for(var h={},f=0,p=d.length;f<
2
+ p;f++)h[d[f]]="";return h};b.html("<div id='jfmfs-friend-selector'> <div id='jfmfs-inner-header'> <span class='jfmfs-title'>"+c.labels.filter_title+" </span><input type='text' id='jfmfs-friend-filter-text' value='"+c.labels.filter_default+"'/> <a class='filter-link selected' id='jfmfs-filter-all' href='#'>"+c.labels.all+"</a> <a class='filter-link' id='jfmfs-filter-selected' href='#'>"+c.labels.selected+" (<span id='jfmfs-selected-count'>0</span>)</a>"+(c.max_selected>0?"<div id='jfmfs-max-selected-wrapper'></div>":
3
+ "")+" </div> <div id='jfmfs-friend-container'></div></div>");var q=a("#jfmfs-friend-container"),x=a("#jfmfs-friend-selector"),F=w(c.pre_selected_friends),G=w(c.exclude_friends),i;FB.api("/me/friends?fields="+c.friend_fields,function(d){d=d.data.sort(c.sorter);var h=[],f="";a.each(d,function(p,e){if(!(e.id in G)){f=e.id in F?"selected":"";h.push("<div class='jfmfs-friend "+f+" ' id='"+e.id+"'><img/><div class='friend-name'>"+e.name+"</div></div>")}});q.append(h.join(""));g=a(".jfmfs-friend",
4
+ b);g.bind("inview",function(){a(this).attr("src")===undefined&&a("img",a(this)).attr("src","//graph.facebook.com/"+this.id+"/picture");a(this).unbind("inview")});H()});this.getSelectedIds=function(){var d=[];a.each(b.find(".jfmfs-friend.selected"),function(h,f){d.push(a(f).attr("id"))});return d};this.getSelectedIdsAndNames=function(){var d=[];a.each(b.find(".jfmfs-friend.selected"),function(h,f){d.push({id:a(f).attr("id"),name:a(f).find(".friend-name").text()})});return d};this.clearSelected=function(){i.removeClass("selected")};
5
+ var H=function(){i=a(".jfmfs-friend",b);r=i.first().offset().top;for(var d=0,h=i.length;d<h;d++)if(a(i[d]).offset().top===r)v++;else{k=a(i[d]).offset().top-r;break}b.delegate(".jfmfs-friend","click",function(e){if(!(!a(this).hasClass("selected")&&c.max_selected>0&&a(".jfmfs-friend.selected").length>=c.max_selected&&c.max_selected!=1)){c.max_selected==1&&b.find(".selected").removeClass("selected");a(this).toggleClass("selected");a(this).removeClass("hover");if(a(this).hasClass("selected"))if(u){if(e.shiftKey){var n=
6
+ a(this).index(),s=u.index();e=Math.max(n,s);for(n=Math.min(n,s);n<=e;n++){s=a(i[n]);!s.hasClass("hide-non-selected")&&!s.hasClass("hide-filtered")&&c.max_selected>0&&a(".jfmfs-friend.selected").length<c.max_selected&&a(i[n]).addClass("selected")}}}else u=a(this);u=a(this);p();c.max_selected>0&&A();b.trigger("jfmfs.selection.changed",[m.getSelectedIdsAndNames()])}});a("#jfmfs-filter-selected").click(function(e){e.preventDefault();i.not(".selected").addClass("hide-non-selected");a(".filter-link").removeClass("selected");
7
+ a(this).addClass("selected")});a("#jfmfs-filter-all").click(function(e){e.preventDefault();i.removeClass("hide-non-selected");a(".filter-link").removeClass("selected");a(this).addClass("selected")});b.find(".jfmfs-friend:not(.selected)").live("hover",function(e){e.type=="mouseover"&&a(this).addClass("hover");e.type=="mouseout"&&a(this).removeClass("hover")});b.find("#jfmfs-friend-filter-text").keyup(function(){var e=a(this).val();clearTimeout(o);o=setTimeout(function(){if(e=="")i.removeClass("hide-filtered");
8
+ else{x.find(".friend-name:not(:Contains("+e+"))").parent().addClass("hide-filtered");x.find(".friend-name:Contains("+e+")").parent().removeClass("hide-filtered")}f()},400)}).focus(function(){a.trim(a(this).val())=="Start typing a name"&&a(this).val("")}).blur(function(){a.trim(a(this).val())==""&&a(this).val("Start typing a name")});b.find(".jfmfs-button").hover(function(){a(this).addClass("jfmfs-button-hover")},function(){a(this).removeClass("jfmfs-button-hover")});var f=function(){var e=q.innerHeight(),
9
+ n=q.scrollTop(),s=q.offset().top,z,B=0,C=false,D=a(".jfmfs-friend:not(.hide-filtered )");a.each(D,function(I,y){B++;if(y!==null){y=a(D[I]);z=r+k*Math.ceil(B/v)-n-s;if(z+k>=-10&&z-k<e){y.data("inview",true);y.trigger("inview",[true]);C=true}else if(C)return false}})},p=function(){a("#jfmfs-selected-count").html(E())};q.bind("scroll",a.debounce(250,f));A();f();p();b.trigger("jfmfs.friendload.finished")},E=function(){return a(".jfmfs-friend.selected").length},A=function(){var d=c.labels.max_selected_message.replace("{0}",
10
+ E()).replace("{1}",c.max_selected);a("#jfmfs-max-selected-wrapper").html(d)}};a.fn.jfmfs=function(j){return this.each(function(){var l=a(this);if(!l.data("jfmfs")){var b=new t(this,j);l.data("jfmfs",b)}})};jQuery.expr[":"].Contains=function(j,l,b){return jQuery(j).text().toUpperCase().indexOf(b[3].toUpperCase())>=0}})(jQuery);
11
+ $.debounce===undefined&&function(a,t){var j=a.jQuery||a.Cowboy||(a.Cowboy={}),l;j.throttle=l=function(b,m,g,o){function v(){function c(){r=+new Date;g.apply(w,x)}function u(){k=t}var w=this,q=+new Date-r,x=arguments;o&&!k&&c();k&&clearTimeout(k);if(o===t&&q>b)c();else if(m!==true)k=setTimeout(o?u:c,o===t?b-q:b)}var k,r=0;if(typeof m!=="boolean"){o=g;g=m;m=t}if(j.guid)v.guid=g.guid=g.guid||j.guid++;return v};j.debounce=function(b,m,g){return g===t?l(b,m,false):l(b,g,m!==false)}}(this);
@@ -0,0 +1,11 @@
1
+ Licensed under the Apache License, Version 2.0 (the "License");
2
+ you may not use this file except in compliance with the License.
3
+ You may obtain a copy of the License at
4
+
5
+ http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ Unless required by applicable law or agreed to in writing, software
8
+ distributed under the License is distributed on an "AS IS" BASIS,
9
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ See the License for the specific language governing permissions and
11
+ limitations under the License.
@@ -0,0 +1,44 @@
1
+ jquery.lightbox_me.js
2
+ version 2.2
3
+
4
+ Have you ever had a DOM element that you wanted lightboxed, but didn't want all the fanciness of all the lightbox-related plug-ins out there? Lightbox_me is for you.
5
+
6
+ Lightbox_me is an essential tool for the jQuery developer's toolbox. Feed it a DOM element wrapped in a jQuery object and it will lightbox it for you, no muss no fuss.
7
+
8
+ View more information at http://buckwilson.me/lightboxme
9
+
10
+
11
+
12
+ ## Usage
13
+
14
+ Lightbox_me is a jQuery plugin and requires jQuery to be included in order to work.
15
+
16
+ Include both jQuery and the lightbox_me JavaScript file before calling the plugin in your JavaScript.
17
+
18
+ Invoke the lightbox by calling the plugin on a jQuery object:
19
+ $(dom).lightbox_me();
20
+
21
+
22
+
23
+ ## License
24
+
25
+ Licensed under the Apache License, Version 2.0 (the "License");
26
+ you may not use this file except in compliance with the License.
27
+ You may obtain a copy of the License at
28
+
29
+ http://www.apache.org/licenses/LICENSE-2.0
30
+
31
+ Unless required by applicable law or agreed to in writing, software
32
+ distributed under the License is distributed on an "AS IS" BASIS,
33
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
34
+ See the License for the specific language governing permissions and
35
+ limitations under the License.
36
+
37
+
38
+
39
+ ## Author Information
40
+
41
+ Lightbox_me was created by Buck Wilson for Jive Software.
42
+ http://buckwilson.me
43
+ http://jivesoftware.com
44
+