function showcalendar(page,pwidth,pheight) {
createPopUp(page,"ActiveCalendarWindow",pwidth,pheight,"no","no");
}
function createPopUp(theURL, Name, popW, popH, scroll, resize) {
var winleft = (screen.width - popW) / 2;
var winUp = (screen.height - popH) / 2;
winProp = 'width='+popW+',height='+popH+',left='+winleft+',top='+winUp+',scrollbars='+scroll+',resizable='+resize+'';
Win = window.open(theURL, Name, winProp);
Win.window.focus();
}
function getStartDate(year,month,day,form_name) {
self.close();
opener.setStartDates(day,month,year,form_name);
}
function getEndDate(year,month,day,form_name) {
self.close();
opener.setEndDates(day,month,year,form_name);
}

function getFormbyname(form_name)
{
    var form = document.forms[form_name];
//    var form = document.getElementById(form_name);
//    alert(form);
    return form;
}

function setStartDates(day,month,year,form_name)
{
    var form = getFormbyname(form_name);
    for (i=0; i<form.startDay.length; i++)
    {
        if (form.startDay.options[i].value == day)
        {
            form.startDay.selectedIndex = i;
        }
    }

    for (i=0; i<form.startMonth.length; i++) {
    if (form.startMonth.options[i].value == month){
    form.startMonth.selectedIndex = i;
    }
    }
    for (i=0; i<form.startYear.length; i++) {
    if (form.startYear.options[i].value == year){
    form.startYear.selectedIndex = i;
    }
    }
    update_fields(form_name);
}
function setEndDates(day,month,year,form_name) {

    var form = getFormbyname(form_name);

    for (i=0; i<form.endDay.length; i++) {
    if (form.endDay.options[i].value == day){
    form.endDay.selectedIndex = i;
    }
    }
    for (i=0; i<form.endMonth.length; i++) {
    if (form.endMonth.options[i].value == month){
    form.endMonth.selectedIndex = i;
    }
    }
    for (i=0; i<form.endYear.length; i++) {
    if (form.endYear.options[i].value == year){
    form.endYear.selectedIndex = i;
    }
    }
    update_fields(form_name);
}

function update_fields(form_name)
{
    if(checkDate(form_name)){
    var form = getFormbyname(form_name);
    form.arrival.value = form.startYear.value+"-" +form.startMonth.value+"-"+form.startDay.value;
    form.departure.value = form.endYear.value+"-" +form.endMonth.value+"-"+form.endDay.value;
    return true;
    }else{
    var form = getFormbyname(form_name);
    form.arrival.value = form.startYear.value+"-" +form.startMonth.value+"-"+form.startDay.value;
    form.departure.value = form.endYear.value+"-" +form.endMonth.value+"-"+form.endDay.value;
    return false;
    }
}
function checkDate(form_name)
{
    var form = getFormbyname(form_name);
    if (!isValidDate(form.startYear.value, form.startMonth.value,form.startDay.value))
    {
        setStartDates(form.startDay.value-1, form.startMonth.value, form.startYear.value, form_name);
    }
    if (!isValidDate(form.endYear.value, form.endMonth.value,form.endDay.value))
    {
        setEndDates(form.endDay.value-1, form.endMonth.value, form.endYear.value, form_name);
    }

    var now = get_now_date();
    var start = get_date(form.startYear.value, form.startMonth.value,form.startDay.value);
    var end   = get_date(form.endYear.value,   form.endMonth.value,  form.endDay.value);
    var str = "";
    if (start < now)
    {
        var temp = now;
        setStartDates(temp.getDate() , temp.getMonth()+1, temp.getFullYear(), form_name);
        str += "Please select a check-in date that is at least 2 days in advance of todays date.";
    }
    if (!(start < end))
    {
        var temp = addDays(start,1);
        setEndDates(temp.getDate() , temp.getMonth()+1, temp.getFullYear(), form_name);
        str += "Check-out date must be at least 1 day ahead of arrival date";
    }
    if (str > "")
    {
        alert(str);
        return false;
    }else return true;
}
function get_now_date()
{
    var temp = new Date();
    return get_date(temp.getFullYear(), temp.getMonth()+1,temp.getDate()+2);
}

function addDays(elem, num)
{
    return get_date(elem.getFullYear(), elem.getMonth()+1, elem.getDate() +num);
}
function get_date(y,m,d)
{
    var dt = new Date(y, m-1, d,0,0,0,0);
    return dt;
}
function isValidDate(y, m, d)
{
    var dt = new Date(y, m-1, d,0,0,0,0);
//    addDebug(dt);
//    addDebug(y + " " + m + " " + d + "|" + dt.getFullYear() + " " + dt.getMonth() + " " +dt.getDate());
//    addDebug((y == dt.getFullYear()) && ((m-1) == dt.getMonth()) && (d == dt.getDate()));
//    alert(1);
    return ((y == dt.getFullYear()) && ((m-1) == dt.getMonth()) && (d == dt.getDate()));
}