// Hearsay v01
// Greg Hill (http://www.greg-hill.id.au)
// This work is licensed under a Creative Commons Attribution-ShareAlike 2.1 Australia License.

// See http://blogfresh.blogspot.com 

function hearsay(feedURL,targID)
{if(!targID) targID='recent-comments';HStargNode=document.getElementById(targID);if(typeof(nullSring)=='undefined') nullString='No comments found';HSmsg=document.createTextNode(nullString);if(!feedURL){alert('No feed provided!');feedURL='http://speccy-comments.blogspot.com/rss.xml';}var launchURL='http://xoxotools.ning.com/outlineconvert.php?output=json&classes=item&url='+encodeURIComponent(feedURL)+'&xn_auth=no&callback=HSProcQuery&submit=Convert';var script=document.createElement('script');script.type='text/javascript';script.src=launchURL;document.getElementsByTagName("head")[0].appendChild(script);return;}function HSProcQuery(obj){JSONfeed=obj;var i=0;var results=new Array();if(!obj.item||typeof(obj.item)=='undefined'){HStargNode.replaceChild(HSmsg,HStargNode.firstChild);return;}results=obj.item;var ul=document.createElement('ul');HStargNode.replaceChild(ul,HStargNode.firstChild);if(typeof(comCount)=='undefined') comCount=5;if(results.length<comCount) comCount=results.length;for(var i=0;i<comCount;i++){var li=document.createElement('li');var descr=document.createElement('a');var summary=document.createElement('div');var full=document.createElement('div');var comData=extractCommentData(results[i]);var comText=extractCommentText(results[i].description);li.className='hearsay';descr.href=comData.url+'#comments';descr.title=comData.timestamp;descr.innerHTML='<b>'+comData.author+'</b> ('+comData.lag+') on <i>'+comData.title+'</i>:';descr.className='hearsay-descr';summary.innerHTML='<span onClick="this.parentNode.style.display=\'none\';this.parentNode.nextSibling.style.display=\'block\';">'+comText+'</span>';summary.className='hearsay-summary';summary.title='Click to Expand';full.innerHTML=results[i].description.replace(/<br[^>]*>\-\-<br[^>]*>.+$/i ,'');full.innerHTML='<span onClick="this.parentNode.style.display=\'none\';this.parentNode.previousSibling.style.display=\'block\';">'+full.innerHTML+'</span>';full.style.display='none';full.className='hearsay-full';full.title='Click to Collapse';li.appendChild(descr);li.appendChild(summary);li.appendChild(full);ul.appendChild(li);}var x=HStargNode;while (x.childNodes[1])x.removeChild(x.lastChild);return;}function extractCommentData(obj){var pubDate=obj.pubdate;var descr=obj.description;var pd=new Date(pubDate);var timestamp=pd.toLocaleString();var reD=/>\s*Posted\s+by\s+(.*)\s+to\s+<a href="([^\"]*)"+/i;var outD=reD.exec(descr);if(!outD){prompt('Error: Hearsay: Could not process comment: ',obj.description);return;}var author=outD[1];if(!author) author="Anonymous";var url=outD[2];var reT=/\/([^\/]+)\.html/i;var outT=reT.exec(url);if(!outT){alert('Error: Hearsay: Could not process comment title: '+obj.title);return;}var title=outT[1];var words=title.split(/\-/g);for (var i=0 ;i<words.length;i++){var firstLetter=words[i].substring(0,1).toUpperCase();var restOfWord=words[i].substring(1,words[i].length).toLowerCase();words[i]=firstLetter+restOfWord;}title=words.join(' ');var currently=new Date();var lag=currently-pd;var periods ={"years":31557600000,"months":2635200000,"weeks":604800000,"days":86400000,"hours":3600000,"minutes":60000};var lagStr;for (var p in periods){var offset=Math.floor(lag/periods[p]);if(offset>0){lagStr=offset+' '+p+' ago';break;}}if(!lagStr)lagStr='just now';var reL=/^(1\s)(.+)(s)(\sago)/i;outL=reL.exec(lagStr);if(outL)lagStr='last '+outL[2];if(lagStr.indexOf('last day')==0)lagStr='yesterday';var comment=new Array();comment["author"]=author;comment["timestamp"]=timestamp;comment["url"]=url;comment["title"]=title;comment["lag"]=lagStr;return comment;}function extractCommentText( obj ){if(typeof(comSize)=='undefined')comSize=100;var sumText=obj.replace(/<div[^>]*>|<span[^>]*>|<a[^>]*>|<\/div>|<\/span>|<\/a>/ig,'');sumText=sumText.replace(/<br[^>]*>\-\-<br[^>]*>.+$/i ,'');sumText=sumText.replace(/<br[^>]*>/ig,' ');sumText=sumText.substr(0,comSize);var lpos=sumText.lastIndexOf(' ');sumText=sumText.substr(0,lpos);return sumText;}