var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;

var acalendar = null;
var pcalendar = null;
var tcalendar = null;
var scalendar = null;
var ecalendar = null;
var pccalendar = null;

//funzione chiamata quando si clicca su un giorno
function aselected(cal, date) {
    var pieces = date.split('-');
    document.getElementById('aa').value = pieces[0];
    document.getElementById('mma').value = pieces[1];
    document.getElementById('gga').value = pieces[2];
    // se esiste la seconda data (tipo nel form hotel) allora calcolo le notti e imposto il summary
    if(document.getElementById('ggp')) {
        setPD();
        try { nights(); }
        catch(ex) { days(); }
    }
    cal.hide();
}

//funzione chiamata quando si clicca su un giorno
function pselected(cal, date) {
    var pieces = date.split('-');
    var ddate = new Date(pieces[0], Number(0 + pieces[1]) - 1, pieces[2]);
    var today = new Date();
    if (today.print(cal.dateFormat) == cal.date.print(cal.dateFormat) && pisDisabled(ddate)) {
        var y = document.getElementById('aa').value;
        var m = Number(0 + document.getElementById('mma').value) - 1;
        var d = document.getElementById('gga').value;
        var dt = new Date(y, m, Number(0 + d) + 1);
        dt = dt.print(cal.dateFormat);
        var pieces = dt.split('-');
    }
    document.getElementById('ap').value = pieces[0];
    document.getElementById('mmp').value = pieces[1];
    document.getElementById('ggp').value = pieces[2];
    try { nights(); }
    catch(ex) { days(); }
    cal.hide();
}

function pcselected(cal, date){
        pselected(cal, date);
}

//funzione chiamata quando si clicca su un giorno
function sselected(cal, date) {
    var pieces = date.split('-');
    document.getElementById('sy').value = pieces[0];
    document.getElementById('sm').value = pieces[1];
    document.getElementById('sd').value = pieces[2];
    setPD();
    days();
    set_prices();
    cal.hide();
}

//funzione chiamata quando si clicca su un giorno
function eselected(cal, date) {
    var pieces = date.split('-');
    var ddate = new Date(pieces[0], Number(0 + pieces[1]) - 1, pieces[2]);
    var today = new Date();
    if (today.print(cal.dateFormat) == cal.date.print(cal.dateFormat) && pisDisabled(ddate)) {
        var y = document.getElementById('sy').value;
        var m = Number(0 + document.getElementById('sm').value) - 1;
        var d = document.getElementById('sd').value;
        var dt = new Date(y, m, Number(0 + d) + 1);
        dt = dt.print(cal.dateFormat);
        var pieces = dt.split('-');
    }
    document.getElementById('ey').value = pieces[0];
    document.getElementById('em').value = pieces[1];
    document.getElementById('ed').value = pieces[2];
    days();
    set_prices();
    cal.hide();
}

//funzione chiamata quando si clicca sulla x per chiudere
function closeHandler(cal) {
    cal.hide();
}

//funzione per disabilitare le date
function aisDisabled(date) {
    var today = new Date();
    return ((today.getTime() - date.getTime()) / DAY) > 1;
}
function sisDisabled(date) { return aisDisabled(date);}

//funzione per disabilitare le date
function pisDisabled(date) {
    var y = document.getElementById('aa').value;
    var m = Number(0 + document.getElementById('mma').value) - 1;
    var d = document.getElementById('gga').value;
    var checkdate = new Date(y, m, d);
    return ((checkdate.getTime() - date.getTime()) / DAY) > -1;
}

//funzione per disabilitare le date
function pcisDisabled(date) {
    var y = document.getElementById('aa').value;
    var m = Number(0 + document.getElementById('mma').value) - 1;
    var d = document.getElementById('gga').value;
    var checkdate = new Date(y, m, d);
    return ((checkdate.getTime() - date.getTime()) / DAY) > 0;
}

//funzione per disabilitare le date
function eisDisabled(date) {
    var y = document.getElementById('sy').value;
    var m = Number(0 + document.getElementById('sm').value) - 1;
    var d = document.getElementById('sd').value;
    var checkdate = new Date(y, m, d);
    return ((checkdate.getTime() - date.getTime()) / DAY) > -1;
}

//funzione per mostrare il calendario
function showCalendar(id, format, what) {
    var el = document.getElementById(id);
    eval('var calendar = '+what+'calendar;');
    if (calendar != null) {
        calendar.hide();
    } 
    else {
        eval('var selfunction = '+what+'selected;');
        eval('var disfunction = '+what+'isDisabled;');
        var cal = new Calendar(true, null, selfunction, closeHandler);
        cal.setDisabledHandler(disfunction);
        cal.weekNumbers = false;
        calendar = cal;
	var t = new Date();
        cal.setRange(t.getFullYear(), t.getFullYear() + 2);
        cal.create();
    }
    calendar.setDateFormat(format);
    //prelevo i valori dalle select
    if (what == 'pc')
            what = 'p';
    var value = document.getElementById('a'+what).value + '-'
            + document.getElementById('mm'+what).value + '-'
            + document.getElementById('gg'+what).value;
    calendar.parseDate(value);
    calendar.sel = el;
    calendar.showAtElement(el);
    return false;
}

//funzione per mostrare il calendario
function showGenericCalendar(id, format, what) {
    var el = document.getElementById(id);
    eval('var calendar = '+what+'calendar;');
    if (calendar != null) {
        calendar.hide();
    } 
    else {
        eval('var selfunction = '+what+'selected;');
        eval('var disfunction = '+what+'isDisabled;');
        var cal = new Calendar(true, null, selfunction, closeHandler);
        cal.setDisabledHandler(disfunction);
        cal.weekNumbers = false;
        calendar = cal;
        var t = new Date();
        cal.setRange(t.getFullYear(), t.getFullYear() + 2);
        cal.create();
    }
    calendar.setDateFormat(format);
    //prelevo i valori dalle select
    var value = document.getElementById(what+'y').value + '-'
            + document.getElementById(what+'m').value + '-'
            + document.getElementById(what+'d').value;
    calendar.parseDate(value);
    calendar.sel = el;
    calendar.showAtElement(el);
    return false;
}

//funzione per mostrare il calendario
function showTransferCalendar(id, format) {
    var el = document.getElementById(id);
    var calendar = tcalendar;
    if (calendar != null) {
        calendar.hide();
    } 
    else {
        var selfunction = transfer_selected;
        var disfunction = aisDisabled;
        var cal = new Calendar(true, null, selfunction, closeHandler);
        cal.setDisabledHandler(disfunction);
        cal.weekNumbers = false;
        calendar = cal;
        var t = new Date();
        cal.setRange(t.getFullYear(), t.getFullYear() + 2);
        cal.create();
    }
    calendar.setDateFormat(format);
    //prelevo i valori dalle select
    var value = document.getElementById('year').value + '-'
            + document.getElementById('month').value + '-'
            + document.getElementById('day').value;
    calendar.parseDate(value);
    calendar.sel = el;
    calendar.showAtElement(el);
    return false;
}

//funzione chiamata quando si clicca su un giorno
function transfer_selected(cal, date) {
    var pieces = date.split('-');
    document.getElementById('year').value = pieces[0];
    document.getElementById('month').value = pieces[1];
    document.getElementById('day').value = pieces[2];
    compose_summary('day','summary_date');
    cal.hide();
}


