// Ajax

function createRequestObject() {
    var ro;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		ro = new XMLHttpRequest();
		if (ro.overrideMimeType) {
			ro.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
    	try {
			ro = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				ro = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!ro) {
		alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
		return false;
	}
    return ro;
}

var http = createRequestObject();

function sndReq(param, rHandler) {
    http.open('GET', '../rpc.php?'+param, true);
    http.onreadystatechange = rHandler;
    http.send(null);
}

function submitFilter(ix, formname) {
	doSubmit(ix, formname, 0, 'submit');
	return false;
}

function doSubmit(ix, formname, browseStart, action) {
	var params = './index.php?eID=sbsmartsearch_jsaction&sb_smartsearch_pi1[action]='+action;
	document.curForm = formname;
	if (document.forms[formname]) {
		var id = document.forms[formname].elements['sb_smartsearch_pi1[pageid]'].value;
		if (id)
			params += '&id='+id;
			
		var lang = document.forms[formname].elements['sb_smartsearch_pi1[language]'].value;
		if (lang)
			params += '&L='+lang;
			
		
		params += '&sb_smartsearch_pi1[curFilterIx]='+ix;
		params += '&sb_smartsearch_pi1[browseStart]='+browseStart;
		var sword = document.forms[formname].elements['sb_smartsearch_pi1[sword]'].value;
		if (sword)
			params += '&sb_smartsearch_pi1[sword]='+sword;
		
		for (var i=0; i<99; i++) {
			var pName = 'sb_smartsearch_pi1[filter-'+i+']';
			var pArrName = 'sb_smartsearch_pi1[filter-'+i+'][]';
			if (document.forms[formname].elements[pName])
				params += '&'+pName+'='+document.forms[formname].elements[pName].value;
			if (document.forms[formname].elements[pArrName]) {
				if (document.forms[formname].elements[pArrName].length) {
					for (l=0; l<document.forms[formname].elements[pArrName].length; l++) {
						if (document.forms[formname].elements[pArrName][l].checked)
							params += '&'+pName+'['+l+']'+'='+document.forms[formname].elements[pArrName][l].value;
					}
				} else {
					if (document.forms[formname].elements[pArrName].checked)
						params += '&'+pName+'['+l+']'+'='+document.forms[formname].elements[pArrName].value;
				}
			}
		}
		http.open('GET', params, true);
		http.onreadystatechange = this.getResponse;
	    http.send(null);
	    waitAni(true);
	}
}

function getResponse() {
	if (http.readyState == 4) {
        if (http.status == 200) {
        	xmlRes = http.responseXML.documentElement;
        	var fIx = 0;
        	for (var i=0; i<xmlRes.childNodes.length; i++) {
        		if (xmlRes.childNodes[i].nodeName == 'filter')
        			var fTxt = xmlRes.childNodes[i].firstChild.nodeValue;
        		if (xmlRes.childNodes[i].nodeName == 'ix')
        			fIx = xmlRes.childNodes[i].firstChild.nodeValue;
        		if (xmlRes.childNodes[i].nodeName == 'msg')
        			var fMsg = xmlRes.childNodes[i].firstChild.nodeValue;
        		if (xmlRes.childNodes[i].nodeName == 'results')
        			var fResults = xmlRes.childNodes[i].firstChild.nodeValue;
        		if (xmlRes.childNodes[i].nodeName == 'browser')
        			var fBrowser = xmlRes.childNodes[i].firstChild.nodeValue;
        		if (xmlRes.childNodes[i].nodeName == 'action')
        			var fAction = xmlRes.childNodes[i].firstChild.nodeValue;
        	}
        	//pIx = fIx - 1;
        	//if (fIx) {
        	
        	if (fAction == 'submit') {
        		for (i=(Number(fIx)+1); i<99; i++) {
        			divName = 'filter-'+i+'-div';
        			if (document.getElementById(divName))
        				document.getElementById(divName).innerHTML = '';	
        		}
        		
	        	if (fTxt) {
		        	divName = 'filter-'+fIx+'-div';
    		    	if (document.getElementById(divName))
        				document.getElementById(divName).innerHTML = fTxt;
        		}

        		divName = 'searchMsg';
        		if (document.getElementById(divName))
        			document.getElementById(divName).innerHTML = fMsg;
			}        	
        	divName = 'searchResults';
        	if (document.getElementById(divName))
        		document.getElementById(divName).innerHTML = fResults;
        		
        	divName = 'browseResults';
        	if (document.getElementById(divName))
        		document.getElementById(divName).innerHTML = fBrowser;
        	
        	document.forms[document.curForm].elements['sb_smartsearch_pi1[curFilterIx]'].value = Number(fIx);
        	
        	waitAni(false);
        }
	}
}

function waitAni(doShow) {
	divName = 'waitAni';
    if (document.getElementById(divName)) {
    	if (doShow) {
        	document.getElementById(divName).innerHTML = '<img src="typo3conf/ext/sb_smartsearch/res/spinner.gif" />';
        	document.getElementById(divName).style.display = 'block';
        } else {
			document.getElementById(divName).innerHTML = '&nbsp';
			document.getElementById(divName).style.display = 'none';
		}
	}
}

function resetForm(formname, startIx) {
	for (i=1; i<99; i++) {
        divName = 'filter-'+i+'-div';
        if (document.getElementById(divName))
        	document.getElementById(divName).innerHTML = '&nbsp;';	
	}
	
	divName = 'searchMsg';
	if (document.getElementById(divName))
    	document.getElementById(divName).innerHTML = '';
        	
	divName = 'searchResults';
    if (document.getElementById(divName))
    	document.getElementById(divName).innerHTML = '';
        	
    divName = 'browseResults';
    if (document.getElementById(divName))
    	document.getElementById(divName).innerHTML = '';
    	
	document.forms[formname].elements['sb_smartsearch_pi1[sword]'].value = '';
	    		
	if ((document.forms[formname]) && (startIx == 0)) {
		document.forms[formname].elements['sb_smartsearch_pi1[filter-0]'].selectedIndex = 0;
	}
}

function setFilter(formname, filtername, filterid, filterval) {
	prevFilter = filterid.substr(0, (filterid.lastIndexOf('_') + 1)) + document.forms[formname].elements[filtername].value;
	if (document.getElementById(prevFilter))
		document.getElementById(prevFilter).className = '';
	
	if (document.getElementById(filterid)) {
		document.getElementById(filterid).className = 'selected';
	}
		
	if (document.forms[formname]) {
		document.forms[formname].elements[filtername].value = filterval;
	}
}

function browseFilter(browseStart, formname) {
	if (document.forms[formname]) {
		var ix = document.forms[formname].elements['sb_smartsearch_pi1[curFilterIx]'].value;
		doSubmit(ix, formname, browseStart, 'browse');
		return false;
	}
}

window.onload = function() {
	var sel = document.getElementsByName('sb_smartsearch_pi1[filter-0]');
	var sFld = document.getElementsByName('sb_smartsearch_pi1[submitted]');
	if ((sFld.length == 0) && sel) {
		for (i=0; i<sel.length; i++) {
			sel[i].selectedIndex = 0;
		}
	}
}

