/*==============================================================================
    Codice javascript per il calendario scrollabile orizzontale
    Specificità Magica Venezia
    $Id$
==============================================================================*/

// Giorni 
var calDays = [];

// Giorni della settimana (0=lun, 1=mar, ... 6=dom)
var calWDays = [];

// Prezzo per il giorno
var calPrices = [];

// Frase riepilogo
// TODO: Internazionalizzare!
var calPhrase = "Affitta questo appartamento con arrivo il giorno <b>DATEFROM</b> (dopo le ore 14:00) e partenza il giorno <b>DATETO</b> (entro le ore 11:00), per <b>NIGHTS</b> notte/i, al prezzo totale di <b>PRICE</b> &euro; tutto compreso.";

//------------------------------------------------------------------------------
// Chiamata alla selezione per range su calendario
//------------------------------------------------------------------------------
function calUserRangeUpdate(fromIdx, toIdx)
{
    elem = document.getElementById("book-divsubmit");
    if (!elem)
        return;
    
    if (toIdx == -1) {
        // Range invalido, nasconde il blocco
        document.booking.from.value = '';
        document.booking.to.value = '';
        elem.style.display = "none";
        return;
    }

    // Date di arrivo/partenza
    from = calDays[fromIdx];
    to = calDays[toIdx + 1];

    // Calcola prezzo appartamento
    price = 0;
    for (i = fromIdx; i <= toIdx; i++)
        price += calPrices[i];
    
    // Mostra blocco prenota
    elem.style.display = "block";
    
    // Prepara la frase di riepilogo
    elem = document.getElementById("book-phrase");
    if (!elem)
        return;
    var s = calPhrase.replace("DATEFROM", from);
    s = s.replace("DATETO", to);
    s = s.replace("NIGHTS", toIdx - fromIdx + 1);
    s = s.replace("PRICE", price);
    elem.innerHTML = s;
    
    // Mostra riepilogo della selezione e prepara le variabili della form
    document.booking.from.value = from;
    document.booking.to.value = to;
    document.booking.prenota.disabled = false;
}


//------------------------------------------------------------------------------
// Click su una cella del calendario
// - Seleziona la cella cliccata
// - Impone la selezione doppia per venerdì sabato
// - Genera il riepilogo
//------------------------------------------------------------------------------
function calUserClick(idx)
{
    calClear();
    if (!calRanging)
        calRangeFromIdx = calRangeToIdx = -1;

    if (calRanging) {
        // Secondo click
        if (idx == calRangeFromIdx) {
            // Click sul giorno di inizio
            wday = calWDays[calRangeFromIdx];
            if (wday == 4) {
                // Selezionato ven & click su ven
                if (calDayStates[idx + 1])
                    // Seleziona anche il sabato
                    idx++;
            }
            else if (wday == 5) {
                // Selezionato sab & click su sab
                if (calDayStates[idx + 1])
                    // Seleziona anche la domenica
                    idx++;
                else if ((calRangeFromIdx > 0) && calDayStates[calRangeFromIdx - 1])
                    // Seleziona anche il venerdì precedente
                    calRangeFromIdx--;
            }
            calRangeToIdx = idx;
            calMarkAsSelected(calRangeFromIdx);
            calMarkAsSelected(calRangeToIdx);
        }
        else if (!calRangeExtend(idx) || (calRangeToIdx != idx)) {
            calRangeFromIdx = calRangeToIdx = -1;
            calClear();
        }
        calRanging = false;
    }
    
    if (calRangeFromIdx == -1) {
        // Primo click
        if (calHideAvail || calDayStates[idx]) {
            calRangeFromIdx = calRangeToIdx = idx;
            wday = calWDays[idx];
            if (wday == 4) {
                // Selezionato ven & click su ven
                if (calDayStates[calRangeToIdx + 1])
                    // Seleziona anche il sabato
                    calRangeToIdx++;
            }
            else if (wday == 5) {
                // Selezionato sab & click su sab
                if (calDayStates[calRangeToIdx + 1])
                    // Seleziona anche la domenica
                    calRangeToIdx++;
                else if ((calRangeFromIdx > 0) && calDayStates[calRangeFromIdx - 1])
                    // Seleziona anche il venerdì precedente
                    calRangeFromIdx--;
            }
            
            calMarkAsSelected(calRangeFromIdx);
            calMarkAsSelected(calRangeToIdx);
            calRanging = true;
        }
    }
    
    calUserRangeUpdate(calRangeFromIdx, calRangeToIdx);
}
