
function isValidTime(value) {
   var hasMeridian = false;
   var re = /^\d{1,2}[:]\d{2}?$/;
   if (!re.test(value)) { return false; }
   var values = value.split(":");
   if ( (parseFloat(values[0]) < 0) || (parseFloat(values[0]) > 23) ) { return false; }
   if (hasMeridian) {
      if ( (parseFloat(values[0]) < 1) || (parseFloat(values[0]) > 12) ) { return false; }
   }
   if ( (parseFloat(values[1]) < 0) || (parseFloat(values[1]) > 59) ) { return false; }
   if (values.length > 2) {
      if ( (parseFloat(values[2]) < 0) || (parseFloat(values[2]) > 59) ) { return false; }
   }
   return true;
}

function is_numeric(avar) {
//alert (avar);
    if (isNaN(avar)) {
        return false;
    } else{
        return true;
    }
}

/*
min and max can be - or + respectivly to indicate infinity
*/

function is_range(avar, intMin, intMax) {
    if (!is_numeric(avar) || 
        (!is_numeric(intMax) && intMax != "+") || 
        (!is_numeric(intMin) && intMin != "-")) {
        return false;
    } 
    avar = parseInt(avar,"10");
    if (intMax == "+") {        return (avar > intMin);    }
    if (intMin == "-") {        return (avar < intMax);    }
}

function is_str (avar) {
    //replace " " with ""
    avar = avar.replace(/ /gi,"");
    if (avar == "" || avar.length < 1) {
        return false;
    }
    return true;
}

/*
dateformat is the date format that we are receiving.
    dd - two digit day
    mm - two digit year
    yyyy - four digit year
*/

/*
function is_date(avar, date_format) {
    if (avar.length != 8) return false;
    //get all the composite parts
    if (date_format.length < 6) {   
        //assume ddmmyyyy
        date_format = "ddmmyyyy";
    }
    date_format.toLowerCase();
    //get the day part
    var daypart, monthpart, yearpart;
    daypart = date_format.indexOf("dd");
    monthpart = date_format.indexOf("mm");
    yearpart = date_format.indexOf("yyyy");
    if (daypart < 0 || monthpart < 0 || yearpart < 0) return false;
    //okay, now we can parse the data!
    alert ("daypart " + daypart + "\n" +
    "monthpart " + monthpart + "\n" +
    "yearpart " + yearpart + "\n");
    var gDay, gMonth, gYear
    gDay = avar.substring(daypart, daypart +2);
    gMonth = avar.substring(monthpart, monthpart +2)-1;//java months are zero based/
    gYear = avar.substring(yearpart, yearpart +4);
    alert ("daypart " + gDay + "\n" +
    "monthpart " + gMonth + "\n" +
    "yearpart " + gYear + "\n");

    //okay, check all the dateparts
    if (gDay > 31) return false;
    if (gmonth > 12) return false;
    //okay, now check!
    var daysInMonth = Array(12);
        daysInMonth[1] = 31;
        daysInMonth[2] = 29;   // must programmatically check this
        daysInMonth[3] = 31;
        daysInMonth[4] = 30;
        daysInMonth[5] = 31;
        daysInMonth[6] = 30;
        daysInMonth[7] = 31;
        daysInMonth[8] = 31;
        daysInMonth[9] = 30;
        daysInMonth[10] = 31;
        daysInMonth[11] = 30;
        daysInMonth[12] = 31;
        

    
    datee = new Date();
    datee.setUTCFullYear(gYear, gMonth, gDay);
    alert (datee.toString());
}
*/

// daysInFebruary (INTEGER year)
//
// Given integer argument year,
// returns number of days in February of that year.

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 );
}


