/* Tumblr search
 * By Jacob DeHart
 * Code from: http://www.jacobd.com/post/22442355/tumblr-search-update
 * Date: Dec 26th 2007, 7:12pm
 *
 * Tumblr hack: A real tag cloud
 * By Alex Ibrado
 * Code from: http://www.ibrado.org/2008/03/tumblr-hack-real-tag-cloud.html
 * Date: Mar 10th 2008, 12:07pm
 * 
 * Edit by nuttyknot Jun 16th 2009
 * http://nuttyknot.com
 */
Tumblr={"searchDB":[],"searchStart":0,"searchNum":50,"searchBoxes":0,"ago":3,"dataLoaded":false,"allTime":false,"tagGenned":false,"searchBox":function(){Tumblr.searchBoxes++;document.write(Tumblr.searchBoxHTML("SearchBox"+Tumblr.searchBoxes))},"searchBoxHTML":function(a){html='<input type="text" onkeyup="Tumblr.doSearch(this.value,\''+a+"')\" />";html+='<div id="'+a+"results\" class='searchresultbox'></div>";return html},"genTagcloud":function(c){var l=document.getElementById("tagcloud"),f=[],t="",g=0,k=50,e=[],n=[],q,h=0,x="",b="";if(l==null){return}for(q=0;q<Tumblr.searchDB.length;q++){p=Tumblr.searchDB[q];if(typeof(p.tags)!="undefined"){for(var o=0;o<p.tags.length;++o){t=p.tags[o].toLowerCase().replace(/'/,"");if(typeof(f[t])=="undefined"){f[t]=1}else{f[t]++}}}}for(var m in f){if(f[m]>=2){e.push(m);n.push(f[m]);g++;if(g>=k){break}}}n.sort(function(y,j){return y-j});var d=n.length;var r=n[d-1];var w=n[Math.floor(0.2*d)]/r;var v=n[Math.floor(0.4*d)]/r;var u=n[Math.floor(0.6*d)]/r;var s=n[Math.floor(0.8*d)]/r;var a=e.sort();for(q=0;q<d;++q){t=e[q];g=f[t];h=g/r;if(h<=w){x="smaller"}else{if(h<=v){x="small"}else{if(h<=u){x="normal"}else{if(h<=s){x="big"}else{x="bigger"}}}}if(c){b+='<span class="cloud-'+x+'"><a title="'+g+' posts" href="http://nuttyknot.com/tagged/'+t+'">'+e[q]+"</a></span> "}else{b+='<span class="cloud-'+x+'">'+e[q]+"</a></span> "}}l.innerHTML=b},"doSearch":function(a,b){ret="";if(a!=""){if(Tumblr.dataLoaded){previewlength=120;leftpadding=Math.max(0,Math.floor((previewlength-a.length)/2));rightpadding=Math.max(0,Math.ceil((previewlength-a.length)/2));for(i=0;i<Tumblr.searchDB.length;i++){p=Tumblr.searchDB[i];switch(p.type){case"link":string=p["link-text"]+". "+p["link-description"]+" ";title="link-text";break;case"photo":string=p["photo-caption"]+" ";title="photo-caption";break;case"quote":string=p["quote-text"]+". "+p["quote-source"]+" ";title="quote-text";break;case"regular":string=p["regular-title"]+". "+p["regular-body"]+" ";title="regular-title";break;case"video":string=p["video-caption"]+". "+p["video-source"]+" ";title="video-caption";break;default:string="";title="";break}string=string.replace(/<\/?[^>]+>/gi,"");match=string.toLowerCase().indexOf(a.toLowerCase());if(match>-1){if(p[title]!=""){titlestr=p[title].replace(/<\/?[^>]+>/gi,"")}else{titlestr=p["url"]}ret+="<div class='searchresultrow' onclick='window.open(\""+p.url+'","_top")\'>';ret+="<a href='"+p.url+"'>"+titlestr.substr(0,120)+"</a><br />";ret+="<div class='searchexcerpt'>\"";ret+=string.substr(match-leftpadding,leftpadding).replace("<","&lt;").replace(">","&gt;");ret+="<span>";ret+=a.replace("<","&lt;").replace(">","&gt;");ret+="</span>";ret+=string.substr(match+a.length,rightpadding).replace("<","&lt;").replace(">","&gt;");ret+='"</div>';ret+="</div>"}}if(ret==""){ret="<div class='searchresultrow'>";ret+="No results for that search!";ret+="</div>"}}else{ret="<div class='searchresultrow'>";ret+="<img src='http://zeus.cp.eng.chula.ac.th/~u49tpt/tumblr/images/loading-big.gif' alt='loading...'/><br/>";ret+="Loading data...";ret+="</div>"}}document.getElementById(b+"results").innerHTML=ret},"getData":function(){$.getJSON("http://nuttyknot.com/api/read/json?callback=?&num="+Tumblr.searchNum+"&start="+Tumblr.searchStart,function(d){if(!Tumblr.allTime){var c=new Date();c.setDate(15);if(c.getMonth()>1){c.setMonth(c.getMonth()-Tumblr.ago)}else{c.setFullYear(c.getFullYear()-1);c.setMonth(12-Tumblr.ago+c.getMonth())}}for(i=0;i<d.posts.length;i++){Tumblr.searchDB.push(d.posts[i]);if(!Tumblr.allTime&&!Tumblr.tagGenned){var e=new Date(d.posts[i]["unix-timestamp"]*1000);if(e<c){b+="processing...";document.getElementById("tagcloud").innerHTML=b;Tumblr.tagGenned=true;Tumblr.genTagcloud(true)}}}var b='<img src="http://zeus.cp.eng.chula.ac.th/~u49tpt/tumblr/images/loading-big.gif" alt="loading..."/><br/>';if(d["posts-total"]>(d["posts-start"]+Tumblr.searchNum)){var a=Math.floor(((d["posts-start"]+Tumblr.searchNum)/d["posts-total"])*100);if(!Tumblr.tagGenned){b+=(a+"%");document.getElementById("tagcloud").innerHTML=b}Tumblr.searchStart=(d["posts-start"]+Tumblr.searchNum);Tumblr.searchNum=Math.min(Tumblr.searchNum,d["posts-total"]-Tumblr.searchStart);Tumblr.getData()}else{if(!Tumblr.tagGenned){b+="processing...";document.getElementById("tagcloud").innerHTML=b;Tumblr.tagGenned=true;Tumblr.genTagcloud(true)}Tumblr.dataLoaded=true}})}};$(document).ready(function(){Tumblr.getData()});
