/*
 * 
 * $Id: online.googlesearch.js 2767 2009-04-21 14:34:57Z antonenkova $
 * 
 */

$.fn.replaceWith = function(html) {
	return this.after(html).remove();
};

$.fn.addSearchExit = function() {
	this.append("<div class='searchExit'>Закончить поиск</div>");
	$(".searchExit", $(this)).click(function(){
		$("#resultGoogleSearch").empty();
		$("#indexPage").show();
	});
	return this;
};
			
$.ajax({
url: "http://autosputnik.com/get-search-words/?callback=?",
	dataType: "jsonp",
	success: function(data) {	
		words = data;
	}
});


var GoogleSearch = {
			
		googleCallback: function(func, data){
			window[func](data);
			
		},
		
		noResult: function(query){
			$("#resultGoogleSearch")
				.empty()
				.append("<div class='resultText'>По запросу \"" + query + "\" ничего не найдено</div>")
				.addSearchExit();	
		},
		
		createResult: function(query, startSearch, queryStatus){
			
			var url = "http://ajax.googleapis.com/ajax/services/search/web?"
					+ "v=1.0"
					+ "&key=" + AJAX_SEARCH_API_KEY 
					+ "&q=" + query
					+ "+site%3Aonline.autosputnik.com"
					+ "&rsz=large"
					+ "&start=" + startSearch 
					+ "&callback=GoogleSearch.googleCallback"
					+ "&context=?";
			
			$.ajax({
				url: url,
				dataType: "jsonp",
				success: function(data) {	
					if (!data.results | data.results.length == 0 | !queryStatus){	
						GoogleSearch.noResult(query);
					} 
					else {
						var ul = document.createElement("ul");
						$(ul).addClass("result");
						$.each(data.results, function(i, val){
							
							var li = document.createElement("li");
				        	li.innerHTML = "<a href='" + val.unescapedUrl + "' target='_blank'>" + val.title + "</a>" + "<div>" + val.content + "<div>";  						
				        	ul.appendChild(li);
							
						});
						
						if (data.cursor.estimatedResultCount > 8){
							var pager = document.createElement("ul");
							$(pager).addClass("pager");
							$.each(data.cursor.pages, function(i, val){
								
								var li = document.createElement("li");
					        	$(li).text(val.label).addClass(val.start);
					        	$(li).text() == data.cursor.currentPageIndex+1 ? $(li).addClass("active") : null;
					        	pager.appendChild(li);
					        	
							});
							
							if (!$(pager.childNodes).hasClass("active")) {
								$(pager.lastChild).addClass("active");
							}
							
							if ($(pager.lastChild).hasClass("active")) {
								var div = document.createElement("div");
								$(div).addClass("moreResult");
								div.innerHTML = "<a href='" + data.cursor.moreResultsUrl + "' target='_blank'>Дополнительные результаты в Google &gt;&gt;</a>";
							}
						}
						
						$("#resultGoogleSearch")
							.html(ul)
							.prepend("<div class='resultText'>результаты поиска по запросу \"" + query + "\"</div>")
							.append(pager)
							.append(div)
							.addSearchExit()
							.append("<div class='googleAjaxSearch'>Используется <a href='http://code.google.com/intl/ru/apis/ajaxsearch/' target='_blank'>Google Ajax Search</a></div>");
						
						$("ul.pager li").not(".active").click(function(){
							GoogleSearch.createResult(query, $(this).attr("className"), queryStatus);			
						});
					}
				}
			});	
		},
		
		checkQuery: function(){
			$("#indexPage").hide();
			var queryStatus	= true;
			var query = $("#googleSearch form input").val();
			var query_query = query.replace(/[^\wа-яА-Я]/g, "");
			$(words).each(function() {
				if ( query_query.toLowerCase() == this.toLowerCase()) {
					queryStatus	= false;
				}
			});	
			
			$("#googleSearch form").resetForm();
			GoogleSearch.createResult(query, 0, queryStatus);
		}
}



$(function(){
	
	$("#googleSearch form input[type=text]").keypress(function(event){	
			if (event.which == "13") {
				event.preventDefault();
				GoogleSearch.checkQuery();
			}	
	});
	
	$("#googleSearch form input[type=submit]").click(function(event){
		event.preventDefault();
		GoogleSearch.checkQuery();
	});

});

