| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 | 
							- /*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
 
-  * Dual licensed under the MIT (MIT_LICENSE.txt)
 
-  * and GPL Version 2 (GPL_LICENSE.txt) licenses.
 
-  *
 
-  * Version: 1.1.1
 
-  * Requires jQuery 1.3+
 
-  * Docs: http://docs.jquery.com/Plugins/livequery
 
-  */
 
- (function($) {
 
-   $.extend($.fn, {
 
-     livequery: function(type, fn, fn2) {
 
-       var self = this, q;
 
-       // Handle different call patterns
 
-       if ($.isFunction(type))
 
-         fn2 = fn, fn = type, type = undefined;
 
-       // See if Live Query already exists
 
-       $.each($.livequery.queries, function(i, query) {
 
-         if (self.selector == query.selector && self.context == query.context && type == query.type && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid))
 
-           // Found the query, exit the each loop
 
-           return ( q = query) && false;
 
-       });
 
-       // Create new Live Query if it wasn't found
 
-       q = q || new $.livequery(this.selector, this.context, type, fn, fn2);
 
-       // Make sure it is running
 
-       q.stopped = false;
 
-       // Run it immediately for the first time
 
-       q.run();
 
-       // Contnue the chain
 
-       return this;
 
-     },
 
-     expire: function(type, fn, fn2) {
 
-       var self = this;
 
-       // Handle different call patterns
 
-       if ($.isFunction(type))
 
-         fn2 = fn, fn = type, type = undefined;
 
-       // Find the Live Query based on arguments and stop it
 
-       $.each($.livequery.queries, function(i, query) {
 
-         if (self.selector == query.selector && self.context == query.context && (!type || type == query.type) && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) && !this.stopped)
 
-           $.livequery.stop(query.id);
 
-       });
 
-       // Continue the chain
 
-       return this;
 
-     }
 
-   });
 
-   $.livequery = function(selector, context, type, fn, fn2) {
 
-     this.selector = selector;
 
-     this.context = context;
 
-     this.type = type;
 
-     this.fn = fn;
 
-     this.fn2 = fn2;
 
-     this.elements = [];
 
-     this.stopped = false;
 
-     // The id is the index of the Live Query in $.livequery.queries
 
-     this.id = $.livequery.queries.push(this) - 1;
 
-     // Mark the functions for matching later on
 
-     fn.$lqguid = fn.$lqguid || $.livequery.guid++;
 
-     if (fn2)
 
-       fn2.$lqguid = fn2.$lqguid || $.livequery.guid++;
 
-     // Return the Live Query
 
-     return this;
 
-   };
 
-   $.livequery.prototype = {
 
-     stop: function() {
 
-       var query = this;
 
-       if (this.type)
 
-         // Unbind all bound events
 
-         this.elements.unbind(this.type, this.fn);
 
-       else if (this.fn2)
 
-         // Call the second function for all matched elements
 
-         this.elements.each(function(i, el) {
 
-           query.fn2.apply(el);
 
-         });
 
-       // Clear out matched elements
 
-       this.elements = [];
 
-       // Stop the Live Query from running until restarted
 
-       this.stopped = true;
 
-     },
 
-     run: function() {
 
-       // Short-circuit if stopped
 
-       if (this.stopped)
 
-         return;
 
-       var query = this;
 
-       var oEls = this.elements, els = $(this.selector, this.context), nEls = els.not(oEls);
 
-       // Set elements to the latest set of matched elements
 
-       this.elements = els;
 
-       if (this.type) {
 
-         // Bind events to newly matched elements
 
-         nEls.bind(this.type, this.fn);
 
-         // Unbind events to elements no longer matched
 
-         if (oEls.length > 0)
 
-           $.each(oEls, function(i, el) {
 
-             if ($.inArray(el, els) < 0)
 
-               $.event.remove(el, query.type, query.fn);
 
-           });
 
-       }
 
-       else {
 
-         // Call the first function for newly matched elements
 
-         nEls.each(function() {
 
-           query.fn.apply(this);
 
-         });
 
-         // Call the second function for elements no longer matched
 
-         if (this.fn2 && oEls.length > 0)
 
-           $.each(oEls, function(i, el) {
 
-             if ($.inArray(el, els) < 0)
 
-               query.fn2.apply(el);
 
-           });
 
-       }
 
-     }
 
-   };
 
-   $.extend($.livequery, {
 
-     guid: 0,
 
-     queries: [],
 
-     queue: [],
 
-     running: false,
 
-     timeout: null,
 
-     checkQueue: function() {
 
-       if ($.livequery.running && $.livequery.queue.length) {
 
-         var length = $.livequery.queue.length;
 
-         // Run each Live Query currently in the queue
 
-         while (length--)
 
-         $.livequery.queries[ $.livequery.queue.shift()].run();
 
-       }
 
-     },
 
-     pause: function() {
 
-       // Don't run anymore Live Queries until restarted
 
-       $.livequery.running = false;
 
-     },
 
-     play: function() {
 
-       // Restart Live Queries
 
-       $.livequery.running = true;
 
-       // Request a run of the Live Queries
 
-       $.livequery.run();
 
-     },
 
-     registerPlugin: function() {
 
-       $.each(arguments, function(i, n) {
 
-         // Short-circuit if the method doesn't exist
 
-         if (!$.fn[n])
 
-           return;
 
-         // Save a reference to the original method
 
-         var old = $.fn[n];
 
-         // Create a new method
 
-         $.fn[n] = function() {
 
-           // Call the original method
 
-           var r = old.apply(this, arguments);
 
-           // Request a run of the Live Queries
 
-           $.livequery.run();
 
-           // Return the original methods result
 
-           return r;
 
-         }
 
-       });
 
-     },
 
-     run: function(id) {
 
-       if (id != undefined) {
 
-         // Put the particular Live Query in the queue if it doesn't already exist
 
-         if ($.inArray(id, $.livequery.queue) < 0)
 
-           $.livequery.queue.push(id);
 
-       }
 
-       else
 
-         // Put each Live Query in the queue if it doesn't already exist
 
-         $.each($.livequery.queries, function(id) {
 
-           if ($.inArray(id, $.livequery.queue) < 0)
 
-             $.livequery.queue.push(id);
 
-         });
 
-       // Clear timeout if it already exists
 
-       if ($.livequery.timeout)
 
-         clearTimeout($.livequery.timeout);
 
-       // Create a timeout to check the queue and actually run the Live Queries
 
-       $.livequery.timeout = setTimeout($.livequery.checkQueue, 20);
 
-     },
 
-     stop: function(id) {
 
-       if (id != undefined)
 
-         // Stop are particular Live Query
 
-         $.livequery.queries[id].stop();
 
-       else
 
-         // Stop all Live Queries
 
-         $.each($.livequery.queries, function(id) {
 
-           $.livequery.queries[id].stop();
 
-         });
 
-     }
 
-   });
 
-   // Register core DOM manipulation methods
 
-   $.livequery.registerPlugin('append', 'prepend', 'after', 'before', 'wrap', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'empty', 'remove', 'html');
 
-   // Run Live Queries when the Document is ready
 
-   $(function() {
 
-     $.livequery.play();
 
-   });
 
- })(jQuery);
 
 
  |