var factory=new Class({initialize:function(){this.queries={};this.queries_length=0;this.since_ids={};this.keywords={};this.pending={};this.ids=[];this.tweets={};this.history_tweets={};this.translations={};this.timeout=FACTORY_TIMEOUT;this.timer_enabled={};},add:function(E){if(this.queries[E]){return false;}this.queries[E]=true;this.queries_length++;this.pending[E]=false;this.since_ids[E]=0;color=Colors.pop();var C=[E];var G=E.split(" ");for(var B in G){C.push(G[B]);}for(var B in C){var A=C[B];if(typeof (A)!="string"){continue;}switch(A.toLowerCase()){case"and":case"the":continue;default:if(A.length<3){continue;}}A=A.replace("(","\\(");A=A.replace(")","\\)");A=A.replace("[","\\[");A=A.replace("]","\\]");var D=new RegExp("("+A+")","gi");var F={query:E,regex:D,color:color};this.keywords[A]=F;}if(!this.timer_enabled[E]){this.start(E);}if(Colors.length==0){$j("#query").fadeOut();}return true;},remove:function(E){var B=this.translations[E]||E;if(this.queries[B]){var A={};delete this.queries[B];this.queries_length--;Factory.stop(E);for(var G=0;G<this.ids.length;G++){var D=this.ids[G];var F=this.tweets[D];if(F.queries[B]){delete this.tweets[D].queries[E];this.tweets[D].refcount--;}if(this.tweets[D].refcount==0){delete this.tweets[D];A[D]=true;}}_ids=[];for(var C in this.ids){var G=this.ids[C];if(typeof G=="number"&&!A[G]){_ids.push(this.ids[C]);}}delete this.ids;this.ids=_ids;Interface.update_count();}},start:function(A){this.timer_enabled[A]=true;this.e_timer_event(A);},stop:function(A){this.timer_enabled[A]=false;},e_timer_event:function(E){if(!this.queries[E]){if(!this.translations[E]||!this.queries[this.translations[E]]){return ;}}_this=Factory;params="q="+escape(E);if(!_this.pending[E]){var B=/near:(.+)/g.exec(E);_this.pending[E]=true;if(B){B=B[1];C="geocode.php";params={location:B};var D=function(F){return _this.e_loc_recv(E,F);};$j.getJSON(C,params,D);}else{var A=_this.since_ids[E];params+="&since_id="+A;params+="&callback=?";var C="http://search.twitter.com/search.json?"+params;var D=function(F){return _this.e_recv(E,F);};$j.getJSON(C,D);}}window.setTimeout(function(){_this.e_timer_event(E);},_this.timeout);},e_loc_recv:function(G,F){_this=Factory;_this.pending[G]=false;if(F&&F.ResultSet&&F.ResultSet.Result){var D=F.ResultSet.Result;var H=D.Latitude;var E=D.Longitude;old_query=G;var A=_this.since_ids[old_query];var B="http://search.twitter.com/search.json";params=["geocode="+escape([H,E,"10km"].join(",")),"q="+old_query,"since_id="+A,"callback=?"].join("&");B=B+"?"+params;var C=function(I){return _this.e_recv(old_query,I);};$j.getJSON(B,C);}window.setTimeout(function(){_this.e_timer_event(old_query);},_this.timeout);},e_recv:function(C,B){if(!B||!B.query){return false;}_this=Factory;if(B.query!=C){_this.pending[B.query]=false;delete _this.pending[C];_this.since_ids[B.query]=_this.since_ids[C];delete _this.since_ids[C];_this.queries[B.query]=true;delete _this.queries[C];trace(C+" => "+B.query);_this.translations[C]=B.query;C=B.query;}else{_this.pending[C]=false;}if(B.max_id){_this.since_ids[C]=B.max_id;}if(B.results){for(var A in B.results){if(typeof B.results[A]!="object"){continue;}var D=B.results[A].id;if(!D||_this.history_tweets[D]){continue;}else{if(!_this.tweets[D]){_this.ids.push(D);Interface.update_count();B.results[A].queries={};B.results[A].queries[B.query]=true;B.results[A].refcount=1;_this.tweets[D]=B.results[A];}else{_this.tweets[D].refcount++;_this.tweets[D].queries[B.query]=true;}}}}_this.ids=_this.ids.sort().reverse();if(!started){started=true;Reader.start();}},pop:function(){if(this.ids.length==0){return false;}var B=this.ids.pop();var A=this.tweets[B];this.history_tweets[B]=A;delete this.tweets[B];return A;}});