
var myErrorObject; 
/* Author: Jesse Williams
 * Date: February 2008
 *
 * Description: Form validation for Launch Net Registration Pages.
 * Capture all the elements in the form and determine if an element
 * requires validation.
 *
 * Inputs: None.
 * Outputs: True | False; if false the form is not submitted.
 */
 
/* getFormElements obtains all the elements on the form and verifies if the element
 * should be validated.  It identifies an element to be validated by a suffix that
 * contains an "_" with a corresponding field name.  If the id of the element does not
 * contain an "_" it will be ignored.
 *
 * The suffix is then parsed to obtain the field name.  The field name is appended to 
 * the signature of the validation method and executed.  If the field fails validation
 * the user is notified - note, only the first failure is reported.
 */
/***** Begin getFormElements *****/
function FormValidation()
{
   
    
    
    var myValidator;
    
    
    
    ////////////////////////////////////////////////////////
    // Public Functions ////////////////////////////////////
   
    

    this.getFormElements = getFormElements;
    function getFormElements() {
        
//        myErrorObject = CommonUtil.GetValidatorErrObjRef();
//        myValidator = CommonUtil.GetValidatorRef();
        myErrorObject = new  ValidationErrorObject();
        var myValidator = new Validator();
        var formForValidation = document.forms[0];
        var retVal = true;
        var FunctArray = new Array;
        var int = 0;
        var idx = 0;    
        
        //Reflect on the validator object and pick out it's methods.  Yes I said
        // REFLECT.
        for (var member in myValidator) 
           {   
               //var elementID1 = formForValidation.elements[int].id;               
               //if(validatechkPDA(elementID1)

                {
                   FunctArray[int] = member;
                   int++;
               }
           }   
           
            
        
        for(var i=0; i < formForValidation.length; i++) 
        {
        
            var elementID = formForValidation.elements[i].id;
            var suffix = elementID.substr(elementID.lastIndexOf("_"));

                if(suffix.indexOf("_") != -1)
                 {                                   
               
                        idx = FunctArray.indexOfString("validate" + suffix.substr(suffix.indexOf("_") + 1));    
                            
                        if(idx > -1)
                          {
                                if (typeof formForValidation.elements[i] != "undefined")
                                {
                                    if (!(eval("myValidator." + FunctArray[idx] + "(formForValidation.elements[i])"))) {
                                        myErrorObject.CreateErrorContainer(formForValidation.elements[i], myErrorObject.GetErrorMessage());
                                        if (retVal) { retVal = false; }
                                    }
                                    else {
                                        var errorElt = document.getElementById(GetElementId(formForValidation.elements[i]) + "Error");
                                        if (errorElt != null) {                                                                                      
                                            errorElt.style.display = "none";
                                            errorElt.innerHTML = "";
                                        }
                                    }
                                }
                           }     
                  
             
             }
                
        }
        return retVal;
    }
    /***** End getFormElements *****/
}

/* ValidationErrorObject class handles reporting the failure messages to the user.
 * Inputs: None.
 * Outputs: None.
 * Public Properties: GetErrorMessage, SetErrorMessage, GetFieldErrorMessage
 * Public Methods: CreateErrorContainer, RemoveErrorContainer
 * Private Variables: _errorMessage
 * Constants used to build error messages.
 *
 * SetErrorMessage(value) sets the error message.
 * GetErrorMessage returns the error message set by the validator.
 * GetFieldErrorMessage(code) returns the appropriate error code.
 *
 * CreateErrorContainer generates a division in the HTML to display error message.
 * RemoveErrorContainer removes the division in the HTML that displays the error message.
 */

/***** Begin Error Object Class *****/
function ValidationErrorObject()
{
    /***** CONSTRUCTORS *****/
    this.CreateErrorContainer = CreateErrorContainer;
    this.RemoveErrorContainer = RemoveErrorContainer;
    /***** END CONSTRUCTORS *****/
       
    /***** PUBLIC PROPERTIES *****/   
    this.GetErrorMessage = GetErrorMessage;
    function GetErrorMessage()
    {
        return _errorMessage;
    }
    this.SetErrorMessage = SetErrorMessage;
    function SetErrorMessage(value)
    {
        _errorMessage = value;
        //CommonUtil.SetValidatorErrObjRef(this);
    }
    this.GetFieldErrorMessage = GetFieldErrorMessage;
    function GetFieldErrorMessage(code)
    {
        switch(code)
        {
            case "ADDRESSMAXLENGTH":
                return ADDRESSMAXLENGTH;
                break;
            case "HASCRLF":
                return HASCRLF;
                break;
            case "HASDIGITS":
                return HASDIGITS;
                break;
            case "HASSPACES":
                return HASSPACES;
                break;
            case "HASFICOCHARACTERS":
                return HASFICOCHARACTERS;
                break;
            case "HASFICODELIMETER":
                return HASFICODELIMETER;
                break;
            case "INVALIDDATE":
                return INVALIDDATE;
                break;
            case "INVALIDEMAIL":
                return INVALIDEMAIL;
                break;
            case "INVALIDPHONENUMBER":
                return INVALIDPHONENUMBER;
                break;
            case "INVALIDSSN":
                return INVALIDSSN;
                break;
            case "INVALIDSTATE":
                return INVALIDSTATE;
                break;
            case "INVALIDZIPCODE":
                return INVALIDZIPCODE;
                break;
            case "ISATITLE":
                return ISATITLE;
                break;
            case "ISREQUIRED":
                return ISREQUIRED;
                break;
            case "ISREQUIREDLIST":
                return ISREQUIREDLIST;
                break;
            case "MAXLENGTH1":
                return MAXLENGTH1;
                break;
            case "MAXLENGTH2":
                return MAXLENGTH2;
                break;
            case "MAXLENGTH4":
                return MAXLENGTH4;
                break;
            case "MAXLENGTH15":
                return MAXLENGTH15;
                break;
            case "MAXLENGTH20":
                return MAXLENGTH20;
                break;
            case "MINLENGTH1":
                return MINLENGTH1;
                break;
            case "MINLENGTH2":
                return MINLENGTH2;
                break;
            case "NOTALPHA":
                return NOTALPHA;
                break;
            case "TRIPLEREPEAT":
                return TRIPLEREPEAT;
                break;
            case "ZIPCODEMAXLENGTH":
                return ZIPCODEMAXLENGTH;
                break;
            case "ZIPCODEMINLENGTH":
                return ZIPCODEMINLENGTH;
                break;
            case "CONFIRMEMAIL":
                return CONFIRMEMAIL;
                break;
            case "SELECTOPTION":
                return SELECTOPTION;
                break;
            case "TESTNOTALLOW":
                return TESTNOTALLOW;
                break;
            default:
                return "Unknown error.";
                break;
        }
    }
    /***** END PUBLIC PROPERTIES *****/
    
    /***** PRIVATE VARIABLES *****/
    var _errorMessage = null;
    /***** END PRIVATE VARIABLES *****/
    
    /***** ERROR MESSAGE CONSTANTS *****/
    var ADDRESSMAXLENGTH = "cannot exceed 50 characters.";
    //var CONFIRMEMAIL = "values do not match.";
    var CONFIRMEMAIL = "for e-mail must match";
    var HASCRLF = "cannot contain carriage returns.";
    var HASDIGITS = "cannot contain digits.";
    var HASSPACES = "cannot contain spaces.";
    //HASFICOCHARACTERS = "cannot contain the characters: '@', '#', '$', '%', '*', '^', '!', '{', '}', '[', ']', '?', '+', '-', '=', '\', '/', ',', '.', '\"'";
    var HASFICOCHARACTERS = "* Value cannot contain invalid characters.";
    var HASFICODELIMETER = "cannot contain the character { .";
    var INVALIDDATE = "* Value for date is invalid.";
    var INVALIDEMAIL = "* Value for email is invalid.";
    var INVALIDPHONENUMBER = "* Value for mobile number is invalid.";
    var INVALIDSSN = "* Value for social security number is invalid.";
    var INVALIDSTATE = "* Value for state abbrevation is invalid.";
    var INVALIDZIPCODE = "* Value for zip code is invalid.";
    var ISATITLE = "* Value for first name cannot be a title.";
    var ISREQUIRED = "is required.";
    var ISREQUIREDLIST = "* Please select an option";
    var MAXLENGTH1 = "cannot exceed one (1) characters in length.";
    var MAXLENGTH2 = "cannot exceed two (2) characters in length.";
    var MAXLENGTH4 = "cannot exceed four (4) characters in length.";
    var MAXLENGTH15 = "cannot exceed 15 characters in length.";
    var MAXLENGTH20 = "cannot exceed 20 characters in length.";
    var MINLENGTH1 = "must be at least one (1) character in length.";
    var MINLENGTH2  = "must be at least two (2) characters in length.";
    var NOTALPHA = "cannot contain non-alpha characters.";
    var TRIPLEREPEAT = "cannot triple repeat characters.";
    var ZIPCODEMAXLENGTH = "* Value for zip code cannot exceed ten (10) digits.";
    var ZIPCODEMINLENGTH = "* Value for zip code must be at least five (5) digits.";
    var SELECTOPTION = "* Please select an option";
    var TESTNOTALLOW = "Value for first name cannot be TEST,TESTING or First";
    /***** END ERROR MESSAGE CONSTANTS *****/


        
    function CreateErrorContainer(myField, errMsg)
    {
        var errorContainer = null;
        
        var errorElt = document.getElementById(GetElementId(myField)+"Error");
        if (errorElt != null) {
            errorElt.style.display = "block";
            errorElt.innerHTML = errMsg;
        }
        else {
            this.RemoveErrorContainer(myField);

            if ((errMsg) && (errMsg.length > 0)) {
                errorContainer = document.createElement("div");
                errorContainer.setAttribute("id", "error_" + myField.name);
                var varState = myField.name.split('$');
                if (varState[2] == "StateName") {
                    errorContainer.className = "errorContainerState";
                }
                else {
                    errorContainer.className = "errorContainer";
                }
                errorContainer.appendChild(document.createTextNode(errMsg));

                myField.parentNode.insertBefore(errorContainer,myField.nextSibling);
            }

            this.SetErrorMessage(null);
        }
    }
    
    function RemoveErrorContainer(myField)
    {
        if (document.getElementById("error_" + myField.name))
	    {
            var rmElem = document.getElementById("error_" + myField.name);
	        rmElem.parentNode.removeChild(rmElem);
	    }
    }
}
/***** End Error Object Class *****/


// ========================================
//         VALIDATOR CONSTRUCTOR
// ========================================
function Validator()
{
	this.validateRegistration = validateRegistration ;
	this.validatePrefix = validatePrefix ;
	this.validateFirstName = validateFirstName ;
	this.validateMiddleInitial = validateMiddleInitial ;
	this.validateLastName = validateLastName ;
	this.validateSuffix = validateSuffix ;
	this.validateAddress1 = validateAddress1 ;
	this.validateAddress2 = validateAddress2 ;
	this.validateCity = validateCity ;
	this.validateState = validateState ;
	this.validateZipCode = validateZipCode;
	this.validateRequiredList = validateRequiredList;
	this.validatechkAge = validatechkAge;
	
	this.validatechkPDA = validatechkPDA;
	this.validatechkEmail = validatechkEmail;
	this.validatechkMobile = validatechkMobile;
	this.validateEmailAddress = validateEmailAddress ;	
    this.validateConfirmEmail = validateConfirmEmail;
    this.validateStateName = validateStateName;
    this.validateddlMobileCarrier = validateddlMobileCarrier;
    this.validatetxtMobile = validatetxtMobile;
    this.validatetxtRetypeMobile = validatetxtRetypeMobile;
    
    
    
    
// ========================================
//        FIELD VALIDATION FUNCTIONS
// ========================================

    function validateRegistration()
    {
//        myValidator.validatePrefix(document.forms[0].prefix);
//        myValidator.validateFirstName(document.forms[0].firstname);
//        myValidator.validateMiddleInitial(document.forms[0].middleinitial);
//        myValidator.validateLastName(document.forms[0].lastname);
//        myValidator.validateSuffix(document.forms[0].suffix);
//        myValidator.validateAddress1(document.forms[0].address1);
//        myValidator.validateAddress2(document.forms[0].address2);
//        myValidator.validateCity(document.forms[0].city);
//        myValidator.validateState(document.forms[0].state);
//        myValidator.validateZipCode(document.forms[0].zipcode);
//        myValidator.validateEmailAddress(document.forms[0].emailaddress);
    }
    
	function validatePrefix(myField)
	{
	    var retVal = true;
		var myValue = getValue(myField);

		if (!(hasNoDigits(myValue)))
		{
			myErrorObject.SetErrorMessage("* Value for prefix " + myErrorObject.GetFieldErrorMessage("HASDIGITS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if (!(hasNoSpaces(myValue)))
		{
			myErrorObject.SetErrorMessage("* Value for prefix " + myErrorObject.GetFieldErrorMessage("HASSPACES"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if (!(hasNoFicoDelimeter(myValue)))
		{
			myErrorObject.SetErrorMessage("* Value for prefix " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if (!(hasNoCrLf(myValue)))
		{
			myErrorObject.SetErrorMessage("* Value for prefix " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if (!(maxLength(myValue,4)))
		{
			myErrorObject.SetErrorMessage("* Value for prefix " + myErrorObject.GetFieldErrorMessage("MAXLENGTH4"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }

		return retVal
	}
    
	function validateFirstName(myField)
	{
	    var retVal = true;	    
		var myValue = getValue(myField);
		
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoDigits(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("HASDIGITS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoChars(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("HASFICOCHARACTERS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(notATitle(myValue)))
		{
		    myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("ISATITLE"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(notTripleRepeat(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("TRIPLEREPEAT"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(minLength(myValue, 2)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("MINLENGTH2"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 15)))
		{
		    myErrorObject.SetErrorMessage("* Value for first name " + myErrorObject.GetFieldErrorMessage("MAXLENGTH15"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if (!(notATestWord(myValue))) {
		    myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("TESTNOTALLOW"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		return retVal;
	}

	function validateMiddleInitial(myField)
	{
	    var retVal = true;
	    var myValue = getValue(myField);
	    
	    if(!(hasNoDigits(myValue)))
	    {
	        myErrorObject.SetErrorMessage("* Value for middle initial " + myErrorObject.GetFieldErrorMessage("HASDIGITS"));
		    retVal = false;
		    return;
	    }
	    else { myErrorObject.RemoveErrorContainer(myField); }
	    if(!(isAlpha(myValue)))
	    {
	        myErrorObject.SetErrorMessage("* Value for middle initial " + myErrorObject.GetFieldErrorMessage("NOTALPHA"));
		    retVal = false;
		    return;
	    }
	    else { myErrorObject.RemoveErrorContainer(myField); }
	    if(!(hasNoSpaces(myValue)))
	    {
	        myErrorObject.SetErrorMessage("* Value for middle initial " + myErrorObject.GetFieldErrorMessage("HASSPACES"));
		    retVal = false;
		    return;
	    }
	    else { myErrorObject.RemoveErrorContainer(myField); }
	    if(!(hasNoFicoDelimeter(myValue)))
	    {
	        myErrorObject.SetErrorMessage("* Value for middle initial " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
	    }
	    else { myErrorObject.RemoveErrorContainer(myField); }
	    if(!(hasNoCrLf(myValue)))
	    {
	        myErrorObject.SetErrorMessage("* Value for middle initial " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
	    }
	    else { myErrorObject.RemoveErrorContainer(myField); }
	    if(!(maxLength(myValue, 1)))
	    {
	        myErrorObject.SetErrorMessage("* Value for middle initial " + myErrorObject.GetFieldErrorMessage("MAXLENGTH1"));
		    retVal = false;
		    return;
	    }
	    else { myErrorObject.RemoveErrorContainer(myField); }		
		
		return retVal;
	}

	function validateLastName(myField)
	{
		var retVal = true;
		var myValue = getValue(myField);
				
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoDigits(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("HASDIGITS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoChars(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("HASFICOCHARACTERS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(notTripleRepeat(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("TRIPLEREPEAT"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 20)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("MAXLENGTH20"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(minLength(myValue, 2)))
		{
		    myErrorObject.SetErrorMessage("* Value for last name " + myErrorObject.GetFieldErrorMessage("MINLENGTH2"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}

	function validateSuffix(myField)
	{
	    var retVal = true;
		var myValue = getValue(myField);
		
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for suffix " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for suffix " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 4)))
		{
		    myErrorObject.SetErrorMessage("* Value for suffix " + myErrorObject.GetFieldErrorMessage("MAXLENGTH4"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}

	function validateAddress1(myField)
	{
		var retVal = true;
		var myValue = getValue(myField);
		
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 50)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("ADDRESSMAXLENGTH"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}

	function validateAddress2(myField)
	{
	    var retVal = true;
		var myValue = getValue(myField);
		
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 50)))
		{
		    myErrorObject.SetErrorMessage("* Value for address " + myErrorObject.GetFieldErrorMessage("ADDRESSMAXLENGTH"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}
	
	function validateCity(myField)
	{
	    var retVal = true;
		var myValue = getValue(myField);
		
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for city " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoDigits(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for city " + myErrorObject.GetFieldErrorMessage("HASDIGITS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for city " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for city " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(minLength(myValue, 1)))
		{
		    myErrorObject.SetErrorMessage("* Value for city " + myErrorObject.GetFieldErrorMessage("MINLENGTH1"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 20)))
		{
		    myErrorObject.SetErrorMessage("* Value for city " + myErrorObject.GetFieldErrorMessage("MAXLENGTH20"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}

	function validateState(myField)
	{
		var retVal = true;
		var myValue = getValue(myField);
		
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for state " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for state " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoDigits(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for state " + myErrorObject.GetFieldErrorMessage("HASDIGITS"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for state " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(isValidState(myValue)))
		{
		    myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("INVALIDSTATE"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(minLength(myValue, 2)))
		{
		    myErrorObject.SetErrorMessage("* Value for state " + myErrorObject.GetFieldErrorMessage("MINLENGTH2"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 2)))
		{
		    myErrorObject.SetErrorMessage("* Value for state " + myErrorObject.GetFieldErrorMessage("MAXLENGTH2"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}
	
	function validateZipCode(myField)
	{
	    var retVal = true;
		var myValue = getValue(myField);
		
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for zip code " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoSpaces(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for zip code " + myErrorObject.GetFieldErrorMessage("HASSPACES"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoCrLf(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for zip code " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(hasNoFicoDelimeter(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Value for zip code " + myErrorObject.GetFieldErrorMessage("HASFICODELIMETER"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(minLength(myValue, 5)))
		{
		    myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("ZIPCODEMINLENGTH"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(maxLength(myValue, 10)))
		{
		    myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("ZIPCODEMAXLENGTH"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		if(!(isValidZipCode(myValue)))
		{
		    myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("INVALIDZIPCODE"));
		    retVal = false;
		    return;
		}
		else { myErrorObject.RemoveErrorContainer(myField); }
		
		return retVal;
	}

	function validateEmailAddress(myField) {
	    if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
	        var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
	    }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;

        if (temchkEmail || !(temchkPDA || temchkEmail || temchkMobile)) {
            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage("* Value for e-mail " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
                retVal = false;
                return;
            }
            else { myErrorObject.RemoveErrorContainer(myField); }
            if (!(isValidEmailAddress(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("INVALIDEMAIL"));
                retVal = false;
                return;
            }
            else { myErrorObject.RemoveErrorContainer(myField); }
            if (!(hasNoSpaces(myValue))) {
                myErrorObject.SetErrorMessage("* Value for email " + myErrorObject.GetFieldErrorMessage("HASSPACES"));
                retVal = false;
                return;
            }
            else { myErrorObject.RemoveErrorContainer(myField); }
            if (!(hasNoCrLf(myValue))) {
                myErrorObject.SetErrorMessage("* Value for email " + myErrorObject.GetFieldErrorMessage("HASCRLF"));
                retVal = false;
                return;
            }
            else { myErrorObject.RemoveErrorContainer(myField); }

            return retVal;
        }
        else {
            var myValue = getValue(myField);
            if ((!temchkEmail) && (isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
	}
	
	function validateRequiredList(myField)
	{
	    var retVal = true;    	    
	    var selectCount = 0;
	    var fieldName = myField.name;
	    
	    for(var i=0; i<eval("document.forms[0]." + fieldName + ".length"); i++)
	    {
	        if(eval("document.forms[0]." + fieldName + "[i].checked"))
	        {
	            selectCount++;
	        }
	        
	    }	    
        if(selectCount == 0)
        {
            myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("ISREQUIREDLIST"));
	        retVal = false;
	        return;
        }
	    else { myErrorObject.RemoveErrorContainer(myField); }
	    
	    return retVal;
	}

	function validateConfirmEmail(myField) {
	    if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
	        var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
	    }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkEmail || !(temchkPDA || temchkEmail || temchkMobile)) {
            var myValue = getValue(myField);
            var mainEmailValue = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_EmailAddress').value;

            if (validateEmailAddress(myField)) {
                if (myValue != mainEmailValue) {
                    myErrorObject.SetErrorMessage("* Values " + myErrorObject.GetFieldErrorMessage("CONFIRMEMAIL"));
                    return false;
                }
                else {
                    myErrorObject.RemoveErrorContainer(myField);
                    return true;
                }
            }
            else {
                return false;
            }
        }
        else {
            var myValue = getValue(myField);
            if ((!temchkEmail) && (isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
	}
	
	function validateStateName(myField)
	{
		var retVal = true;
		var myValue = getValue(myField);
		
		if(!(isNotNull(myValue)))
		{
		    myErrorObject.SetErrorMessage("* Please select an option");
		    return false;
		}
		else 
		{ 
		    myErrorObject.RemoveErrorContainer(myField); 
		    return true;
		}
    }

    function validateddlMobileCarrier(myField) {
        if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
            var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
        }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkMobile || !(temchkPDA || temchkEmail || temchkMobile)) {

            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage("* Please select a carrier");
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
        else {
            var myValue = getValue(myField);
            if ((!temchkMobile) && (isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
    }

    function validatetxtMobile(myField) {
        if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
            var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
        }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkMobile || !(temchkPDA || temchkEmail || temchkMobile)) {
            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage("* Value for mobile number is required");
                return false;
            }
            else if (!(isNumeric(myValue))) {
            myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("INVALIDPHONENUMBER"));
            return false;
            }
            else if (!(minLength(myValue, 10))) {
                myErrorObject.SetErrorMessage("* mobile number should be 10 digit" );
                return  false;                
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
        else {
            var myValue = getValue(myField);
            if ((!temchkMobile) && (isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
    }


    function validateMobileNumber(myField) {
        if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
            var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
        }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkMobile || !(temchkPDA || temchkEmail || temchkMobile)) {
            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage("* Value for mobile number " + myErrorObject.GetFieldErrorMessage("ISREQUIRED"));
                return false;
            }

            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
             }

                 
        }
        else {
            myErrorObject.RemoveErrorContainer(myField);
            return true;
    }

    
    }


    function validatetxtRetypeMobile(myField) {
        if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
            var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
        }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkMobile || !(temchkPDA || temchkEmail || temchkMobile)) {
            var myValue = getValue(myField);
            var mainEmailValue = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_txtMobile').value;

            if (validateMobileNumber(myField)) {
                if (myValue != mainEmailValue) {
                    myErrorObject.SetErrorMessage("* Values for mobile numbers must match");
                    return false;
                }
                else {
                    myErrorObject.RemoveErrorContainer(myField);
                    return true;
                }
            }
            else {
                return false;
            }
        }
        else {
            var myValue = getValue(myField);
            if ((!temchkMobile) && (isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
    }
    

	function validatechkAge(myField) {
	    var retVal = true;
	    var myValue = getValue(myField);

	    if (!(isNotNull(myValue))) {
	        myErrorObject.SetErrorMessage("* You must be 18 years old or older to sign up");
	        return false;
	    }
	    else {
	        myErrorObject.RemoveErrorContainer(myField);
	        return true;
	    }

	}

	function validatechkPDA(myField) {
	    var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkPDA || !(temchkPDA || temchkEmail || temchkMobile)) {
            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
        else {
            myErrorObject.RemoveErrorContainer(myField);
            return true;
        }

	}

	function validatechkMobile(myField) {
	    if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
	        var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
	    }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkMobile || !(temchkPDA || temchkEmail || temchkMobile)) {
            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
        else {
            myErrorObject.RemoveErrorContainer(myField);
            return true;
        }

	}

	function validatechkEmail(myField) {
	    if (document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA') != null) {
	        var temchkPDA = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkPDA').checked;
	    }
        var temchkEmail = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkEmail').checked;
        var temchkMobile = document.getElementById(myField.id.substr(0, myField.id.lastIndexOf("_")) + '_chkMobile').checked;


        if (temchkEmail || !(temchkPDA || temchkEmail || temchkMobile)) {
            var retVal = true;
            var myValue = getValue(myField);

            if (!(isNotNull(myValue))) {
                myErrorObject.SetErrorMessage(myErrorObject.GetFieldErrorMessage("SELECTOPTION"));
                return false;
            }
            else {
                myErrorObject.RemoveErrorContainer(myField);
                return true;
            }
        }
        else {
            myErrorObject.RemoveErrorContainer(myField);
            return true;
        }

	}		

// ========================================
//        BASE  VALIDATOR FUNCTIONS
// ========================================

	function getValue(myField)
	{
		var myValue = '';
		switch(myField.type)
		{
		    case "button":
		        myValue = myField.value;
		        break;
			case "checkbox" :
				if (myField.checked) {
				    myValue = myField.value;
				    break;
				}
				break;
			case "file" :
			    myValue = myField.value;
			    break;
			case "hidden" :
			    myValue = myField.value;
			    break;
			case "password" :
			    myValue = myField.value;
			    break;
			case "radio" :
				if (myField.checked) {
				    myValue = myField.value;
				    break;
				}
				break;
			case "reset" :
			    myValue = myField.value;
			    break;
			case "select-one" :
				var si = myField.selectedIndex;
				if (si > 0) {
				    myValue = myField.options[si].value;
				    break;
				}
				break;
			case "select-multiple" :
			    myValue = myField.value;
			    break;
			case "text" :
			    myValue = myField.value;
			    break;
			case "textarea" :
			    myValue = myField.value;
			    break;
			default :
			    myValue = myField.value;
			    break;
		}
		return myValue;
	}

	function isNotNull(myText)
	{
		if ( (myText.length > 0) && (myText.trim().length > 0) ) {
			return true;
		} else {
			// alert("Not Null!");
			return false;
		}
	}

	function isNumeric(myText)
	{
		var charpos = myText.search("[^0-9]"); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Non-Numeric character at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}

	function isAlpha(myText)
	{
		var charpos = myText.search("[^A-Za-z]"); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Non-Alpha character at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}

	function isAlphaNumeric(myText)
	{
		var charpos = myText.search("[^A-Za-z0-9]"); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Non-AlphaNumeric character at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}

	function hasNoDigits(myText)
	{
		var charpos = myText.search("[0-9]"); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Numeric character at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}

	function hasNoSpaces(myText)
	{
		var charpos = myText.search(/\s/); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Space at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}

	// HAS NO SPACES - OLD
	function hasNoSpaces_v1(myText)
	{
		var InvalidChars = " ";
		var Char;
		for (i = 0; i < myText.length; i++) 
		{ 
			Char = myText.charAt(i); 
			if (InvalidChars.indexOf(Char) != -1) 
			{
				// alert("Space!");
				return false;
			}
		}
		return true;
	}
	
	function hasNoCrLf(myText)
	{
		var charpos = myText.search(/\r\n/); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Carriage Return or Line Feed at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}

	function notATitle(myText)
	{
		var regTitle = /^(CAPT|COL|DR|FR|LT|MISS|MS|MRS|MR|MJR|REV|SIST|AGENCY)$/i ;
		if (regTitle.test(myText))
		{
			// alert("Name is a Title. Please correct and submit again.");
			return false;
		}
		return true;
	}
	
	function notATestWord(myText)
	{
		var regTest = /^(TEST|TESTING|FIRST)$/i ;
		if (regTest.test(myText))
		{
			// alert("Name is a Test Word. Please correct and submit again.");
			return false;
		}
		return true;
	}
	
	function notTripleRepeat(myText)
	{
		var charpos = myText.search(/^([0-9a-zA-Z])\1\1/i); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Triple Alpha Character " + myText.charAt(charpos) + " at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}
	
	function hasNoFicoDelimeter(myText)
	{
		var charpos = myText.search(/{/); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("FICO Delimeter Character " + myText.charAt(charpos) + " at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}
	
	function hasNoFicoChars(myText)
	{
		var charpos = myText.search(/@|#|\$|%|\*|\^|!|{|}|\[|\]|\?|\+|-|=|\\|\/|,|\.|\"/); 
		if(myText.length > 0 && charpos >= 0) 
		{		  
			// alert("Invalid Character " + myText.charAt(charpos) + " at position " + eval(charpos + 1)); 
			return false; 
		}
		return true;
	}
	
	function hasNoFicoChars_old(myText)
	{
		var InvalidChars = "@#$%*^!{}[]?+-=/,.\"";
		var Char;
		for (i = 0; i < myText.length; i++) 
		{ 
			Char = myText.charAt(i); 
			if (InvalidChars.indexOf(Char) != -1) 
			{
				// alert("Invalid Character " + Char + " at " + eval(myText.indexOf(Char) + 1) );
				return false;
			}
		}
		return true;
	}

	function maxLength(myText,myMaxLength)
	{
		if (myText.length > myMaxLength)
		{
			// alert("More than " + myMaxLength + "!");
			return false;
		} else {
			return true;
		}
	}

	function minLength(myText,myMinLength)
	{
		if (myText.length < myMinLength)
		{
			// alert("Less than " + myMinLength + "!");
			return false;
		} else {
			return true;
		}
	}

	function isValidZipCode(myText)
	{
		var regZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
		if (!regZip.test(myText))
		{
			// alert("Zip Code Is Not Valid");
			return false;
		}
		return true;
	}

	function isValidEmailAddress(myText)
	{
		var regEmail = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
		var regex = new RegExp(regEmail);
		if (!regex.test(myText))
		{
			// alert("Email Address Is Not Valid");
			return false;
		}
		return true;
	}

	function isValidDate(myText)
	{
		var regDate=/^\d{2}\/\d{2}\/\d{4}$/ ;
		if (!regDate.test(myText))
		{
			// alert("Invalid Date Format (MM/DD/YYYY). Please correct and submit again.");
			return false;
		}
		return true ;
	}

	function isValidPhoneNumber(myText)
	{
		var regPhone = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/ ;
		if (!regPhone.test(myText))
		{
			// alert("Invalid Phone Format (###-###-####). Please correct and submit again.");
			return false;
		}
		return true;
	}
	
	function isValidState(myText)
	{
		var regState = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NE|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY|AA|AE|AP|AS|FM|GU|MH|MP|PR|PW|VI)$/i ;
		if (!regState.test(myText))
		{
			// alert("Invalid State Abbreviation. Please correct and submit again.");
			return false;
		}
		return true;
	}	
	
	function isValidSSN(myText)
	{
		var regSSN = /^\d{3}\-?\d{2}\-?\d{4}$/ ;
		if (!regSSN.test(myText))
		{
			// alert("Invalid SSN (###-##-####). Please correct and submit again.");
			return false;
		}
		return true;
}

}

function GetElementId(element) {

    var elementID = element.id;

    if (elementID.lastIndexOf("_") != -1) {
        var suffix = elementID.substr(elementID.lastIndexOf("_"));

        if (suffix.indexOf("_") != -1) {
            elementID = suffix.substr(suffix.indexOf("_") + 1);
        }
    }

    return elementID;
}