/* 	Realtime Related Stream Bar v1.0
	Blog : http://www.moretechtips.net
	Project: http://code.google.com/p/realtime-related-stream-bar/
	Copyright 2009 [Mike @ moretechtips.net] 
	Licensed under the Apache License, Version 2.0 
	(the "License"); you may not use this file except in compliance with the License. 
	You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
	Search is powered by Collecta API [http://www.collecta.com] and API Key *May Be Used only* by this plugin. 
	I do not warrant that the current API and the resulting stream of data is fit for any particular purpose and it is provided "as is".
*/
(function($){$.fn.relatedStream=function(allOptions){var defaults={debug:0,query:'',default_query:'',realtime:1,n:15,max_tags:5,or_tags:1,show_avatar:1,default_avatar:'',update_avatar:'',story_avatar:'',comment_avatar:'',photo_avatar:'',video_avatar:'',show_author:1,show_date:1,show_category:1,image_width:48,stay_time:5000,enter_time:300,exit_time:200,animate:'opacity',get_update:1,get_comment:1,get_story:1,get_photo:1,get_video:1,api_key:'d4317ed9d7ebddc0c84ace347d716e54'};allOptions=$.extend({},defaults,allOptions);return this.each(function(){var div=$(this);var count=0,ul=null,rURL='';var visibleI=-1;var calls=0,removeExtra=false;var effectParams=new Object;var op=allOptions;if(div.attr('options')){try{op=eval('('+div.attr('options')+')');}catch(e){div.html('<b style="color:red">'+e+'</b>');return;};op=$.extend({},defaults,op);};var parseXML=function(xml){if(window.ActiveXObject&&window.GetObject){var x=new ActiveXObject('Microsoft.XMLDOM');x.async=false;x.loadXML(xml);return x;};if(window.DOMParser)return new DOMParser().parseFromString(xml,'text/xml');throw new Error('No XML parser available, Are you on a browser?');};var searchLoaded=function(xml,status){var x=$(parseXML(xml));xml='';rURL=x.find('link[rel=refresh]').attr('href');if(!rURL){if(op.debug){var err=x.find('error *').text();div.html('<b style="color:red">Error:'+(err?err:'Unkown!')+'</b>');};return;};var rs=x.find('entry');if(calls==0){count=rs.size();if(count==0)return;var inDiv=$('<div class="rrs-inner"></div>').appendTo(div.html(''));ul=$('<ul></ul>').appendTo(inDiv);inDiv.append('<a class="rrs-collecta" title="powered by Collecta" href="http://www.collecta.com" target="_blank">'+'<img src="http://developer.collecta.com/collecta-16x16.png" border="0"/>'+'</a>');};calls++;for(var i=rs.length-1;i>=0;i--)appendLI(rs.eq(i));if(calls>1&&count)removeExtra=true;if(calls==1)fadeOut();};var appendLI=function(e){var o={cat:e.find('category[xmlns=http://api.collecta.com/ns/search-0#results]').text(),date:e.find('published:first').text(),auth_url:e.find('link[rel=self]').attr('href'),auth:e.find('author:first').find('name:first').text()};if(o.cat=='update'){o.cat_name='in an update';o.title=e.find('content:first').text();o.url=e.find('link[rel=]').attr('href');o.content=linkify(o.title);o.avatar=e.find('icon:first').text();if(!o.avatar)o.avatar=op.update_avatar?op.update_avatar:op.default_avatar;}else{o.title=e.find('title:first').text();o.url=e.find('link[rel=alternate]').attr('href');if(!o.url)o.url=e.find('link[rel=]').attr('href');o.content='<a class="rrs-link" href="'+o.url+'">'+o.title+'</a>';o.avatar=e.find('link[rel=collecta-abstract-image]').attr('href');if(o.cat=='story'){o.cat_name='in a story';if(!o.avatar)o.avatar=op.story_avatar?op.story_avatar:op.default_avatar;}else if(o.cat=='comment'){o.cat_name='in a comment';if(!o.avatar)o.avatar=op.comment_avatar?op.comment_avatar:op.default_avatar;}else if(o.cat=='photo'){o.cat_name='in a photo';o.auth_url=e.find('author:first').find('uri:first').text();if(!o.avatar)o.avatar=op.photo_avatar?op.photo_avatar:op.default_avatar;}else if(o.cat=='video'){o.cat_name='in a video';o.auth_url=e.find('author:first').find('uri:first').text();if(o.auth_url.indexOf('http://gdata.youtube.com/feeds/base/users/')>-1)o.auth_url=o.auth_url.replace('http://gdata.youtube.com/feeds/base/users/','http://www.youtube.com/user/');if(o.avatar=='http://gdata.youtube.com/static/images/icn_star_empty_11x11.gif'||o.avatar=='http://gdata.youtube.com/static/images/icn_star_full_11x11.gif')o.avatar='';if(!o.avatar)o.avatar=op.video_avatar?op.video_avatar:op.default_avatar;}};if(!o.auth_url)o.auth_url=o.url;if(o.auth)o.auth='<a class="rrs-author" href="'+o.auth_url+'">'+o.auth+'</a>';$('<li style="display:none;">'+'<span class="rrs-body">'+(op.show_avatar&&o.avatar?'<span class="rrs-avatar">'+'<a href="'+o.auth_url+'">'+'<img src="'+o.avatar+'" height="'+op.image_width+'" width="'+op.image_width+'" border="0"/>'+'</a>'+'</span>':'')+(op.show_author&&o.auth?o.auth+' ':'')+'<span class="rrs-content">'+o.content+'</span>'+'<span class="rrs-meta">'+(op.show_date?'<span class="rrs-date">'+formatDate(o.date)+'</span>':'')+(op.show_category?'<span class="rrs-category"> '+o.cat_name+'</span>':'')+'</span>'+'</span>'+'</li>').appendTo(ul);};var fadeOut=function(){if(visibleI>-1){$('li',ul).eq(visibleI).fadeOut(op.exit_time,fadeIn);}else fadeIn();};var fadeIn=function(){if(removeExtra)removeExtraLI();visibleI++;if(visibleI>=count)visibleI=0;effectParams[op.animate]='show';$('li',ul).eq(visibleI).animate(effectParams,op.enter_time,"linear",fadeStill);if(visibleI+1>=count&&op.realtime)search();};var fadeStill=function(){$('li',ul).eq(visibleI).animate({opacity:1},op.stay_time,"linear",fadeOut);};var removeExtraLI=function(){var crntCount=$('li',ul).size();if(crntCount>op.n){$('li:lt('+(crntCount-op.n)+')',ul).remove();count=op.n;}else{count=crntCount;};removeExtra=false;};var linkify=function(d){return d.replace(/\bhttps?\:\/\/\S+/gi,function(b){var c='';b=b.replace(/(\.*|\?*|\!*)$/,function(m,a){c=a;return''});return'<a class="rrs-link" href="'+b+'">'+((b.length>25)?b.substr(0,24)+'...':b)+'</a>'+c;})};var decodeHTML=function(s){return s.replace(/&lt;/gi,'<').replace(/&gt;/gi,'>').replace(/&quot;/gi,'"');};function convertAtomDateString(str){var atomFormat=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+-]\d{2}:\d{2})$/i;if(!atomFormat.test(str))return"";var months=["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var year=str.slice(0,4);var month=months[1*str.slice(5,7)];var date=str.slice(8,10);var hour=str.slice(11,13);var minute=str.slice(14,16);var second=str.slice(17,19);var offset="GMT";if(str.indexOf("Z")==-1){var x=str.lastIndexOf(":");offset+=str.slice(x-3,x)+str.slice(x+1);};return date+" "+month+" "+year+" "+hour+":"+minute+":"+second+" "+offset;};var formatDate=function(val){val=convertAtomDateString(val);if(!val)return'';var dat=new Date;var tody=new Date();dat.setTime(Date.parse(val));var td=tody.getDate(),tm=tody.getMonth()+1,ty=tody.getFullYear(),th=tody.getHours(),tmn=tody.getMinutes(),ts=tody.getSeconds();var d=dat.getDate(),m=dat.getMonth()+1,y=dat.getFullYear(),h=dat.getHours(),mn=dat.getMinutes(),s=dat.getSeconds();if(y==ty&&m==tm&&d==td){var dh=th-h;if(dh>0)return dh+' hour'+(dh>1?'s':'')+' ago';var dmn=tmn-mn;if(dmn>0)return dmn+' minute'+(dmn>1?'s':'')+' ago';var ds=ts-s;return ds+' second'+(ds>1?'s':'')+' ago';}else return m+'/'+d+'/'+y;};var search=function(){var data={rpp:op.n,api_key:op.api_key};if(!rURL)data.q=op.query;$.ajax({url:(rURL?rURL:'http://api.collecta.com/search'),data:data,success:searchLoaded,dataType:'jsonp'})};var init=function(){var tags=[];if(!op.query)$('a[rel="tag"]:lt('+op.max_tags+')').each(function(){var tag=$.trim($(this).text().replace(/\n/g,''));if($.inArray(tag,tags)==-1)tags[tags.length]=tag;});if(tags.length>0)op.query=tags.join((op.or_tags?' OR ':' '));if(!op.query)op.query=op.default_query;if(!op.get_update)op.query+=' -category:update';if(!op.get_comment)op.query+=' -category:comment';if(!op.get_story)op.query+=' -category:story';if(!op.get_photo)op.query+=' -category:photo';if(!op.get_video)op.query+=' -category:video';search();};init();});}})(jQuery);jQuery(document).ready(function(){jQuery('div.related-stream').relatedStream();});
