function isValidDob(monthCtl,dayCtl) {

    var monthValue = monthCtl.options[monthCtl.selectedIndex].value;
    var dayValue   = dayCtl.options[dayCtl.selectedIndex].value;

    // If both are blank, then we're ok.
    if ((monthValue == "") && (dayValue == "")) {
        return true;
    }
    // We've determined that BOTH values are NOT blank.
    // Now, if either one of the values is blank, then we have a problem.
    if ((monthValue == "")) {
        return false;
    }
    if ((dayValue == "")) {
        return false;
    }
    var result;
    // Both are present,  Make sure they're valid.
    switch (parseInt(monthValue)) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        result = ((parseInt(dayValue) >= 1) && (parseInt(dayValue) <= 31));
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        result = ((parseInt(dayValue) >= 1) && (parseInt(dayValue) <= 30));
        break;
    case 2:
        result = ((parseInt(dayValue) >= 1) && (parseInt(dayValue) <= 29));
        break;
    default:
        result = false;
        break;
    }
    return result;
}



function oriisValidDob(monthCtl,dayCtl) {
    alert('isValidDob, point 1');
    var monthValue = monthCtl.options[monthCtl.selectedIndex].value;
    var dayValue   = dayCtl.options[dayCtl.selectedIndex].value;

    alert('isValidDob, point 2');
    // If both are blank, then we're ok.
    if ((monthValue == "") && (dayValue == "")) {
        alert('isValidDob, point 3');
        return true;
    }
    // We've determined that BOTH values are NOT blank.
    // Now, if either one of the values is blank, then we have a problem.
    if ((monthValue == "")) {
        alert('isValidDob, point 4');
        return false;
    }
    if ((dayValue == "")) {
        alert('isValidDob, point 5');
        return false;
    }
    // Both are present,  Make sure they're valid.
    alert('isValidDob, point 6');
    switch (parseInt(monthValue)) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        alert('isValidDob, point 7');
        return ((parseInt(dayValue) >= 1) && (parseInt(dayValue) <= 31));
    case 4:
    case 6:
    case 9:
    case 11:
        alert('isValidDob, point 8');
        return ((parseInt(dayValue) >= 1) && (parseInt(dayValue) <= 30));
    case 2:
        alert('isValidDob, point 9');
        return ((parseInt(dayValue) >= 1) && (parseInt(dayValue) <= 29));
    default:
        alert('isValidDob, point 10');
        return false;
    }
}
function toDate(ctl,description){
    var result;
    var dtCh= "/";
    if (isDate(ctl,description)) {
        var dtStr = ctl.value;
        if (dtStr != "") {
            var pos1=dtStr.indexOf(dtCh);
            var pos2=dtStr.indexOf(dtCh,pos1+1);
            var strMonth=dtStr.substring(0,pos1);
            var strDay=dtStr.substring(pos1+1,pos2);
            var strYear=dtStr.substring(pos2+1);
            result = new Date(strYear,parseInt(strMonth) - 1,strDay)
        }
    }
    return result;
}
function isDate(ctl,description){
    // Support routines
    var dtCh= "/";
    var minYear=1900;
    var maxYear=2100;
    var dtStr = ctl.value;
    if (dtStr == "") {
        return true;
    }
    var daysInMonth = DaysArray(12);
    var pos1=dtStr.indexOf(dtCh);
    var pos2=dtStr.indexOf(dtCh,pos1+1);
    var strMonth=dtStr.substring(0,pos1);
    var strDay=dtStr.substring(pos1+1,pos2);
    var strYear=dtStr.substring(pos2+1);
    strYr=strYear;
    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
    }
    month=parseInt(strMonth);
    day=parseInt(strDay);
    year=parseInt(strYr);
    if (pos1==-1 || pos2==-1) {
        alert("The date format for " + description + " should be : mm/dd/yyyy.");
        return false;
    }
    if (strMonth.length<1 || month<1 || month>12) {
        alert("Please enter a valid month for the " + description + "." );
        return false;
    }
    if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]) {
        alert("Please enter a valid day for the " + description + "." );
        return false;
    }
    if (strYear.length != 4 || year==0 || year<minYear || year>maxYear) {
        alert("Please enter a valid 4 digit year for the " + description + " that is between " + minYear + " and " + maxYear + ".");
        return false;
    }
    if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false) {
        alert("Please enter a valid date for the " + description + ".");
        return false;
    }
    return true;

    function isInteger(s){
        var i;
        for (i = 0; i < s.length; i++) {
            // Check that current character is number.
            var c = s.charAt(i);
            if (((c < "0") || (c > "9"))) return false;
        }
        // All characters are numbers.
        return true;
    }

    function stripCharsInBag(s, bag){
        var i;
        var returnString = "";
        // Search through string's characters one by one.
        // If character is not in bag, append to returnString.
        for (i = 0; i < s.length; i++) {
            var c = s.charAt(i);
            if (bag.indexOf(c) == -1) returnString += c;
        }
        return returnString;
    }

    function daysInFebruary (year){
        // February has 29 days in any year evenly divisible by four,
        // EXCEPT for centurial years which are not also divisible by 400.
        return(((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
    }
    function DaysArray(n) {
        for (var i = 1; i <= n; i++) {
            this[i] = 31;
            if (i==4 || i==6 || i==9 || i==11) {
                this[i] = 30;
            }
            if (i==2) {
                this[i] = 29;
            }
        }
        return this;
    }
}

