var CS_g_sAlpha="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.,-'!:; "
var CS_g_sNumeric="0123456789"
var CS_g_sPhone="0123456789-()ext.EXT#+/: "
var CS_g_sAlphanumeric="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.,-'!:;#/ "
var CS_g_sUseridpassword="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_:"
var CS_g_sName="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -.'"

function CS_Form_ValidateFormField(felm, vstr)
{
    var fev = felm.value;
    var nstr = felm.name;
    var amsg="";
    
    if (!CS_Str_CheckString(vstr, fev)) {    
        if(vstr.indexOf("T#+")!=-1)
            amsg=" must be numeric, but can contain 'ext.' or '#' for extensions.";
        if(vstr=="0123456789")
            amsg=" must be numeric.";
        if(vstr.indexOf("Z -")!=-1)
            amsg=" must contain only the characters: 'A-Z', ' ', '-', '.'.";
        if(vstr.indexOf("Z_")!=-1)
            amsg=" must contain only the characters: '0-9', 'A-Z','_' ";
        if(vstr.indexOf("; ")!=-1)
            amsg=" must contain only the characters: 'A-Z'.";
        if(vstr.indexOf(";#/")!=-1)
            amsg=" must contain only the characters: '0-9', 'A-Z','.,-'!:;# '";
        alert(fev+"\r"+nstr+amsg);
        felm.focus();
        felm.select();
        return false;
    }

    return true;
}

function CS_Email_IsValidEmail(obj)
{
    disallowed="$%^*()={}[];#<>,?|\\!\'\" ";
    valid=true;
    if(obj.indexOf('@')<1){
        valid=false;
    }
    if(obj.indexOf('.')==0){
        valid=false;
    }
    for(var i=0;i<disallowed.length;i++) {
        if(obj.indexOf(disallowed.substring(i,i+1))!=-1) {
            alert("Illegal character: '"+disallowed.substring(i,i+1)+"' found in email address");
            valid=false;
        }
    }
    copy=obj.substring(obj.indexOf('@')+1,obj.length);
    if(copy.indexOf('@')!=-1){
        valid=false;
    }
    if(copy.indexOf(".")<1){
        valid=false;
    }
    if(copy.lastIndexOf(".")+1==copy.length){
        valid=false;
    }

    copy=obj;
    while(copy.indexOf('.')!=-1){
        copy=copy.substring(copy.indexOf('.')+1,copy.length);
        if(copy.indexOf('.')==0){
            valid=false;
        }
    }

    return valid;
}

function CS_Date_IsValidDate(as_date,as_InputLabel)
{
    var ls_month;
    var ls_day;
    var ls_maxDay;
    var ls_year;

    if(!CS_Str_CheckString("1234567890/",as_date)) {
        alert("Invalid character in the date: '"+as_date+"'");
        return(false);
    }

    ls_month="";
    for(i=0;i <as_date.length;i++){
        if(as_date.charAt(i)=='/')
            break;
        ls_month=ls_month+as_date.charAt(i);
    }
 
    ls_day="";
    i++;
    for(i=i;i <as_date.length;i++){
        if(as_date.charAt(i)=='/')
            break;
        ls_day=ls_day+as_date.charAt(i);
    }
    
    ls_year="";
    i++;
    for(i=i;i <as_date.length;i++){
        if(as_date.charAt(i)==' ')
            break;
        ls_year=ls_year+as_date.charAt(i);
    }

    if(ls_year==""){
        alert("Year is missing for "+as_InputLabel+".");
        return(false);
    }

    if(ls_year.length>4){
        alert("Year is too long: ("+ls_year+") for "+as_InputLabel+".");
        return(false);
    }

    if(ls_year.length <4){
        alert("Year is too short: ("+ls_year+") for "+as_InputLabel+".");
        return(false);
    }

    if(ls_year < 1 || ls_year > 9999){
        alert("Year must be between 0001 and 9999 for: "+as_InputLabel+".");
        return(false);
    }

    ls_maxDay=CS_Date_GetMaxDayOfMonth(ls_month,ls_year);
    if(ls_day>ls_maxDay){
        alert("The day you entered is not a valid day ("+ls_day+") for "+as_InputLabel+".");
        return(false);
    }

    return(true);
}

function CS_Date_IsValidDateEx(sMonth, sDay, sYear, as_InputLabel)
{
    var ls_maxDay;
    var sDate = sMonth + "/" + sDay + "/" + sYear;
    
    if(!CS_Str_CheckString("1234567890/",sDate)) {
        alert("Invalid character in the date: '"+sDate+"'");
        return(false);
    }

    if(sMonth=="0"){
        alert("Please select a month for: " + as_InputLabel+".");
        return(false);
    }
    
    if(sDay=="0"){
        alert("Please select a day for: " + as_InputLabel+".");
        return(false);
    }
    
    if(sYear==""){
        alert("Please specify a year for: "+as_InputLabel+".");
        return(false);
    }

    if(sYear.length != 4){
        alert("Year must be specified with 4 digits (e.g. 2001) for: "+as_InputLabel+".");
        return(false);
    }

    if(sYear < 1 || sYear > 9999){
        alert("Year must be between 0001 and 9999 for: "+as_InputLabel+".");
        return(false);
    }

    ls_maxDay=CS_Date_GetMaxDayOfMonth(sMonth, sYear);
    if(sDay>ls_maxDay){
        alert("The day you entered is not a valid day for: "+as_InputLabel+".");
        return(false);
    }

    return(true);
}

function CS_Date_GetMaxDayOfMonth(as_month,as_year)
{
    if(as_month==1)return(31);
    if(as_month==2){
        if((parseInt(as_year),10)%4==0) return(29);
        else return(28);
    }
    if(as_month==3)return(31);
    if(as_month==4)return(30);
    if(as_month==5)return(31);
    if(as_month==6)return(30);
    if(as_month==7)return(31);
    if(as_month==8)return(31);
    if(as_month==9)return(30);
    if(as_month==10)return(31);
    if(as_month==11)return(30);
    if(as_month==12)return(31);
}

function CS_Date_IsValidTimeEx(sHour, sMin, as_InputLabel)
{
    if (sHour=="0")
    {
        alert("Please select the hour for: " + as_InputLabel+".");
        return(false);
    }
    
    if (sMin=="0")
    {
        alert("Please select the minutes for: " + as_InputLabel+".");
        return(false);
    }

    return(true);
}

function CS_Str_CheckString(as_template, as_string)
{
    var lb_valid=true;
    var ch;
    
    for(var i=0; i<as_string.length; i++){
        ch=as_string.charAt(i);
        if (as_template.indexOf(ch)<0) {
            lb_valid=false;
            break;
        }
    }

    return (lb_valid);
}

function CS_Str_IsBlank(sStr)
{
    var whitespace = " \t\n\r";
    
    var iLen = sStr.length;
    var fAllBlank = true;

    var i=0;
    while (i < iLen && fAllBlank) {
        var c = sStr.charAt(i);
        if (whitespace.indexOf(c) == -1)
        {
            fAllBlank = false;
        }
        i++;
    }
    
    return (fAllBlank);
}

