String.prototype.truncWithEllipsis=function(len){return(this.length>len)?this.substring(0,len).replace(/\w+$/,'')+'...':this.substring(0);}
var crawler=new Class({containerEl:null,navEL:null,tweenFx:null,rssItems:null,currentItemIdx:0,Implements:Options,options:{rotationLimit:240,duration:1000,linger:3000},initialize:function(containerEl,navEL,rssFeedURL,options){this.setOptions(options);this.containerEl=$(containerEl);this.navEL=$(navEL);$$('#'+navEL+' .leftarrow').addEvent('click',function(){$clear(this.timer);this.step(-1);return false;}.bind(this));$$('#'+navEL+' .rightarrow').addEvent('click',function(){$clear(this.timer);this.step(1);return false;}.bind(this));result=new Request({url:rssFeedURL,method:'get',onSuccess:function(responseText,responseXML){var items=responseXML.documentElement.getElementsByTagName('item');this.rssItems=new Array();if(items.length!=0){for(var i=0;i<items.length;i++){this.rssItems[i]={title:items[i].getElementsByTagName("title")[0].firstChild.nodeValue.truncWithEllipsis(120),link:items[i].getElementsByTagName("link")[0].firstChild.nodeValue}}
this.resetCrawler();}else{$('latestNews').setStyle('display','none');}}.bind(this),onFailure:function(xhr){alert("There was difficulty in retrieving the RSS data.\n"+"transport.readyState = "+xhr.readyState+" / transport.status "+xhr.status);}}).send();},resetCrawler:function(){this.currentItemIdx=0;this.present();this.start();},present:function(){$(this.navEL).getElement('span').set('html',(this.currentItemIdx+1)+' of '+this.rssItems.length);this.tweenFx=new Fx.Tween(this.containerEl);this.tweenFx.start('opacity',1,0).chain(function(){this.containerEl.set('html','<a href="'+this.rssItems[this.currentItemIdx].link+'">'+this.rssItems[this.currentItemIdx].title+'</a>');this.tweenFx.start('opacity',0,1);}.bind(this));},step:function(delta){if($defined(delta)){this.currentItemIdx=(this.currentItemIdx+delta)%this.rssItems.length;if(this.currentItemIdx<0)this.currentItemIdx=this.rssItems.length-1;}else{this.currentItemIdx=(this.currentItemIdx+1)%this.rssItems.length;}
this.present();},start:function(){this.currentItemIdx=0;this.timer=this.step.periodical(this.options.linger+this.options.duration,this);}});