if(window.jQuery){
	if(!window.Online){
		window.Online=function(selector){
			var self = this;
			self.selector=selector;
			$(document).ready(function(){
				self.init();
			})
		}

		Online.prototype.url=function(url){
			var self=this;
			self.url=url;
		}

		Online.prototype.init=function(){
			var self = this;
			self.list=$(self.selector);
			self.last_ts=0;
			self.events={};
			$('li',self.list).each(function(){
				var params = $(this).get_params();
				var ts=params['ts'];
				if(ts>self.last_ts){
					self.last_ts=ts;
				}
				self.events[params['id']]={id: params['id'], time: params['time'], obj:this};
			});
			self.update();
		}

		Online.prototype.update=function(){
			var self = this;
			$.getJSON(self.url,{ts:self.last_ts},function(list){
				for(var i=0;i<list.items.length;i++){
					var item=list.items[i];
					if(self.last_ts<item['ts']){
						self.last_ts=item['ts'];
					}
					if(self.events[item['id']]){
						$('li#event'+item['id'],self.list).replaceWith(item['html']).fadeTo('slow',0.33,function(){$(this).fadeTo('fast',1)});
						self.events[item['id']]['ts']=item['ts'];
					}
					else{
						var li=$('li',self.list);
						var place=false;
						for(var j=0;j<li.length && place===false;j++){
							if($(li[j]).get_param('time')<item['time']){
								place=li[j];
							}
						}

						obj = $(item['html']);
						$(obj).fadeOut('fast');
						self.events[item['id']]={id: item['id'], time: item['time']};
						if(place===false){
							$(self.list).append(obj);
						}
						else{
							$(place).before(obj);
						}
						$(obj).fadeIn();
					}
				}
			});
			setTimeout((function(){ self.update() }),45000);
		}
	}
}

