﻿Event.observe(window, 'load', initGlobals, false);
var lang = 'en';
function initGlobals () { 
      lang = document.getElementsByTagName("body")[0].getAttribute("lang");
  var hoy = new Date();
      $('date').update( hoy.getDate()+' de '+getmes(hoy)+' de '+ hoy.getFullYear()+'&nbsp;');
  if ($('nl-form')) { Event.observe('nl-form', 'submit', submitNewsletter, false);}   
}  
function submitNewsletter(e){
     Event.stop(e);
    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    var email = $F('nl-email'); 
     if (pattern.test(email)) { 
           var params= Form.serialize('nl-form');        
           $('nl-status').update('<div class="notice1">'+i18n[lang]['status'][2]+'</div>');
   $('nl-status').show();
             var ajax = new Ajax.Updater(
              {success: 'nl-status'}, '/submit.php', {
                method: 'post', parameters: params, 
                 onComplete: function (){
                   Effect.run( $('nl-status'),true, 10);
                   setTimeout(function() {
                         Effect.run( $('nl-status'),false, 10);
                   }, 10000);                     
                 },
               onFailure: function () {$('nl-status').show(); $('nl-status').update('<p class="error">'+i18n[lang]['status'][1]+'</p>');  }}
               ); 
     } else {
       Effect.run( $('nl-status'),true, 10);
      $('nl-status').update('<div class="error" style="width:90%">'+i18n[lang]['status'][3]+'</div>');

     }

}  

// JavaScript Document
/* Menu Var */

/* ---------------------- Reservation functions ---------------------*/
/* --------- Hotels ----------- */
var money='USD';
var min_hotel_reservation_days = 4; // Numero minimo di giorni prenotabile
var max_hotel_reservation_days=29;
var min_days = 3; // Primo giorno prenotabile a partire da oggi
var min_date ;
var g_min_date ;
var min_day  ; // Min Date Reservation
var min_month ;
var min_year  ;
// min end date
var g_min_day  ; // Min Date Reservation
var g_min_month ;
var g_min_year  ;
var r_day    ; // Reservation Date
var r_month   ;
var r_year  ;
var g_day    ; // Reservation Date
var g_month   ;
var g_year  ;
var days_number = min_hotel_reservation_days;
var room_type  =1;
var adults_number =  1;
var childrens_number = 0;
var plan='BB';
var transfer_price=0;
var arrival_date;
var comeback_date;
/* ---------------- Show and Hide Transfer--------------------------*/

function UpdateTransfer(name)
{
var obj, obj1;
var disp= 'table-row';
if (browser_name=="msie") disp='inline';
obj = document.getElementById('ttransfer_'+name);
obj1 = document.getElementById('ttransfer_th');
obj1.style.display="none";
 if ((document.formulario.check_in.checked)|| (document.formulario.check_out.checked)) {
 obj1.style.display=disp; 
     } else {
   obj1.style.display="none";
   }
 
if (eval("document.formulario.check_"+name+".checked")) {
obj.style.display=disp; 
}
 else {
  obj.style.display="none";
 }
 

UpdateTotalOptions();
}
/* ---------------- Show and Hide Rooms Qty --------------------------*/

function UpdateRooms()
{
var obj,obj1;
var i,select_rooms;
var disp= 'table-row';
if (browser_name=="msie") disp='inline';
select_rooms = parseInt(document.formulario.select_rooms.options[document.formulario.select_rooms.selectedIndex].value);
SetValHidden('total_rooms',select_rooms);
for(i = 2; i <=3 ; i++){
obj = document.getElementById('trroom_' + i);
obj1 = document.getElementById('trprice_' + i);
if (i <= select_rooms) {

obj.style.display=disp; 
obj1.style.display=disp; 
}
 else {
  obj.style.display="none";
  obj1.style.display="none";
 }
}//for

for(i = 1; i <=3 ; i++){

if (i <= select_rooms) {
SetDefaultSetting(i);
UpdateCommon(i);}

 
}//for

}
/* Get Values of listbox example: 'arrival_day'  */
function GetValListBox(name,i)
{
var retval=false;
retval= eval("document.formulario."+name+"_"+ i +".options[document.formulario."+name+"_"+ i +".selectedIndex].value");
return retval;
}
/* Get Values of Text Boxexample: 'arrival_date'  */
function GetValTextBox(name,i)
{
var retval=false;
retval= eval("document.formulario."+name+"_"+ i +".value");
return retval;
}
/* Get Values of Text Boxexample: 'arrival_date'  */
function GetValTextCarBox(name)
{
var retval=false;
retval= eval("document.formulario."+ name +".value");
return retval;
}
function GetValueListBox(name)
{
var retval;
retval= eval("document.formulario."+name+".options[document.formulario."+name+".selectedIndex].value");
return retval;
}
/* Get Values of Hidden Input */
function GetValHidden(name)
{
var retval;
retval= eval("document.formulario."+name+".value");
return retval;
}
/* Set Values of Hidden Input */
function SetValHidden(name,value)
{
eval("document.formulario."+ name + ".value=" + value);
}

/* Print Rooms Prices after set in hidden input */
function PrintRoomPrice(i)
{var obj, price;

price = GetValHidden('troom_price_' + i );
obj = document.getElementById('roomprice_' + i);
 obj.innerHTML= price ;
}


/* Total Price after set in hidden input */
function PrintPrice(id_name)
{var obj, price;
price= GetValHidden(id_name);
obj = document.getElementById("p"+id_name);
 obj.innerHTML= price;
}

/* Total Price Currency */
function PrintPriceCurrency(id_name, price)
{var obj;
if (document.getElementById(id_name)){
obj = document.getElementById(id_name);
 obj.innerHTML= price;}
}
function UpdateHotelCurrency(){
for (var i=1; i<=parseInt($F('select_rooms'));i++)
{
  UpdateCommon(i);
}
   
}
/* Total Price Currency Valuta */
function PrintPriceCurrency_x(id_1, id_2, id_3, s, f)
{
var obj_1, obj_2, obj_3, price;
var cambio = s.value;

if (document.getElementById(id_1)){
obj_1 = document.getElementById(id_1);
    obj_2 = document.getElementById(id_2);
obj_3 = document.getElementById(id_3);
}
if(cambio!=0){
var valuta = s.options[s.selectedIndex].text;
price =Math.round(parseInt(obj_2.innerHTML,10) / cambio);
}
else{
var valuta = "";
price ="0.00";
}

frm = document.getElementById(f);
frm.total_price_valuta.value=price;
frm.valuta_selezionata.value=valuta;
obj_1.innerHTML= price;
obj_3.innerHTML= valuta;
}
/* Sum all prices*/
function SumPrices(array_price)
{ 
var retval=0;
for (var i=0; i< array_price.length; i++)
{ retval+=array_price[i]; }
return retval
}

/*------ UpdateDatePricing ----------*/
function UpdateDatePricing(i)
{
GetAllRoomValues(i);
var n = days_number;

//Validate 31
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
if ((daysinmonth[r_month]!=31) && (r_day==31)) {
SetRoomDate('arrival_date',i,30,r_month,r_year);
GetAllRoomValues(i);
}

// Validate Feb 29
if (( r_day >= 29) && (r_month ==2)&& (( (r_year%4 == 0)&&(r_year%100 != 0) ) || (r_year%400 == 0) ) ) { alert (w_feb); 
SetRoomDate('arrival_date',i,28,r_month,r_year);
GetAllRoomValues(i);
}
if ((g_day >= 29) && (g_month ==2)&& (( (g_year%4 == 0)&&(g_year%100 != 0) ) || (g_year%400 == 0) ) ) { alert (w_feb); 
SetRoomDate('comeback_date',i,28,g_month,g_year);
GetAllRoomValues(i);
}

// Validate Max reservation date
var d1= (g_year - a_year )*360 + (g_month - 1)*30 + g_day;
var d2= (parseInt(max_year,10) - a_year )*360 + (parseInt(max_month,10) - 1)*30 + parseInt(max_day,10);

if (d1 > d2) {
alert (w_max_r + "  " + max_day + "/"+ max_month+"/"+max_year );
SetRoomDate('comeback_date',i,max_day,max_month,max_year);
GetAllRoomValues(i);
} // if d1 d2

// Validate Max Begin reservation date
var d1= (r_year - a_year )*360 + (r_month - 1)*30 + r_day;
var d2= (parseInt(max_year,10) - a_year )*360 + (parseInt(max_month,10) - 1)*30 + parseInt(max_day,10);

if (d1 > d2) {
alert (w_max_r + "  " + max_day + "/"+ max_month+"/"+max_year );
SetRoomDate('arrival_date',i,max_day,max_month,max_year);
GetAllRoomValues(i);
} // if d1 d2


/* Min Reservation Days */
 d5= (r_year - a_year )*360 + (r_month - 1)*30 + r_day;
 d6= (g_year - a_year )*360 + (g_month - 1)*30 + g_day;
 
if (!days_number || days_number<4) {
 var minr_g_date  = MoveDays(r_day, r_month, r_year, min_hotel_reservation_days); // 1 reservation day
 var rg_min_day   = parseInt (minr_g_date[0],10); // Min Default End  Date Reservation
 var rg_min_month = parseInt (minr_g_date[1],10);
 var rg_min_year  = parseInt (minr_g_date[2],10);
 SetRoomDate('comeback_date',i,rg_min_day,rg_min_month,rg_min_year);
GetAllRoomValues(i);
} // if d1 d2


// Validate Min reservation date
 d1= (r_year - a_year )*360 + (r_month - 1)*30 + r_day;
 d2= (min_year - a_year )*360 + (parseInt(min_month,10) - 1)*30 + parseInt(min_day,10);
if (d1 < d2) {
alert (w_min_r + "  " + min_day + "/"+ min_month+"/"+min_year );
SetRoomDate('arrival_date',i,min_day,min_month,min_year);
GetAllRoomValues(i);
} // if d1 d2

// Validate Min reservation date
 d3= (g_year - a_year )*360 + (g_month - 1)*30 + g_day;
 d4= (g_min_year - a_year )*360 + (parseInt(g_min_month,10) - 1)*30 + parseInt(g_min_day,10);
if (d3 < d4) {
alert (w_g_min_r + "  " + g_min_day + "/"+ g_min_month+"/"+g_min_year );
SetRoomDate('comeback_date',i,g_min_day,g_min_month,g_min_year);
GetAllRoomValues(i);
} // if d1 d2





/* Max Reservation Days */
if ((days_number != false) && (days_number > max_hotel_reservation_days)) {
alert(w_max_r_days + max_hotel_reservation_days + w_max_r_days1 );
 var maxr_g_date  = MoveDays(r_day, r_month, r_year, max_hotel_reservation_days); // 29 reservation day
 var rg_max_day   = parseInt (maxr_g_date[0],10); // MAx Default End  Date Reservation
 var rg_max_month = parseInt (maxr_g_date[1],10);
 var rg_max_year  = parseInt (maxr_g_date[2],10);
 SetRoomDate('comeback_date',i,rg_max_day,rg_max_month,rg_max_year);
}
/*-----------------------------*/
UpdateCommon(i);

}
/* Get All Common Values */

function GetAllRoomValues(i)
{
arrival_date= GetValTextBox('arrival_date', i);
comeback_date= GetValTextBox('comeback_date', i);
//alert(arrival_date)

var date_array=arrival_date.split("/");
//Arrival_date
r_day = parseInt (date_array[0],10);
r_month = parseInt (date_array[1],10);
r_year = parseInt (date_array[2],10);

//Comeback_date
date_array=comeback_date.split("/");
g_day = parseInt (date_array[0],10);
g_month = parseInt (date_array[1],10);
g_year = parseInt (date_array[2],10);

//alert( r_day + "/" + r_month + "/" + r_year + "    " +g_day + "/" + g_month + "/" + g_year );
days_number = DaysRange(r_year,r_month,r_day,g_year,g_month,g_day) ; 
//alert(days_number);
room_type = parseInt (GetValListBox('room_type',i));
adults_number =  parseInt (GetValListBox('adults_number',i));
childrens_number = parseInt (GetValListBox('childrens_number',i));
/* isset plan*/
if (document.formulario.splan.value == 'true'){plan = GetValListBox('plan',i);} else plan='BB';
}

/* Common Update Operation */
function UpdateCommon(i)
{
GetAllRoomValues(i);
var array_price = RegPrices(i);
var sum_prices = SumPrices(array_price);
// Update Values of hidden var 
SetValHidden("troom_price_" + i, calUsd2XX(sum_prices));
PrintRoomPrice(i);
UpdateTotalOptions();

}

/*------ UpdatePersonsPricing ----------*/
function UpdatePersonsPricing(i)
{
GetAllRoomValues(i);

/* Validate total persons by room > 3*/
if ((adults_number >= persons[room_type]) && (childrens_number == 1)) { alert(w_max_persons1 + (persons[room_type] -1) + w_max_persons2);
eval ("document.formulario.adults_number_"+ i +".selectedIndex ="+ (persons[room_type] -2) );
}
if ((adults_number > persons[room_type])&& (childrens_number == 0)) { alert(w_max_persons3 + persons[room_type] + w_max_persons4 );
eval ("document.formulario.adults_number_"+ i +".selectedIndex ="+ (persons[room_type] -1) );
}
if ((adults_number >= persons[room_type]-1) && (childrens_number == 2)) { alert(w_max_persons1 + (persons[room_type] -1) + w_max_persons2);
eval ("document.formulario.adults_number_"+ i +".selectedIndex ="+ (persons[room_type] -2) );
}
UpdateCommon(i);
}
/*------ UpdateChildPricing ----------*/
function UpdateChildPricing(i)
{

GetAllRoomValues(i);

/* Validate total persons by room > 3*/
if ((adults_number >= persons[room_type])  && (childrens_number == 1)) { alert(w_max_persons1 + (persons[room_type] -1) + w_max_persons2);
eval ("document.formulario.childrens_number_"+ i +".selectedIndex =0");
}
if ((adults_number >= persons[room_type]-1)  && (childrens_number == 2)) { alert(w_max_persons1 + (persons[room_type] -1) + w_max_persons2);
eval ("document.formulario.childrens_number_"+ i +".selectedIndex =0");
}
UpdateCommon(i);
}
/*------ UpdatePlanPricing ----------*/
function UpdatePlanPricing(i)
{
UpdateCommon(i);
}
/*------ UpdateRegPricing  Days Numbers----------*/
function UpdateRegPricing(i)
{
UpdateDatePricing(i);
}

/*------ UpdateRoomPricing ----------*/
function UpdateRoomPricing(i)
{
UpdatePersonsPricing(i);
}


/*------ UpdateTotalOption() ----------*/
function UpdateTotalOptions()
{
// Sum all prices
var adults_num=0;
var childrens_num=0;
var n = parseInt (GetValHidden('total_rooms'));
var sum=0;
var  ttprice=0;
for (var j=1; j <= n; j++){

sum+= parseFloat(GetValHidden("troom_price_" + j));
adults_num+= parseInt (GetValListBox('adults_number',j));
childrens_num+= parseInt (GetValListBox("childrens_number",j));

}


/* Analize trasfer price */
//Consider childrens
var total_persons = adults_num + childrens_num;
if ((adults_num <= 2) || (childrens_num==1)) ttprice= taxi_price;
if ((total_persons  > 2) && (total_persons <= 5)) ttprice= micro_price;
if ((total_persons  > 5) && (total_persons <= 12)) ttprice= mini_price;

if (document.formulario.check_in.checked) transfer_price = ttprice ; else transfer_price=0;
if (document.formulario.check_out.checked) transfer_price += ttprice;


SetValHidden("transfer_price", calUsd2XX(transfer_price));
PrintPrice("transfer_price");
/* Total Price */
var middle_price = Math.round(sum/days_number);
PrintPriceCurrency("average_price" ,middle_price);
sum += transfer_price;

SetValHidden("total_price", sum);
PrintPrice("total_price");
UpdateMoneyLabels();

/* Others Currency
if (currency.length >0) {
for (var k=0; k < currency.length; k++) {
var k1=k +1;
PrintPriceCurrency("ptotal_price_" + k1,Math.round(sum / currency[k]));
}}*/
}
function UpdateMoneyLabels() {
$$('.money_label').each(function(money_label){
money_label.update(currency[$F('valuta_rif')].code);
});
}
function calUsd2XX(val) {
return (Math.round(parseFloat(val)/(currency[$F('valuta_rif')].currency)));
}
/* Set date example: arrival_date */
function SetRoomDate(name,i,day,month,year)
{
if(parseInt(day,10)<10) day="0"+parseInt(day,10);
if(parseInt(month,10)<10) month="0"+parseInt(month,10);
var value=day + '/' + month + '/' + year;
eval("document.formulario."+ name +"_" + i + ".value=" + "value");
//alert(name + " " + i+ " " +day+ " " +month+ " " +year);
}
/* Set date example: arrival_date */
function SetCarDate(name,day,month,year)
{
var value=day + '/' + month + '/' + year;
eval("document.formulario."+ name + ".value=" + "value");
//alert(name + " " + i+ " " +day+ " " +month+ " " +year);
}
/* Set default setting*/

function SetDefaultSetting(i)
{
  SetRoomDate('arrival_date',i,min_day,min_month,min_year);
  SetRoomDate('comeback_date',i,g_min_day,g_min_month,g_min_year); 
 eval ("document.formulario.childrens_number_"+ i +".selectedIndex =0");
 eval ("document.formulario.adults_number_"+ i +".selectedIndex =0");
 eval ("document.formulario.room_type_"+ i +".selectedIndex =0");
 if (document.formulario.splan.value == 'true'){ eval ("document.formulario.plan_"+ i +".selectedIndex =0");}

}
/*------ Compare Dates interval ----------*/
function isSeason(day,month,sday,smonth,eday,emonth)
{ var retval=false;
 var i,j,k;
 var len=smonth.length;
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
 day = parseInt(day,10);
 month = parseInt(month,10);
 var date = (month - 1 ) * 30  + day;
 var sdate= new Array(); 
 var edate= new Array(); 

//alert(day + " / " + month);
for ( k=0 ; k < len ; k++)
{
sdate[k]=(smonth[k] - 1) * 30 + sday[k];
edate[k]=(emonth[k]- 1) * 30 + eday[k] ;

if (smonth[k] > emonth[k]) {

if (date >= sdate[k]) retval= true;
    if ( date <= edate[k] )   retval= true;
//alert  ("date=" + date + " sdate=" + sdate[k] + " edate=" + edate[k] );
    }
  else
   { 
    if ( (date >= sdate[k]) && (date  <= edate[k]) )  retval= true; 
   }//if  smonth
}//for k
return retval;
}

/* Print List Prices  of select room */
function PrintListPrices(array_prices)
{
text="";
for (var  i=0 ; i < array_prices.length ; i++)
{ text+="  ";
text+=array_prices[i];
}
alert (text);
}




/*---------  Generate Array with Seasons L ML, MH, H, P----------------- */
function RegPrices(room)
{
var retval= new Array();
var k,j,i,d,year;
var suplement=0;
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);

var c=0;
GetAllRoomValues(room);
days_number--; //Correction for days = nights +1
var ii = r_month;
var ki = r_year;
var ji = r_day;
year = ki; 
if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {daysinmonth[2] = 29;}

for (k= ki ; k <= year+1; k++)
{
for (i= ii; i<=daysinmonth.length; i++)
{
for (j=ji; j<=daysinmonth[i]; j++){
retval[c]= low_season_price[room_type]; //Defaul value low season 
//alert(SumPrices(h_begin_month));
if ((h_present)&&isSeason(j,i,h_begin_day,h_begin_month,h_end_day,h_end_month)) retval[c] = high_season_price[room_type];
if ((p_present)&&isSeason(j,i,p_begin_day,p_begin_month,p_end_day,p_end_month)) retval[c] = peak_season_price[room_type];
    if ((m1_present)&& isSeason(j,i,m1_begin_day,m1_begin_month,m1_end_day,m1_end_month)) retval[c] = middle1_season_price[room_type];
if ((m2_present)&&isSeason(j,i,m2_begin_day,m2_begin_month,m2_end_day,m2_end_month)) retval[c] = middle2_season_price[room_type];
//



 // 0 child
 if (childrens_number==0) {
 // Only for Sol Meliá hotels
 if ((p_present)&&(isSeason(j,i,p_begin_day,p_begin_month,p_end_day,p_end_month)) && (hotel_chain == 'SM') && (peak_suplement_price[room_type] > 0)) suplement=peak_suplement_price[room_type]; 
 else suplement=suplement_price[room_type]; 

  if (adults_number == 1) retval[c]+=suplement;  // Suplement of 1 person
  if (adults_number == 2) retval[c]= 2*retval[c]; // 2 Persons
  if (adults_number == 3) retval[c]= 2*retval[c] + 0.85 * retval[c]; // 3 Persons // 15 % of 3 pax 
 }
  // 1 child
if (childrens_number==1) {
 if ((adults_number == 1) || (adults_number == 2)) retval[c]= adults_number * retval[c] + 0.5*retval[c]; // 1  or 2 Persons with 1 child 3 - 12 years old 
}
  // 2 children
if (childrens_number==2) {
 if (adults_number == 1) retval[c]= adults_number * retval[c] + 0.5*retval[c] + 0.5*retval[c]; // 1  Person with 2 children 3 - 12 years old 
}
 
 /* Half Board (HB) or  Full Board (FB) */
 if ((plan != 'OB') && (plan != 'BB') &&  (plan != 'AP')){ 
   if (plan=='HB') retval[c]+= (adults_number + childrens_number)* dinner_price ;
   if (plan=='FB') retval[c]+= 2*(adults_number + childrens_number)* dinner_price ; 
 }


c++;

if ((c == days_number)|| (c > 1000) ) { return retval; }
}

ji=1;
}
ii=1;
if ( ( (k%4 == 0)&&(k%100 != 0) ) || (k%400 == 0) ) {daysinmonth[2] = 29;}
}

return retval;
}

/*---------  Move days in actual date ----------------- */
function MoveDays(day, month, year, number_days)
{
var retval= new Array();
var k,j,i,d;
var text="";
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {daysinmonth[2] = 29;}

c=0;
var ii=month; //init values
var ki=year;
var ji=day;
for (k= ki ; k <= (year+1); k++)
{
for (i= ii; i<=daysinmonth.length; i++)
{
for (j=ji; j<=daysinmonth[i]; j++){
retval[0]=j;//day
retval[1]=i;//month
retval[2]=k;//year
c++;
if (c == (number_days)) return retval;
}

ji=1;
}
ii=1;
if ( ( (k%4 == 0)&&(k%100 != 0) ) || (k%400 == 0) ) {daysinmonth[2] = 29;}
}
return retval;
}


/*---------  Show and Hide the DIV of hotels list by zone in the Cuban Map ---------------*/ 
function show_hotels (id_hotel)
{
var divName ;
var i;
var obj;
for(i = 0; i < divArray.length; i++){
divName = divArray[i];
id_hotel ;
obj = document.getElementById('hotels_zone_' + divName);
if (divName == id_hotel){
obj.style.display="block";
}
else{
obj.style.display="none";
}
}
}

/*--------------- Validate form data -------------------*/

function ValidateForm() {
if (document.formulario.check_in.checked) {

if (document.formulario.arrival_air.value=="")
{alert(w_arrival_air); 
    document.formulario.arrival_air.focus();  
return(false); 
}
if (document.formulario.arrival_air_number.value=="")
{alert(w_arrival_air_number); 
    document.formulario.arrival_air_number.focus();  
return(false); 
}
}
if (document.formulario.check_out.checked) {

if (document.formulario.comeback_air.value=="")
{alert(w_comeback_air); 
    document.formulario.comeback_air.focus();  
return(false); 
}
if (document.formulario.comeback_air_number.value=="")
{alert(w_comeback_air_number); 
    document.formulario.comeback_air_number.focus();  
return(false); 
}
}

if ((CheckUserData())==false) return (false);

document.forms['formulario'].submit();
}
/* Init Values */
function InitHotelForm(){
 min_date  = MoveDays(a_day, a_month, a_year, min_days);
 //alert(min_date)


 min_day =  parseInt(min_date[0],10)<10 ? "0"+min_date[0] : min_date[0] ; // Min Date Reservation
 min_month = parseInt(min_date[1],10)<10 ? "0"+min_date[1] : min_date[1] ;
 min_year  = min_date[2]; 
 g_min_date  = MoveDays(min_date[0], min_date[1],min_date[2], min_hotel_reservation_days ); // 1 night
 g_min_day   = parseInt(g_min_date[0],10)<10 ? "0"+g_min_date[0] : g_min_date[0] ; // Min Default End  Date Reservation
 g_min_month = parseInt(g_min_date[1],10)<10 ? "0"+g_min_date[1] : g_min_date[1] ;
 g_min_year  = g_min_date[2];
 
 /*
 min_day =  parseInt (min_date[0]); // Min Date Reservation
 min_month = parseInt (min_date[1]);
 min_year  = parseInt (min_date[2]); 
 g_min_date  = MoveDays(min_day, min_month, min_year, min_hotel_reservation_days ); // 1 night
 g_min_day   = parseInt (g_min_date[0]); // Min Default End  Date Reservation
 g_min_month = parseInt (g_min_date[1]);
 g_min_year  = parseInt (g_min_date[2]);
 */
 
//alert(g_min_day + "/" + g_min_month + "/" + g_min_year);
SetDefaultSetting(1);
SetDefaultSetting(2);
SetDefaultSetting(3);
for (var i=1; i<=min_rooms_booked;i++)
{
  UpdateCommon(i);
}

UpdateRooms();
}

function InitCarForm(){
var min_days=3; //after actual day
min_date  = MoveDays(a_day, a_month, a_year, min_days);

 min_day   = parseInt (min_date[0]); // Min Date Reservation
 min_month = parseInt (min_date[1]);
 min_year  = parseInt (min_date[2]);
 SetCarDate('arrival_date',min_day,min_month,min_year);

 g_min_date  = MoveDays(min_day, min_month, min_year, min_car_reservation_days);
 g_min_day   = parseInt (g_min_date[0]); // Min Default End  Date Reservation
 g_min_month = parseInt (g_min_date[1]);
 g_min_year  = parseInt (g_min_date[2]);
SetCarDate('comeback_date',g_min_day,g_min_month,g_min_year); 
UpdateTotalCar();
}


// ___________________JavaScript Document________________________
var hoy = new Date();
 
function getdiasemanai(fecha){
 
  var diasemana = fecha.getDay();
 
  switch(diasemana){
 
   case 0: return "Sunday";
 
   case 1: return "Monday";
 
   case 2: return "Tuesday";
 
   case 3: return "Wednesday";
 
   case 4: return "Thursday";
 
   case 5: return "Friday";
 
   case 6: return "Saturday";
 
  }
 
 }

function getmesi(fecha){
 
  var mes = fecha.getMonth();
  switch(mes){
 
   case 0: return "January";
 
   case 1: return "February";
 
   case 2: return "March";
 
   case 3: return "April";
 
   case 4: return "May";
 
   case 5: return "June"; 
 
   case 6: return "July";
 
   case 7: return "August";
 
   case 8: return "September";
 
   case 9: return "October";
 
   case 10: return "November";
 
   case 11: return "December";
  }  
 }


// _________________Scripts en Español____________________


 function getdiasemana(fecha){
 
  var diasemana = fecha.getDay();
 
  switch(diasemana){

    case 0: return "Domingo";
    case 1: return "Lunes";
    case 2: return "Martes";
    case 3: return "Miércoles";
    case 4: return "Jueves";
    case 5: return "Viernes";
    case 6: return "Sábado";
   }

 }

function getmes(fecha){
 
  var mes = fecha.getMonth();
  switch(mes){

    case 0: return "enero";

    case 1: return "febrero";

    case 2: return "marzo";

    case 3: return "abril";

    case 4: return "mayo";
    case 5: return "junio"; 

    case 6: return "julio";

    case 7: return "agosto";

    case 8: return "septiembre";

    case 9: return "octubre";

    case 10: return "noviembre";

    case 11: return "diciembre";
 }  
}

/*--------------- Car functions -------------*/
var arrival_place='CH';
var comeback_place='CH';
var g_month;
var g_day;
var g_year;
var total_days=4;

var min_car_reservation_days =4;
var  max_car_reservation_days = 29;
/* Get All Common Values */

function GetAllCarValues()
{

arrival_date= GetValTextCarBox('arrival_date');
comeback_date= GetValTextCarBox('comeback_date');

var date_array=arrival_date.split("/");
//Arrival_date
r_day = parseInt (date_array[0],10);
r_month = parseInt (date_array[1],10);
r_year = parseInt (date_array[2],10);
//Comeback_date
date_array=comeback_date.split("/");
g_day = parseInt (date_array[0],10);
g_month = parseInt (date_array[1],10);
g_year = parseInt (date_array[2],10);

total_days = DaysRange(r_year,r_month,r_day,g_year,g_month,g_day);
//alert(g_year+ " "+g_month + " "+ g_day);
}



/* Show Distances Table UpdatePlaceCar  */

function UpdatePlaceCar(){
var obj;
var disp= 'table-row';
if (browser_name=="msie") disp='inline'; 
obj = document.getElementById('car_table');
arrival_place=GetValueListBox('arrival_place');
comeback_place=GetValueListBox('comeback_place');
if (arrival_place != comeback_place)  obj.style.display=disp; else obj.style.display="none";
}

/* Update Date Pricing Car*/
function  UpdateDatePricingCar()
{
GetAllCarValues();
//Validate 31
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
if ((daysinmonth[r_month]!=31) && (r_day==31)) {
SetCarDate('arrival_date',30,r_month,r_year);
GetAllCarValues();
}

// Validate Feb 29

if (( r_day >= 29) && (r_month ==2)&& (( (r_year%4 == 0)&&(r_year%100 != 0) ) || (r_year%400 == 0) ) ) { alert (w_feb); 
SetCarDate('arrival_date',28,r_month,r_year);
GetAllCarValues(i);
}
if ((g_day >= 29) && (g_month ==2)&& (( (g_year%4 == 0)&&(g_year%100 != 0) ) || (g_year%400 == 0) ) ) { alert (w_feb); 
SetCarDate('comeback_date',28,g_month,g_year);
GetAllCarValues();
}


// Validate Max reservation date


var d1= (g_year - a_year )*360 + (g_month - 1)*30 + g_day;
var d2= (parseInt(max_year,10) - a_year )*360 + (parseInt(max_month,10) - 1)*30 + parseInt(max_day,10);

if (d1 > d2) {
alert (w_max_r + "  " + max_day + "/"+ max_month+"/"+max_year );
SetCarDate('comeback_date',max_day,max_month,max_year);
GetAllCarValues();
} // if d1 d2

// Validate Max Begin reservation date

var d1= (r_year - a_year )*360 + (r_month - 1)*30 + r_day;
var d2= (parseInt(max_year,10) - a_year )*360 + (parseInt(max_month,10) - 1)*30 + parseInt(max_day,10);

if (d1 > d2) {
alert (w_max_r + "  " + max_day + "/"+ max_month+"/"+max_year );
SetCarDate('arrival_date',max_day,max_month,max_year);
GetAllCarValues();
} // if d1 d2


// Validate Min reservation date
 d1= (r_year - a_year )*360 + (r_month - 1)*30 + r_day;
 d2= (min_year - a_year )*360 + (min_month - 1)*30 + min_day;
if (d1 < d2) {
alert (w_min_r + "  " + min_day + "/"+ min_month+"/"+min_year );
SetCarDate('arrival_date',min_day,min_month,min_year);
GetAllCarValues();
} // if d1 d2

// Validate Min reservation date
 d3= (g_year - a_year )*360 + (g_month - 1)*30 + g_day;
 d4= (g_min_year - a_year )*360 + (g_min_month - 1)*30 + g_min_day;
if (d3 < d4) {
alert (w_g_min_r + "  " + g_min_day + "/"+ g_min_month+"/"+g_min_year );
SetCarDate('comeback_date',g_min_day,g_min_month,g_min_year);
GetAllCarValues();
} // if d1 d2

 d5= (r_year - a_year )*360 + (r_month - 1)*30 + r_day + min_car_reservation_days ;
 d6= (g_year - a_year )*360 + (g_month - 1)*30 + g_day;
/* Min Total days */ 
 
if (d5 > d6) {
 var minr_g_date  = MoveDays(r_day, r_month, r_year, min_car_reservation_days); // 1 reservation day
 var rg_min_day   = parseInt (minr_g_date[0]); // Min Default End  Date Reservation
 var rg_min_month = parseInt (minr_g_date[1]);
 var rg_min_year  = parseInt (minr_g_date[2]);
 SetCarDate('comeback_date',rg_min_day,rg_min_month,rg_min_year);
GetAllCarValues();
} // if d1 d2






/* Max Total days */
if ((total_days!=false) && (total_days > max_car_reservation_days) ) {
alert(w_max_days);
 var maxr_g_date  = MoveDays(r_day, r_month, r_year, max_car_reservation_days); // 1 reservation day
 var rg_max_day   = parseInt (maxr_g_date[0]); // Min Default End  Date Reservation
 var rg_max_month = parseInt (maxr_g_date[1]);
 var rg_max_year  = parseInt (maxr_g_date[2]);
 SetCarDate('comeback_date',rg_max_day,rg_max_month,rg_max_year);
GetAllCarValues();
}
UpdateTotalCar();
}


function UpdateCarCurrency(){
   UpdateTotalCar();
}

/*   UpdateTotalCar */
function UpdateTotalCar(){
var sum = Math.round(SumPrices(RegCarPrices()));
SetValHidden('total_price', calUsd2XX(sum) );
PrintCarPrice(sum);

/* Others Currency
if (currency.length >0) {
for (var k=0; k < currency.length; k++) {
var k1=k +1;
PrintPriceCurrency("show_car_price_" + k1,Math.round(sum / currency[k]));
}}*/
UpdateMoneyLabels();
}
/* Print Car */
function PrintCarPrice()
{var obj, price;

price = GetValHidden('total_price' );
obj = document.getElementById('show_car_price');
 obj.innerHTML= price ;
 
}

/* Register Car Prices */
function RegCarPrices()
{
var retval= new Array();
var k,j,i,d,year;
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var c=0;

GetAllCarValues();
total_days--; //Correction days= nights + 1
var ii = r_month;
var ki = r_year;
var ji = r_day;
var mprice=0;
var hprice=0;
year = ki; 
if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {daysinmonth[2] = 29;}

/* Prices in season */

if ((total_days >=3) && (total_days <= 6))
{
mprice=mprice1; 
hprice=hprice1; 
}
else if ((total_days >=7) && (total_days <= 13))
{
mprice=mprice2; 
hprice=hprice2; 
}
else if ((total_days >=14) && (total_days <= 29))
{
mprice=mprice3; 
hprice=hprice3; 
}
var price = mprice;
for (k= ki ; k <= g_year; k++)
{
for (i= ii; i<=daysinmonth.length; i++)
{
for (j=ji; j<=daysinmonth[i]; j++){
/* The first day determinate all prices */
if (isSeason(j,i,h_begin_day,h_begin_month,h_end_day,h_end_month) && c==0){
 price = hprice; 
 }
retval[c]= price; 
c++;
if (c==total_days) 
return retval;
}

ji=1;
}
ii=1;
if ( ( (k%4 == 0)&&(k%100 != 0) ) || (k%400 == 0) ) {daysinmonth[2] = 29;}
}

return retval;
}


/* Days in range */
/* Register Car Prices*/
function DaysRange(year1,month1,day1,year2,month2,day2)
{
var retval= false;
var k,j,i,d,year;
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
c=0;
var ii = month1;
var ki = year1;
var ji = day1;
year = ki; 
if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {daysinmonth[2] = 29;}
for (k= ki ; k <= year2; k++)
{
for (i= ii; i<=daysinmonth.length; i++)
{
for (j=ji; j<=daysinmonth[i]; j++){
c++;
if ((j== day2)&&(i==month2)&&(k==year2)) { retval=c; return retval; }
}
ji=1;
}
ii=1;
if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {daysinmonth[2] = 29;}
}
//alert(retval)
return retval;
}
/* Validate Car Form*/
function ValidateCarForm()
{
if (document.formulario.arrival_air.value=="")
{alert(w_arrival_air); 
    document.formulario.arrival_air.focus();  
return(false); 
}
if (document.formulario.arrival_air_number.value=="")
{alert(w_arrival_air_number); 
    document.formulario.arrival_air_number.focus();  
return(false); 
}
if ((CheckUserData())==false) return(false);
document.forms['formulario'].submit();
}
function ValidateOfferForm()
{

if ((CheckUserData())==false) return(false);
document.forms['formulario'].submit();
}
/* Check User Data */
function CheckUserData(){
var form=document.formulario;
if (form.complete_name.value=="")
{alert(w_complete_name); 
    form.complete_name.focus();  
return(false); 
}

if(! isEmail(form.email.value)){alert(w_email); 
   form.email.focus();  
return(false); 
}

if (form.telephone.value=="")
{alert(w_telephone); 
    form.telephone.focus();  
return(false); 
}

}

/* Menu Change */
var id_menu =  new Array('level21','level22','level23');
var state_menu = new Array(0,0,0);
var onbgcolor= '#044D9A';
var offbgcolor ='#0080C6';
var oncolor= '#FFFFFF';
var offcolor ='#D8EEFA';

/* Pop Up functions */
function PopUp(url, ancho, alto){
  derecha=(screen.width-ancho)/2;
  arriba=(screen.height-alto)/2;
  string="toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width="+ancho+",height="+alto+",left="+derecha+",top="+arriba+"";
  popup=window.open(url,"",string);
  popup.focus();
}
/* Open new Windows Upload */
function CarTable(lang){
var url="";
 url ="tabla_autos_"+lang+".htm";
PopUp(url,'595', '445');
}
/* Open new Windows for Image Zoom */
function CarPhoto(image){
var url ="/zoom.php?file=cars/"+image;
PopUp(url,'380', '260');
}
/* Open new Windows for Image Zoom */
function HotelPhoto(image){
var url ="/zoom.php?file=hotels/"+image;
PopUp(url,'380', '260');
}

/*Get object */
function getObj(objID)
{
if (document.getElementById) {return document.getElementById(objID);}
else if (document.all) {return document.all[objID];}
else if (document.layers) {return document.layers[objID];}
}



// DEFINE VARIABLES

// whitespace characters
var whitespace = " \t\n\r";
var defaultEmptyOK = false

var intLimit = 15

function isEmpty(s){
// Check whether string s is empty.
 return ((s == null) || (s.length == 0))
}

// Returns true if string s is empty or 
// whitespace characters only.

function isWhitespace(s)

{ var i;

// Is s empty?
if (isEmpty(s)) return true;

for (i = 0; i < s.length; i++)
{ 
// Check that current character isn't whitespace.
var c = s.charAt(i);

if (whitespace.indexOf(c) == -1) return false;
}

// All characters are whitespace.
return true;
}

// E-mail Validation
function isEmail (s)
{ if (isEmpty(s)) 
 if (isEmail.arguments.length == 1) return defaultEmptyOK;
 else return (isEmail.arguments[1] == true);
 
// is s whitespace?
if (isWhitespace(s)) return false;

// there must be >= 1 character before @, so we
// start looking at character position 1 
// (i.e. second character)
var i = 1;
var sLength = s.length;

// look for @
while ((i < sLength) && (s.charAt(i) != "@"))
{ i++
}

if ((i >= sLength) || (s.charAt(i) != "@")) return false;
else i += 2;

// look for .
while ((i < sLength) && (s.charAt(i) != "."))
{ i++
}

// there must be at least one character after the .
if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
else return true;
}

/* Other functions */
function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

function KW_expertPopup(sc,iw,ih,mg,wd,hg,sb,fs,bg,tl,nr,ms,cs,cb){
pw=(wd!=0)?wd:(iw+mg*2);psw=parseInt(screen.width/2-pw/2);ph=(hg!=0)?hg:(ih+mg*2);
psh=parseInt(screen.height/2-ph/2);if (fs) {pw=screen.width;ph=screen.height;psh=0;psw=0;mg=0}
look="width="+pw+",height="+ph+",screenX="+psw+",screenY="+psh+",left="+psw+",top="+psh
ovf="html,body{overflow:hidden;} "; if (sb==1) {look+=",scrollbars=yes";ovf="";} else look+=",scrollbars=no";
if (bg==" ")bg="#ffffff";
pStr="<ht"+""+"ml><he"+""+"ad><ti"+""+"tle>"+tl+"</ti"+""+"tle><META HTTP-EQUIV=\"imagetoolbar\" CONTENT=\"no\"><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"></he"+""+"ad><st"+""+"yle type=\"text/css\"> <!-- BODY {  margin : "+mg+"px; } "+ovf+" --> </style><bo"+""+"dy bgcolor="+bg+"  marginwidth=\"0\" marginheight=\"0\" "
if (cs!=0) pStr+="onLoad=\"setTimeout('window.close()',"+cs+")\" ";if (cb!=0) pStr+="onBlur=\"window.close()\""
pStr+=">"
if (nr!=0) pStr+="<scr"+""+"ipt>  var msg=\""+ms+"\";function disableIE() {if (document.all) {alert(msg);return false;}} function disableNS(e){ if (document.layers||(document.getElementById&&!document.all)) {  if (e.which==2||e.which==3) {alert(msg);return false;} }} if (document.layers) {  document.captureEvents(Event.MOUSEDOWN);document.onmousedown=disableNS;} else {  document.onmouseup=disableNS;document.oncontextmenu=disableIE;} document.oncontextmenu=new Function('alert(msg);return false')</sc"+""+"ript>"
pStr+=(fs)?"<table border=\"0\" width=\"100%\" height=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tr><td ><div align=\"center\"><"+""+"a hr"+""+"ef='javasc"+""+"ript:self.close();'><img src='../%22+sc+%22' border=0 alt=\"Click Image to Close\"></"+""+"a></div></td></tr></table></bo"+""+"dy></ht"+""+"ml>":"<"+""+"a hr"+""+"ef='javasc"+""+"ript:self.close();'><img src='../%22+sc+%22' border=0 alt=\"Click Image to Close\"></"+""+"a></bo"+""+"dy></ht"+""+"ml>"
popwin=window.open('','',look);
popwin.document.open();
popwin.document.write(pStr);
popwin.document.close();
}
Effect = {};
Effect.fade = function(ref, counter) {
     if(ref.OriginalOpacity == null && ref.__zp_opacitySaved == null){
          ref.OpacitySaved = true;
          ref.OriginalOpacity = document.all ? 
               ref.style.filter : ref.style.opacity != null ? 
                    ref.style.opacity : ref.style.MozOpacity;
     }

     var md = null;

     var currentOpacity = 
          (!isNaN(parseFloat(ref.OriginalOpacity || 1)) ?
               parseFloat(ref.OriginalOpacity || 1) : (
                    (md = ref.OriginalOpacity.match(/alpha\(opacity=(\d+)\)/i)) ?
                         parseInt(md[1]) / 100 : 1
               )
          ) * counter / 100;

     if (ref.filters) {
          if (!ref.style.filter.match(/alpha/i)) {
               ref.style.filter += ' alpha(opacity=' + (currentOpacity * 100) + ')';
          } else if (ref.filters.length && ref.filters.alpha) {
               ref.style.filter = ref.style.filter.replace(/alpha\(opacity=\d+\)/ig, 'alpha(opacity=' + (Math.floor(currentOpacity * 100)) + ')')
          }
     } else {      
          if(counter > 0 && counter < 100){
               ref.style.opacity = ref.style.MozOpacity = currentOpacity;
          }
     }

     if(counter <= 0){
          ref.style.display = 'none';
          ref.style.filter = ref.style.opacity = ref.style.MozOpacity = ref.OriginalOpacity;
          ref.OriginalOpacity = null;
          ref.OpacitySaved = null;
     }

     if(counter >= 100 && ref.OpacitySaved != null) {
          ref.style.filter = ref.OriginalOpacity;
               ref.style.opacity = ref.style.MozOpacity = ref.OriginalOpacity;
     
          ref.OriginalOpacity = null;
          ref.OpacitySaved = null;
     }
};

Effect.run = function(ref,  show, animSpeed, currVal, effectName) {
      
     if(animSpeed == null)
          animSpeed = 10;

     if(currVal < 0){
          currVal = 0;
     }

     if(currVal > 100){
          currVal = 100;
     }


if(currVal == null) {     
          if(show){
               currVal = 0;
               if(ref.style.display == "none"){
                    ref.style.display = '';               
               }
          }
          else {
               currVal = 100;
          }
     }

     currVal += (show ? 1 : -1) * animSpeed;
     if (effectName== null || effectName=='Fade'){ 
         Effect.fade (ref, currVal);
        } else if(effectName=='Slide'){ 
         Effect.slide (ref, currVal, 'top');        
        }
  
   
     if (currVal >= 0 && currVal < 100) { 
          setTimeout(function() {
             Effect.run(ref, show, animSpeed, currVal, effectName);
          }, 50);
     }
}

var i18n = {};
i18n = {
    en: {
        status: ['Loading...', 'Error!!!, Connection Problem. Please tried again', 'Sending...', 'Incorrect email format, please check it']
},
    es: {
        status: ['Cargando...', 'Ha ocurrido un error de conexión, por favor inténtelo nuevamente', 'Enviando...','Formato de correo no válido, por favor, corríjalo']
},
it: {
        status: ['Caricando', 'C\'e\' stato un errore di connessione, per favore intenti di nuovo', 'Inviando...','Indirizzo di posta elettronica non valido, per favore correggerlo']
}
};


