﻿
function isValidTime(source, clientside_arguments) {
    var value = clientside_arguments.Value;
    var hasMeridian = false;
    var re = /^\d{1,2}[:]\d{2}([:]\d{2})?( [aApP][mM]?)?$/;
    if (!re.test(value)) 
    {
        clientside_arguments.IsValid = false;
        return;
    }
    if (value.toLowerCase().indexOf("p") != -1) { hasMeridian = true; }
    if (value.toLowerCase().indexOf("a") != -1) { hasMeridian = true; }
    var values = value.split(":");
    if ((parseFloat(values[0]) < 0) || (parseFloat(values[0]) > 23)) 
    {
        clientside_arguments.IsValid = false;
        return;
    }
    if (hasMeridian) 
    {
        if ((parseFloat(values[0]) < 1) || (parseFloat(values[0]) > 12)) 
        {
            clientside_arguments.IsValid = false;
            return;
        }
    }
    if ((parseFloat(values[1]) < 0) || (parseFloat(values[1]) > 59)) 
    {
        clientside_arguments.IsValid = false;
        return;
    }
    if (values.length > 2) 
    {
        if ((parseFloat(values[2]) < 0) || (parseFloat(values[2]) > 59)) 
        {
            clientside_arguments.IsValid = false;
            return;
        }
    }
    clientside_arguments.IsValid = true; 
}
