(function(){
	
	var $ = jQuery;
	
	google.load("search", "1");
	
	$(window).load(function () {
	
		var query = $.httpRequest.queryString.getValue('q');
		
		var site = 'hokieclub.com';
		
		var $document = $(document);
		var $searchResults = $('#searchresults');
		var $searchCursor = $('#searchcursor');
		
		$document.bind('CLEAR_RESULTS', function(){
		
			$searchResults.empty();
			$searchCursor.empty();
		});
		
		var gWebSearch = new google.search.WebSearch();
		gWebSearch.setNoHtmlGeneration();
		gWebSearch.setResultSetSize(google.search.Search.LARGE_RESULTSET);
		gWebSearch.setSiteRestriction(site);
		
		gWebSearch.setSearchCompleteCallback($, function() {
		
			var results = gWebSearch.results;
			
			if (!results || results.length === 0) {
			
				$searchResults.text('Sorry. There are no results for your query. Please modify your search keywords and try again.');
				
				return;
			}
			
			for (var i = 0; i < results.length; i++) {
			
				var $searchResult = $('<div></div>').addClass('gs-result').appendTo($searchResults);
				var $searchResultTitle = $('<div></div>').addClass('gs-title').appendTo($searchResult);
				var $searchResultTitleHyperlink = $('<a></a>').addClass('gs-title').attr('href', results[i].unescapedUrl).html(results[i].title).appendTo($searchResultTitle);
				var $searchResultSnippet = $('<div></div>').addClass('gs-snippet').html(results[i].content).appendTo($searchResult);
				var $searchResultUrl = $('<div></div>').addClass('gs-visibleUrl gs-visibleUrl-long').text(results[i].unescapedUrl).appendTo($searchResult);
			}
			
			if (gWebSearch.cursor) {
			
				var pages = gWebSearch.cursor.pages;
				
				if (!pages || pages.length <= 0) {
				
					return;
				}
				
				var currentPageIndex = gWebSearch.cursor.currentPageIndex;
				
				$cursor = $('<div></div>').addClass('gsc-cursor').appendTo($searchCursor);
				
				if (pages.length > 1) {
					
					for (var i = 0; i < pages.length; i++) {
					
						var $page = $('<span></span>').addClass('gsc-cursor-page').text(pages[i].label);
						
						if (i == currentPageIndex) {
						
							$page.addClass('gsc-cursor-current-page');
						}
						
						$page.click((function (pageNum) {
								
								return function() {
									
									$document.trigger('CLEAR_RESULTS');
									gWebSearch.gotoPage(pageNum);
									return false;
								}
								
						})(i)).appendTo($cursor);
					}
					
					if (gWebSearch.cursor.estimatedResultCount / 8 > pages.length) {
					
						$('<a></a>').addClass('gsc-trailing-more-results').addClass('gsc-trailing-more-results').attr('href', gWebSearch.cursor.moreResultsUrl).attr('title', 'More Results').attr('target', '_blank').text('More Results').appendTo($cursor);
					}
				}
			}
			
			return false;
		});
		
		if (query && $.trim(query) !== '') {
			
			$document.trigger('CLEAR_RESULTS');
			gWebSearch.execute(query);
		}
	});
})();