var http_request = false;
var last_query = '';

//trimming function
function tx_mhajaxsearch_trim(_string) {
	while(_string.substring(0, 1) == ' ') {
		_string = _string.substring(1, _string.length);
	}
	
	while(_string.substring(_string.length - 1, _string.length) == ' ')	{
		_string = _string.substring(0, _string.length - 1);
	}
	
	return _string;
}

//main function to call out of html
function tx_mhajaxsearch_search(_query) {

	//trim the query (delete blanks at beginning and end)
	_query = tx_mhajaxsearch_trim(_query);
	
	if(_query != last_query && _query != '') {
		//show the spinner
		if(spi != 1) document.getElementById('tx_mhajaxsearch_spinner').style.display = 'inline';
		
		//set last query
		last_query = _query;
		
		//prepare url
		var prujs = (document.location.href.indexOf('index.php') > 0) ? '' : (document.location.protocol+'//'+pru);
		var queryurl = prujs+'typo3conf/ext/mh_ajaxsearch/res/tx_mhajaxsearch_search.php?fwd='+fwd+'&pid='+pid+'&res='+res+'&tab='+tab+'&log='+log+'&loc='+loc+'&lan='+lan+'&pre='+pre+'&ali='+ali+'&add='+add+'&adr='+adr+'&q='+_query+'&L='+L;
		
		//start request
		tx_mhajaxsearch_request(queryurl);
	}
}

//check return of the request
function tx_mhajaxsearch_return() {
	if (http_request.readyState == 4) {
		if(http_request.status == 200) {
			tx_mhajaxsearch_output(http_request.responseText);
		}
	}
}

//output something to the user
function tx_mhajaxsearch_output(_data) {
	//output the whole thing
	document.getElementById('tx_mhajaxsearch_result').innerHTML = _data;
	//hide the spinner
	if(spi != 1) document.getElementById('tx_mhajaxsearch_spinner').style.display = 'none';
}

//the request in an extra function
function tx_mhajaxsearch_recopen(_url) {
	//open requester
	http_request.open('GET', _url, true);
	
	//no caching please
	http_request.setRequestHeader('If-Modified-Since', 'Wed, 15 Nov 1995 00:00:00 GMT');
	http_request.setRequestHeader('Cache-Control', 'no-cache');
        http_request.setRequestHeader('charset', 'UTF-8');
	
	//what to do on return
	http_request.onreadystatechange = tx_mhajaxsearch_return;
	
	//needed but what for?
	http_request.send(null);
}

//do the request
function tx_mhajaxsearch_request(_url) {
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP.4.0");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
    }

    if (!http_request) {
        alert('Aborted :( Cannot generate XMLHTTP-Instance');
        return false;
    }
    
	try {
		tx_mhajaxsearch_recopen(_url);
	} catch(e) {
		try {
			//no rights? lets try it that way ...
			netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
			tx_mhajaxsearch_recopen(_url);
		} catch (e) {
			alert(e);
		}
	}
}
