﻿
function IsValidTextCreditCardNumber(Value)
{
    if (IsValidTextNumeric(Value))
    {
        var sum = 0;
        var alt = false;
        var numvar = 0;

        for(var i = Value.length - 1; i >= 0; i--)
        {
            numvar = parseInt(Value.charAt(i));

            if(alt)
            {
                numvar *= 2;

                if(numvar > 9)
                {
                    numvar -= 9;
                }
            }

            sum += numvar;
            alt = !alt;
        }

        return sum % 10 == 0;
    }
    else
    {
        return false;
    }
}
function IsValidTextPhoneNumber(Value)
{
    return RegexValidate(Value, "((\\(\\d{3}\\) ?)|(\\d{3}[- \\.]))?\\d{3}[- \\.]\\d{4}(\\s(x\\d+)?){0,1}$");
}
function IsValidTextLength(Value, MinLength, MaxLength)
{
    return (Value.length >= MinLength && Value.length <= MaxLength);
}
function IsValidTextSsn(Value)
{
    return RegexValidate(Value, "^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$");
}
function IsValidTextUrl(Value)
{
    return RegexValidate(Value, "^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$");
}
function IsValidTextEmailAddress(Value)
{
    //return RegexValidate(Value, "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
    return RegexValidate(Value, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$");
    
}
function IsValidTextNumeric(Value)
{
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;

    for (i = 0; i < Value.length && IsNumber == true; i++) 
    {
        Char = Value.charAt(i); 

        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }

    return IsNumber;
}
function IsValidDateTime(Value)
{
    var CorrectForm = RegexValidate(Value, "(?=\\d)^(?:(?!(?:10\\D(?:0?[5-9]|1[0-4])\\D(?:1582))|(?:0?9\\D(?:0?[3-9]|1[0-3])\\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\\/31)(?!-31)(?!\\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\\d\\d)(?:[02468][048]|[13579][26])(?!\\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\\x20BC))))))|(?:0?2(?=.(?:(?:\\d\\D)|(?:[01]\\d)|(?:2[0-8])))))([-.\\/])(0?[1-9]|[12]\\d|3[01])\\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\\d)\\x20BC)|(?:\\d{4}(?!\\x20BC)))\\d{4}(?:\\x20BC)?)(?:$|(?=\\x20\\d)\\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\\d){0,2}(?:\\x20[aApP][mM]))|(?:[01]\\d|2[0-3])(?::[0-5]\\d){1,2})?$");
    
    var WithinRange = true;
    var yearStr = Value.substring(Value.lastIndexOf("/") + 1);
    if (yearStr.length > 2)
    {
        var year = parseInt(yearStr);
        WithinRange = (year > 1753);
    }
    return CorrectForm && WithinRange;
}
function IsValidTextFloat(Value)
{
    return RegexValidate(Value, "[0-9]+\.[0-9]*");
}
function IsValidNumberInteger(Value, NotZero, Input)
{
    if (isNaN(parseInt(Value)))
    {
        return false;
    }
    else
    {
        if (NotZero && parseInt(Value) == 0)
        {
            return false;
        }
        else
        {
            Input.value = parseInt(Value);
            return true;
        }
    }
}
function IsValidNumberFloat(Value, NotZero, Input)
{
    if (isNaN(parseFloat(Value)))
    {
        return false;
    }
    else
    {
        if (NotZero && parseFloat(Value) == 0.0)
        {
            return false;
        }
        else
        {
            Input.value = parseFloat(Value);
            return true;
        }
    }
}

function RegexValidate(Value, Pattern)
{
    if (Pattern != null && Pattern.length > 0)
    {
        var re = new RegExp(Pattern);

        return Value.match(re);
    }
    else
    {
        return false;
    }
}
