var calendar_array = new Array();

function dayRecord(year, month, day, class_name) {
   this.year = year;
   this.month = month;
   this.day = day;
   this.class_name=class_name;
}

function addDay(y, m, d, class_name) {
    dr = new dayRecord(y, m, d, class_name);
    calendar_array[calendar_array.length] = dr;
}

function findDay(y, m, d) {
    for (i=0; i<calendar_array.length; i++)
        if (y==calendar_array[i].year && m==calendar_array[i].month && d==calendar_array[i].day) return(i);
    return(-1);
}

function deleteDay(y, m, d) {
    if ((i=findDay(y,m,d))>=0) {
        while (i<calendar_array.length - 1) {
            calendar_array[i] = calendar_array[i+1];
            i++;
        }
        calendar_array.length = calendar_array.length - 1;
    }
}

function day_click(anchor, y, m, d) {
    if (anchor.className=='reserved') {
        i = findDay(y,m,d);
        anchor.className = calendar_array[i].class_name;
        deleteDay(y,m,d);
    } else {
        addDay(y,m,d,anchor.className);
        anchor.className = 'reserved';
    }
    return false;
}

function dateSort(a, b) {
    if (b.year>a.year)
        return -1;
    else if (b.year<a.year)
        return 1;
    else if (b.month>a.month)
        return -1;
    else if (b.month<a.month)
        return 1;
    else if (b.day>a.day)
        return -1;
    else if (b.day<a.day)
        return 1;
    else
        return 0;
}

function dayDiff(day1, day2) {
    date1 = new Date(day1.year, day1.month-1, day1.day);
    date2 = new Date(day2.year, day2.month-1, day2.day);
    diff = (date2.getTime() - date1.getTime())/(1000*60*60*24);
//    alert('date1='+date1+'date2='+date2+'diff='+diff);
    return diff;
}

function check_dates(theForm) {
    if (calendar_array.length < 3) {
        alert('The minimum booking period is 3 days. You can\'t book less.');
        return false;
    }
    calendar_array.sort(dateSort);
    for (i=0; i<calendar_array.length-1; i++)
        if (dayDiff(calendar_array[i], calendar_array[i+1]) > 1) {
            alert('Please select a continuous time period.');
            return false;
        }
    theForm.day_from.value = calendar_array[0].day;
    theForm.month_from.value = calendar_array[0].month;
    theForm.year_from.value = calendar_array[0].year;

    theForm.day_to.value = calendar_array[calendar_array.length - 1].day;
    theForm.month_to.value = calendar_array[calendar_array.length - 1].month;
    theForm.year_to.value = calendar_array[calendar_array.length - 1].year;

    return true;
}

function init_calendar() {

}