/**************************************************************
 IsAlpha: Returns a Boolean value indicating whether an 
                 expression is all alpha

 Parameters:
      Expression = Variant containing a numeric expression or 
                   string expression.

 Returns: Boolean
***************************************************************/
function IsAlpha(Expression)
{
    Expression = Expression.toLowerCase();
    RefString = "abcdefghijklmnopqrstuvwxyz-' ";

    if (Expression.length < 1) 
        return (false);

    for (var i = 0; i < Expression.length; i++) 
    {
        var ch = Expression.substr(i, 1)
        var a = RefString.indexOf(ch, 0)
        if (a == -1)
            return (false);
    }
    return(true);
}

/**************************************************************
 IsEmail: Returns a boolean if the specified Expression is a
          valid e-mail address. If Expression is null, false
          is returned.

 Parameters:
      Expression = e-mail to validate.

 Returns: boolean
***************************************************************/
function IsEmail(Expression)
{
    if (Expression == null)
        return (false);

    var supported = 0;
    if (window.RegExp)
    {
        var tempStr = "a";
        var tempReg = new RegExp(tempStr);
        if (tempReg.test(tempStr)) supported = 1;
    }
    if (!supported) 
        return (Expression.indexOf(".") > 2) && (Expression.indexOf("@") > 0);
    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    return (!r1.test(Expression) && r2.test(Expression));
}

function IsEmail2(Expression)
{
    RefString = " !";

    if (Expression.length < 1) 
        return (false);

    for (var i = 0; i < Expression.length; i++) 
    {
        var ch = Expression.substr(i, 1);
        var a = RefString.indexOf(ch, 0);

        if (a != -1)
            return (false);
    }
    return(true);
}

/**************************************************************
 IsDate: Returns a Boolean (true) if the date is true, false
         is not

 Parameters:
    - DateStr: String date in format (MM/DD/YYYY or MM-DD-YYYY or YY)

 Returns: Boolean
***************************************************************/
function IsDate(dateStr)
{
    // Checks for the following valid date formats:
    // MM/DD/YYYY   MM-DD-YYYY or YY

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

    var matchArray = dateStr.match(datePat);
    if (matchArray == null)
        return false;

    month = matchArray[1];
    day = matchArray[3];
    year = matchArray[4];
    if (month < 1 || month > 12)
        return false;

    if (day < 1 || day > 31)
        return false;

    if ((month==4 || month==6 || month==9 || month==11) && day==31)
        return false;

    if (month == 2)
    {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
        if (day>29 || (day==29 && !isleap))
            return false;
    }
    
	getnow = new Date();
    if (year < 1900)    //requirement restraint (between 1900 & current year)
        return false; 

    if (year > getnow.getFullYear())    //requirement restraint (between 1900 & current year)
        return false;    


    if ((year >= 1000) && (year <= 1752))    //DB restraint
        return false

    return true;
}