/**
 * @author developer
 * @desc Main search logic script
 * 		 Interfaces with google search API to perform content search
 */

 var _siteSearch = null; // site search google
 google.load('search', '1', {language : 'en'});
 
 // load the google search api
 google.setOnLoadCallback(function(){
	_siteSearch = new google.search.WebSearch();
	_siteSearch.setSiteRestriction('011442423659829918799:xgr2e5bbvmc', "Observer Search");
	_siteSearch.setSearchCompleteCallback(this, displayResults);
 });

 $(function(){ // main entry
     
	BindEvents();
 });
 
 function BindEvents()
 {
 	$('#search_close').click(function(){
		toggleResultsView(false);
	});
	
	$('#sch_btn').click(function(){
		toggleResultsView(true);
		doSearch();
	});
	
	//Press enter event!
	$('#srch_qry').keypress(function(e){
		if(e.keyCode == 13){
			toggleResultsView(true);
			doSearch();
		}
	});
	
	//Press Escape event!
	$('#srch_qry').keypress(function(e){
		if(e.keyCode == 27){
			toggleResultsView(false);
		}
	});
 }
 
 function displayResults()
 {
 	$('#result_listings').empty();
	
 	var size = _siteSearch.results.length;
	
	for(var idx = 0; idx < size; idx++)
	{
		$('#result_listings').append(fillTmpl(_siteSearch.results[idx]));
	}
 }
 
 function fillTmpl(pItem)
 {
	var _tmpl = '<div class="gs-result gs-webResult">' +
		'<div class="gs-title">' +
			'<a class="gs-title" href="{:lnk_url}">{:title}</a>' +
		'</div>' +
		'<div class="gs-snippet">{:snippet}</div>' +
			'<div class="gs-visibleUrl gs-visibleUrl-short">{:short-url}</div>' +
			'<div class="gs-visibleUrl gs-visibleUrl-long">{:long-url}</div>' +
		'</div>';
	
    _tmpl = _tmpl.replace('{:title}', pItem.title);
	_tmpl = _tmpl.replace('{:snippet}', pItem.content);
	_tmpl = _tmpl.replace('{:short-url}', pItem.unescapedUrl);
	_tmpl = _tmpl.replace('{:lnk_url}', pItem.unescapedUrl);
	_tmpl = _tmpl.replace('{:long-url}', pItem.url);
	
	return _tmpl;
 }
 
 function toggleResultsView(toggle)
 {
 	if(toggle)
	{
		$('#search_results').show();
	}
	else
	{
		$('#search_results').hide();
		$('#result_listings').empty();
	}
 }
 
 function doSearch()
 {
 	$('#result_listings').empty();
 	_siteSearch.execute($('#srch_qry').val());
 }
