	/**
	 * @author	TRUNG-HIEU LE
	 * @version 1.0.1
	 *
	 */
	
	/* ///////// @USER CONFIGURATION ///////// */

  function callWindowParentLocation(url) {
	  if ( isChangeAnmietData ) 
		window.parent.location.replace(url);
		else window.parent.parent.location.replace(url);
	}
	
	/* ////////// @START /////////// */
				
	var debugOn = false;
	var loggedIn = false;
	
	function CustomerRate() {
		this.group = "" ;
		this.key = "" ;
		this.quantity = "" ;
	}
	
	function RentalData() {
		this.reservierungsnummer = "" ;
		this.kundenid = "" ;
		this.autogroupid = "" ;
		this.startstation = "" ;
		this.endstation = "" ;
		this.sstationname = "" ;
		this.estationname = "";
		this.mietbeginn = "" ;
		this.mietende = "";
		this.startstunde = "" ;
		this.startminute = "" ;
		this.endstunde = "" ;
		this.endminute = "" ;
		this.login_email = "" ;
		this.login_permanent = "" ;
		this.login_checked = "" ;
		this.login_username = "" ;
		this.inetmv = "" ; 
		this.dutysta = "" ; 
		this.extrakm = "" ;
		this.contact = new Contact() ;
		this.payment = new Payment();
		this.totalprice = "" ;
		this.extrarates = new Array() ;
		this.rates = new Array();
		
		this.reempf = "" ;
		this.inet_private_using = "" ;
		this.firma = "" ; 
		this.fabhol = 0 ;
		this.fabholbem = "" ;
		this.fzustell = 0 ; 
		this.fzustellbem = "" ; 
	}
	
	/**
	 * 
	 */
	function Contact() {
		
		this.anrede = "" ;
		this.vorname = "" ;
		this.nachname = "" ;
		this.strasse = "" ;
		this.plz = "" ;
		this.stadt = "" ;
		this.telefon = "" ;
		this.email = "" ;
		this.birthdate = "";
		this.birthcity = "";
		this.company = "";
		this.login_email = "";
		this.login_password = "";
		this.isReg = 0;
		
		this.getPostArray = function() {
			sResult  = "salution="+escape(this.anrede);
			sResult += "&firstname="+escape(this.vorname);
			sResult += "&lastname="+escape(this.nachname);
			sResult += "&street="+escape(this.strasse);
			sResult += "&zipcode="+escape(this.plz);
			sResult += "&city="+escape(this.stadt);
			sResult += "&phone="+escape(this.telefon) ;
			sResult += "&email="+escape(this.email) ;
			sResult += "&birthdate="+escape(this.birthdate);
			sResult += "&birthcity="+escape(this.birthcity);
			sResult += "&company="+escape(this.company);
			sResult += "&login_password="+escape(this.login_password);
			sResult += "&login_email="+escape(this.login_email);
			sResult += "&isReg="+escape(this.isReg);
			sResult += "&persNo="+escape(this.persNo);
			sResult += "&persOffice="+escape(this.persOffice);
			sResult += "&persDate="+escape(this.persDate);
			sResult += "&persLicNo="+escape(this.persLicNo);
			sResult += "&persLicOffice="+escape(this.persLicOffice);
			sResult += "&persLicDate="+escape(this.persLicDate);
			
			return sResult;
		}
		
	}
	
	function Payment() {
		
		this.zahlungsart = 0 ;
		this.zahlungsmittel = "" ;
		this.kartennummer = "" ;
		this.gueltigbis = "" ;
		this.inhaber = "" ;
		this.blz = "" ;
	
		this.getPostArray = function() {
			
			sResult  = "ispayment="+escape(this.zahlungsart) ;
			sResult += "&cardtype="+escape(this.zahlungsmittel);
			sResult += "&cardnumber="+escape(this.kartennummer);
			sResult += "&expiredate="+escape(this.gueltigbis);
			sResult += "&cardholder="+escape(this.inhaber);
			sResult += "&bankcode="+escape(this.blz);
			
			return sResult;
		}
		
	}
	
	
	/**
	 * 
	 * @param {Object} $rentaldata
	 */
	function cx9_GetRentalData($rentaldata) {
		this._rentaldata = $rentaldata ;
		$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=1002",
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				debugMsg("JS::GetRentalData Error Datenbankproblem bei der Abfrage "+textStatus) ;
				debugMsg("cx9_GetRentalData() ->["+textStatus+" Ajax Request Error !" ) ;
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {
				cx9_setRentalDataByXML(data, $rentaldata) ;
				debugMsg($(data).text());
			} 
		});
	}
	
	function Cx9_CheckVersion() {
		var result = false;
		$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=2&version="+VERSION,
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
			    debugMsg("JS::Cx9_CheckVersion Error Datenbankproblem bei der Abfrage "+textStatus) ;
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {
				if ( $("messages>message", data).length > 0  ) {
					msg = $("messages>message", data).get(0) ;
					
					switch ($("status" , msg).text() ) {
						case "success" : {
							result = true;
							break;
						}
						case "error" : { 
							result = false;
							break;
						}
						default : {}
					}
				 }	
			}
		});
		return result;
	
	}

	function cx9_GetRentalDataFn($rentaldata, fn) {
		
	    this._rentaldata = $rentaldata ;
	    this._fn = fn ;
		$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=1002",
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				// cx9_GetRentalDataFn(fn)
				//debugMsg("JS::GetRentalDataFn Error Datenbankproblem bei der Abfrage "+textStatus) ;
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {	
				cx9_setRentalDataByXML(data, $rentaldata);
				debugMsg($(data).text());
				showPopupWait();
			},
			complete: fn 
		});
	}
	

	/**
     * 
     */
	function cx9_setRentalDataByXML(data, $rentaldata) {
		
		var max_rental= $("rentaldata", data).length ;			
		var rd = $("rentaldata",data).get(0) ;	
		
		$rentaldata.autogroupid 	=  $("autogroupid", rd).text();
		$rentaldata.mietbeginn 		=  $("startdate", rd).text();
		$rentaldata.mietende 		=  $("enddate", rd).text();
		$rentaldata.startstunde 	=  $("starthour", rd).text();
		$rentaldata.startminute 	=  $("startmin", rd).text();
		$rentaldata.endstunde 		=  $("endhour", rd).text();
		$rentaldata.endminute 		=  $("endmin", rd).text();
		$rentaldata.estationname 	=  $("estationname", rd).text();
		$rentaldata.sstationname 	=  $("sstationname", rd).text();
		
		$rentaldata.startstation 	=  $("startstation", rd).text();
		if ( $rentaldata.startstation == "" || $rentaldata.startstation.length == 0 ) {
			$rentaldata.startstation = Cx9_Cookie_getCookie("startstation") ;
			$rentaldata.sstationname = unescape(Cx9_Cookie_getCookie("sstationname")) ;
		}
		$rentaldata.endstation 		=  $("endstation", rd).text();
		if ( $rentaldata.endstation == "" || $rentaldata.endstation.length == 0 ) {
		    $rentaldata.endstation   = Cx9_Cookie_getCookie("endstation") ;
			$rentaldata.estationname = unescape(Cx9_Cookie_getCookie("estationname")) ;
		} 		
		$rentaldata.login_permanent       =  $("login_permanent", rd).text();
		$rentaldata.login_email 	        = $("login_email", rd).text() ;
		$rentaldata.login_checked 	      = parseInt($("login_checked" , rd).text(),10);
		$rentaldata.login_username 	      = $("login_username",rd).text() ;
		$rentaldata.inet_private_using	  = $("isprivate",rd).text() ;
		$rentaldata.inetmv			          = $("inetmv",rd).text(); 
		$rentaldata.dutysta			          = $("dutysta",rd).text();
		$rentaldata.kundenid 		          = $("customerid",rd).text() ;
		$rentaldata.reservierungsnummer   = $("reservationid",rd).text() ;
		$rentaldata.extrakm               = $("extrakm",rd).text() ;
		$rentaldata.totalprice            = $("totalprice",rd).text() ;
		
		var ct = $("contact" , rd ).get(0);
		//debugMsg($(ct).text());
		$rentaldata.contact.anrede 		= $("salution",ct).text() ;
		$rentaldata.contact.vorname 	= $("firstname",ct).text() ;
		$rentaldata.contact.lastname 	= $("lastname",ct).text() ;
		$rentaldata.contact.strasse 	= $("street",ct).text() ;
		$rentaldata.contact.plz			= $("zipcode",ct).text() ;
		$rentaldata.contact.stadt		= $("city", ct).text();
		$rentaldata.contact.telefon		= $("phone",ct).text();
		$rentaldata.contact.email	    = $("email",ct).text() ;
		$rentaldata.contact.birthdate	= $("birthdate",ct).text();
		$rentaldata.contact.birthcity	= $("birthcity",ct).text() ;
		$rentaldata.contact.company	    = $("company",ct).text() ;
		$rentaldata.contact.login_password = $("login_password", ct).text();  
		$rentaldata.contact.login_email    = $("login_email", ct).text();
		$rentaldata.contact.isReg          = $("isReg", ct).text();
		$rentaldata.contact.persNo         = $("persNo", ct).text();
		$rentaldata.contact.persOffice     = $("persOffice", ct).text();
		$rentaldata.contact.persDate       = $("persDate", ct).text();
		$rentaldata.contact.persLicNo      = $("persLicNo", ct).text();;
		$rentaldata.contact.persLicOffice  = $("persLicOffice", ct).text();
		$rentaldata.contact.persLicDate    = $("persLicDate", ct).text();
		
		var pm = $("payment", rd).get(0) ;
		$rentaldata.payment.zahlungsart 	   =  $("ispayment",pm).text() ;
		$rentaldata.payment.zahlungsmittel	 = $("cardtype",pm).text() ; ;
		$rentaldata.payment.kartennummer 	   = $("cardnumber",pm).text() ; 
		$rentaldata.payment.gueltigbis		   = $("expiredate",pm).text() ; 
		//$rentaldata.payment.blz				= $("bankcode",pm).text() ; 
		//debugMsg($(pm).text());
		
		var maxrates = $("rate",rd).length ;
		var objrate ;
		var newRate ;
		
		for ( countRates = 0 ; countRates < maxrates ; countRates++) {
			objrate 			     = $("rate",rd).get(countRates);
			newRate 			     = new CustomerRate() ;
			newRate.key 		   = $("key",objrate ).text() ;
			newRate.quantity 	 = $("quantity",objrate).text() ;
			$rentaldata.rates.push(newRate) ;
		} 
		
		var maxextrarates = $("extrarate",rd).length ;
		for ( countExtraRates = 0 ; countExtraRates < maxextrarates ; countExtraRates++) {
			objrate 			      = $("extrarate",rd).get(countExtraRates);
			newRate 			      = new CustomerRate() ;
			newRate.key 		    = $("key",objrate).text() ;
			newRate.quantity	  = $("quantity",objrate).text() ;
			newRate.group		    = $("group",objrate).text() ;
			$rentaldata.extrarates.push(newRate) ;
		} 		
		$rentaldata.firma 		      = $("firma",rd).text() ;
		$rentaldata.fabhol 		      = $("fabhol",rd).text() ;
		$rentaldata.fabholbem 	    = $("fabholbem",rd).text() ;
		$rentaldata.fzustell 	      = $("fzustell",rd).text() ;
		$rentaldata.fzustellbem     = $("fzustellbem",rd).text() ;
	}  
	
	/**
	 * Object FahrzeugGruppe
	 */
	function CFahrzeugGruppe() {
		this.gruppe         = "" ;
		this.inet_bild      = "" ;
		this.beschreibung   = "" ;
		this.text_web       = "" ;	
		this.setData        = _CFahrzeugGruppe_setData ;
	}
	
	/**
	 * setData Methode von CFahrzeugGruppe
	 * 
	 * @param {Object} gruppe
	 * @param {Object} beschreibung
	 * @param {Object} text_web
	 * @param {Object} inet_bild
	 */
	function _CFahrzeugGruppe_setData( gruppe,beschreibung, text_web, inet_bild ) {
		this.gruppe = gruppe ;
		this.beschreibung = beschreibung;
		this.text_web = text_web;
		this.inet_bild = inet_bild;
	}
	
	
	
	/**
	 * 
	 */
	function RentalExtraRateData() {
		this.tarifid              = "" ;
		this.tarif                = "" ;
		this.beschreibung         = "" ;
		this.gesamtpreis_mietrate = 0.00;
		this.pkrechnung           = "" ;
		this.mietrate             = "" ;
		this.gesamtpreis          = 0.00 ;
		this.sort                 = null ;
		this.einheit              = "" ;
		this.einheit_lang         = "" ;
		this.menge                = "" ;
		this.einzelpreis_mietrate = 0.00 ;
		this.kdmenge              = 0;		// StÃ¼ck{0..n | n=N} und fÃ¼r Tage{0|1}
		this.kdgesamtpreis        = 0.00; // this.
		this.oblig                = 0 ; 
	}

	/**
	 * Cookie Prototype
	 * @param {Object} msg
	 */
	function Cx9_Cookie() {
		
		this.get = Cx9_Cookie_getCookie ;
		this.set = Cx9_Cookie_setCookie;
		this.check = Cx9_Cookie_checkCookie;
	}
	function Cx9_Cookie_checkCookie() {
		var result = true;
		
		Cx9_Cookie_setCookie("cx9", "test", 1);
		
		if (Cx9_Cookie_getCookie("cx9") == "") {
			result = false;
		}
		
		Cx9_Cookie_setCookie("cx9", "test", 0);
		
		return result;
		
	}
	
	function Cx9_Cookie_getCookie(c_name) {
		if (document.cookie.length>0)
		  {
		  c_start=document.cookie.indexOf(c_name + "=");

		  if (c_start!=-1)
		    { 
		    c_start=c_start + c_name.length+1; 
		    c_end=document.cookie.indexOf(";",c_start);
		    if (c_end==-1) c_end=document.cookie.length;
		    return unescape(document.cookie.substring(c_start,c_end));
		    } 
		  }
		return "";
	}

	function Cx9_Cookie_setCookie(c_name,value,expiredays)
	{
		var exdate=new Date();
		exdate.setDate(exdate.getDate()+expiredays);
		document.cookie=c_name+ "=" +escape(value)+
		((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
	}

	/**
	 * 
	 */
	function cx9_showLoginInfo() {
	
		if ( rentalData.login_checked == 1 ) {
			$("#name-logininfo").html(rentalData.login_username+"<br />"+Cx9_Get("WEB_STEP3", "LOGGED_IN")) ;
		}
		else {
			$("#name-logininfo").html(Cx9_Get("WEB_STEP3", "NOT_LOGGED_IN")) ;
		}
	}
	
	function showPopupWait() {
		popUp();
		backgroundFilter();
	}

	/**
	 * 
	 * @param {Object} b
	 */
	function PopupVisible(b) {
		var visible = "" ;
		if ( b == true ) visible = "block" ;
		else visible = "none" ; 
		$("#backgroundFilter").css("display", visible ) ;
		$("#popupWindow").css("display", visible);	
	}
	
	/**
	 * FORMULAR OBJECT { INPUT }
	 * 
	 */
	function detectInputNumber(el)
	{
	  // var val = el.value.replace(/[^.^,d]/g, '');
      var val = el.value.replace(/[^\d]/g, '');
  	  el.value = val;
	  // el.value = val;
	}
	
	
	/**
	 * in UTF8 encodieren
	 * @param {Object} sText
	 */
	function encodeUTF8( sText )
	{
	    // replace to a normal newline
	    sText = sText.replace( /rn/g , "\n" );
	    var sUTFText = "";
	    for( var n = 0; n < sText.length; n++ )
	    {
	        // get unicode
	        var c = sText.charCodeAt( n );
	        // signs between 0-127 => 1byte
	        if ( c < 128 )
	            sUTFText += String.fromCharCode(c);
	        // signs between 127-2047 => 2byte
	        else if ( ( c > 127 ) && ( c < 2048 ) )
	        {
	            sUTFText += String.fromCharCode( ( c >> 6 ) | 192 );
	            sUTFText += String.fromCharCode( ( c & 63 ) | 128 );
	        }
	        // signs betwwen 2048-66536 => 3byte
	        else 
	        {
	            sUTFText += String.fromCharCode( (c >> 12 ) | 224 );
	            sUTFText += String.fromCharCode( ( ( c >> 6 ) & 63 ) | 128 );
	            sUTFText += String.fromCharCode( ( c & 63 ) | 128 );
	        }
	    }
	    return sUTFText;
	}  
	
	/**
	 * Email validation
	 * @param {Object} msg
	 */
	function isValidEmail(strEmail){
		  validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
		    if (strEmail.search(validRegExp) == -1) 
		    {
		      return false;
		    } 
		    return true; 
	}


	/**
	 * Valid CC
	 * @param {Object} msg
	 */
	function cardval(s){
		// remove non-numerics
		var v = "0123456789";
		var w = "";
		for (i = 0; i < s.length; i++) {
			x = s.charAt(i);
			if (v.indexOf(x, 0) != -1) 
				w += x;
		}
		// validate number
		j = w.length / 2;
		if (j < 6.5 || j > 8 || j == 7) 
			return false;
		k = Math.floor(j);
		m = Math.ceil(j) - k;
		c = 0;
		for (i = 0; i < k; i++) {
			a = w.charAt(i * 2 + m) * 2;
			c += a > 9 ? Math.floor(a / 10 + a % 10) : a;
		}
		for (i = 0; i < k + m; i++) 
			c += w.charAt(i * 2 + 1 - m) * 1;
		return (c % 10 == 0);
	}


	/**
	 * 
	 * @param {Object} field
	 */
	function Cx9_Validate_Date(field)
     {
          var check = true;
          var value = field.value; //get characters
          //check that all characters are digits, ., -, or ""
          for(var i=0;i < field.value.length; ++i)
          {
               var new_key = value.charAt(i); //cycle through characters
               if(((new_key < "0") || (new_key > "9") || !(new_key ==".") ) && 
                    !(new_key == ""))
               {
                    check = false;
                    break;
               }
          }
          if(!check) { //field.style.backgroundColor = "red"; 
		  }
          else { //field.style.backgroundColor = "white"; 
		  }
     }
	 
	 
	/**
	 * Erlaub die Eingabe nur von 0 bis 9
	 * @param {Object} field
	 */
	function Cx9_Validate_Number(field)
  {
      var check = true;
      var value = field.value; //get characters
      //check that all characters are digits, ., -, or ""
      
      for(var i=0;i < field.value.length; ++i)
      {
         var new_key = value.charAt(i); //cycle through characters
         if(((new_key < "0") || (new_key > "9")  ) && 
              !(new_key == ""))
         {
              check = false;
              break;
         }
      }
      if(!check) { //field.style.backgroundColor = "red"; 
      }
      else { //field.style.backgroundColor = "white"; 
      }
  }
	
	function cx9_parserKfzGruppe(data, $arrFahrzeuggruppe) {

		var max_kfzgruppen = $("autogroups>autogroup", data).length ;
		var fahrzeuggrp = null;
		for (cof = 0 ; cof <max_kfzgruppen ; cof++) {
			fahrzeuggrp = $("autogroups>autogroup",data).get(cof) ;	
			var fg = new CFahrzeugGruppe() ;
			fg.gruppe = $(fahrzeuggrp).attr("id");
			fg.beschreibung =  $("groupname", fahrzeuggrp).text();
			fg.text_web =  $("groupdesc", fahrzeuggrp).text();
			fg.inet_bild  = $("grouppic", fahrzeuggrp).text() ;
			$arrFahrzeuggruppe.push(fg) ;
		} 
		
		cx9_updateKfzGruppen($arrFahrzeuggruppe) ;	
	}
	
	/**
	 * Debugtext schreiben  
	 * @param String msg
	 */
	function debugMsg(msg) {
	
		if (debugOn) {	
			$("div#debugContent").show() ;
			d = new Date() ;
			$("div#debugContent").prepend("<font color='#AAA' >" + d.toUTCString() + "</font><br />" + msg + "<br />");
		}
		else {
			$("div#debugContent").hide() ;
		}
	}

	/**
	 * check Existing of Variable
	 * @param {Object} str
	 */
	function isVariable(str) {
		if ( typeof(window[str]) != "undefined" ) {
			return true ;
		} else return false ;
	}
	
	
	
	var OpenSchedule = {
		_arrOpenSchedule : aOpenSchedule,
		Data : function () {
			this.starthour = 0 ;
			this.startminute = 0 ;
			this.endhour = 0 ;
			this.endminute = 0 ;
		},
		getByDay : function ( day ) {
			if ( typeof(day) != "undefined" ) {
				if ( day >= 0 && day < this._arrOpenSchedule.length ) {
				  	var osdata = new OpenSchedule.Data() ;
					osdata.starthour   = parseInt(this._arrOpenSchedule[day].substring(0,2), 10 );
					osdata.startminute = parseInt(this._arrOpenSchedule[day].substring(2,4), 10 );					
					osdata.endhour = parseInt(this._arrOpenSchedule[day].substring(4,6), 10);
					osdata.endminute= parseInt(this._arrOpenSchedule[day].substring(6,8),10);
					return osdata ;
				}
			}
		}
	};
	

	var Base64 = {
			// private property
			_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
		 
			// public method for encoding
			encode : function (input) {
				var output = "";
				var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
				var i = 0;
		 
				input = Base64._utf8_encode(input);
		 
				while (i < input.length) {
		 
					chr1 = input.charCodeAt(i++);
					chr2 = input.charCodeAt(i++);
					chr3 = input.charCodeAt(i++);
		 
					enc1 = chr1 >> 2;
					enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
					enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
					enc4 = chr3 & 63;
		 
					if (isNaN(chr2)) {
						enc3 = enc4 = 64;
					} else if (isNaN(chr3)) {
						enc4 = 64;
					}
		 
					output = output +
					this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
					this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
		 
				}
		 
				return output;
			},
		 
			// public method for decoding
			decode : function (input) {
				var output = "";
				var chr1, chr2, chr3;
				var enc1, enc2, enc3, enc4;
				var i = 0;
		 
				input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		 
				while (i < input.length) {
		 
					enc1 = this._keyStr.indexOf(input.charAt(i++));
					enc2 = this._keyStr.indexOf(input.charAt(i++));
					enc3 = this._keyStr.indexOf(input.charAt(i++));
					enc4 = this._keyStr.indexOf(input.charAt(i++));
		 
					chr1 = (enc1 << 2) | (enc2 >> 4);
					chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
					chr3 = ((enc3 & 3) << 6) | enc4;
		 
					output = output + String.fromCharCode(chr1);
		 
					if (enc3 != 64) {
						output = output + String.fromCharCode(chr2);
					}
					if (enc4 != 64) {
						output = output + String.fromCharCode(chr3);
					}
				}
				output = Base64._utf8_decode(output);
				return output;
			},
		 
			// private method for UTF-8 encoding
			_utf8_encode : function (string) {
				string = string.replace(/\r\n/g,"\n");
				var utftext = "";
		 
				for (var n = 0; n < string.length; n++) {
		 
					var c = string.charCodeAt(n);
		 
					if (c < 128) {
						utftext += String.fromCharCode(c);
					}
					else if((c > 127) && (c < 2048)) {
						utftext += String.fromCharCode((c >> 6) | 192);
						utftext += String.fromCharCode((c & 63) | 128);
					}
					else {
						utftext += String.fromCharCode((c >> 12) | 224);
						utftext += String.fromCharCode(((c >> 6) & 63) | 128);
						utftext += String.fromCharCode((c & 63) | 128);
					}
		 
				}
		 
				return utftext;
			},
 
		// private method for UTF-8 decoding
		_utf8_decode : function (utftext) {
			var string = "";
			var i = 0;
			var c = c1 = c2 = 0;
	 
			while ( i < utftext.length ) {
	 
				c = utftext.charCodeAt(i);
	 
				if (c < 128) {
					string += String.fromCharCode(c);
					i++;
				}
				else if((c > 191) && (c < 224)) {
					c2 = utftext.charCodeAt(i+1);
					string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
					i += 2;
				}
				else {
					c2 = utftext.charCodeAt(i+1);
					c3 = utftext.charCodeAt(i+2);
					string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
					i += 3;
				}
	 
			}
	 
			return string;
		}
 
	};
	
	/*function Cx9_SetCookieDatenWithParam(Params) {
		
		$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=1600&sstat="+Params['sstat']+"&grp="+Params['grp'],
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				// cx9_GetRentalDataFn(fn)
				debugMsg("JS::Cx9_SetCookieDatenWithParam Error: "+textStatus) ;
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {	
				
			},
			 
		});
		
	}*/
	
	function cx9_loadFieldCheckData () {
		$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=200",
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				alert(errorThrown);
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {	
				SetResFieldsArray(data);
				setFields();
			} 
		});
	};
	
	function SetResFieldsArray (data) {
		if ( $("messages>message", data).length > 0  ) {
			msg = $("messages>message", data).get(0) ;
			switch ($("status" , msg).text() ) {
				case "success" : {
					
					var Anz = $("Field", data).length;
					var Field = "";
					var Fields = new Array();
					for (var i=0; i<Anz; i++) {
						
						Field = $("Field", data).get(i);
						Fields[i] = new Object();
						Fields[i]["aktion"]    = $("aktion", Field).text();
						Fields[i]["component"] = $("component", Field).text();
						Fields[i]["enabled"]   = $("enabled", Field).text();
						Fields[i]["visible"]   = $("visible", Field).text();
						Fields[i]["operator"]  = $("operator", Field).text();
						Fields[i]["val"]       = $("val", Field).text();
						Fields[i]["error"]     = $("error", Field).text();
					}
					
					RequiredFields.push(Fields);
					break;
					
				}
				case "error" : { 
					alert($("content", msg).text());
					break ; 
				}
			}
		}	
	};
	
	function setFields () {
		if ((RequiredFields.length > 0)) {
			for (var i = 0; i < RequiredFields[0].length; i++ ) {
				// Alle Components, die Visible = Falsch haben ausblenden
				if (RequiredFields[0][i]["enabled"] == "0") {
					$("#"+RequiredFields[0][i]["component"]).attr("disabled", "disabled");
				}
				if (RequiredFields[0][i]["visible"] == "0") {
					$("#"+RequiredFields[0][i]["component"]).attr("style", "display:none");
					$("label[for="+RequiredFields[0][i]["component"]+"]").attr("style", "display:none");
					if (RequiredFields[0][i]["component"] == "fldBirthDate") {
						$(".ui-datepicker-trigger").attr("style", "display:none");
					}
					
				}
				if ((RequiredFields[0][i]["operator"] == "!") && (RequiredFields[0][i]["val"] == "true")) {
					$("label[for="+RequiredFields[0][i]["component"]+"]").append(" *");
				}
			}
		}
	}
	
	function checkRequiredFields () {
		var message = "";
		var isError = false ;
		
		if ((RequiredFields.length > 0)) {
			for (var i = 0; i < RequiredFields[0].length; i++ ) {
				// Alle Components, die visible==1, enabled==1, operator=="!", val==true -> Pflicht
				if ($("#"+RequiredFields[0][i]['component']).index() != "-1") {
					if ((RequiredFields[0][i]["visible"] == "1") && (RequiredFields[0][i]["enabled"] == "1")
					 && (RequiredFields[0][i]["operator"] == "!") && RequiredFields[0][i]["val"] == "true") {
						//Pflicht
						if ($("#"+RequiredFields[0][i]["component"]).attr("value").length == 0) {
							$("#"+RequiredFields[0][i]["component"]).css("background", COLOR_ALERTFIELD);
							isError = true;
							if (RequiredFields[0][i]["error"].length > 0) {
								message += RequiredFields[0][i]["error"]+ "\n";
							}
						}						
					}
				}
			}
		}
		
		if ( isError ) {
		//	alert(Cx9_Get("WEB_STEP3", "ERROR_REQUIRED_FIELDS"));
//			alert("Bitte fÃ¼llen Sie alle Pflichtfelder (*) aus.");				
			return false ; 
		}
		else return true ;
	}
	
	function Cx9_loadTranslation(AStep) {
		
		$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=250"+"&step="+AStep,
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				alert(errorThrown);
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {	
				Cx9_SetTranslationArray(data);
			} 
		});
		
	}
	
	function Cx9_SetTranslationArray(data) {
		
		if ( $("messages>message", data).length > 0  ) {
			msg = $("messages>message", data).get(0) ;
			switch ($("status" , msg).text() ) {
				case "success" : {
					var Anz = $("COMPONENT", data).length;
					var Field = "";
					var Fields = new Array();
					for (var i=0; i<Anz; i++) {
						Field = $("COMPONENT", data).get(i);
						Fields[i] = new Object();
						
						Fields[$("NAME",  Field).text()] = $("VALUE", Field).text();
						
					}
					
					Translation.push(Fields);
					break;				
				}
				case "error" : { 
					alert($("content", msg).text());
					break ; 
				}
			}
		}
		
	}
	
	function Cx9_Translate(AStep) {
		
		Cx9_loadTranslation(AStep);
		
	    // Übersetzen der Komponenten
	    /*var labels = new Array();		
		
		$("label").each(function() {
			labels.push($(this).attr('for'));
		});
		for (var i = 0; i<labels.length; i++) {
			translateComponent(AStep, labels[i]);
		}*/
	}
	
	//function getTranslateComp(AStep, comp) {
	function Cx9_Get(AStep, comp) {
		
		var key;
        key = AStep+"."+comp;
        
        if (Translation[0][key]!= undefined) {
        	return Translation[0][key];
        }		
	}
	
		
	/*function translateComponent(AStep, comp) {
		var key;
        key = AStep+"."+comp;
        
        if (Translation[0][key]!= undefined) {
        	setCaption(comp, Translation[0][key]);
        }else {
        	//addTranslation(key, $('label[for='+comp+']').text());
        }
    }*/
	
    /*function addTranslation(aKey, aValue) {
    	$.ajax({
			type: "GET",
			url: "./index.php",
			data: "mod=260"+"&key="+aKey+"&value="+Base64.encode(aValue),
			dataType: "xml",
			global: 'false',
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				alert(errorThrown);
			},
			beforeSend: function(xhr){
				xhr.setRequestHeader("Pragma", "no-cache");
  				xhr.setRequestHeader("Cache-Control", "must-revalidate");
				xhr.setRequestHeader("If-Modified-Since", document.lastModified);
			} ,
			success:  function(data) {
								
			} 
		});
    }*/
    /*function setCaption(aComp, aText) {
    	
    	$('label[for='+aComp+']').text(aText);
    	
    }*/
	
	function MessageConvert(msg) {
		
		return "";
		
	}
	
	function isElement(what){
		return !!(what && what.nodeType== 3);
	} 
	
	function showLogin() {
		if (loggedIn == true) {
			$('#cPaneMRight').hide(400);
			loggedIn = false;
		}else {
			$('#cPaneMRight').show(400);
			loggedIn = true;
		}
	}
	
	/* ////////// @START /////////// */
