
var isIE = false;
function createRequestObject() {
    var ro;
	/*
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
	*/
	  // Ajax-Verbindung herstellen
   try {			// W3C-Standard
   ro = new XMLHttpRequest();
  } catch(w3c) {
   try {			// Internet Explorer
   isIE = true;
    ro = new ActiveXObject("Msxml2.XMLHTTP");
   } catch(msie) {
    try {		// Internet Explorer alt
     ro = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(msie_alt) {
     //alert("Ihr Browser kann keine Funoten anzeigen.");
     //return false;	// !!! Link auf XML-Dokument
    }
   }
  }

    return ro;
}
//var ssf = 'xdata'; // ServerSideFile
var http = createRequestObject();


function getRandomURL(url)
{
	//Random-Parameter an url anhängen, damit nicht gecached wird:
	//falls Fragezeichen vorkommt, dann mit & ranhängen, ansonsten mit ?
	var randomnumber=Math.floor(Math.random()*100001);
	if(url.indexOf("?") == -1) 
	{
		url = url + '?rnd=' + randomnumber;
	} else {
		//zwar Fragezeichen, aber kein Parameter
		if(url.indexOf("=") == -1) 
		{ 
			url = url + 'rnd=' + randomnumber;
		} else {
			url = url + '&rnd=' + randomnumber;
		}
	}
	return url;
}

function sndReq(url, handler) 
{
	//Random-Parameter an url anhängen, damit nicht gecached wird:
	//falls Fragezeichen vorkommt, dann mit & ranhängen, ansonsten mit ?
	url = getRandomURL(url);

	// handler = was soll mit der Antwort gemacht werden, bzw. elcher Handler soll verwendet werden
	// action  = Quelle, die die Aktion ausgeloest hat --> fuer serverseitigen switcher 
	// param   = Parameter, der verarbeitet wird	
 
   	//true = asynchrone Abarbeitung --> handler auf onreadystatechange, dafür KEIN eigener Aufruf des Handlers (bei Abfrage: readystate ist zunächst !=4, dann 4)
    	//false = synchrone Abarbeitung --> dann keinen handler auf onreadystatechange, dafür eigener Aufruf des Handlers (bei Abfrage: readystate=4)
       http.open('get', url, false);

	//	
	// moegliche Verarbeitungsmoeglichkeiten:
	// - combo fuellt die Response-Werte in eine Combobox ==> Zielelement##id1|id2|id3|id4##eintrag1|eintrag2|eintrag3|eintrag4
	// - ihtml fuellt den Response-Wert in ein HTML-Element ==> Zielelement##Inhalt
	// - value fuellt den Response-Wert in ein Elemnt mit Value ==> Zielelement##Inhalt   

    	// braucht man nicht, weil synchrone Abarbeitung. Der readystate passt dann auch bei manchen Firefox nicht, weshalb sich die Combo nicht füllt:
    	//http.onreadystatechange = handler;

    	http.send(null);
    	handler();
}

function sndAReq(url, handler) {	
	//Random-Parameter an url anhängen, damit nicht gecached wird:
	//falls Fragezeichen vorkommt, dann mit & ranhängen, ansonsten mit ?
	url = getRandomURL(url);

	// handler = was soll mit der Antwort gemacht werden, bzw. elcher Handler soll verwendet werden
	// url = URL zu der Seite die ausgelesen werden soll
	
	http.overrideMimeType('text/xml');
	
	//true = asynchrone Abarbeitung --> handler auf onreadystatechange, dafür KEIN eigener Aufruf des Handlers (bei Abfrage: readystate ist zunächst !=4, dann 4)
	//false = synchrone Abarbeitung --> dann keinen handler auf onreadystatechange, dafür eigener Aufruf des Handlers (bei Abfrage: readystate=4)
	http.open('get', url, true);
	
    http.onreadystatechange = handler;

    http.send(null);
}

function workReifen(str){	      	
	var text = "";
	if(str != "")
	{				
		var response = eval("(" + str + ")");		
		for(i=0; i < response.daten.reifendaten.length; i++)
		{
			str = response.daten.reifendaten[i].value;
                        var sCbo = response.daten.reifendaten[i].cbo;
                        //alert(str); alert(sCbo);
                        var cbo = document.getElementById(sCbo);
                        if(cbo)
                        {
			     text = str;
                             if(i == 0) {while (cbo.length>0) cbo.remove(0); }
                             if (sCbo == "cbxSpeedindex") {
			     	text = str.substring(0,1);
			     }
                             addOption(cbo, text, str);
                        }                        
		}		
	}

}
function handleComboResponseReifen() 
{
	if(http.readyState == 4){
		var response = http.responseText;				
		workReifen(response);
    }
}
function handleComboResponse() 
{
    if(http.readyState == 4)
    {
		var response = http.responseText;				
		work(response);
    }
}
function work(response){
	response = response.replace(/\r|\n|\r\n/g, "");
		response = LTrim(response);		
		
		// code for IE
		if (window.ActiveXObject)
		  {
		  var doc=new ActiveXObject("Microsoft.XMLDOM");
		  doc.async="false";
		  doc.loadXML(response);
		  }
		// code for Mozilla, Firefox, Opera, etc.
		else
		  {
		  var parser=new DOMParser();
		  var doc=parser.parseFromString(response,"text/xml");
		  }
		
		var x=doc.documentElement;
		var combobox = "";
		var value = "";
		var text = "";
		var values = new Array();
		var texts = new Array();
		var cbx;
		for(var i=0; x != null && i<x.childNodes.length; i++){
			var node = x.childNodes.item(i);
			if(node.nodeName == "cbx"){
				var combobox = node.firstChild.nodeValue;
				cbx = document.getElementsByName(combobox)[0]; 			
				while (cbx.length>0) cbx.remove(0); // leeren
				addOption(cbx, '-1', '');		
			}
			else if(node.nodeName == "rows"){				
				for(var iRows = 0; iRows < node.childNodes.length; iRows++){
					var row = node.childNodes.item(iRows);				
					text = "";
					value = "";
					for(var iRow = 0; iRow < row.childNodes.length; iRow++){
						var data = row.childNodes.item(iRow);						
						if(data.nodeName == "name"){
							text = data.firstChild.nodeValue;
						}
						if(data.nodeName == "value"){
							value = data.firstChild.nodeValue;
						}					
					}
					if(value != ""){
						addOption(cbx, value, text);
					}
				}
			}			
		}
		if(cbx != null){
			//cbx.onchange();
		}			
}


function handleIHTMLResponse() 
{
    
	if(http.readyState == 4){
		var response = http.responseText;
      
		var update = new Array();
		//alert(response);
		if(response.indexOf('##') != -1) {
			update = response.split('##');
			document.getElementById(update[0]).innerHTML = update[1];
		}
    }
}

function handleValueResponse() 
{
    
	if(http.readyState == 4){
		var response = http.responseText;
      
		var update = new Array();
		if(response.indexOf('##') != -1) {
			update = response.split('##');
			document.getElementById(update[0]).value=update[1];
		}
    }
}

// --------------------------------------------------------------

function addOption(combobox,value,text) {
	var mEintrag = document.createElement("option");
	mEintrag.text = text;
	mEintrag.value = value;
	//var FolgendeOption = null;
	if (document.all) {
		combobox.add(mEintrag); }
	else {
		combobox.add(mEintrag, null);
	}
}

// --------------------------------------------------------------

function fillCombo(combobox,values,texts) {
	while (combobox.length>0) combobox.remove(0); // leeren
	  
	for (var i = 0; i < values.length; i++)
	{
		/* if(navigator.appName == "Microsoft Internet Explorer"){  // ie
			NeuerEintrag = new Option(texts[i],values[i], false, true);
			combobox.options[combobox.length] = NeuerEintrag;
	  	} else {*/
				// moz
			var mEintrag = document.createElement("option");
			mEintrag.text = texts[i];
			mEintrag.value = values[i];
			//var FolgendeOption = null;
			if (document.all) {
				combobox.add(mEintrag); }
			else {
				combobox.add(mEintrag, null);}
	  	/*}*/
 	}
}

function LTrim(VALUE)
{
  var w_space = String.fromCharCode(32);
  if(v_length < 1){
    return"";
  }
  var v_length = VALUE.length;
  var strTemp = "";

  var iTemp = 0;

  while(iTemp < v_length){
    if(VALUE.charAt(iTemp) == w_space){}
    else{
      strTemp = VALUE.substring(iTemp,v_length);
      break;
    }
    iTemp = iTemp + 1;
  } //End While

  return strTemp;
} //End Function

    function evalScript(scripts)
    {	try
	{	if(scripts != '')	
		{	var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
	       	                         if (scripts !== null) script += arguments[1] + '\n';
 	        	                        return '';});
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{	alert(e)
	}
    }