function kd_Search() {

};

kd_Search.prototype = {
	initialize: function() {
		this.pane = document.getElementById('searchpane');
		clearEl(this.pane);
		appendText(this.pane, "Подождите, идёт подготовка к поиску...");
		google.load("search", "1", {"callback" : function(){kd_search.googleLoaded();}});
	},
	
	googleLoaded: function() {
		this.siteSearch = new google.search.WebSearch();
		this.siteSearch.setSiteRestriction("011742134507671120420:_htvi8754hi");
		this.siteSearch.setResultSetSize(google.search.Search.LARGE_RESULTSET);
		this.siteSearch.setSearchCompleteCallback(this, kd_Search.prototype.searchCompleteCallback);
		clearEl(this.pane);
		this.makeControls();
		var m=document.location.search.match(/(?:\?|&)searchtext=([^&]+)(&.*)?(#.*)?$/);
		if (m) {
			var q = decodeURIComponent(m[1]);
			this.equery.value = q.replace(/\+/g, " ");
			this.search(this.equery.value);
		}
	},
	
	makeControls: function() {
		var branding = newEl('div');
		branding.className='branding';
		branding.appendChild(google.search.Search.getBranding());
		this.pane.appendChild(branding);
		var div = newEl('div');
		div.className = 'searchform';
		this.pane.appendChild(div);
		var label = newEl('label');
		appendText(label, 'Что искать: ');
		div.appendChild(label);
		var it = newInput('text');
		this.equery = it;
		it.className = 'searchquery';
		it.onkeyup = function(evt){if (evt !=undefined) {event=evt;} if (event.keyCode==13) kd_search.search(kd_search.equery.value); };
		label.appendChild(it);
		appendText(div, ' ');
		var ib = newInput('button');
		ib.className = 'dosearch';
		ib.value = 'Поиск';
		ib.onclick = function() {kd_search.search(kd_search.equery.value);};
		div.appendChild(ib);
		var div = newEl('div');
		this.resultspane = div;
		div.className = 'resultspane';
		this.pane.appendChild(div);		
	},
	
	search: function(query) {
		clearEl(this.resultspane);
		if (query != '') {
			appendText(this.resultspane, 'Выполняется поиск...');
			this.siteSearch.execute(query);
		}
	},
	
	searchCompleteCallback: function() {
	  if (this.siteSearch.results && this.siteSearch.results.length > 0) {
			clearEl(this.resultspane);
			var results = this.siteSearch.results;
	    for (var i = 0; i < results.length; i++) {
	      var result = results[i];
	     	var resCont = newEl('a');
				resCont.className = 'searchrescont';
				resCont.href = result.unescapedUrl;
				var span = newEl('span');
				span.className = 'srestitle';
				span.innerHTML = result.title;
				resCont.appendChild(span);
				var span = newEl('span');
				span.className = 'srescontent';
				span.innerHTML = result.content;
				resCont.appendChild(span);
				var span = newEl('span');
				span.className = 'sresvurl';
				var vurl = result.unescapedUrl.match(/^http:\/\/([^\/]+)\/?(.*)$/i);
				appendText(span, (vurl[2])?(vurl[1]+'/'+vurl[2]):vurl[1]);
				resCont.appendChild(span);
				this.resultspane.appendChild(resCont);
	    }
		  var cursor = this.siteSearch.cursor;
			if (cursor.pages.length > 1) {
			  var curPage = cursor.currentPageIndex;
				var pages = newEl('div');
				pages.className = 'searchpages';
				var pcapt = newEl('b');
				appendText(pcapt, 'Страницы:');
				pages.appendChild(pcapt);
				for (var i = 0; i < cursor.pages.length; i++) {
					var page = cursor.pages[i];
			    if (curPage == i) {
			      appendText(pages, ' '+page.label);
			    } else {
			      appendText(pages, ' ');
			      var link = document.createElement('a');
			      link.href="#";
			      link.onclick = function(i){return function(){kd_search.siteSearch.gotoPage(i); return false;};}(i);
			      appendText(link, page.label);
			      pages.appendChild(link);
			    }
				}
				this.resultspane.appendChild(pages);
			}
		}
		else {
			clearEl(this.resultspane);
			appendText(this.resultspane, 'Ничего не найдено.');		
		}
	}
};

kd_search = new kd_Search();
