function js_trim(zeichenkette)
{
        // Erst fuehrende, dann abschliessende whitespaces entfernen
        // und das Ergebnis dieser Operationen zurueckliefern
        return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
}

function createReqObj()
{
  var resObject = null;

  try
  {
    resObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch(Error)
  {
    try
    {
      resObject = new ActiveXObject("MSXML2.XMLHTTP");
    }
    catch(Error)
    {
      try
      {
        resObject = new XMLHttpRequest();
      }
      catch(Error)
      {
        //alert("can't create XMLHttpRequest Object");
      }
    }
  }

  return resObject;
}

var dateObj = new Date(); //no caching fpr xmlhhtp object
var resObject = createReqObj();
var Anrede  = '';
var LAnrede = '';
var formObj = null;
var versandart = '';

function sndReqCustomerData(localFormObj)
{
  formObj = localFormObj;

  if(formObj != null)
  {
    for(var x = 0 ; x < formObj.Anrede.length ; x++)
    {
      if(formObj.Anrede[x].checked == true)
      {
        Anrede = formObj.Anrede[x].value;
        break;
      }
    }

    for(var x = 0 ; x < formObj.LAnrede.length ; x++)
    {
      if(formObj.LAnrede[x].checked == true)
      {
        LAnrede = formObj.LAnrede[x].value;
        break;
      }
    }

    //no delivery-validation for "selbstabholung"
    for(var x = 0 ; x < formObj.versandart.length ; x++)
    {
      if(formObj.versandart[x].checked == true)
      {
        versandart = formObj.versandart[x].value;
        break;
      }
    }

    //z.B. "1.FC Koeln GmbH & Co. KGaA" -> es wuerde nur "1.FC Koeln GmbH" uebergeben und validiert werden
    for(var x = 0 ; x < formObj.elements.length ; x++)
    {
	if(formObj.elements[x].type == 'text')
	{
		//formObj.elements[x].value = escape(formObj.elements[x].value);
		//formObj.elements[x].value = formObj.elements[x].value.replace(/%20/g, " ");

		//diese beiden Felder werden nicht durch AddressSolution 
		if(formObj.elements[x].name != 'Firma' && formObj.elements[x].name != 'LFirma')
		{
			formObj.elements[x].value = formObj.elements[x].value.replace(/&/g, "%26");
		}
	}
    }

    if(versandart == '')
      versandart = 'DHL';

    resObject.open('get', 'api/address_solution/get.addressdata.php?Anrede=' + Anrede + '&Titel=' + formObj.Titel.value + '&Firma=' + formObj.Firma.value + '&Vorname=' + formObj.Vorname.value + '&Name=' + formObj.Name.value + '&Plz=' + formObj.Plz.value + '&Ort=' + formObj.Ort.value + '&Strasse=' + formObj.Strasse.value + '&Hausnummer=' + formObj.Hausnummer.value + '&Land=' + formObj.Land.value + '&LAnrede=' + LAnrede + '&LTitel=' + formObj.LTitel.value + '&LFirma=' + formObj.LFirma.value + '&LVorname=' + formObj.LVorname.value + '&LName=' + formObj.LName.value + '&LPlz=' + formObj.LPlz.value + '&LOrt=' + formObj.LOrt.value + '&LStrasse=' + formObj.LStrasse.value + '&LHausnummer=' + formObj.LHausnummer.value + '&LLand=' + formObj.LLand.value + '&versandart=' + versandart, true);
    resObject.setRequestHeader("If-Modified-Since", dateObj.toGMTString());
    resObject.onreadystatechange = handleResponseCustomerData;
    resObject.send(null);
  }
}

var isSend = false;
function handleResponseCustomerData()
{
  if(resObject.readyState == 4 && resObject.status == 200)
  {
    var resString = resObject.responseText;

    if(resString != 'OFF')
    {
      //alert("RESULT: \n\n" + resString.split("|").join("\n"));

      //parse xml data an generate array
      var resValue = '';
      var asArr    = new Array();

      var resElem  = resString.split('|');

      for(var i = 0 ; i < resElem.length ; i++)
      {
        delete resValue;
	var resValue = '';
        resValue = resElem[i].split('=');

        //alert(resValue[0] + ' = ' + resValue[1]);
        if(resValue[1] != '')
          asArr[resValue[0]] = resValue[1];
        else      
          asArr[resValue[0]] = '';
      }

      //handle result data
      //billingname check
      //if((formObj != null) && (
      //	asArr['billingname_general_status_out'] == 'S1' ||
      //	asArr['billingname_general_status_out'] == 'S2' ||
      //	asArr['billingname_general_status_out'] == 'S3' 
      //))
      if(formObj != null)
      {
        if(asArr['billingname_anrede_out'] != null)
        {
          for(var x = 0 ; x < formObj.Anrede.length ; x++)
          {
            formObj.Anrede[x].disabled = true;

            if(formObj.Anrede[x].value == asArr['billingname_anrede_out']) 
            {
              formObj.Anrede[x].disabled = false;
              formObj.Anrede[x].checked = true;
              //break;
            }
          }
        }

	if(asArr['billingname_titel_out'] == asArr['billingname_vtitel_out'])
	{
		asArr['billingname_vtitel_out'] = '';
	}

        formObj.Titel.value   = asArr['billingname_titel_out'] + asArr['billingname_vtitel_out'] + asArr['billingname_ztitel_out'] + asArr['billingname_ntitel_out'];
        formObj.Vorname.value = asArr['billingname_vorname_out'];

	if(asArr['billingname_nachname_out'] == '' && asArr['billingname_nachname_part_out'] != '')
	{
		asArr['billingname_nachname_out'] = asArr['billingname_nachname_part_out'];
	}

        formObj.Name.value    = asArr['billingname_nachname_out'];

	//Bsp. Auswahl Anrede Firma -> Eingabe Name/Firma "Anna-Lena Schule" -> Address Solution mach "Anna-Lena" zu Vorname und "Schule" zu Nachname
	//bei Auswahl Firma faellt dann "Anna-Lena" weg und auf der Rechnung bleibt nur noch "Schule" uebrig
	if(formObj.Anrede[2].checked == true && formObj.Anrede[2].value == 'Firma' && formObj.Name.value != "")
	{
		formObj.Name.value = asArr['billingname_vorname_out'] + " " + formObj.Name.value;
	}

        //formObj.Firma.value   = asArr['billingname_organization_out'];
      }

      //deliveryname check
      if((LAnrede != "") && (versandart == 'DHL'))
      {
        //if((formObj != null) && (
	//	asArr['deliveryname_general_status_out'] == 'S1' ||
	//	asArr['deliveryname_general_status_out'] == 'S2' ||
	//	asArr['deliveryname_general_status_out'] == 'S3' 
	//))
        if(formObj != null)
        {
          if(asArr['deliveryname_anrede_out'] != null)
          {
            for(var x = 0 ; x < formObj.LAnrede.length ; x++)
            {
              formObj.LAnrede[x].disabled = true;

              if(formObj.LAnrede[x].value == asArr['deliveryname_anrede_out']) 
              {
		formObj.LAnrede[x].disabled = false;
                formObj.LAnrede[x].checked = true;
                //break;
              }
            }
          }

          if(asArr['deliveryname_vtitel_out'] != undefined || asArr['deliveryname_ztitel_out'] != undefined || asArr['deliveryname_ntitel_out'] != undefined)
	  {
		if(asArr['deliveryname_titel_out'] == asArr['deliveryname_vtitel_out'])
		{
			asArr['deliveryname_vtitel_out'] = '';
		}

		formObj.LTitel.value   = asArr['deliveryname_titel_out'] + asArr['deliveryname_vtitel_out'] + asArr['deliveryname_ztitel_out'] + asArr['deliveryname_ntitel_out'];
	  }

          if(asArr['deliveryname_vorname_out'] != undefined)
            formObj.LVorname.value = asArr['deliveryname_vorname_out'];

          if(asArr['deliveryname_nachname_out'] != undefined)
	  {
		if(asArr['deliveryname_nachname_out'] == '' && asArr['deliveryname_nachname_part_out'] != '')
		{
			asArr['deliveryname_nachname_out'] = asArr['deliveryname_nachname_part_out'];
		}
            
		formObj.LName.value    = asArr['deliveryname_nachname_out'];
	  }

	  //Bsp. Auswahl LAnrede Firma -> Eingabe LName/LFirma "Anna-Lena Schule" -> Address Solution mach "Anna-Lena" zu Vorname und "Schule" zu Nachname
	  //bei Auswahl Firma faellt dann "Anna-Lena" weg und auf der Rechnung bleibt nur noch "Schule" uebrig
	  if(formObj.LAnrede[2].checked == true && formObj.LAnrede[2].value == 'Firma' && formObj.LName.value != "")
	  {
		formObj.LName.value = js_trim(asArr['deliveryname_vorname_out'] + " " + formObj.LName.value);
	  }

          //if(asArr['deliveryname_organization_out'] != undefined)
          //formObj.LFirma.value   = asArr['deliveryname_organization_out'];
        }
      }

      //billingaddress check
      //if((formObj != null) && (
      //	asArr['billingaddress_general_status_out'] == 'S1' ||
      //	asArr['billingaddress_general_status_out'] == 'S2' ||
      //	asArr['billingaddress_general_status_out'] == 'S3' ||
      //	asArr['billingaddress_general_status_out'] == 'S4' ||
      //	asArr['billingaddress_general_status_out'] == 'S5' ||
      //	asArr['billingaddress_general_status_out'] == 'S6' 
      //))
      if(formObj != null)
      {
        //formObj.Land.value    = asArr['billingaddress_land_out'];

        formObj.Strasse.value = asArr['billingaddress_str_out'];

        if(asArr['billingaddress_hnr_out'] != "")
	{
          formObj.Hausnummer.value = asArr['billingaddress_hnr_out'];

	  if(asArr['billingaddress_hnrzus_out'] != '' && asArr['billingaddress_hnr_out'] != undefined && asArr['billingaddress_hnrzus_out'] != asArr['billingaddress_hnr_out'])
	  {
	      formObj.Hausnummer.value = js_trim(formObj.Hausnummer.value + " " + asArr['billingaddress_hnrzus_out']);
	  }
	}

        formObj.Plz.value     = asArr['billingaddress_plz_out']; 
        formObj.Ort.value     = asArr['billingaddress_ort_out'];
        if(asArr['billingaddress_ortsteil_out'] != "")
          formObj.Ort.value     = formObj.Ort.value + '-' + asArr['billingaddress_ortsteil_out'];
      }

      //deliveryaddress check    
      if((LAnrede != "") && (versandart == 'DHL'))
      {
        //if((formObj != null) && (
	//  asArr['deliveryaddress_general_status_out'] == 'S1' ||
  	//  asArr['deliveryaddress_general_status_out'] == 'S2' ||
	//  asArr['deliveryaddress_general_status_out'] == 'S3' ||
	//  asArr['deliveryaddress_general_status_out'] == 'S4' ||
	//  asArr['deliveryaddress_general_status_out'] == 'S5' ||
	//  asArr['deliveryaddress_general_status_out'] == 'S6' 
        //))
        if(formObj != null)
        {
          //formObj.LLand.value    = asArr['deliveryaddress_land_out'];

          if(asArr['deliveryaddress_str_out'] != undefined)
            formObj.LStrasse.value = asArr['deliveryaddress_str_out'];

          if(asArr['deliveryaddress_hnr_out'] != "" && asArr['deliveryaddress_hnr_out'] != undefined)
	  {
            formObj.LHausnummer.value = asArr['deliveryaddress_hnr_out'];

  	    if(asArr['deliveryaddress_hnrzus_out'] != '' && asArr['deliveryaddress_hnr_out'] != undefined && asArr['deliveryaddress_hnrzus_out'] != asArr['deliveryaddress_hnr_out'])
	    {
		formObj.LHausnummer.value = js_trim(formObj.LHausnummer.value + " " + asArr['deliveryaddress_hnrzus_out']);
	    }
	  }

          if(asArr['deliveryaddress_plz_out'] != undefined)
            formObj.LPlz.value     = asArr['deliveryaddress_plz_out']; 

          if(asArr['deliveryaddress_ort_out'] != undefined)
            formObj.LOrt.value     = asArr['deliveryaddress_ort_out'];

          if(asArr['deliveryaddress_ortsteil_out'] != "" && asArr['deliveryaddress_ortsteil_out'] != undefined)
            formObj.LOrt.value     = formObj.LOrt.value + '-' + asArr['deliveryaddress_ortsteil_out'];
        }
      }
    } // if(resObject.responseText != 'OFF')...

    document.kundendatenformular.submit();
  }
}





