
Tumblr = {
	'searchDB' : [],
	'searchStart' : 0,
	'searchNum' : 20,
	'searchBoxes' : 0,
	'searchBox' : function(){
		Tumblr.searchBoxes++;
		document.write(Tumblr.searchBoxHTML("SearchBox"+Tumblr.searchBoxes));
	
	},
	'searchBoxHTML' : function(id){
		html = '<input type="text" onkeyup="Tumblr.doSearch(this.value,\''+id+'\')" />';
		html += "<div id=\""+id+"results\" class='searchresultbox'></div>";
		return html;
	},
	'doSearch' : function(value,id){
		ret = '';
		previewlength = 120;
		leftpadding = Math.max(0,Math.floor((previewlength-value.length)/2));
		rightpadding = Math.max(0,Math.ceil((previewlength-value.length)/2));
		if(value!=''){
			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(value.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 += value.replace('<','&lt;').replace('>','&gt;');
					ret += '</span>';
					ret += string.substr(match+value.length,rightpadding).replace('<','&lt;').replace('>','&gt;');
					ret += '"</div>';
					ret += '</div>';
				}
			}
			if(ret == ''){
				ret = "<div class='searchresultrow'>";
				ret += "No results for that search!";
				ret += "</div>";
			}
		}
		document.getElementById(id+"results").innerHTML = ret;
	},
	'getData' : function(){
		$.get('/api/read/json?num='+Tumblr.searchNum+'&start='+Tumblr.searchStart,
			function(data){
				eval(data);
				for(i=0;i<tumblr_api_read.posts.length;i++){
					Tumblr.searchDB.push(tumblr_api_read.posts[i]);
				}
				if(tumblr_api_read['posts-total'] > (tumblr_api_read['posts-start']+Tumblr.searchNum)){
					Tumblr.searchStart = (tumblr_api_read['posts-start']+Tumblr.searchNum);
					Tumblr.searchNum = Math.min(Tumblr.searchNum,tumblr_api_read['posts-total'] - Tumblr.searchStart);
					Tumblr.getData();
				}else{
					//All data has loaded
				}
			}
		);
	}
};

$(document).ready(function(){
	Tumblr.getData();
});