function makeValidDate() {
    year = document.hostel.selYear.options[ document.hostel.selYear.selectedIndex ].value;
    month = document.hostel.selMonth.options[ document.hostel.selMonth.selectedIndex ].value;
    day = document.hostel.selDay.options[ document.hostel.selDay.selectedIndex ].value;
    maxDay = 31;

    if ( month == 4 || month == 6 || month == 9 || month == 11 ) {
        maxDay = 30;
    } else if ( month == 2 ) {
        if ( year%100 != 0 && year%4 == 0 ) {
            maxDay = 29;
        } else {
            maxDay = 28;
        }
    }

    document.hostel.selDay.selectedIndex = Math.min(day, maxDay)-1;
}

var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

function checkDate(){
    var day = parseInt(document.hostel.selDay.options[ document.hostel.selDay.selectedIndex ].value);
    var month = parseInt(document.hostel.selMonth.options[ document.hostel.selMonth.selectedIndex ].value);
    var year = parseInt(document.hostel.selYear.options[ document.hostel.selYear.selectedIndex ].value);

    if (!day || !month || !year)
        return false;

    if (year/4 == parseInt(year/4))
        monthLength[1] = 29;

    if (day > monthLength[month-1])
        return false;

    monthLength[1] = 28;

    var now = new Date();
    now = now.getTime(); //NN3

    var dateToCheck = new Date();
    dateToCheck.setYear(year);
    dateToCheck.setMonth(month-1);
    dateToCheck.setDate(day);
    var checkDate = dateToCheck.getTime();

    var futureDate = (now < checkDate);
    var pastDate = (now > checkDate);

    if(pastDate)
    {
        alert("Please Enter Dates Ahead Of Today\'S Date.  Thank You.");
//    }else{
//        document.hostel.Submit.value=1;
//        document.hostel.submit();
    }

}

function isBrowserSupp() {
    // Get the version of the browser
    version =  parseFloat( navigator.appVersion );

    if ( ( version >= 2.0 ) && ( version < 2.1 ) && ( navigator.appName.indexOf( "Netscape" ) != -1 ) ) {
        return false;
    }
    else {
        return true;
    }
}

function isLeapYear (year) {
    return (year % 4 == 0) &&
            ((year % 100 != 0) || (year % 400 == 0));
}

function getDaysInMonth(mthIdx, YrStr){
    //Default number of days in a month is 31
    var maxDays=31

    // expect Feb.
    if (mthIdx==2){
        if (isLeapYear(YrStr)){
            maxDays=29;
        } else {
            maxDays=28;
        }
    }

    // All the rest of the months have 30 days
    if (mthIdx==4 || mthIdx==6 || mthIdx==9 || mthIdx==11) {
        maxDays=30;
    }

    return maxDays;
}

function adjustDate(mthIdx, Dt, Yr) {
    var value=0;
    var numDays=getDaysInMonth(mthIdx, Yr.options[Yr.options.selectedIndex].value);

    if (mthIdx==2){
        if (Dt.options.selectedIndex < numDays) {
            return 0;
        }else{
            //check for leap year
            Dt.options.selectedIndex=numDays;
            if (numDays==29){
                return 99;
            } else {
                return 1;
            }
        }
    }

    if (Dt.options.selectedIndex < numDays){
        value=0;
    } else {
        if (Dt.options.selectedIndex > numDays) {
            Dt.options.selectedIndex;
            value=3;
        } else {
            //index is 31 or 30
            value=2;
        }
    }

    return value;
}

function parseMonth(mth, inM){
    var i=1;
    var retval =1;

    for (i=1;i<=12;i++){
        if (mth == inM.options[i].value){
            retval=i;
            break;
        }
    }
    return retval;
}

function parseDay(day, inD){
    var i=1;
    var retval =1;
    for (i=1;i<=31;i++){
        if (day == inD.options[i].value){
            retval=i;
            break;
        }
    }
    return retval;
}

function parseYear(year, inY){
    var retval=0;
    var i=0;
    for (i=0; i<=5; i++){
        if (year == inY.options[i].value){
            retval=i;
            break;
        }
    }

    return retval;
}

//Calendar Section
function nextMonth(month){
    if (month==12){
        return 1;
    }else{
        return (month+1);
    }
}

function prevMonth(month){
    var prevMonth = (month-1)
    if (month==1){
        prevMonth = 12;
    }

    return prevMonth
}

function changeYear(direction,month,year)
{
    var theYear = year

    if (direction=="next"){
        if (month == 12){
        theYear = (year+1)
        }
    }

    if (direction=="prev"){
        if (month == 1){
            theYear = (year-1)
        }
    }

    return theYear
}


function createCalendar(month,year,io)
{
    if (!isBrowserSupp()){
        alert("Your browser is outdated and does not support this feature")
        return;
    }

    if (navigator.appVersion.indexOf("Mac",0) != -1){
        calendarWindow = window.open("","Calendar","width=165,height=200,resizable=yes,scrollbars=no");
    }else{
        calendarWindow = window.open("","Calendar","width=165,height=200,resizable=yes,scrollbars=no");
    }

    var mthIdx = month.options.selectedIndex
    var mthVal = month.options[mthIdx].value
    var yearVal = year.options[year.options.selectedIndex].value
    //call the function to populate the window
    generateCalendar(calendarWindow,mthVal,yearVal,io)
}


//generates the meat of the calendar
function generateCalendar(target,month,year,io){
    if (!isBrowserSupp()){
        return;
    }

    var monthName = new Array ("January","February","March","April","May","June","July","August","September","October","November","December")

    //begin table for calendar
    target.document.open()
    calendar = "<html><head><title>calendar</title></head>"
    calendar +="<link rel=\"stylesheet\" href=\"calendar.css\" type=\"text/css\">"
    calendar +="<body bgcolor=ffffff link='#000080'>"
    calendar +="<table border=0 cellspacing=1 cellpadding=3 width=105 bgcolor=444444>"
    calendar +="<tr valign=top>"

    //The parseInt function parses the string argument as a signed decimal integer.
    var mthIdx = parseInt(month);
    var endday = getDaysInMonth(mthIdx, year)

    //month header
    calendar +="<td colspan=7 align=center class='JSCalendarTitle'>"
    var index = (mthIdx-1)
    calendar +="<b><span class='BElarge'>" + monthName[index] + " " + year + "</span></b></td></tr>"
    calendar +="</tr>"

    //writes in the day of the week labels
    calendar +="<tr align=center>"
    calendar +="<td width=15 class='JSCalendarWeekend'><span class='BEsmall'>&nbsp;<b>S</b></font></td>"
    calendar +="<td width=15 class='JSCalendarWeek'><span class='BEsmall'>&nbsp;<b>M</b></font></td>"
    calendar +="<td width=15 class='JSCalendarWeek'><span class='BEsmall'>&nbsp;<b>T</b></font></td>"
    calendar +="<td width=15 class='JSCalendarWeek'><span class='BEsmall'>&nbsp;<b>W</b></font></td>"
    calendar +="<td width=15 class='JSCalendarWeek'><span class='BEsmall'>&nbsp;<b>T</b></font></td>"
    calendar +="<td width=15 class='JSCalendarWeek'><span class='BEsmall'>&nbsp;<b>F</b></font></td>"
    calendar +="<td width=15 class='JSCalendarWeekend'><span class='BEsmall'>&nbsp;<b>S</b></font></td>"
    calendar +="</tr>"

    wholeDate = month + "/01/" + year
    thedate = new Date(wholeDate)
    firstDay = thedate.getDay()

    selectedmonth = mthIdx;
    var today = new Date();
    var thisyear = today.getYear() + 1900;
    selectedyear = year

    var lastDay = (endday + firstDay+1)
    var lastCalspace = 42

    var NoDays = (lastDay - (firstDay + 1))
    var TotalDaysFilled = NoDays + firstDay;

    calendar +="<tr>"
    for (var i = 1; i <= lastCalspace; i++){
        if (i <= firstDay){
            // 'empty' boxes prior to first day
            calendar +="<td class='JSCalendarDays'><img src='http://www.gapyear.com/images/trans.gif' height=1 width=1></td>"
        }
        if (i > firstDay && i <= TotalDaysFilled){
            // enter date number
            calendar +="<td align=center class='JSCalendarDays'><a href='JavaScript:self.close();opener.closeCalendar"+io+"("+(i-firstDay) + ");' class='calendar'> "+(i-firstDay)+"</a></td>"
        }
        if (i > TotalDaysFilled && i <= lastCalspace){
            // 'empty' boxes after TotalDaysFilled
            calendar +="<td class='JSCalendarDays'><img src='http://reservations.bookhostels.com/images/trans.gif' height=12 width=1></td>"
        }
        //must start new row after each week
        if (i % 7 == 0 &&  i != lastCalspace){
            calendar +="</tr>"
            calendar +="<tr>"
        }
    }

    calendar +="</tr>"

    //prev month - next month controls table
    calendar +="<tr><td colspan=7 align=center class='JSCalendarTitle'>"

    //next month and previous month buttons
    var goPrevMonth = prevMonth(mthIdx)
    var goNextMonth = nextMonth(mthIdx)
    var nextYear = changeYear("next",parseInt(month),parseInt(year))
    var prevYear = changeYear("prev",parseInt(month),parseInt(year))

    if(navigator.userAgent.indexOf('MSIE',0) != -1){
        calendar +="<table cellpadding=0 cellspacing=0 border=0 width=100%>"
        calendar +="<tr><td align=left class='JSCalendarTitle'><a href='javascript:opener.generateCalendar(self,"+goPrevMonth+","+prevYear+",\""+io+"\")' class='calcontrol'>« Prev</a></td>"
        calendar +="<td align=right class='JSCalendarTitle'><a href='javascript:opener.generateCalendar(self,"+goNextMonth+","+nextYear+",\""+io+"\")' class='calcontrol'>Next »</a></td></tr>"
        calendar +="</table>"
        calendar +="</td></tr>"
        calendar +="</table></body></html>"
        target.document.close()
    }else{
        calendar +="<table cellpadding=0 cellspacing=0 border=0 width=100%>"
        calendar +="<fo"+"rm><tr><td align=left class='JSCalendarTitle'><input type='button' value=' < ' onClick='document.clear();opener.generateCalendar(opener.calendarWindow,\'"+goPrevMonth+"\',\'"+prevYear+"\',\'"+io+"\')'></td>"
        calendar +="<td align=right class='JSCalendarTitle'><input type='button' value=' > '"+"onClick='document.clear();opener.generateCalendar(opener.calendarWindow,"+goNextMonth+","+nextYear+",\""+io+"\")'></td></tr></form>"
        calendar +="</table>"
        calendar +="</td></tr>"
        calendar +="</table></body></html>"
    }

    target.document.write(calendar);
    target.document.close()
}

function closeCalendar(day) {
    var yrIdx = parseYear(selectedyear,document.hostel.selYear );

    // Decrement index for day and month, because code assumes
    // that we have an extra defaultvalue at the start.
    document.hostel.selMonth.options.selectedIndex=selectedmonth-1;
    document.hostel.selYear.options.selectedIndex= yrIdx;
    document.hostel.selDay.options.selectedIndex=parseInt(day)-1;
}