 //
 //
 ////  Requests country list XML data from the server and invokes a callback on
 //    the received results
 //
 var myCountryTemplate = null;
 function ajax_fetch_country_xml(parser_callback, proxy, xml_data)
 {
     if (myCountryTemplate == null)
     {
         ////  Initilize the XML template
         //
         countryRequest_xml_template = '<START>'+
                                           '<Administration>'+
                                               '<ObjectType>2</ObjectType>'+
                                               '<DemandedObjects>1001</DemandedObjects>'+
                                               '<Lang_id>#{lang}</Lang_id>'+
                                               '<Op_id>#{opId}</Op_id>'+
                                           '</Administration>'+
                                       '</START>';


         myCountryTemplate = new Template(countryRequest_xml_template);
     }

     var countryRequest_xml = myCountryTemplate.evaluate(xml_data);
     

     var params = {
                      request: countryRequest_xml
		  };
     params = Object.extend(params, proxy);

     var opts   = {
                      method:     'post',
                      parameters:  params,
                      onSuccess:   parser_callback
                  };
     var myAjax = new Ajax.Request(proxy.path, opts);
 }



 //
 //
 ////  Requests city list XML data from the server and invokes a callback on
 //    the received results
 //
 var myCityTemplate = null;
 function ajax_fetch_city_xml(parser_callback, proxy, xml_data)
 {
     if (myCityTemplate == null)
     {
         ////  Initilize the XML template
         //
         cityRequest_xml_template = '<START>'+
                                        '<Administration>'+
                                            '<ObjectType>2</ObjectType>'+
                                            '<DemandedObjects>1000</DemandedObjects>'+
                                            '<Lang_id>#{lang}</Lang_id>'+
                                            '<Op_id>#{opId}</Op_id>'+
                                            '<Country_id>#{countryId}</Country_id>'+
                                        '</Administration>'+
                                    '</START>';


         myCityTemplate = new Template(cityRequest_xml_template);
     }


     var cityRequest_xml = myCityTemplate.evaluate(xml_data);




     var params = {
                      request: cityRequest_xml
                  };
     params = Object.extend(params, proxy);		  

     var opts   = {
                      method:     'post',
                      parameters:  params,
                      onSuccess:   parser_callback
                  };
     var myAjax = new Ajax.Request(proxy.path, opts);
 }






 //
 //
 ////  Requests country list XML data from the server and invokes a callback on
 //    the received results
 //
 function ajax_fetch_pickupstations_xml(parser_callback, data)
 {
    var add_params = {
                         action  : 'get_pickupstations',
                         display : 'wrapper',
			 stationsChecked: 'true',
		         exec    : 'CheckStations'
                     };

    add_params = Object.extend(data, add_params);

    var opts   = {
                     method:     'post',
                     parameters:  add_params,
                     onSuccess:   parser_callback
                 }

    var myAjax = new Ajax.Request("/MBServlet", opts);
 }


 //
 //
 ////  Requests return stations list XML data from the server and invokes a callback on
 //    the received results
 //
 function ajax_fetch_returnstations_xml(parser_callback, data, pickupstation_id)
 {
    var add_params = {
                         carPickUpStationId : pickupstation_id,

                         action:    'get_returnstations',
                         display:   'wrapper',

	                 stationsChecked: 'true',
			 exec           : 'CheckStations'
                     };

    add_params = Object.extend(add_params, data);

    var opts   = {
                     method:     'post',
                     parameters:  add_params,
                     onSuccess:   parser_callback
                 }

    var myAjax = new Ajax.Request("/MBServlet", opts);
 }











 function xml_parse_user_data(xml_string, text_parser_callback)
 {
     var _result       = new Array();
     //  XML document to parse, genereated off the XML string
     var doc           = xml_load(xml_string);

     var data;

     xml_parse_messages(doc);

     var all_results   = doc.getElementsByTagName('UserData');

     ////  Return "false" in case there are no results found
     //
     if (all_results == null)
         return 0;

     data  = all_results[0];

     var tmp;
     
     page3_data.driverSalutation = ((tmp = data.getElementsByTagName('adress')[0].childNodes      ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.driverName       = ((tmp = data.getElementsByTagName('name')[0].childNodes        ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.firstname        = page3_data.driverName;
     page3_data.driverFirstname  = ((tmp = data.getElementsByTagName('firstname')[0].childNodes   ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.name             = page3_data.driverFirstname;
     page3_data.driverDobDay     = ((tmp = data.getElementsByTagName('dobDay')[0].childNodes      ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.driverDobMonth   = ((tmp = data.getElementsByTagName('dobMonth')[0].childNodes    ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.driverDobYear    = ((tmp = data.getElementsByTagName('dobYear')[0].childNodes     ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.street           = ((tmp = data.getElementsByTagName('street')[0].childNodes      ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.zip              = ((tmp = data.getElementsByTagName('zip')[0].childNodes         ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.city             = ((tmp = data.getElementsByTagName('city')[0].childNodes        ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.thisCountry      = ((tmp = data.getElementsByTagName('thisCountry')[0].childNodes ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.telCountry       = ((tmp = data.getElementsByTagName('telCountry')[0].childNodes  ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.telAreaCode      = ((tmp = data.getElementsByTagName('telAreaCode')[0].childNodes ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.telExtension     = ((tmp = data.getElementsByTagName('telExtension')[0].childNodes).length != 0) ? tmp[0].nodeValue : '';
     page3_data.email            = ((tmp = data.getElementsByTagName('email')[0].childNodes       ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.faxCountry       = ((tmp = data.getElementsByTagName('faxCountry')[0].childNodes  ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.faxAreaCode      = ((tmp = data.getElementsByTagName('faxAreaCode')[0].childNodes ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.faxExtension     = ((tmp = data.getElementsByTagName('faxExtension')[0].childNodes).length != 0) ? tmp[0].nodeValue : '';
     page3_data.ccHolder         = ((tmp = data.getElementsByTagName('ccHolder')[0].childNodes    ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.ccId             = ((tmp = data.getElementsByTagName('ccId')[0].childNodes        ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.ccNo             = ((tmp = data.getElementsByTagName('ccNo')[0].childNodes        ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.ccExpMonth       = ((tmp = data.getElementsByTagName('ccExpMonth')[0].childNodes  ).length != 0) ? tmp[0].nodeValue : '';
     page3_data.ccExpYear        = ((tmp = data.getElementsByTagName('ccExpYear')[0].childNodes   ).length != 0) ? tmp[0].nodeValue : '';

     return 1;
 }




 ////  ajax_fetch_user_data(parser_callback, data)
 //
 function ajax_fetch_user_data(parser_callback, data)
 {
     var add_params = {
                         action :   'get_user_info',
                         display:   'wrapper',

			 user_profil_customertype: '4',
			 exec                    : 'Login'
                     };

    add_params = Object.extend(add_params, data);

    var opts   = {
                     method:     'post',
                     parameters:  add_params,
                     onSuccess:   parser_callback
                 }

    var myAjax = new Ajax.Request("/MBServlet", opts);
 }









 //
 //
 ////  Requests car extras XML data from the server and invokes a callback on
 //    the received results
 //
 function ajax_fetch_extras_xml(parser_callback, data)
 {
    var add_params = {
			display		:  "wrapper",
			action          :  "get_extras",
			exec		:  "GetCarExtras"
                     };

    add_params = Object.extend(data, add_params);


    var opts   = {
                     method:     'post',
                     parameters:  add_params,
                     onSuccess:   parser_callback
                 };



    var myAjax = new Ajax.Request("/MBServlet", opts);
 }
















 function xml_parse_extras_list(xml_string, text_parser_callback)
 {
     var _result       = new Array();
     //  XML document to parse, genereated off the XML string
     var doc           = xml_load(xml_string);

     var all_results   = doc.getElementsByTagName('extra');

     ////  Return "false" in case there are no results found
     //
     if (all_results == null)
     {
         return null;
     }

     var cnt       = all_results.length;
     var dom_extra = null;
     for (var i=0; i<cnt; i++)
     {
         dom_extra  = all_results[i];

         var extra_name;
	 var extra_id;
	 var extra_checked;
	 var extra_amount;

         extra_name    = dom_extra.getElementsByTagName('name')[0].childNodes[0].nodeValue;
         extra_id      = dom_extra.getElementsByTagName('id')[0].childNodes[0].nodeValue;
	 extra_checked = dom_extra.getElementsByTagName('checked')[0].childNodes[0].nodeValue;
	 extra_amount  = dom_extra.getElementsByTagName('amount')[0].childNodes[0].nodeValue;

         if (text_parser_callback)
             extra_name = text_parser_callback(extra_name);

         _result[i] = {
                          name   :  extra_name,
                          id     :  extra_id,
			  amount :  extra_amount,
			  checked:  extra_checked
                      };
     }

     return _result;
 }



 
 
 
 
 
 
 
 //
 //
 ////  Parse the country/city list XML and return an array of objects
 //
 //
 function xml_parse_namevalue_list(xml_string, text_parser_callback)
 {
     var _result       = new Array();
     //  XML document to parse, genereated off the XML string
     var doc           = xml_load(xml_string);
     
     xml_parse_messages(doc);

     var all_results   = doc.getElementsByTagName('Record');

     ////  Return "false" in case there are no results found
     //
     if (all_results == null)
     {
         return null;
     }

     var cnt         = all_results.length;
     var dom_node    = null;
     for (var i=0; i<cnt; i++)
     {
         dom_node  = all_results[i];

         node_name = dom_node.getElementsByTagName('Name')[0].childNodes[0].nodeValue;
         node_id   = dom_node.getElementsByTagName('Id')[0].childNodes[0].nodeValue;
	 

         if (text_parser_callback)
             node_name = text_parser_callback(node_name);


         _result[i] = {
                             name:   node_name,
                             value:  node_id
                      };
     }

     return _result;
 }


 ////  xml_parse_error_messages(document_object)
 //
 var error_msg    = '';
 var success_msg  = '';
 var business_msg = '';
 function xml_parse_messages(document_object)
 {
     var tmp;

     ////  Parse out the error messages and warnings
     //
     tmp = document_object.getElementsByTagName('ERROR_MESSAGE');
     if (tmp.length!=0) error_msg = tmp[0].childNodes[0].nodeValue.replace("\\n", "\n");

     tmp = document_object.getElementsByTagName('SUCCESS_MESSAGE');
     if (tmp.length!=0) success_msg = tmp[0].childNodes[0].nodeValue.replace("\\n", "\n");

     tmp = document_object.getElementsByTagName('BUSINESS_MESSAGE');
     if (tmp.length!=0) business_msg = tmp[0].childNodes[0].nodeValue.replace("\\n", "\n");
 }






 function fix_umlauts(text)
 {
     var result = text;

     result = result.replace(/&#228;/g, String.fromCharCode(228) ); // &auml;
     result = result.replace(/&#196;/g, String.fromCharCode(196) ); // &Auml;
     result = result.replace(/&#252;/g, String.fromCharCode(252) ); // &uuml;
     result = result.replace(/&#220;/g, String.fromCharCode(220) ); // &Uuml;
     result = result.replace(/&#246;/g, String.fromCharCode(246) ); // &ouml;
     result = result.replace(/&#214;/g, String.fromCharCode(214) ); // &Ouml;
     result = result.replace(/&#180;/g, String.fromCharCode(180) ); // &acute;
     result = result.replace(/&#224;/g, String.fromCharCode(224) ); // &agrave;
     result = result.replace(/&#242;/g, String.fromCharCode(242) ); // &ograve;
	 result = result.replace(/&#223;/g, String.fromCharCode(223) ); // &szlig;

     return result;
 }