// Hearsay v01c
// 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, srcJSON)
{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';}if (srcJSON) var launchURL=feedURL+'&_callback=HSProcQuery'; else 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){if (!obj) obj=JSONfeed; else JSONfeed=obj;var i=0;var results=new Array();if(!obj.item||typeof(obj.item)=='undefined'){ if(!obj.value.items||typeof(obj.value.items)=='undefined') {HStargNode.replaceChild(HSmsg,HStargNode.firstChild);return;} results=obj.value.items;} else {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; if(comData.url.indexOf('#')<0)descr.href+='#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 ,'').replace(/<br[^>]*>\s*<br[^>]*>\s*Posted\s+by\s+.+$/i ,'').replace(/(.*)\shas left a new comment on your post.+<\/a>(&quot;|\"):\s+<br><br>/i, '').replace(/target="_blank"/ig,'');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["atom:updated"]; var descr=obj.description;var pd=new Date(doDate(pubDate));var timestamp=pd.toLocaleString();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 reD = /(.+)\shas left a new comment on your post[^<>]+<a[^<>]*?href="([^<>"]+)"[^<>]*>([^<>]+)<\/a>/i;var outD=reD.exec(descr);var author = outD[1].replace(/<[^>]+>/ig,'');if (!author)author="Anonymous";var url=outD[2];title=outD[3];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(/>\s*Posted\s+by\s+.+$/i ,'');sumText=sumText.replace(/<br[^>]*>/ig,' ');sumText=sumText.replace(/.*\shas left a new comment on your post.+(&quot;|\"):\s*/i, '');sumText=sumText.substr(0,comSize);var lpos=sumText.lastIndexOf(' ');sumText=sumText.substr(0,lpos);return sumText;} function doDate(str){ var re=/(\d+)-(\d+)-(\d+)T(\d+:\d+:\d+)\.\d+(\+\d+):(\d+)/i; res=str.replace(re, '$1/$2/$3 $4 $5$6'); return Date.parse(res);}
