var SiteSearch = {
    init : function () {
    	SiteSearch.page = 0;
    	SiteSearch.state = 'inactive';
		SiteSearch.results.count = 0;
		
        SiteSearch.getVars = SiteSearch.getUrlVars();
        
        $('#load-more').click(SiteSearch.loadMoreResults);

        if (SiteSearch.getVars['q'] != undefined && SiteSearch.getVars['q'].length > 0) {
            $('#search_bar .search_field').val(unescape(SiteSearch.getVars['q'].replace(/\+/g, ' ')));
            SiteSearch.search();
        }
    },
    
    loadMoreResults : function() {
    	if (SiteSearch.state == 'inactive') {
    		SiteSearch.search();
        }
        return false;
    },
        
    getUrlVars : function () {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
 
    displayResults : function(data, textStatus, xhr) {
    	$('#loading').hide();
    	SiteSearch.state = 'inactive';
    	SiteSearch.results.totalResults = data.queries.request[0].totalResults;

    	if (SiteSearch.page++ == 0) {
			$('#cse').append('<p>Results for: <strong>' + unescape(SiteSearch.getVars['q'].replace(/\+/g, ' ')) + '</strong></p>' + 
				'<p id="results-summary">Showing results 1 to <span id="result-count"></span>  of  <span id="total-results"></span></p>'
			);
    	}
   
		if (data.items != undefined) {
    	                $('#cse').append('<p class="page">Page '+SiteSearch.page+'</p>');

			for (i = 0; i < data.items.length; i++) {
				link = data.items[i].link;
				$('#cse').append(
					'<div class="search-results">' +
					'<h3><a href="'+link +'">'+data.items[i].htmlTitle+'</a></h3>'+
					'<p class="snippet">'+ data.items[i].htmlSnippet + '</p>' + 
					'<p class="link">'+ link.substring(link.indexOf('//')+2) + '</p>' + 
					'</div>'
				);
				SiteSearch.results.count++;
			}
		}

        if (SiteSearch.results.count > 0) {
    	        $('#result-count').html(SiteSearch.results.count+ ' '); // space fix for ie8
    	        $('#total-results').html(data.queries.nextPage == undefined ? SiteSearch.results.count : SiteSearch.results.totalResults);
        } else {
                $('#results-summary').text("No results found");
        }
		
		if (data.queries.nextPage == undefined) {
			SiteSearch.status = 'done';
		} else {
	 	   	$('#load-more').show();
		}
    },
    
    displayError : function(msg) {
		$('#cse').append('<div class="error">Unable to load search results</div>');
		SiteSearch.status = 'error';
 	  	$('#loading').hide();
 	   	$('#load-more').hide();
    },
        
    search : function() {
    	SiteSearch.state = 'searching';
    	$('#loading').show();
 	   	$('#load-more').hide();

        $.ajax({
            url : "https://www.googleapis.com/customsearch/v1",
            type : "GET",
            data : 'key=AIzaSyBwn3BK_L--zrBptB3CVs8imzwtzRmRK9o&cx=011715074789243833827:4kbtktnam2g&q='
            		+ SiteSearch.getVars['q'] + '&start=' + (SiteSearch.page*10 + 1),
            dataType : "jsonp", 
            success : SiteSearch.displayResults,
            error : SiteSearch.displayError
        }); 
    },
    
    results :{}
};
