var errors = new Array();
var errorFields = new Array();
var fields = new Array();

function ValidateData(validateCommand, obj, fieldName)
{
    var equals = validateCommand.search("=");
    var command = "";
    var commandValue = "";
    var testError = true;
    var multiple = obj.search(",");
    var objID = "";
    var objID2 = "";
    if (equals >=0)
    {
        command = validateCommand.substring(0,equals);
        commandValue = validateCommand.substr(equals + 1);
    }
    else
    {
        command = validateCommand;
    }
    
    if (multiple >=0)
    {
        objID = obj.substring(0,multiple);
        objID2 = obj.substr(multiple + 1);
    }
    else
    {
        objID = obj;
        var objValue = document.getElementById(objID);    
    }
           
    //alert(objValue);
    switch(command)
    {
        case "REQ":
        case "REQUIRED":
        {
            if (eval(objValue.value.length) == 0)
            {
                try 
                {
                    this.document.getElementById(objID).style.background  = '#ffd6d6';
                    this.document.getElementById(objID+'L').style.color = 'red';
                }
                catch(e)
                {}
                errors.push(fieldName + " : " + required);
                testError = false;
            }
            else
            {
                try
                {
                    this.document.getElementById(objID+'L').style.color = '';
                    this.document.getElementById(objID).style.background  = 'white';
                }
                catch(ex)
                {}
            }
            break;
        }
        case "CONREQ":
        case "CONDREQUIRED":
        {
            if (eval(document.getElementById(objID).value.length) > 0)
                if (eval(document.getElementById(objID2).value.length) == 0)
                {
                    errors.push(fieldName + " : " + required);
                    testError = false;
                }
            break;
        }
        case "LEN":
        case "LENGTH":
        {
        if(objValue.value.length > 0)
        {
            if (eval(objValue.value.length) != eval(commandValue))
            {
                try
                {
                    this.document.getElementById(objID).style.background  = '#ffd6d6';
                    this.document.getElementById(objID+'L').style.color = 'red';
                }
                catch(e)
                {}
                errors.push(fieldName + " : " + length + commandValue);
                testError = false;
            }
            else
            {
                
                try
                {
                    this.document.getElementById(objID).style.background  = 'white';
                    this.document.getElementById(objID+'L').style.color = '';
                }
                catch(e)
                {}
             }   
        }
        else
        { 
        try
        {
            this.document.getElementById(objID+'L').style.color = this.document.getElementById(objID+'L').style.color;
        }
        catch(e)
        {}
        }
            break;
        }
        case "CONEML":
        case "CONDEMAIL":
        {
            if (eval(document.getElementById(objID).value.length) > 0 || eval(document.getElementById(objID2).value.length) > 0)
                if (!validateEmail(document.getElementById(objID2).value))
                {
                    errors.push(fieldName + " : " + condemail);
                    testError = false;
                }            
            break;
        }
        case "NUM":
        case "NUMERIC":
        {
            if (objValue.value.search("[^0-9]") >= 0)
            {
                try 
                {
                    this.document.getElementById(objID).style.background  = '#ffd6d6';
                    this.document.getElementById(objID+'L').style.color = 'red';
                }
                catch(ex)
                {}
                errors.push(fieldName + " : " + numeric);
                testError = false;
            }
            break;
        }
        case "ALNUM":
        case "ALPHANUMERIC":
        {
        if(objValue.value.length > 0)
        {
            if (objValue.value.search("[^A-Za-z0-9]") >= 0)
            {
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
                errors.push(fieldName + " : " + alphanumeric);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                this.document.getElementById(objID+'L').style.color = '';
             }   
        }
        else this.document.getElementById(objID+'L').style.color = this.document.getElementById(objID+'L').style.color;
            
            break;
        }
        case "VALIDATEALPHA":
        {
        if(objValue.value.length > 0)
        {
        try
            {
            if (!validateAlpha(objValue.value))
            {
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
                errors.push(fieldName + " : " + alphabetic);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                this.document.getElementById(objID+'L').style.color = '';
             } 
             break;  
             }
        catch(e)
        {}
        }
        else 
            this.document.getElementById(objID+'L').style.color = this.document.getElementById(objID+'L').style.color;
        break;
        }
        case "MAXLEN":
        case "MAXLENGTH":
        {
        if(objValue.value.length > 0)
        {
            if (eval(objValue.value.length) > eval(commandValue))
            {
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
                errors.push(fieldName + " : " + maxlength + commandValue);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                this.document.getElementById(objID+'L').style.color = '';
            }    
        }
        else  this.document.getElementById(objID+'L').style.color = this.document.getElementById(objID+'L').style.color;
            break;
        }
        case "MINLEN":
        case "MINLENGTH":
        {
        if(objValue.value.length > 0)
        {
            if (eval(objValue.value.length) < eval(commandValue)+1)
            {
                try
                {
                    this.document.getElementById(objID).style.background  = '#ffd6d6';
                    this.document.getElementById(objID+'L').style.color = 'red';
                }
                catch(e)
                {}
                errors.push(fieldName + " : " + minlength + commandValue);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                try
                {
                    this.document.getElementById(objID+'L').style.color = '';
                }
                catch(e)
                {}
             }   
        }
        else
        { 
        try
        {
            this.document.getElementById(objID+'L').style.color = this.document.getElementById(objID+'L').style.color;
        }
        catch(e)
        {}
        }
            break;
        }
        case "EML":
        case "EMAIL":
        {
            if (!validate_Email(objValue.value.toLowerCase()))
            {            
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
                errors.push(fieldName + " : " + email);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                this.document.getElementById(objID+'L').style.color = '';
            }    
            break;
        }
        case "DT":
        case "DATE":
        {
            break;                
        }
        case "ALPHA":
        case "ALPHABETIC":
        {
            if (objValue.value.length > 0) 
            {
                if (objValue.value.search("[^A-Za-z]") >= 0)
                {
                    this.document.getElementById(objID).style.background  = '#ffd6d6';
                    this.document.getElementById(objID+'L').style.color = 'red';
                    errors.push(fieldName + " : " + alphabetic);
                    testError = false;
                }
                else
                {
                    this.document.getElementById(objID).style.background  = 'white';
                    this.document.getElementById(objID+'L').style.color = '';
                }    
            }
            else
                 this.document.getElementById(objID+'L').style.color =  this.document.getElementById(objID+'L').style.color ;
            break;
        }
        case "LT":
        case "LESSTHAN":
        {
            if (isNaN(objValue.value))
            {
                errors.push(fieldName + " : " + numeric);
                testError = false;
            }
            else
            {
                if (eval(objValue.value) >= eval(commandValue))
                {
                    errors.push(fieldName + " : " + lessthan + commandValue);
                    testError = false;
                }
            }
            break;
        }
        case "GT":
        case "GREATERTHAN":
        {
            if (isNaN(objValue.value))
            {
                errors.push(fieldName + " : " + numeric);
                testError = false;
            }
            else
            {
                if (eval(objValue.value) <= eval(commandValue))
                {
                    errors.push(fieldName + " : " + greaterthan + commandValue);
                    testError = false;
                }
            }
            break;
        }
        case "REGEXP":
        {
            if (objValue.value.length > 0)
            {
                if (!objValue.value.match(cmdValue))
                {
                   errors.push(fieldName + " : " + regexp);
                   testError = false 
                }
            }
            break;
        }
        case "COMP":
        case "COMPARE":
        {
            if ((document.getElementById(objID).options[document.getElementById(objID).selectedIndex].value == "-1")||(document.getElementById(objID).options[document.getElementById(objID).selectedIndex].value == "- Select State -")||(document.getElementById(objID).options[document.getElementById(objID).selectedIndex].value == ""))
            {
            try
            {
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
            }
            catch(e)
            {}
                errors.push(fieldName + " : " + compare);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                try
                {
                    this.document.getElementById(objID+'L').style.color = '';
                }
                catch(e)
                {}
            }    
            break;
        }
        case "CMP":
        {
            if ((document.getElementById(objID2).value.length == 0) && (document.getElementById(objID).value.length == 0))
             {
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
                this.document.getElementById(objID2).style.background  = '#ffd6d6';
                this.document.getElementById(objID2+'L').style.color = 'red';
                errors.push(fieldName + " : " + cmp);
                testError = false;
            }
            else
            if (!(document.getElementById(objID).value === document.getElementById(objID2).value))
            {
                this.document.getElementById(objID2).style.background  = '#ffd6d6';
                this.document.getElementById(objID2+'L').style.color = 'red';
                errors.push(fieldName + " : " + cmp);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID2).style.background  = 'white';
                this.document.getElementById(objID).style.background  = 'white';
                this.document.getElementById(objID+'L').style.color = '';
                this.document.getElementById(objID2+'L').style.color = '';
            }    
            break;
        }

        case "MY":
        case "MONEY":
        {
            if (checkNumeric(document.getElementById(objID),",","."))
            {
                this.document.getElementById(objID).style.background  = '#ffd6d6';
                this.document.getElementById(objID+'L').style.color = 'red';
                errors.push(fieldName + " : " + money);
                testError = false;
            }
            else
            {
                this.document.getElementById(objID).style.background  = 'white';
                this.document.getElementById(objID+'L').style.color = '';
            }    
            break;
        }
        case "URL":
        {
            if (!isUrl(objValue.value))
            {
                errors.push(fieldName + " : " + url);
                testError = false;
            }
            break;
        }
        case "CHECKED":
        {
            if (!(document.getElementById(objID).checked))
            {
                try
                {
                    this.document.getElementById(objID+'L').style.color = 'red';
                }
                catch(e)
                {}
                errors.push(fieldName + " : " + agree);
                testError = false;
            }
            else
            {
				this.document.getElementById(objID).style.background  = 'white';
				this.document.getElementById(objID+'L').style.color = '';
            }
            break;
        }        
    }
    
    if (!testError)
    {
        errorFields.push(objID);
    }
    
    fields.push(objID);
}

function validate_Email(strValue) {
    var objRegExp  = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/;
    //check for valid email
    return objRegExp.test(strValue);
}

function BuildErrorDiv(divName)
{
    var errorDiv = document.getElementById(divName);
        
    if (errors.length > 0)
    {
        errorDiv.style.display = "block";
        html = "<span><strong>We are sorry, but we are unable to process your request for the following reasons:</strong></span><ul style='width:100%;'>";
        for (i = 0; i < errors.length; i++)
        {
            if(errors[i] != "")
                html += "<li style='width:100%;'>" + errors[i] + "</li>";
        }
        html += "</ul>";
        errorDiv.innerHTML = html;
        
        return false;
    }
    
    return true;
}

function BuildAlertWindow()
{        
    if (errors.length > 0)
    {
        var errorMsg = "We are sorry, but we are unable to process your request for the following reasons: \n\n";
        for (i = 0; i < errors.length; i++)
        {
            if(errors[i] != "")
                errorMsg+= errors[i] + "\n";
        }        
        //alert(errorMsg);
        return false;
    }
    return true;
}

function ShowErrorSigns()
{
    for (i=0;i<fields.length;i++)
    {
        if (document.getElementById("err_" + fields[i]))
            document.getElementById("err_" + fields[i]).style.display = "none";
    }
    
    for(i = 0; i < errorFields.length; i++)
    {
        if (document.getElementById("err_" + errorFields[i]))
        {
            document.getElementById("err_" + errorFields[i]).style.display = "block";
            
            //document.getElementById("img_" + errorFields[i]).alt = errors[i];
            //document.getElementById("img_" + errorFields[i]).title = errors[i];
        }
    }
}

function checkNumeric(objName,comma,period)
{
    var checkOK = "0123456789" + comma + period;
    var checkStr = objName;
    
    var allValid = true;
    var decPoints = 0;
    var allNum = "";
    
    for (i = 0;  i < checkStr.value.length;  i++)
    {
        ch = checkStr.value.charAt(i);
        for (j = 0;  j < checkOK.length;  j++)
        if (ch == checkOK.charAt(j))
            break;
        if (j == checkOK.length)
        {
            allValid = false;
            break;
        }
        if (ch != ",")
           allNum += ch;
    }
    if (!allValid)
    {	
        return (false);
    }
}

function isUrl(val) {
    if (val == "")
        return true;
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(val);
}

function validateAlpha(inputValue)
{
    var separator = " ";
    objString = inputValue.replace('-',' ');
    array = objString.split(separator);
    for(i = 0; i < array.length; i++)
    {
        if (array[i].search("[^A-Za-z]") >= 0)
        {
            valid = false;
            break;
        }
        else
            valid = true;
    }
    return valid;
}
