 /*  Uses

 _id_from_date
 _default_todate_offset
 _default_fromdate_offset
 _default_date_format
 _id_to_date

 _id_country_select
 _id_city_select
 proxy
 use_country
 use_city

 ERR_MSG_WRONG_DATEFORMAT


 */

 //
 ////  Date functions
 //
 function fromdate_onchange()
 {
     var tmpUnixtime = date_get_from_value($F(_id_from_date), 0, 0);

     if (tmpUnixtime == false)
     {
         alert(ERR_MSG_WRONG_DATEFORMAT);

         return false;

     }

     var tempdate = new Date();

     tempdate.setTime(tmpUnixtime + (_default_todate_offset - _default_fromdate_offset));
     $(_id_to_date).value = tempdate.print(_default_date_format);

 }


 function todate_onchange()
 {
     var tmpUnixtime = date_get_from_value ($F(_id_to_date), 0, 0);

     if (tmpUnixtime == false)
     {
         alert(ERR_MSG_WRONG_DATEFORMAT);

         return false;
     }
 }
 
 
 var id_fromdate_ampm = 'carFrom_AM_PM';
 var id_todate_ampm   = 'carTo_AM_PM';
 function fromdate_ampm_onchange()
 {
     var input = $(_id_from_hour);
     var copy  = $(_id_from_hour + '_short');
     
     var ampm  = $F(id_fromdate_ampm);
     
     if (ampm == 'am')
     {
         input.value = copy.value;
     }
     else
     {
         input.value = '' + (parseFloat(copy.value) + 12);
     }
 }
 
 function todate_ampm_onchange()
 {
     var input = $(_id_to_hour);
     var copy  = $(_id_to_hour + '_short');
     
     var ampm  = $F(id_todate_ampm);
     
     if (ampm == 'am')
     {
         input.value = copy.value;
     }
     else
     {
         input.value = '' + (parseFloat(copy.value) + 12);
     }     
 }



 //
 ////  AJAX-related functions
 //

 var _first_run_country = false;
 var yak;
 function initCountrySelect(ajax_responce)
 {     
     var countrySelect = $(_id_country_select);

     countrySelect.disable();

     $(_id_country_select+'_loading').removeClassName('invisible');

     ////  First phase, request country list XML from the server
     //
     if (ajax_responce == null)
     {         
         var data = {
                        lang: 'en',
                        opId: use_opId
                    };
         ajax_fetch_country_xml(initCountrySelect, proxy, data);
     }

     ////  Second phase, parse the received XML data
     //
     else
     {         
         var arr = xml_parse_namevalue_list(ajax_responce.responseText);
	 yak = arr;
	 
	 if (typeof(topCountry) !=' undefined')
	 {
	     var new_arr = new Array();
	     
	     new_arr[0] = new Option();
	     new_arr[0].value = '-1';
	     new_arr[0].name  = '-----------';
	     
	     var i, j;
	    
	     
	     var tc_cnt = topCountry.length;
	     var ca_cnt = arr.length;
	     var k = new_arr.length;
	     for(i=0; i<tc_cnt; i++)
	     {
	         for(j=0; i<ca_cnt; j++)
		 {
		     if(arr[j].value == topCountry[i])
		     {
		         new_arr[k] = arr[j];
			 k++;
			 
			 break;
		     }
		 }
	     }  
	    
	     if(new_arr.length != 0)
	     {
	         ////  Add a divider after the top countries
		 //
		 var q = new_arr.length;
		 new_arr[q]       = new Option();
		 new_arr[q].value = '-1';
		 new_arr[q].name  = '-----------';
	    
	         ////  copy over all the countries from the countries array
                 //
                 k = new_arr.length;
	         ca_cnt = arr.length;
                 for(i=0; i<ca_cnt; i++)
	         {
	             new_arr[k] = arr[i];
		     k++;
	         }
	     
	         arr = new_arr; 
             }
	  }
	 
	 
         select_clear(_id_country_select);
         select_build(_id_country_select, arr);
         $(_id_country_select+'_loading').addClassName('invisible');
         countrySelect.enable();

         if (_first_run_country == false)
         {
             _first_run_country = true;
             select_choose(_id_country_select, use_country);
         }
     }
 }


 var _first_run_city = false;
 function initCitySelect(input_param)
 {
     var citySelect = $(_id_city_select);
     
     if ((typeof(input_param) == 'number' || typeof(input_param) == 'string') && (input_param == "-1" || input_param == -1))
     {
         select_clear(_id_city_select);
	 return;
     }

     citySelect.disable();
     $(_id_city_select+'_loading').removeClassName('invisible');

     ////  If we receive anything but an object, then this must be the
     //    country id to select cities for, and not AJAX responce object
     //    In this case, we make the AJAX request
     //
     if (typeof(input_param) == 'number' || typeof(input_param) == 'string')
     {         
         xml_data = {
                        lang: 'en',
			opId: use_opId
                    };
         ajax_fetch_city_xml(initCitySelect, input_param, proxy, xml_data);
     }

     ////  Second phase, parse the received XML data
     //
     else
     {         
         var arr = xml_parse_namevalue_list(input_param.responseText);

         select_clear(_id_city_select);
         select_build(_id_city_select, arr);
	 
	 $(_id_city_select+'_loading').addClassName('invisible');
         citySelect.enable();

         if (_first_run_city == false)
         {
             _first_run_city = true;
             select_choose(_id_city_select, use_city);
         }
     }
 }




 ////  Store the combination of country/city, when we submit the form
 //    so that we would be able to restore them once we return from page2
 //
 function store_form_data()
 {
     var expires    = new Date(today.getTime() + 5 * 60 * 1000); // 5 minutes


     var cookie_value = $F(_id_country_select) + ';' +
                        $F(_id_city_select)    + ';' +
                        $F(_id_from_date)      + ';' +
                        $F(_id_from_hour)      + ';' +
                        $F(_id_from_minute)    + ';' +
                        $F(_id_to_date)        + ';' +
                        $F(_id_to_hour)        + ';' +
                        $F(_id_to_minute);

     setCookie (_default_cookie_name, cookie_value, expires);
 }





 function submitForm()
 {
     //  Check if the country was selected
     //
     if ($F(_id_country_select) == -1)
     {
         alert(ERR_MSG_NO_COUNTRY);
         return false;
     }


     ////  Check that the city has been selected
     //
     if ($F(_id_city_select) == -1)
     {
         alert(ERR_MSG_NO_CITY);
         return false;
     }
     
     fromdate_ampm_onchange();
     todate_ampm_onchange();


     var currentDate = new Date();
     var suppliedFromDate = date_get_from_value ($F(_id_from_date), $F(_id_from_hour), $F(_id_from_minute));
     var suppliedToDate   = date_get_from_value ($F(_id_to_date)  , $F(_id_to_hour)  , $F(_id_to_minute)  );

     ////  Make sure both dates are properly formatted
     //
     if (!(suppliedFromDate || suppliedToDate))
     {
         alert(ERR_MSG_WRONG_DATEFORMAT);
         return false;
     }

     ////  Make sure we are not trying to use dates in the past
     //
     if (suppliedFromDate < currentDate.getTime() || suppliedToDate < currentDate.getTime())
     {
         alert(ERR_MSG_NO_DATES_IN_PAST);
         return false;
     }

     ////  Make sure the "from" date is actually earlier then the "end" date
     //
     if (suppliedFromDate >= suppliedToDate)
     {
         alert(ERR_MSG_TO_EARLIER_FROM);
         return false;
     }

     ////  Make sure the user doesn't book a car for less then MIN_RENTAL_TIME period
     //
     if ((suppliedToDate - suppliedFromDate) < _default_min_rental_time)
     {
         alert(ERR_MSG_INCORRECT_TIME);
         return false;
     }

     ////  Make sure the user doesn't book a car over the MAX_RENTAL_TIME period
     //
     if ((suppliedToDate - suppliedFromDate) > _default_max_rental_time)
     {
         alert(ERR_MSG_BOOKTIME_TOO_LONG);
         return false;
     }


     ////  Make sure we are not trying to book from a date that is more then a yar in the future
     //
     var todayDate = new Date();
     var tmpMaxDate = todayDate.getTime() + Date.DAY*365*2;

     if (suppliedFromDate > tmpMaxDate || suppliedToDate > tmpMaxDate)
     {
         alert(ERR_MSG_BOOKTIME_TOO_LONG);
         return false;
     }

     waiting_layer_show();
     store_form_data();

     $(_id_form).submit();
 }




 function waiting_layer_show()
 {
     var form   = $('form');
     var layer  = $('waiting_layer_div');
     var iframe = $('waiting_layer_iframe');
     
     Position.absolutize(layer);
     Position.absolutize(iframe);
     
     Position.clone(form, layer);
     Position.clone(form, iframe);
     
     layer.style.zIndex  = 100;
     iframe.style.zIndex = 99;
     
     layer.removeClassName('hidden');
     iframe.removeClassName('hidden');
 }
 
 function waiting_layer_hide()
 {
     var layer  = $('waiting_layer_div');
     var iframe = $('waiting_layer_iframe');
     
     layer.addClassName('hidden');
     iframe.addClassName('hidden');
 }







 function initPage()
 {     
     if (emptyResult_flag)
     {
         handle_empty_result();
     }
     
     document.getElementsByClassName('showalt').each(
                                                        function(elem)
							{
							    Event.observe(elem, 'mouseover', showAlt);
							    Event.observe(elem, 'mouseout' , closeAlt);
							}
						    );
     
     
     initCountrySelect();

     if (!(use_country == false || use_country == null || use_country == -1))
     {
         initCitySelect(use_country);
     }

     if (use_fromdate == null || use_fromdate == false || use_fromdate == '')
     {
         var tmpDate = new Date();

         tmpDate.setTime(tmpDate.getTime() + _default_fromdate_offset);
         use_fromdate = tmpDate.print(_default_date_format);
     }

     $(_id_from_date).value = use_fromdate;
     select_choose(_id_from_hour  , use_fromhour);
     select_choose(_id_from_minute, use_fromminute);



     if (use_todate == null || use_todate == false || use_todate == '')
     {
         var tmpDate = new Date();

         tmpDate.setTime(tmpDate.getTime() + _default_todate_offset);
         use_todate = tmpDate.print(_default_date_format);
     }

     $(_id_to_date).value = use_todate;
     select_choose(_id_to_hour  , use_tohour);
     select_choose(_id_to_minute, use_tominute);
     
     $(_id_PromoCode).value = use_PromoCode;
     $(_id_partnerNo).value = use_partnerNo;
     $(_id_opId).value      = use_opId;
 }
 
 function handle_empty_result()
 {
   openLayer('Angebot anfordern', '...', 'https://www.m-broker.com/buchungsanfrage.jsp', '', '480', '470');
 }



















 var toolTip = false;
 function openToolTip(title, message)
 {    
     if(toolTip == false)
     {
         // Windows with an URL as content
         toolTip = new Window(
    			'tool-tip',
    			{
    			    className: 'tool-tip',
    			    zIndex: 201,
    			    resizable: no,
    			    draggable: no,
    			    wiredDrag: false,
    			    minimizable: false,
    			    maximizable: false,
			    closable: false,
    			    
    			    showEffect:Element.show,
    			    hideEffect:Element.hide
    			}
			    );
    }
    
    toolTip.setTitle(title);
    toolTip.setStatusBar(status);
    
    
    toolTip.setHTMLContent(content);
    
    toolTip.showAt(100,100); 
 };