/* AJAX Search - Start */
addEvent(window,'load',ajaxSearchInit);
var searchReq = null;

function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Die Suche kann mit Ihrem Browser nicht verwendet werden!");
	}
}

function ajaxSearchInit()
{
	var quickSearchForm = document.getElementById('quicksearch');
	if ( quickSearchForm )
		new FormInputExample(
				quickSearchForm.elements['quicksrcstr'],
				(CONSOLEO_LANGUAGE_ID && CONSOLEO_LANGUAGE_ID != 1 ) ? 'Search' : 'Suchbegriff' );
	document.getElementById("quicksrcstr").onkeyup = wait;
	searchReq = getXmlHttpRequestObject();
}

function wait()
{
	if (escape(document.getElementById('quicksrcstr').value.length) >= 2)
	{
		setTimeout("getSearchResults()",1000);
		document.onkeypress = changeField;
	}
	else
	{
		document.getElementById('ajax_results').style.display = 'none';	
	}
}

function changeField (evt) 
{
	if (document.getElementById("quicksrcstr").value != "") 
	{
		if (!evt) 
			evt = window.event;
		
		
		// pressed "ESC"
		if (evt.keyCode == "27") 
		{
			document.getElementById("ajax_results").style.display = "none";
			document.getElementById("quicksrcstr").value = "";
		}
	}
}

function getSearchResults()
{
	var ss = document.getElementById('ajax_results');
	ss.style.display = 'block';
	ss.innerHTML = "<img src=\"" + CONSOLEO_RELPATH + "images/ajax_loading.gif\" " +
		"alt=\"Suche l&auml;uft...\" title=\"Suche l&auml;ft...\" />" +
		"<ul><li class=\"status\"><p class=\"right\">.........</p></li></ul>";
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {		
		var str = escape(document.getElementById('quicksrcstr').value);	
		searchReq.open("GET", CONSOLEO_RELPATH + '?modexec=mod_search&search=' + encodeURIComponent(str) + '&l='+CONSOLEO_LANGUAGE_ID, true);
		searchReq.onreadystatechange = handleSearchSuggest; 
		searchReq.send(null);
	}
}

function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('ajax_results');
		var str = searchReq.responseText.split("\n");
		if (str)
		{
			ss.style.display = 'block';
			ss.innerHTML = str;
		}
		else
		{
			ss.innerHTML = '';
			ss.style.display = 'none';
		}
	}
}


/**
 * FormInputExample()
 * 
 * Fill formfield with example string if no uservalue is given.
 * 
 * @param formField - input field
 * @param demoString - Demo string to show in field if it's empty
 * @param demoCSSClass - CSSClass of formField if empty, default id 'empty'
 */
function FormInputExample( formField, demoString, demoCSSClass )
{
	this.formField = formField;
	this.demoString = demoString;
	this.userChanged = false;
	if (!demoCSSClass ) this.demoCSSClass = 'empty';
	else this.demoCSSClass = demoCSSClass;
	
	if ( formField.value == '' )
		this.setDemoString();
	else
		this.userChanged = true;
	this.formField.formInputExample = this;
	addEvent(this.formField, 'focus', function() { this.formInputExample.removeDemoString(); } );
	addEvent(this.formField, 'blur', function() { this.formInputExample.setDemoString(); } );
	addEvent(this.formField, 'change', function() { 
		this.formInputExample.userChanged = true; 
		if ( this.value == '' )
		{
			this.formInputExample.userChanged = false;
			this.setDemoString();
		}
	} );
	addEvent(this.formField, 'keyup', function(evt) { this.formInputExample.userChanged = true; } );
	var current = this.formField.parentNode;
	while ( current )
	{
		if ( current.tagName.toLowerCase() == 'form' )
		{
			if (current.formInputExample) break;
			current.formInputExample = this;
			addEvent(current,'submit', function() { this.formInputExample.onFormSubmit(); });
			break;
		}
		current = current.parentNode;
	}
}

FormInputExample.prototype.onFormSubmit = function()
{
	var current = this.formField.parentNode;
	while ( current )
	{
		if ( current.tagName.toLowerCase() == 'form' )
		{
			var inputs = current.getElementsByTagName('input');
			for ( var x=0; x<inputs.length; x++ )
			{
				if (inputs[x].formInputExample && !inputs[x].formInputExample.userChanged)
					inputs[x].formInputExample.removeDemoString();
			}
			break;
		}
		current = current.parentNode;
	}
}

FormInputExample.prototype.removeDemoString = function()
{
	var classes = this.formField.className.split(' ');
	var nc = new Array();
	for ( var x=0; x<classes.length; x++ ) {
		if ( classes[x] == this.demoCSSClass ) continue;
		nc.push(classes[x]);
	}
	this.formField.className = nc.join(' ');
	if ( this.formField.value != this.demoString ) return;
	this.formField.value='';
}

FormInputExample.prototype.setDemoString = function()
{
	if (this.userChanged) return;
	this.formField.className += ' '+this.demoCSSClass;
	this.formField.value=this.demoString;
}

