// AJAX Search for wordpress
// Antti Kupila

var DEFAULT_VALUE = "Type to search";
var url;
var s;
var searchlist;
var value;
var timer;

function initSearch( siteurl, seachboxId, results ) {
	url = siteurl;
	s = document.getElementById( seachboxId );
	s.value = DEFAULT_VALUE;
	if ( navigator.appVersion.indexOf( "Safari" ) > 0 ) {
		s.type = "search";
	}
	s.onkeyup = function( ) { change( ); };
	s.onfocus = function( ) { if ( s.value == DEFAULT_VALUE ) s.value = ""; };
	s.onblur = function( ) { if ( s.value == "" ) { s.value = DEFAULT_VALUE; clear( ); } };
	s.onmouseup = function( ) { value = s.value; queueSearch( ) };
	document.getElementById( "searchform" ).onsubmit = function( ) { return false; };
	searchlist = document.getElementById( results );
}

function change( ) {
	value = s.value;
	queueSearch( );
}

// _________________________________________________________________________

function queueSearch( ) {
	clearTimeout( timer );
	timer = setTimeout( performSearch, 100 );
}

function search( input ) {
	value = s.value = input;
	performSearch( );
}

function performSearch( ) {
	if ( s.value != value || s.value.length < 1 ) {
		clear( );
		return;
	}
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		request = new XMLHttpRequest();
		if (request.overrideMimeType) {
			request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	var params = url + "?s=" + s.value + "&ajax=true";
	
	request.onreadystatechange = function() {
		if ( !request ) return;
		if (request.readyState == 4) {
		
		//	getStyleId( "loader" ).display = "none";
			if ( value = s.value ) {
				searchlist.innerHTML = request.responseText;
			}
		
		}
	}
	
//	getStyleId( "loader" ).display = "block";
	
	request.open('get', params, true);
	request.send(null);
	
	urchinTracker( "/search/" + s.value );
}

function clear( ) {
	searchlist.innerHTML = "";
}

function getStyleId (idName) {
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				console.info( document.styleSheets[s].rules[r].selectorText );
				if (document.styleSheets[s].rules[r].selectorText == '#' + idName)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '#' + idName)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	
	return null;
}