
function Roosst(){}
Roosst.ArticleEnumeratorProxy=function(headAe,tailAe){this.headAe=headAe;this.tailAe=tailAe;this.queued=null;}
Roosst.ArticleEnumerator=function(items,startPos){var pos=-1;var articles=items;if(startPos>=0&&startPos<articles.length)
pos=startPos;this.reset=function(pastEnd){if(pastEnd)
pos=articles.length;else
pos=-1;}
this.current=function(){if(pos==-1||pos==articles.length)
return null;else
return articles[pos];}
this.moveNext=function(){if(pos<articles.length-1&&articles.length>0){pos++;return true;}
else{this.reset(true);return false;}}
this.movePrevious=function(){if(pos>0&&articles.length>0){pos--;return true;}
else{this.reset(false);return false;}}
this.clone=function(){return new Roosst.ArticleEnumerator(articles,pos);}}
Roosst.VidiStyle=function(font,fontSize,fontColour,width,itemBgColour,itemAltBgColour){this.font=font;this.fontSize=fontSize;this.fontColour=fontColour;this.width=width;this.itemBgColour=itemBgColour;this.itemAltBgColour=itemAltBgColour;}
Roosst.VidiSettings=function(items,reverse,speed,itemHeight){this.items=items;this.reverse=reverse;this.speed=speed;this.itemHeight=itemHeight;this.filled=false;}
Roosst.serialiseArticles=function serialiseArticles(rssDocuments){function descendingSortItem(a,b){return b.pubDateUtcTime-a.pubDateUtcTime;}
var result=new Array();var total=0;for(var d=0;d<rssDocuments.length;d++){for(var i=0;i<rssDocuments[d].channel.item.length;i++){var rssItem=rssDocuments[d].channel.item[i];rssItem.channel=rssDocuments[d].channel;result[total++]=rssItem;}}
result.sort(descendingSortItem);return result;}
Roosst.pause=function(vidiId){roosstQuery('#'+vidiId+' > div:.roosstVidiContent').attr('state','pause');}
Roosst.resume=function(vidiId){roosstQuery('#'+vidiId+' > div:.roosstVidiContent').attr('state','play');}
Roosst.rewind=function(vidiId){roosstQuery('#'+vidiId+' > div:.roosstVidiContent').attr('state','rewind');}
Roosst.fastForward=function(vidiId){}
Roosst.fastRewind=function(vidiId){}
Roosst.isPaused=function(vidiId){return roosstQuery('#'+vidiId+' > div:.roosstVidiContent').attr('state')=='pause';}
Roosst.initialise=function(vidiId,rssSet,vidiSettings,vidiStyle){var vidiJq=roosstQuery('#'+vidiId);if(vidiStyle){if(vidiStyle.height)
vidiJq.height(vidiStyle.height);if(vidiStyle.width)
vidiJq.width(vidiStyle.width);}
var itemsJq=vidiJq.find('div.roosstVidiContent');itemsJq.text('');if(vidiSettings.itemHeight.substr(vidiSettings.itemHeight.length-2,2).toLowerCase()=="px")
itemsJq.height(vidiSettings.items*vidiSettings.itemHeight.substr(0,vidiSettings.itemHeight.length-2));var articleEnumeratorProxyKey=vidiId+'.aep';var articles=Roosst.serialiseArticles(rssSet.documents);if(typeof Roosst.intialising=='function')
Roosst.intialising(vidiId,rssSet.name,articles);else
vidiJq.find('div.roosstVidiHeader').text(rssSet.name);var headArticleEnumerator=new Roosst.ArticleEnumerator(articles);var tailArticleEnumerator=new Roosst.ArticleEnumerator(articles);tailArticleEnumerator.reset(true);var articleEnumeratorProxy=window[articleEnumeratorProxyKey];if(articleEnumeratorProxy==undefined){articleEnumeratorProxy=new Roosst.ArticleEnumeratorProxy(headArticleEnumerator,tailArticleEnumerator);window[articleEnumeratorProxyKey]=articleEnumeratorProxy;function runner(articleEnumeratorProxy,itemsDivJq,vidiSettings,vidiStyle){var _articleEnumeratorProxy=articleEnumeratorProxy;var _itemsDivJq=itemsDivJq;var _vidiSettings=vidiSettings;var _vidiStyle=vidiStyle;this.run=function(){Roosst.displayNextItem(_articleEnumeratorProxy,_itemsDivJq,_vidiSettings,_vidiStyle);itemsDivJq.attr('intervalID',window.setInterval(function(){Roosst.displayNextItem(_articleEnumeratorProxy,_itemsDivJq,_vidiSettings,_vidiStyle);},_vidiSettings.speed));}}
new runner(articleEnumeratorProxy,itemsJq,vidiSettings,vidiStyle).run();}
else{articleEnumeratorProxy.headAe=headArticleEnumerator;articleEnumeratorProxy.tailAe=tailArticleEnumerator;}}
Roosst.resupply=function(vidiId,rssSet)
{var articles=Roosst.serialiseArticles(rssSet.documents);var headArticleEnumerator=new Roosst.ArticleEnumerator(articles);var tailArticleEnumerator=new Roosst.ArticleEnumerator(articles);tailArticleEnumerator.reset(true);var articleEnumeratorProxyKey=vidiId+'.aep';var articleEnumeratorProxy=window[articleEnumeratorProxyKey];articleEnumeratorProxy.queued=new Roosst.ArticleEnumeratorProxy(headArticleEnumerator,tailArticleEnumerator);}
Roosst.populateItemDiv=function(div,rssItem,vidiStyle,alt){div.onclick=function(){window.open(rssItem.link)};var html='<strong style="text-decoration:underline">'+rssItem.title+'</strong>';if(rssItem.description!=null){var summary=Roosst.summarize(rssItem);if(summary.length>0)
html+=' - '+summary;}
div.innerHTML=html;div.style.cursor='pointer';div.style.height='4em';div.style.overflowY='hidden';div.style.padding='0 0.2em 0 0.2em';if(vidiStyle)
div.style.backgroundColor=alt?vidiStyle.itemAltBgColour:vidiStyle.itemBgColour;div.className=alt?'roosstItemAlt':'roosstItem';}
Roosst.wrappedMoveNext=function(ae){if(!ae.moveNext()){ae.reset(false);ae.moveNext();}}
Roosst.wrappedMovePrevious=function(ae){if(!ae.movePrevious()){ae.reset(true);ae.movePrevious();}}
Roosst.prepareNewDiv=function(newDivJq,alt,cleanse){newDivJq[0].style.opacity=0;newDivJq[0].style.filter='alpha(opacity=0)';newDivJq[0].style.overflowY='hidden';newDivJq[0].style.overflowX='hidden';newDivJq[0].style.height='1px';newDivJq.attr('isAlt',alt);if(cleanse)
Roosst.cleanse(newDivJq[0]);}
Roosst.summarize=function(rssItem){var summary='';roosstQuery('<root>'+rssItem.description+'</root>').each(function(){if(this.innerText!=undefined&&this.innerText!=null&&roosstQuery.trim(this.innerText).length>0){summary=this.innerText;return false;}else if(this.nodeValue){summary+=this.nodeValue;summary+=' ';}else if(this.textContent){summary+=this.textContent;summary+=' ';}});if(roosstQuery.trim(summary)=='null')
summary='';return roosstQuery.trim(summary);}
Roosst.cleanse=function(el){roosstQuery(el).find('img').remove();roosstQuery(el).find('iframe').remove();roosstQuery(el).find('object').remove();roosstQuery(el).find('embed').remove();roosstQuery(el).find('script').attr('src','');var jLayers=roosstQuery(el).find('div[style]').filter(function(index){return roosstQuery(this).css('position')=='absolute';}).remove();}
Roosst.moveArticleEnumeratorProxy=function(aep,vidiSettings,rewind){var result;if(aep.queued!=null){aep.headAe=aep.queued.headAe;aep.tailAe=aep.queued.tailAe;aep.queued=null;}
if(rewind){Roosst.wrappedMovePrevious(aep.tailAe);result=aep.tailAe.current();if(vidiSettings.filled)
Roosst.wrappedMovePrevious(aep.headAe);}
else{Roosst.wrappedMoveNext(aep.headAe);result=aep.headAe.current();if(vidiSettings.filled)
Roosst.wrappedMoveNext(aep.tailAe);}
return result;}
Roosst.displayNextItem=function(articleEnumeratorProxy,itemsDivJq,vidiSettings,vidiStyle){if(itemsDivJq.attr('state')=='pause')return;var rewind=(itemsDivJq.attr('state')=='rewind');var current=Roosst.moveArticleEnumeratorProxy(articleEnumeratorProxy,vidiSettings,rewind);if(current!=null){if(rewind){var oldDivQuery='> div:first';var newOrPreviousDivQuery='> div:last';}else{var oldDivQuery='> div:last';var newOrPreviousDivQuery='> div:first';}
var alt=false;if(itemsDivJq.find('> div').length>0)
alt=(itemsDivJq.find(newOrPreviousDivQuery).attr('isAlt')=='false');var newDivJq=roosstQuery('<div></div>');var cleanse=true;if(typeof Roosst.populateItemDivOverride=='function'){Roosst.populateItemDivOverride(newDivJq[0],current,vidiStyle,alt);cleanse=false;}
else
Roosst.populateItemDiv(newDivJq[0],current,vidiStyle,alt);Roosst.prepareNewDiv(newDivJq,alt,cleanse);rewind?itemsDivJq.append(newDivJq[0]):itemsDivJq.prepend(newDivJq[0]);if(itemsDivJq.find('> div').length>vidiSettings.items)
itemsDivJq.find(oldDivQuery).animate({opacity:0,height:'0px'},vidiSettings.speed/5,null,function(){itemsDivJq.find(oldDivQuery).remove();if(!vidiSettings.filled){vidiSettings.filled=true;articleEnumeratorProxy.tailAe=articleEnumeratorProxy.headAe.clone();for(i=0;i<vidiSettings.maxItems-1;i++)
Roosst.wrappedMovePrevious(articleEnumeratorProxy.tailAe);}});itemsDivJq.find(newOrPreviousDivQuery).animate({opacity:1,height:vidiSettings.itemHeight},vidiSettings.speed/5,null,function(){itemsDivJq.find(newOrPreviousDivQuery).css('overflowY','hidden');});}}