/*
 * jQuery Autoscroller component
 * @name jquery.autoscroller.js
 * @author Alberto Arena <arena.alberto@gmail.com>
 * @version 0.1
 * @date July 22, 2010
 * @category jQuery plugin
 */

;(function($){var $autoScroller=$.autoScroller=function(options){$(window).autoScroller(options);};$.fn.autoScroller=function(options){this.settings={refresh:5,maxRows:5,feed:'feeder.php',lastFeed:'lastid',initFeed:'init',cssClass:'autoScroller',beginScroll:function(){},afterScroll:function(){},fields:['keyword','result'],fieldLastid:'time',itemLabel:"{$keyword}, found {$result} times"};jQuery.extend(this.settings,arguments[0]);this.addClass(this.settings.cssClass);this.lastid=Math.floor(new Date().getTime()/1000);$autoScroller.readLastData(this,true);};$autoScroller.readLastData=function($this,init){var param;if(init)
param=$this.settings.initFeed+"=1&count="+$this.settings.maxRows;else
param=$this.settings.lastFeed+"="+$this.lastid+"&count="+$this.settings.maxRows;if($.browser.msie){param+="&_rand"+Math.floor(Math.random()*50000000);}
$.ajax({type:"GET",url:$this.settings.feed,data:param,dataType:"json",success:function(data){$this.settings.beforeScroll.call($this);for(var i=data.length-1;i>=0;i--){$this.lastid=data[i][$this.settings.fieldLastid];var label=$this.settings.itemLabel;for(var key in data[i]){label=label.replace("{$"+key+"}",data[i][key]);label=label.replace("{$"+key+"}",data[i][key]);}
var html='<div class="_item _hidden">'+'<div class="i_con"><div>'+label+'</div></div>'+'</div>';$this.prepend(html);var count=$this.find('._item').length;$this.find('._item:first').slideDown(1000);if(count>$this.settings.maxRows){$this.find('._item:last').slideUp(1000,function(){$this.find('._item:last').remove()});}}
$this.settings.afterScroll.call($this);setTimeout(function(){$autoScroller.readLastData($this,false);},$this.settings.refresh*1000);},error:function(XMLHttpRequest,textStatus,errorThrown){var html='<div class="_item _hidden">'+'<div class="i_con"><div>Unable to refresh data</div></div>'+'</div>';$this.html(html);}});}})(jQuery);
