// ********************************************
// Project:   WiSL SCMS
// Full Name: Smart Content Management System
// Author:    Torsten Kaiser
// Company:   WiSL GmbH, Halle
// URL:       http://www.wisl.de/
// Copyright: (c) 2011 by WiSL
// ********************************************
// Filename:  suggestajax.js
// Use:       suggestions for search fields
// Version:   $Revision: 1.3 $
// ********************************************
var suggestajax={
	req:new XMLHttpRequest(), cache:new Object(),
	click:function (newstr) {
		var txt=document.getElementById('suggestajaxfield').value;
		var i=txt.lastIndexOf(" ");
		if (i>-1) txt=txt.substr(0,i)+" "+newstr; else txt=newstr;
		document.getElementById('suggestajaxfield').value=txt;
		document.getElementById('suggestajaxfield').focus();
	},
	showres:function (str) {
		if (suggestajax.cache[str].length==0) return;
		var tip="<ul>";
		var tmp=suggestajax.cache[str].split("\n");
		for(var i=0;i<tmp.length;i++) if (tmp[i]!="") tip+="<li><a href=\"javascript:suggestajax.click('"+tmp[i]+"');\">"+tmp[i]+"<"+"/a><"+"/li>";
		document.getElementById('suggestajaxtip').innerHTML=tip+"<"+"/ul>";
		document.getElementById('suggestajaxtip').style.display="block";
	},
	kick:function () {
		if (suggestajax.currentreq!=null && suggestajax.req.readyState=="4") {
			suggestajax.cache[suggestajax.currentreq]=suggestajax.req.responseText;
			// Anzeigen, auch wenn ev. schon was anders im <input>, weil sonst nie was angezeigt würde, weil ja die Antwort immer erst 'später' kommt
			suggestajax.showres(suggestajax.currentreq); 
			suggestajax.currentreq=null;
		}
		var txt=document.getElementById('suggestajaxfield').value;
		var i=txt.lastIndexOf(" ");
		if (i>-1) txt=txt.substr(i+1);
		// Im Cache? Wenn ja, dann anzeigen+fertig.
		if (suggestajax.cache[txt]!=null) return suggestajax.showres(txt);
		if (txt.length<3 || suggestajax.currentreq!=null) return; // erst ab 3 Zeichen fragen, nur wenn noch keine Abfrage läuft
		suggestajax.currentreq=txt;
		suggestajax.req.onreadystatechange=suggestajax.kick;
		suggestajax.req.open("GET",suggestajax.url+encodeURI(txt),true);
		suggestajax.req.send("");
	},
	init:function(url) {
		suggestajax.url=url;
		suggestajax.defaultvalue=document.getElementById('suggestajaxfield').value;
		document.getElementById('suggestajaxfield').onkeyup=suggestajax.kick;
		document.getElementById('suggestajaxfield').onblur=function() {
			if (document.getElementById('suggestajaxfield').value=='')
				document.getElementById('suggestajaxfield').value=suggestajax.defaultvalue;
			setTimeout("document.getElementById('suggestajaxtip').style.display='none'",500);
		};
		document.getElementById('suggestajaxfield').onfocus=function() {
			if (document.getElementById('suggestajaxfield').value==suggestajax.defaultvalue)
				document.getElementById('suggestajaxfield').value='';
		};
	}
};

