/* Copyright (c) 2007 Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Version: 1.0.2
 * Requires jQuery 1.1.3+
 * Docs: http://docs.jquery.com/Plugins/livequery
 */
(function(jQuery){jQuery.extend(jQuery.fn,{livequery:function(type,fn,fn2){var self=this,q;if(jQuery.isFunction(type))fn2=fn,fn=type,type=undefined;jQuery.each(jQuery.livequery.queries,function(i,query){if(self.selector==query.selector&&self.context==query.context&&type==query.type&&(!fn||fn.jQuerylqguid==query.fn.jQuerylqguid)&&(!fn2||fn2.jQuerylqguid==query.fn2.jQuerylqguid))return(q=query)&&false;});q=q||new jQuery.livequery(this.selector,this.context,type,fn,fn2);q.stopped=false;jQuery.livequery.run(q.id);return this;},expire:function(type,fn,fn2){var self=this;if(jQuery.isFunction(type))fn2=fn,fn=type,type=undefined;jQuery.each(jQuery.livequery.queries,function(i,query){if(self.selector==query.selector&&self.context==query.context&&(!type||type==query.type)&&(!fn||fn.jQuerylqguid==query.fn.jQuerylqguid)&&(!fn2||fn2.jQuerylqguid==query.fn2.jQuerylqguid)&&!this.stopped)jQuery.livequery.stop(query.id);});return this;}});jQuery.livequery=function(selector,context,type,fn,fn2){this.selector=selector;this.context=context||document;this.type=type;this.fn=fn;this.fn2=fn2;this.elements=[];this.stopped=false;this.id=jQuery.livequery.queries.push(this)-1;fn.jQuerylqguid=fn.jQuerylqguid||jQuery.livequery.guid++;if(fn2)fn2.jQuerylqguid=fn2.jQuerylqguid||jQuery.livequery.guid++;return this;};jQuery.livequery.prototype={stop:function(){var query=this;if(this.type)this.elements.unbind(this.type,this.fn);else if(this.fn2)this.elements.each(function(i,el){query.fn2.apply(el);});this.elements=[];this.stopped=true;},run:function(){if(this.stopped)return;var query=this;var oEls=this.elements,els=jQuery(this.selector,this.context),nEls=els.not(oEls);this.elements=els;if(this.type){nEls.bind(this.type,this.fn);if(oEls.length>0)jQuery.each(oEls,function(i,el){if(jQuery.inArray(el,els)<0)jQuery.event.remove(el,query.type,query.fn);});}else{nEls.each(function(){query.fn.apply(this);});if(this.fn2&&oEls.length>0)jQuery.each(oEls,function(i,el){if(jQuery.inArray(el,els)<0)query.fn2.apply(el);});}}};jQuery.extend(jQuery.livequery,{guid:0,queries:[],queue:[],running:false,timeout:null,checkQueue:function(){if(jQuery.livequery.running&&jQuery.livequery.queue.length){var length=jQuery.livequery.queue.length;while(length--)jQuery.livequery.queries[jQuery.livequery.queue.shift()].run();}},pause:function(){jQuery.livequery.running=false;},play:function(){jQuery.livequery.running=true;jQuery.livequery.run();},registerPlugin:function(){jQuery.each(arguments,function(i,n){if(!jQuery.fn[n])return;var old=jQuery.fn[n];jQuery.fn[n]=function(){var r=old.apply(this,arguments);jQuery.livequery.run();return r;}});},run:function(id){if(id!=undefined){if(jQuery.inArray(id,jQuery.livequery.queue)<0)jQuery.livequery.queue.push(id);}else
jQuery.each(jQuery.livequery.queries,function(id){if(jQuery.inArray(id,jQuery.livequery.queue)<0)jQuery.livequery.queue.push(id);});if(jQuery.livequery.timeout)clearTimeout(jQuery.livequery.timeout);jQuery.livequery.timeout=setTimeout(jQuery.livequery.checkQueue,20);},stop:function(id){if(id!=undefined)jQuery.livequery.queries[id].stop();else
jQuery.each(jQuery.livequery.queries,function(id){jQuery.livequery.queries[id].stop();});}});jQuery.livequery.registerPlugin('append','prepend','after','before','wrap','attr','removeAttr','addClass','removeClass','toggleClass','empty','remove');jQuery(function(){jQuery.livequery.play();});var init=jQuery.prototype.init;jQuery.prototype.init=function(a,c){var r=init.apply(this,arguments);if(a&&a.selector)r.context=a.context,r.selector=a.selector;if(typeof a=='string')r.context=c||document,r.selector=a;return r;};jQuery.prototype.init.prototype=jQuery.prototype;})(jQuery);