﻿function EmailIsValid(address) {
    var re = new RegExp(/^([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-]+[\.A-Za-z0-9!#$%&'*+\/=?^_`{|}~-]*[A-Za-z0-9!#$%&'*+\/=?^_`{|}~-]+)@[A-Za-z0-9][A-Za-z0-9\.-]*\.[A-Za-z0-9]{1,10}$/);
    return (address.match(re) && (address.indexOf("..", 0) == -1));
}
function DoubleIsValid(value) {
    if (typeof value == "string")
        value = parseFloat(value);
    if (value == null) { return false; }
    if (isNaN(value)) { return false; }
    if (value >= 999999999.9999) { return false; }
    return true;
}
function UnsignedDoubleIsValid(value) {
    if (typeof value == "string")
        value = parseFloat(value);
    if (DoubleIsValid(value)) {
        if (value < 0) { return false; }
        return true;
    }
    return false;
}
function SMSNumberIsValid(SMSNumber) {
    var re = new RegExp(/^[1]?[0-9]{10}$/);
    return SMSNumber.match(re);
}
function DateIsValid(date, allowBlank, minYear, maxYear) {
    var re = new RegExp(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
    var regs;
    var month, day, year;
    if (minYear == null) { minYear = 1900; }
    if (maxYear == null) { maxYear = (new Date()).getFullYear(); }
    if (allowBlank == null) { allowBlank = false; }
    
    if (date != null && date != '') {
        if (regs = date.match(re)) {
            month = regs[1];
            day = regs[2];
            year = regs[3];

            if (month < 1 || month > 12 || day < 1 || day > Date.daysInMonth(month,year) || (year < minYear || year > maxYear)) {
                return false;
            }
        } else { return false; }
    } else{ return allowBlank; }
    return true;
}
Date.daysInMonth = function (month, year) {
    return new Date(year, month, 0).getDate()
}
