﻿    var daysPerMonthArrivo=[31,28,31,30,31,30,31,31,30,31,30,31];
    var daysPerMonthPartenza=[31,28,31,30,31,30,31,31,30,31,30,31];

    var languageCode;
    languageCode="it";
    switch(languageCode){
	    case "en":	/* English */
		    var monthArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];
		    var monthArrayShort = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
		    var dayArray = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];
		    var weekString = 'Week';
		    var todayString = '';
		    break;
	    case "ge":	/* German */
		    var monthArray = ['Januar','Februar','Mï¿½rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
		    var monthArrayShort = ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
		    var dayArray = ['Mon','Die','Mit','Don','Fre','Sam','Son'];
		    var weekString = 'Woche';
		    var todayString = 'Heute';
		    break;
	    case "it":	/* Italian*/
		    var monthArray = ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
		    var monthArrayShort = ['Gen','Feb','Mar','Apr','Mag','Giu','Lugl','Ago','Set','Ott','Nov','Dic'];
		    var dayArray = ['Lun',';Mar','Mer','Gio','Ven','Sab','Dom'];
		    var weekString = 'Settimana';
		    var todayString = 'Oggi &egrave; il';
		    break;
    }

function populateCalendar(){
    var k;

    for (k=1;k<=31;k++){
        var opt0=new Option;
        opt0.text=String(k);
        opt0.value=k;
        var opt1=new Option;
        opt1.text=String(k);
        opt1.value=k;
        try{
        document.data.giorno0.add(opt0,null);
        document.data.giorno1.add(opt1,null);
        }catch(ex){
        document.data.giorno0.add(opt0);
        document.data.giorno1.add(opt1);
        }
    }
    for (k=1;k<=12;k++){
        var opt0=new Option;
        opt0.text=monthArrayShort[k-1];
        opt0.value=k;
        var opt1=new Option;
        opt1.text=monthArrayShort[k-1];
        opt1.value=k;
        try{
        document.data.mese0.add(opt0,null);
        document.data.mese1.add(opt1,null);
        }catch(ex){
        document.data.mese0.add(opt0);
        document.data.mese1.add(opt1);
        }
    }
    //Preimposto data oggi
    var oggi=new Date();
    document.data.giorno0.selectedIndex=oggi.getDate()-1;
    document.data.mese0.selectedIndex=oggi.getMonth();
    var domani=oggi.dateAdd(1,'d');
    document.data.giorno1.selectedIndex=domani.getDate()-1;
    document.data.mese1.selectedIndex=domani.getMonth();
    //Popolo combobox anno
    var anno=oggi.getFullYear();
    for (k=0;k<=2;k++){
        var opt0=new Option;
        opt0.text=String(anno+k);
        opt0.value=anno+k;
        try{
            document.data.anno0.add(opt0,null);
        }catch(ex){
            document.data.anno0.add(opt0);
        }
    }
    anno=domani.getFullYear();
    for (k=0;k<=3;k++){
        var opt0=new Option;
        opt0.text=String(anno+k);
        opt0.value=anno+k;
        try{
            document.data.anno1.add(opt0,null);
        }catch(ex){
            document.data.anno1.add(opt0);
        }
    }
    
    //Imposto il numero di giorni di Febbraio in base all'anno selezionato
    setLeapYear();
    //Imposto i combobox dei giorni in base al mese
    setDayCombos();
    
}

//**********************************************************************
//* dateAdd
//* Metodo aggiunto all'oggetto Date: aggiunge NrOfUnits unità di tipo
//* TipeOfUnits ('d','w') alla data rappresentata dal corrente oggetto Date
//* e restituisce la data ottenuta
//**********************************************************************
Date.prototype.dateAdd=function(NrOfUnits,TipeOfUnits){

    var NrOfMsec;
    var convMsec=24*60*60*1000;
    switch (TipeOfUnits){
        case 'd':
            NrOfMsec=NrOfUnits*convMsec;
        break
        case 'w':
            NrOfMsec=NrOfUnits*7*convMsec;
        break
        case 'm':
        break
        case 'y':
    }
    var dateMsec=this.getTime()+NrOfMsec;
    var retDate=new Date();
    retDate.setTime(dateMsec);
    return retDate;
}

function testTextLength(text,maxLength,o){

    var nChar=text.value.length;
    var lastChars=maxLength-nChar;
    if (lastChars<0) lastChars=0;
    o.innerHTML="[Caratteri "+String(nChar)+
    "/"+String(lastChars)+"]";
    if (nChar>maxLength){
        return false;
    }else{
        return true;
    }
}

function enSistemazione(chk){
    if (chk.checked){
       document.data.nrCamere0.disabled=false;
       document.data.tipoCamera0.disabled=false;
    } else{
       document.data.nrCamere0.disabled=true;
       document.data.tipoCamera0.disabled=true;
       document.data.nrCamere0.selectedIndex=0;
       document.data.tipoCamera0.selectedIndex=0;
    }
}

//**********************************************************************
//* validateDates()
//* Validazione date: eseguita su evento change dei comboBox giorno/mese/anno
//**********************************************************************
function validateDates(closeCalendars){

    var spanNrNotti=document.getElementById('nrNotti');
    var msecGiorno=24*60*60*1000;
    
    if (document.data.giorno0.value>daysPerMonthArrivo[document.data.mese0.value-1]){
        document.data.giorno0.value=daysPerMonthArrivo[document.data.mese0.value-1];
    }
    if (document.data.giorno1.value>daysPerMonthPartenza[document.data.mese1.value-1]){
        document.data.giorno1.value=daysPerMonthPartenza[document.data.mese1.value-1];
    }

    var dataArrivo=new Date(
        String(document.data.mese0.value)+
        "/"+String(document.data.giorno0.value)+
        "/"+String(document.data.anno0.value));
    var dataPartenza=new Date(
        String(document.data.mese1.value)+
        "/"+String(document.data.giorno1.value)+
        "/"+String(document.data.anno1.value));
    if (dataArrivo.getTime()>=dataPartenza.getTime()){
        document.data.giorno1.value=dataArrivo.dateAdd(1,'d').getDate();
        document.data.mese1.value=dataArrivo.dateAdd(1,'d').getMonth()+1;
        document.data.anno1.value=dataArrivo.dateAdd(1,'d').getFullYear();
        dataPartenza=new Date(document.data.anno1.value,
                            document.data.mese1.value-1,
                            document.data.giorno1.value);
    }
    setLeapYear();
    setDayCombos();
    spanNrNotti.innerHTML=(dataPartenza.getTime()-dataArrivo.getTime())/msecGiorno
    //Chiudo eventuali calendari aperti in quanto ho modificato lo stato dei comboBox
    if (closeCalendars){
        if (calArrivo!=null){
            calArrivo.parentNode.removeChild(calArrivo);
            calArrivo=null;
        }
        if (calPartenza!=null){
            calPartenza.parentNode.removeChild(calPartenza);
            calPartenza=null;
        }
    }

}

//**********************************************************************
//* setLeapYear()
//* Imposta il numero massimo di giorni di Febbraio in base all'anno selezionato
//**********************************************************************
function setLeapYear(){
    if (document.data.anno0.value %4 ==0){
        daysPerMonthArrivo[1]=29;
    }else{
        daysPerMonthArrivo[1]=28;
    }
    if (document.data.anno1.value %4 ==0){
        daysPerMonthPartenza[1]=29;
    }else{
        daysPerMonthPartenza[1]=28;
    }

}


//**********************************************************************
//* getWeekDayName(anno,mese,giorno)
//* In base alla data in ingresso restituisce l'etichetta corretta per il giorno
//* comprensiva di numero del giorno e nome del giorno
//**********************************************************************
function getWeekDayName(anno,mese,giorno){
    var data=new Date(String(mese)+"/"+String(giorno)+"/"+String(anno));
    
    switch (data.getDay()){
        case 0:
            return "Dom "+String(giorno);
        case 1:
            return "Lun "+String(giorno);
        case 2:
            return "Mar "+String(giorno);
        case 3:
            return "Mer "+String(giorno);
        case 4:
            return "Gio "+String(giorno);
        case 5:
            return "Ven "+String(giorno);
        case 6:
            return "Sab "+String(giorno);
        
    }
}

//**********************************************************************
//* getWeekDayColor(anno,mese,giorno)
//* In base alla data in ingresso restituisce il colore per il giorno
//* (red per la Domenica)
//**********************************************************************
function getWeekDayColor(anno,mese,giorno){
    var data=new Date(String(mese)+"/"+String(giorno)+"/"+String(anno));
    
    switch (data.getDay()){
        case 0:
            return "red";
            break;
        default:
            return "black";
        
    }
}


//**********************************************************************
//* setDayCombos()
//* Imposta i combobox dei giorni
//**********************************************************************
function setDayCombos(){
    //Imposto le stringhe dei giorni
    var k;
    var opts0=document.data.giorno0.options;
    var opts1=document.data.giorno1.options;
    for (k=0;k<=30;k++){
        opts0[k].text=getWeekDayName(
            document.data.anno0.value,
            document.data.mese0.value,
            k+1);
        opts1[k].text=getWeekDayName(
            document.data.anno1.value,
            document.data.mese1.value,
            k+1);
    }
//    for (k=0;k<=30;k++){
//        opts1[k].text=getWeekDayName(
//            document.data.anno1.value,
//            document.data.mese1.value,
//            k+1);
//    }
    for (k=0;k<=30;k++){
        opts0[k].style.color=getWeekDayColor(
            document.data.anno0.value,
            document.data.mese0.value,
            k+1);
        if (k+1>daysPerMonthArrivo[document.data.mese0.value-1]){
            opts0[k].style.backgroundColor="#ECE9D8";
            opts0[k].style.color="#CCC7BA";
        }else{
            opts0[k].style.backgroundColor="white";
        }
        opts1[k].style.color=getWeekDayColor(
            document.data.anno1.value,
            document.data.mese1.value,
            k+1);
        if (k+1>daysPerMonthPartenza[document.data.mese1.value-1]){
            opts1[k].style.backgroundColor="#ECE9D8";
            opts1[k].style.color="#CCC7BA";
        }else{
            opts1[k].style.backgroundColor="white";
        }
    }
}