







function validateDouble(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oDouble = new DoubleValidations();
                        for (x in oDouble) {
                            var field = form[oDouble[x][0]];

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                if (value.length > 0) {

                                    var iValue = parseFloat(value);
                                    if (isNaN(iValue)) {
                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oDouble[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateRequiredWhenOtherIsNotFilled(form) {
                            var bValid = true;
                            var focusField = null;
                            var i = 0;
                            var fields = new Array();
                            oReqWhenOther = new ReqWhenOtherIsNotFilled();
                            for (x in oReqWhenOther) {
                                var field = form[oReqWhenOther[x][0]];

                                if (field != null && (
                                    field.type == 'text' ||
                                    field.type == 'textarea' ||
                                    field.type == 'file' ||
                                    field.type == 'select-one' ||
                                    field.type == 'radio' ||
                                    field.type == 'password')) {

                                    var value = '';
                                    // get field's value
                                    if (field.type == "select-one") {
                                        var si = field.selectedIndex;
                                        if (si >= 0) {
                                            value = field.options[si].value;
                                        }
                                    } else {
                                        value = field.value;
                                    }
                                    var setExtraData = oReqWhenOther[x][2];
                                    setExtraData();
                                    var otherField = form[this.otherField];

                                    //Right now this may only work with checkboxes ... not quite sure.
                                    if (value == '' &&  otherField.checked==false) {

                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oReqWhenOther[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                            if (fields.length > 0) {
                               focusField.focus();
                               alert(fields.join('\n'));
                            }
                            return bValid;
                        }
function validateRequiredName(form) {
                            var bValid = true;
                            var focusField = null;
                            var i = 0;
                            var fields = new Array();
                            oRequiredIfOnPage = new RequiredName();

                            for (x in oRequiredIfOnPage) {

                            //Get the field from the attribute in the form
                            var firstName = form[oRequiredIfOnPage[x][0]+'.firstName'];
                            var middleInitial = form[oRequiredIfOnPage[x][0]+'.middleInitial'];
                            var lastName = form[oRequiredIfOnPage[x][0]+'.lastName'];

                            //Determine what type of field types we want
                            if (firstName.type == 'text'
                                && middleInitial.type == 'text'
                                && lastName.type == 'text') {

                                var firstValue = firstName.value;
                                var middleValue = middleInitial.value;
                                var lastValue = lastName.value;

                              //  if (firstValue == '' && middleValue == '' && lastValue == '') {
                                 //   focusField = firstName;
                                 //   fields[i++] = oRequiredIfOnPage[x][1];
                                 //   bValid = false;
                                 //   }
                                 if (firstValue == '') {
                                  focusField = firstName;
                                 fields[i++] = oRequiredIfOnPage[x][1];
                                 bValid = false;
                                    }
                                 if (lastValue == ''){
                                  focusField = lastName;
                                 fields[i++] = oRequiredIfOnPage[x][1];
                                 bValid = false;
                                 }
                                }
                            }
                            if (fields.length > 0) {
                               focusField.focus();
                               alert(fields.join('\n'));
                            }
                            return bValid;
                        }
function validateRequiredWhenOtherIsFilled(form) {
                            var bValid = true;
                            var focusField = null;
                            var i = 0;
                            var fields = new Array();
                            oReqWhenOther = new ReqWhenOtherIsFilled();
                            for (x in oReqWhenOther) {
                                var field = form[oReqWhenOther[x][0]];

                                if (field != null && (
                                    field.type == 'text' ||
                                    field.type == 'textarea' ||
                                    field.type == 'file' ||
                                    field.type == 'select-one' ||
                                    field.type == 'radio' ||
                                    field.type == 'password')) {

                                    var value = '';
                                    // get field's value
                                    if (field.type == "select-one") {
                                        var si = field.selectedIndex;
                                        if (si >= 0) {
                                            value = field.options[si].value;
                                        }
                                    } else {
                                        value = field.value;
                                    }
                                    var setExtraData = oReqWhenOther[x][2];
                                    setExtraData();
                                    var otherField = form[this.otherField];

                                    //todo: javascript checking for the -1
                                    if (value == '' && otherField.value != ''
                                    && otherField.checked==true) {

                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oReqWhenOther[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                            if (fields.length > 0) {
                               focusField.focus();
                               alert(fields.join('\n'));
                            }
                            return bValid;
                        }
function validateFloat(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oFloat = new FloatValidations();
                        for (x in oFloat) {
                            var field = form[oFloat[x][0]];

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                if (value.length > 0) {

                                    var iValue = parseFloat(value);
                                    if (isNaN(iValue)) {
                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oFloat[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateUsername(form) {
                            var bValid = true;
                            var focusField = null;
                            var i = 0;
                            var fields = new Array();
                            oUsername = new Username();
                            for (x in oUsername) {
                                var field = form[oUsername[x][0]];

                                if (field != null && (
                                    field.type == 'text' ||
                                    field.type == 'textarea' ||
                                    field.type == 'file' ||
                                    field.type == 'select-one' ||
                                    field.type == 'radio' ||
                                    field.type == 'password')) 
                                {

                                    var value = '';
                                    // get field's value
                                    if (field.type == "select-one") {
                                        var si = field.selectedIndex;
                                        if (si >= 0) {
                                            value = field.options[si].value;
                                        }
                                    } else {
                                        value = field.value;
                                    }

                                    if (value.length > 0 && 
                                         (value.substring(0,1) == ' ' || 
                                          value.substring(value.length - 1, 
                                          value.length) == ' ')) {
                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oUsername[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                            if (fields.length > 0) {
                               focusField.focus();
                               alert(fields.join('\n'));
                            }
                            return bValid;
                        }
function validateMinLength(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oMin = new MinLength();
                        for (x in oMin) {
                            var field = form[oMin[x][0]];

                            if (field == null) {
                                return bValid;
                            }

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                var setExtraData = oMin[x][2];
                                setExtraData();

                                if (value.length < this.minlength && value.length != 0 ) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oMin[x][1];
                                    bValid = false;
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateMaxLength(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oMax = new MaxLength();
                        for (x in oMax) {
                            var field = form[oMax[x][0]];

                            //In case the field is not defined on this page.
                            if (field == null) {
                                return bValid;
                            }

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                var setExtraData = oMax[x][2];
                                setExtraData();

                                if (value.length > this.maxlength && value.length != 0 ) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oMax[x][1];
                                    bValid = false;
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateRequired(form) {
                            var bValid = true;
                            var focusField = null;
                            var i = 0;
                            var fields = new Array();
                            oRequired = new Required();
                            for (x in oRequired) {
                                var field = form[oRequired[x][0]];

                                if (field != null && (
                                    field.type == 'text' ||
                                    field.type == 'textarea' ||
                                    field.type == 'file' ||
                                    field.type == 'select-one' ||
                                    field.type == 'radio' ||
                                    field.type == 'password')) {

                                    var value = '';
                                    // get field's value
                                    if (field.type == "select-one") {
                                        var si = field.selectedIndex;
                                        if (si >= 0) {
                                            value = field.options[si].value;
                                        }
                                    } else {
                                        value = field.value;
                                    }

                                    if (value == '') {

                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oRequired[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                            if (fields.length > 0) {
                               focusField.focus();
                               alert(fields.join('\n'));
                            }
                            return bValid;
                        }
function validateInteger(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oInteger = new IntegerValidations();
                        for (x in oInteger) {
                            var field = form[oInteger[x][0]];

                            if (field == null) {
                                return bValid;
                            }

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                if (value.length > 0) {

                                    var iValue = parseInt(value);
                                    if (isNaN(iValue)) {
                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oInteger[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateRequiredIfOnPage(form) {
                            var bValid = true;
                            var focusField = null;
                            var i = 0;
                            var fields = new Array();
                            oRequiredIfOnPage = new ReqIfOnPage();
                            for (x in oRequiredIfOnPage) {
                                var field = form[oRequiredIfOnPage[x][0]];

                                if (field != null && (
                                    field.type == 'text' ||
                                    field.type == 'textarea' ||
                                    field.type == 'file' ||
                                    field.type == 'select-one' ||
                                    field.type == 'radio' ||
                                    field.type == 'password')) {

                                    var value = '';
                                    // get field's value
                                    if (field.type == "select-one") {
                                        var si = field.selectedIndex;
                                        if (si >= 0) {
                                            value = field.options[si].value;
                                        }
                                    } else {
                                        value = field.value;
                                    }

                                    if (value == '') {

                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oRequiredIfOnPage[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                            if (fields.length > 0) {
                               focusField.focus();
                               alert(fields.join('\n'));
                            }
                            return bValid;
                        }
function validateLong(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oLong = new LongValidations();
                        for (x in oLong) {
                            var field = form[oLong[x][0]];

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                if (value.length > 0) {

                                    var iValue = parseFloat(value);
                                    if (isNaN(iValue)) {
                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oLong[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateDateBeanIsAfterOtherDate(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oDateAfter = new IsDateAfter();
                        for (x in oDateAfter) {
                            //Get the field from the attribute in the form
                            var field = form[oDateAfter[x][0]+'.month'];

                            //Determine what type of field types we want
                            if (field.type == 'text') {

                                var value = '';
                                // get field's value
                                if (field.type == "select-one") {
                                    var si = field.selectedIndex;
                                    if (si >= 0) {
                                        value = field.options[si].value;
                                    }
                                } else {
                                    value = field.value;
                                }

                                //Here is where the business logic lies
                                if (value.length > 0) {

                                    //Now get the other date
                                    var setExtraData = oDateAfter[x][2];
                                    setExtraData();

                                    givenDate = new Date(form[oDateAfter[x][0]+'.year'].value,form[oDateAfter[x][0]+'.month'].value-1,form[oDateAfter[x][0]+'.day'].value);
                                    if (this.otherDate == 'currentDate') {
                                        var tempDate = newDate();
                                        otherDate = new Date(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
                                    } else {
                                        otherDate = new Date(form[this.otherDate+'.year'].value,form[this.otherDate+'.month'].value-1,form[this.otherDate+'.day'].value);
                                    }

                                    if ((otherDate == null) || (otherDate >= givenDate)) {
                                        if (i == 0) {
                                            focusField = field;
                                        }
                                        fields[i++] = oDateAfter[x][1];
                                        bValid = false;
                                    }
                                }
                            }
                        }
                        //Checks if we have errors in our fields
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateDateBean(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oDateBean = new DateBean();
                        for (x in oDateBean) {
                            //Get the field from the attribute in the form
                            var monthField = form[oDateBean[x][0]+'.month'];
                            var dayField = form[oDateBean[x][0]+'.day'];
                            var yearField = form[oDateBean[x][0]+'.year'];

                            //Determine what type of field types we want
                            if (monthField.type == 'text'
                                && dayField.type == 'text'
                                && yearField.type == 'text') {

                                var monthValue = monthField.value;
                                var dayValue = dayField.value;
                                var yearValue = yearField.value;

                                if (monthValue == '' && dayValue == '' && yearValue == '') {
                                    continue;
                                    //return bValid;
                                }

                                //create a new date object
                                var theDate = new Date(yearValue-1900, monthValue-1, dayValue);
                                if (theDate.getDate() != dayValue ||
                                    theDate.getMonth()+1 != monthValue ||
                                    theDate.getYear()+1900 != yearValue) {

                                        if (i == 0) {
                                            focusField = monthField;
                                        }
                                        fields[i++] = oDateBean[x][1];
                                        bValid = false;
                                    }
                                }
                        }
                        //Checks if we have errors in our fields
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }
function validateDomain(form) {
	                        var bValid = true;
	                        var focusField = null;
	                        var i = 0;
	                        var fields = new Array();
	                        oEmail = new domain();
	                        for (x in oEmail) {
	                            if ((form[oEmail[x][0]].type == 'text' ||
	                                 form[oEmail[x][0]].type == 'textarea') &&
	                                (form[oEmail[x][0]].value.length > 0)) {
	                                if (!checkDomain(form[oEmail[x][0]].value)) {
	                                    if (i == 0) {
	                                        focusField = form[oEmail[x][0]];
	                                    }
	                                    fields[i++] = oEmail[x][1];
	                                    bValid = false;
	                                }
	                            }
	                        }
	                        if (fields.length > 0) {
	                            focusField.focus();
	                            alert(fields.join('\n'));
	                        }
	                        return bValid;
	                    }
	
	                    /**
	                     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
	                     * http://javascript.internet.com
	                     */
	                    function checkDomain(emailStr) {
	                    	
	                       if (emailStr.length == 0) {
	                           return true;
	                       }
	                       
	                       var domPat=/^(.+)\.(.+)$/;
	                       var matchArray=emailStr.match(domPat);
	                       
	                       if (matchArray == null) {
	                       	   
	                           return false;
	                       }else{
	                       	   return true;	
	                       }
	                       
	                    }
function validateEmail(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oEmail = new email();
                        for (x in oEmail) {
                            if ((form[oEmail[x][0]].type == 'text' ||
                                 form[oEmail[x][0]].type == 'textarea') &&
                                (form[oEmail[x][0]].value.length > 0)) {
                                if (!checkEmail(form[oEmail[x][0]].value)) {
                                    if (i == 0) {
                                        focusField = form[oEmail[x][0]];
                                    }
                                    fields[i++] = oEmail[x][1];
                                    bValid = false;
                                }
                            }
                        }
                        if (fields.length > 0) {
                            focusField.focus();
                            alert(fields.join('\n'));
                        }
                        return bValid;
                    }

                    /**
                     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
                     * http://javascript.internet.com
                     */
                    function checkEmail(emailStr) {
                       if (emailStr.length == 0) {
                           return true;
                       }
                       
                       /*
                       var emailPat=/^(.+)@(.+)$/;
                       var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
                       var validChars="\[^\\s" + specialChars + "\]";
                       var quotedUser="(\"[^\"]*\")";
                       var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
                       var atom=validChars + '+';
                       var word="(" + atom + "|" + quotedUser + ")";
                       var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
                       var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
                       var matchArray=emailStr.match(emailPat);
                       if (matchArray == null) {
                           return false;
                       }
                       var user=matchArray[1];
                       var domain=matchArray[2];
                       if (user.match(userPat) == null) {
                           return false;
                       }
                       var IPArray = domain.match(ipDomainPat);
                       if (IPArray != null) {
                           for (var i = 1; i <= 4; i++) {
                              if (IPArray[i] > 255) {
                                 return false;
                              }
                           }
                           return true;
                       }
                       var domainArray=domain.match(domainPat);
                       if (domainArray == null) {
                           return false;
                       }
                       var atomPat=new RegExp(atom,"g");
                       var domArr=domain.match(atomPat);
                       var len=domArr.length;
                       if ((domArr[domArr.length-1].length < 2) ||
                           (domArr[domArr.length-1].length > 3)) {
                           return false;
                       }
                       if (len < 2) {
                           return false;
                       }
                       return true;
	                   */
	                   
	                   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	                   if(reg.test(emailStr) == false) {
	                      return false;
	                   } else {
	                      return true;	
	                   }
	                }
function validateMask(form) {
                        var bValid = true;
                        var focusField = null;
                        var i = 0;
                        var fields = new Array();
                        oMasks = new MaskValidations();
                        for (x in oMasks) {
                            var field = form[oMasks[x][0]];

                            if (field.type == 'text' ||
                                field.type == 'textarea' ||
                                field.type == 'select-one' ||
                                field.type == 'radio') {

                                var value = '';

                                value = field.value;

                                //Set the extra data
                                var setExtraData = oReqWhenOther[x][2];
                                setExtraData();
                                var mask = form[this.mask];


                                var matchArray=value.match(mask);

                                if (matchArray == null) {
                                    fields[i++] = oMasks[x][1];
                                    bValid = false;
                                }
                            }
                        }
                        if (fields.length > 0) {
                           focusField.focus();
                           alert(fields.join('\n'));
                        }
                        return bValid;
                    }

