var ajax;
var requestFunctionName;

function ajaxIni(){
	ajax = false;
    // branch for native XMLHttprequest object
    if(window.XMLHttpRequest) {
    	try {
			ajax = new XMLHttpRequest();
        } catch(e) {
			ajax = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	ajax = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		ajax = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		ajax = false;
        	}
		}
    }
    return ajax;
}

function ajaxRequestUrl(url,parameters,requestFunction) {
	var POST = true;
	ajax = ajaxIni();
	if(ajax) {
		
		requestFunctionName = requestFunction;
		ajax.onreadystatechange = processChange;
		if (POST){
			ajax.open('POST', url);
			ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			ajax.send(parameters);
		}else{
			if (parameters!='') url = url + '?' + encodeURI(parameters); 
	    	ajax.open("GET", url, true);
			ajax.send("");
		}
	}
}

function ajaxRequestForm(formname,requestFunction,addParameters,url) {
	var POST = true;
	var url;
	var parameters = '';
	ajax = ajaxIni();
    if(ajax) {
    	if (url=='') url = document.forms[formname].action;
    	if (addParameters != undefined) parameters = addParameters;
    	for(var i=0;i<document.forms[formname].length;i++){
    		elem = document.forms[formname].elements[i];
    		name = elem.name;
    		
    		if (elem.type == "radio"){
    			if (elem.checked != true){
    				continue
    			}else{
    				value = elem.value;
    			}
    		}else{
    			value = elem.value;
    		}
    		
    		if (parameters==''){
    			parameters = name + '=' + value;
    		}else{
    			parameters = parameters + '&' + name + '=' + value;
    		}
    	}
    	requestFunctionName = requestFunction;
    	ajax.onreadystatechange = processChange;
    	if (POST){
    		ajax.open('POST', url);
    		ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			ajax.send(parameters);
    	}else{
    		if (parameters!='') url = url + '?' + encodeURI(parameters);
	    	ajax.open("GET", url, true);
			ajax.send("");
    	}
	}
}

function processChange() {
    // only if ajax shows "loaded"
    
    if (ajax.readyState == 4) {
    	// only if "OK"
        if (ajax.status == 200) {
        	//alert(ajax.getAllResponseHeaders())
            //alert(ajax.responseText);
            //alert(ajax.responseXML)
            if (requestFunctionName!=''){
	            var t = ajax.responseText;
	            t = encodeURI(t);
	            evalstring = requestFunctionName + "('" + t + "')";
	            eval(evalstring);
            }
        } else {
            alert("There was a problem retrieving the XML data:\n" + ajax.statusText);
        }
    }
}

function get_array_from_lines(ajax_request_string){
	if (ajax_request_string==""){
		var a = new Array();
		return a;
	}else{
		ajax_request_string = decodeURI(ajax_request_string);
		return ajax_request_string.split(String.fromCharCode(10));
	}
}

function clear_formerrors(formname){
	var f = document.forms[formname];
	for ( i=0 ; i<f.length ; i++ ){
		e = f.elements[i];
		e.style.backgroundColor = '';
	}
}

function show_formerrors(formname,errorfields_array){
	var e;
	var elem_name;
	var f = document.forms[formname];
	clear_formerrors(formname);
	for ( i=0 ; i<errorfields_array.length ; i++ ){
		elem_name = errorfields_array[i];
		e = f.elements[elem_name];
		//alert(elem_name + ' Wert: ' + e.value);
		e.style.backgroundColor = '#FF0000';
	}
}

function check_form(formname,ajax_request_string){	
	var errors = get_array_from_lines(ajax_request_string);
	var f = document.forms[formname];
	var e;
	var elem_name;
	var real_errors = new Array();
	for ( i=0 ; i<errors.length ; i++ ){
		elem_name = errors[i];
		if (f.elements[elem_name]){
			real_errors[real_errors.length] = elem_name;
		}
	}
	if (real_errors.length==0){
		document.forms[formname].submit();
	}else{
		show_formerrors(formname,real_errors);
	}
}
//ajaxRequest('_ajax_engine.php?txt=meinText');