googleSearch={resultsContainerId:'googleSearchResults',resultsListId:'googleResultsList',logoId:'googleLogo',loadingId:'googleSearchLoading',loadingGraphicId:'googleSearchLoadingGraphic',scripTag:'',refreshTimeout:'',currentSearchTerm:'',baseApiUrl:'http://ajax.googleapis.com/ajax/services/search/',loadedScripts:[],args:{type:"web",limit:8,domain:false,safeSearch:true,keyword:""},init:function(a){for(var b in a){if(typeof a[b]!=='function'){this.args[b]=a[b]}}
this.buildHtml()},buildHtml:function(){jQuery(document).ready(function(){jQuery('#'+ googleSearch.args.id).click(function(a){a.stopPropagation()});jQuery('#'+ googleSearch.args.id).focus(function(){googleSearch.currentSearchTerm=this.value;if(this.value!=''){jQuery('#'+ googleSearch.resultsContainerId).show()}});jQuery(document).click(function(a){if(jQuery(a.target).parents('#'+ googleSearch.resultsContainerId).length<=0){jQuery('#'+ googleSearch.resultsContainerId).hide()}});jQuery('#'+ googleSearch.args.id).keyup(function(){googleSearch.inputSearch(this);return false});jQuery('#'+ googleSearch.args.id).closest("form").submit(function(){return false})});output='<div id="'+ googleSearch.resultsContainerId+'">';output+='</div>';jQuery('body').prepend(output);var b=jQuery('#'+ this.args.id).height();var c=jQuery('#'+ this.args.id).width();var d=jQuery('#'+ this.args.id).offset();var e=d.left- jQuery('#'+ googleSearch.resultsContainerId).width()/2+ c/2;jQuery('#'+ googleSearch.resultsContainerId).css({top:d.top+ b+ 5,left:e});if(this.args.keyword!=''){this.search()}},search:function(){this.currentSearchTerm=this.args.keyword;this.showLoading();var b=this.args.limit;var c='';var d='&safe=moderate';var e='';if(!this.args.keyword&&!this.args.fromUser){return false}
if(false==this.args.safeSearch){d='&safe=off'}
c='&q='+ this.args.keyword;if(this.args.domain!=''){c=c+' site:'+ this.args.domain}
url=this.baseApiUrl+ this.args.type+"?v=1.0"+ c+"&key="+ this.args.apiKey+"&callback=googleSearch.search_cb&rsz=large";this.callCount=1;this.currentCount=0;if(this.args.limit>8){this.callCount=Math.ceil(this.args.limit/8);this.callsPending=this.callCount}
for(var i=0;i<this.callCount;i++){this.addScript(url+'&start='+(i*8))}
this.resultsReturned=0;this.responseData=[];this.search_cb=function(a){if(a.responseStatus==200){this.resultsReturned++;this.responseData[a.responseData.cursor.currentPageIndex]=a.responseData}
if(this.resultsReturned==this.callCount){this.hideLoader();this.buildResults()}}},inputSearch:function(){if(jQuery('#'+ this.args.id).val()==''){jQuery('#'+ googleSearch.resultsContainerId).hide()}else if(this.currentSearchTerm!=jQuery('#'+ this.args.id).val()){jQuery('#'+ googleSearch.resultsContainerId).show();clearTimeout(window.searchFieldTimeout);window.searchFieldTimeout=window.setTimeout("googleSearch.inputSearchTimeout()",500);window.clearTimeout(window.refreshTimeout);this.showLoading()}},showLoading:function(){jQuery('#'+ googleSearch.resultsContainerId).html('<div id="'+ googleSearch.loadingId+'"><div id="'+ googleSearch.loadingGraphicId+'"></div><div id="'+ googleSearch.logoId+'">&nbsp;</div></div>')},inputSearchTimeout:function(){clearTimeout(window.searchFieldTimeout);if(jQuery('#'+ this.args.id).val()!==''){this.args.keyword=jQuery('#'+ this.args.id).val();this.sinceId='';this.sinceSearchId='';this.search()}},buildResults:function(a){var b='';if(jQuery('#'+ googleSearch.resultsListId).length<=0){var c='';if(this.responseData.length<=0){c='noresults'}
b+='<ul id="'+ googleSearch.resultsListId+'" class="'+ c+'">';if(this.responseData.length<=0){b+='<li class="top"><p title="No Results"><span>No Results. Please try again.</span></p></li>'}
b+='</ul>';b+='<div id="'+ googleSearch.logoId+'">&nbsp;</div>';jQuery('#'+ googleSearch.resultsContainerId).append(b)}
var b='';for(var h=0;h<this.responseData.length;h++){var d=this.responseData[h];for(var i=0;i<d.results.length;i++){result=d.results[i];className='';if(this.currentCount>=this.args.limit){this.removeScript();continue}
this.currentCount++;if(i==0&&this.currentCount==1){className+='top '}
if(i%2==1){className+='odd '}
var e=result.titleNoFormatting;var f=this.stripHTML(result.content);var k=result.titleNoFormatting;var l=this.stripHTML(result.content);if(e.length>23){e=e.substr(0,23)+' &hellip;'}
if(f.length>30){f=f.substr(0,30)+' &hellip;'}
this.regExp=new RegExp('('+ this.currentSearchTerm+')',"gi");var g=e.replace(this.regExp,'<b>$1</b>');var j=f.replace(this.regExp,'<b>$1</b>');b+='<li class="'+ className+'" onclick="window.location.href=\''+ result.url+'\'">';b+='<div class="favicon"><img src="http://www.google.com/s2/favicons?domain='+ result.visibleUrl+'"></div>';b+='<h1><span title="'+ k+'">'+ g+'</span></h1>';b+='<p><span title="'+ l+'">'+ j+'</span></p>';b+='<p><a title="'+ result.url+'" href="'+ result.url+'"><span>'+ result.visibleUrl+'</span></a></p>';b+='</li>'}}
jQuery('#'+ googleSearch.resultsListId).append(b)},buildImageResults:function(a){output='';for(var i=0;i<a.responseData.results.length;i++){if(this.currentCount>=this.args.limit){this.removeScript();continue}
this.currentCount++;result=a.responseData.results[i];output+='<img src="'+ result.tbUrl+'">'}
jQuery('#'+ googleSearch.resultsContainerId).append(output)},addScript:function(a){jQuery('head:first').append(jQuery('<script type="text/javascript" src="'+ a+'"></script>'));this.loadedScripts.push(a)},removeScript:function(){jQuery('script').each(function(i){$scriptTag=jQuery(this);for(var j=0;j<googleSearch.loadedScripts.length;j++){if($scriptTag.attr('src')==googleSearch.loadedScripts[j]){$scriptTag.remove();delete googleSearch.loadedScripts[j]}}})},hideLoader:function(){jQuery('#'+ googleSearch.loadingId).hide()},stripHTML:function(c){c=c.replace(/&(lt|gt);/g,function(a,b){return(b=="lt")?"<":">"});return c.replace(/<\/?[^>]+(>|$)/g,"")}};
