



function validateFloatRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                var formName = form.getAttributeNode("name");
                
                var oRange = eval('new ' + formName.value +  '_floatRange()');
                for (var x in oRange) {                    
                    var field = form[oRange[x][0]]; 
                    if ((field.type == 'hidden' ||
                        field.type == 'text' || field.type == 'textarea') &&
                        (field.value.length > 0)) {
                
                        var fMin = parseFloat(oRange[x][2]("min"));
                        var fMax = parseFloat(oRange[x][2]("max"));
                        var fValue = parseFloat(field.value);
                        if (!(fValue >= fMin && fValue <= fMax)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRange[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0 &&
                    focusField.type!='hidden') {
                    focusField.focus();
                    showValidationMsg(fields.join('\n'));
                }
                return isValid;
            }
function validateIntegerArray(form) {   
        var bValid = true;
        var focusField = null;
        var j = 0;
        var fields = new Array();        
        var formName = form.getAttributeNode("name"); 
        oInteger = eval('new ' + formName.value + '_integerArray()');
        for (x in oInteger) {
            var field = form[oInteger[x][0]];
            var fieldDepend = form[oInteger[x][2]("depend")];
            var dependValue = (oInteger[x][2]("value"));
            
         if(fieldDepend.value != dependValue)  {
          for(var i=0; i < field.length; i++)           
	   {
            if ((field[i].type == 'text' ||
                field[i].type == 'textarea') &&
                field[i].disabled == false) {
                
                var value = '';
                // get field's value
                value = field[i].value;          
          
                if (value.length > 0) {

                    if (!isAllDigits(value)) {
                        bValid = false;                        
                        focusField = field[i];

                     } else {
                        var iValue = parseInt(value);                        
                        if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                            focusField = field[i];                                                      
                            bValid = false;
                         }
                      }
                  }
              }
                
            }            
            if(!bValid) {
                 fields[j++] = oInteger[x][1];                 
            }
          }
        }
        if (fields.length > 0 &&
            focusField.type!='hidden') {
           focusField.focus();
           showValidationMsg(fields.join('\n'));
        }       
        
        return bValid;
    }
    /*$RCSfile: validateUtilities.js,v $ $Revision: 1.2 $ $Date: 2004/03/28 16:53:21 $ */

  /**
  * This is a place holder for common utilities used across the javascript validation
  *
  **/


    /*$RCSfile: validateMaxLength.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */
    /**
    * A field is considered valid if less than the specified maximum.
    * Fields are not checked if they are disabled.
    * <p>
    * <strong>Caution:</strong> Using <code>validateMaxLength</code> on a password field in a 
    *  login page gives unnecessary information away to hackers. While it only slightly
    *  weakens security, we suggest using it only when modifying a password.</p>
    * @param form The form validation is taking place on.
    */
    function validateMaxLength(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name"); 

        oMaxLength = eval('new ' + formName.value + '_maxlength()');        
        for (x in oMaxLength) {
            var field = form[oMaxLength[x][0]];

            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'password' ||
                field.type == 'textarea') &&
                field.disabled == false) {

                var iMax = parseInt(oMaxLength[x][2]("maxlength"));
                if (field.value.length > iMax) {
                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oMaxLength[x][1];
                    isValid = false;
                }
            }
        }
        if (fields.length > 0) {
           focusField.focus();
           alert(fields.join('\n'));
        }
        return isValid;
    }

function validateRequired(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");

        oRequired = eval('new ' + formName.value + '_required()');

        for (x in oRequired) {
            var field = form[oRequired[x][0]];

            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea' ||
                field.type == 'file' ||
                field.type == 'checkbox' ||
                field.type == 'select-one' ||
                field.type == 'password') &&
                field.disabled == false) {

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

                if (trim(value).length == 0) {

                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequired[x][1];
                    isValid = false;
                }
            } else if (field.type == "select-multiple") { 
                var numOptions = field.options.length;
                lastSelected=-1;
                for(loop=numOptions-1;loop>=0;loop--) {
                    if(field.options[loop].selected) {
                        lastSelected = loop;
                        value = field.options[loop].value;
                        break;
                    }
                }
                if(lastSelected < 0 || trim(value).length == 0) {
                    if(i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequired[x][1];
                    isValid=false;
                }
            } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
                isChecked=-1;
                for (loop=0;loop < field.length;loop++) {
                    if (field[loop].checked) {
                        isChecked=loop;
                        break; // only one needs to be checked
                    }
                }
                if (isChecked < 0) {
                    if (i == 0) {
                        focusField = field[0];
                    }
                    fields[i++] = oRequired[x][1];
                    isValid=false;
                }
            }
        }
        if (fields.length > 0) {
           if(focusField.style.display!='none' &&
              focusField.type!='hidden'){              
            focusField.focus();
           }
           showValidationMsg(fields.join('\n'));
        }
        return isValid;
        }
        
        // Trim whitespace from left and right sides of s.
        function trim(s) {
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
        }
function validateInteger(form) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name"); 
        oInteger = eval('new ' + formName.value + '_integer ()');
        for (x in oInteger) {
            var field = form[oInteger[x][0]];

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

                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) {
                
                if(value.length==2 && value.charAt(0)=='0')
                                {
                                value=value.charAt(1);
                                }

                    if (!isAllDigits(value)) {
                        bValid = false;
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oInteger[x][1];

                    } else {
                        var iValue = parseInt(value);                       
                        if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oInteger[x][1];
                            bValid = false;
                       }
                   }
               }




            }
        }
        if (fields.length > 0 &&
            focusField.type!='hidden') {
           focusField.focus();
           showValidationMsg(fields.join('\n'));
        }
        return bValid;
            }
                 
    function isAllDigits(argvalue) {
        argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
           validChars = "0123456789abcdefABCDEF";
           startFrom = 2;
        } else if (argvalue.charAt(0) == "0") {
           validChars = "01234567";
           startFrom = 1;
        } else if (argvalue.charAt(0) == "-") {
            startFrom = 1;
        }

        for (var n = startFrom; n < argvalue.length; n++) {
            if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
        }
        return true;
    }
function validateDecimalLengthFloat(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                var formName = form.getAttributeNode("name");
                
                var oDecimalLengthFloat = eval('new ' + formName.value +  '_decimalLengthFloat()');
                for (var x in oDecimalLengthFloat) {                    
                    var field = form[oDecimalLengthFloat[x][0]]; 
                   if (field.disabled == false)  {  
                     if ((field.type == 'hidden' ||
                        field.type == 'text' || field.type == 'textarea') &&
                        (field.value.length > 0)) {          
                        var fValue = field.value.trim();                        
                        var tempArr = fValue.split(".");                        
                        if (tempArr != null && tempArr[1] != null) {
                            if (tempArr[1].length > 2) {
                                if (i == 0) {
                                  focusField = field;
                                  fields[i++] = oDecimalLengthFloat[x][1];
                                  isValid = false;  
                                }                                                        
                           }
                        }
                     }
                    } 
                }
                if (fields.length > 0 &&
                    focusField.type!='hidden') {
                    focusField.focus();
                    showValidationMsg(fields.join('\n'));
                }
                return isValid;
            }
function validateDate(form) {
       var bValid = true;
       var focusField = null;
       var i = 0;
       var fields = new Array();
       var formName = form.getAttributeNode("name"); 

       oDate = eval('new ' + formName.value + '_DateValidations()');

       for (x in oDate) {
           var field = form[oDate[x][0]];
           var value = field.value;
           var datePattern = oDate[x][2]("datePatternStrict");
           // try loose pattern
           if (datePattern == null)
               datePattern = oDate[x][2]("datePattern");
           if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea') &&
               (value.length > 0) && (datePattern.length > 0) &&
                field.disabled == false) {
                 var MONTH = "MM";
                 var DAY = "dd";
                 var YEAR = "yyyy";
                 var orderMonth = datePattern.indexOf(MONTH);
                 var orderDay = datePattern.indexOf(DAY);
                 var orderYear = datePattern.indexOf(YEAR);
                 if ((orderDay < orderYear && orderDay > orderMonth)) {
                     var iDelim1 = orderMonth + MONTH.length;
                     var iDelim2 = orderDay + DAY.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderDay && iDelim2 == orderYear) {
                        dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                     } else if (iDelim1 == orderDay) {
                        dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                     } else if (iDelim2 == orderYear) {
                        dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                     } else {
                        dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                        if (!isValidDate(matched[2], matched[1], matched[3])) {
                           if (i == 0) {
                               focusField = field;
                           }
                           fields[i++] = oDate[x][1];
                           bValid =  false;
                        }
                     } else {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oDate[x][1];
                        bValid =  false;
                     }
                 } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                     var iDelim1 = orderDay + DAY.length;
                     var iDelim2 = orderMonth + MONTH.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                         dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                     } else if (iDelim1 == orderMonth) {
                         dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                     } else if (iDelim2 == orderYear) {
                         dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                     } else {
                         dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                         if (!isValidDate(matched[1], matched[2], matched[3])) {
                             if (i == 0) {
                         focusField = field;
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                          }
                     } else {
                         if (i == 0) {
                             focusField = field;
                         }
                         fields[i++] = oDate[x][1];
                         bValid =  false;
                     }
                 } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                     var iDelim1 = orderYear + YEAR.length;
                     var iDelim2 = orderMonth + MONTH.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                         dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
                     } else if (iDelim1 == orderMonth) {
                         dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
                     } else if (iDelim2 == orderDay) {
                         dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
                     } else {
                         dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                         if (!isValidDate(matched[3], matched[2], matched[1])) {
                             if (i == 0) {
                                 focusField = field;
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                         }
                     } else {
                          if (i == 0) {
                              focusField = field;
                          }
                          fields[i++] = oDate[x][1];
                          bValid =  false;
                     }
                 } else {
                     if (i == 0) {
                         focusField = field;
                     }
                     fields[i++] = oDate[x][1];
                     bValid =  false;
                 }
          }
       }
       if (fields.length > 0) {
          focusField.focus();
          showValidationMsg(fields.join('\n'));
       }
       return bValid;
    }
    
    function isValidDate(day, month, year) {
	    if (month < 1 || month > 12) {
            return false;
        }
        if (day < 1 || day > 31) {
            return false;
        }
        if ((month == 4 || month == 6 || month == 9 || month == 11) &&
            (day == 31)) {
            return false;
        }
        if (month == 2) {
            var leap = (year % 4 == 0 &&
               (year % 100 != 0 || year % 400 == 0));
            if (day>29 || (day == 29 && !leap)) {
                return false;
            }
        }
        return true;
    }
function validateIntRange(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name"); 

        oRange = eval('new ' + formName.value + '_intRange()');        
        for (x in oRange) {
            var field = form[oRange[x][0]];
            if (field.disabled == false)  {
                var value = '';
                if (field.type == 'hidden' ||
                    field.type == 'text' || field.type == 'textarea' ||
                    field.type == 'radio' ) {
                    value = field.value;
                }
                if (field.type == 'select-one') {
                    var si = field.selectedIndex;
                    if (si >= 0) {
                        value = field.options[si].value;
                    }
                }
                if (value.length > 0) {
                    var iMin = parseInt(oRange[x][2]("min"));
                    var iMax = parseInt(oRange[x][2]("max"));
                    var iValue = parseInt(value);
                    if (!(iValue >= iMin && iValue <= iMax)) {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oRange[x][1];
                        isValid = false;
                    }
                }
            }
        }
        if (fields.length > 0) {
            focusField.focus();
            showValidationMsg(fields.join('\n'));
        }
        return isValid;
    }
function validateRequiredIfDependExists(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");
               
        oRequiredIf = eval('new ' + formName.value + '_requiredifdependexists()');

        for (x in oRequiredIf) {
            var field = form[oRequiredIf[x][0]];
            var fieldDepend = form[oRequiredIf[x][2]("depend")];            
               // get depend field's value
                var dValue = '';
                if (fieldDepend.type == "select-one") {
                    var si = fieldDepend.selectedIndex;
                    if (si >= 0) {
                        dValue = fieldDepend.options[si].value;
                    }
                } else if (fieldDepend.type == 'checkbox') {
                    if (fieldDepend.checked) {
                        dValue = fieldDepend.value;
                    }
                } else {
                    dValue = fieldDepend.value;
                }  
         if(dValue != '')   {      
            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea' ||
                field.type == 'file' ||
                field.type == 'checkbox' ||
                field.type == 'select-one' ||
                field.type == 'password') &&
                field.disabled == false ) {

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

                if (trim(value).length == 0) {

                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid = false;
                }
            } else if (field.type == "select-multiple") { 
                var numOptions = field.options.length;
                lastSelected=-1;
                for(loop=numOptions-1;loop>=0;loop--) {
                    if(field.options[loop].selected) {
                        lastSelected = loop;
                        value = field.options[loop].value;
                        break;
                    }
                }
                if(lastSelected < 0 || trim(value).length == 0) {
                    if(i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid=false;
                }
            } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
                isChecked=-1;
                for (loop=0;loop < field.length;loop++) {
                    if (field[loop].checked) {
                        isChecked=loop;
                        break; // only one needs to be checked
                    }
                }
                if (isChecked < 0) {
                    if (i == 0) {
                        focusField = field[0];
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid=false;
                }
            }
        }
        }
        if (fields.length > 0) {
           if(focusField.style.display!='none' &&
              focusField.type!='hidden'){
            focusField.focus();
           }
           showValidationMsg(fields.join('\n'));
        }
        return isValid;
        }
        
        // Trim whitespace from left and right sides of s.
        function trim(s) {
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
        }
function validateLong(form) {
		var bValid = true;
		var focusField = null;
		var i = 0;
		var fields = new Array();
		var formName = form.getAttributeNode("name"); 
	
		oInteger = eval('new ' + formName.value + '_LongValidations()');
		for (x in oInteger) {
		    var field = form[oInteger[x][0]];
	
		    if ((field.type == 'hidden' ||
			field.type == 'text' ||
			field.type == 'textarea' ||
			field.type == 'select-one' ||
			field.type == 'radio') &&
			field.disabled == false) {
	
			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) {
	
			    if (!isAllDigits(value)) {
				bValid = false;
				if (i == 0) {
				    focusField = field;
				}
				fields[i++] = oInteger[x][1];
	
			    }
		        }
		     }
		 }
		 if (fields.length > 0) {
                    if(!focusField.disabled && focusField.type!='hidden'){
                        focusField.focus();
                    }
                    showValidationMsg(fields.join('\n'));
		 }
		 return bValid;
            }
function validatePositiveFloat(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                var formName = form.getAttributeNode("name");
                
                var oPositive = eval('new ' + formName.value +  '_positiveFloat()');
                for (var x in oPositive) {                    
                    var field = form[oPositive[x][0]]; 
                   if (field.disabled == false)  {  
                     if ((field.type == 'hidden' ||
                        field.type == 'text' || field.type == 'textarea') &&
                        (field.value.length > 0)) {          
                        var fValue = parseFloat(field.value);
                        if (!(fValue >= 0)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oPositive[x][1];
                            isValid = false;
                        }
                     }
                    } 
                }
                if (fields.length > 0 &&
                    focusField.type!='hidden') {
                    focusField.focus();
                    showValidationMsg(fields.join('\n'));
                }
                return isValid;
            }
function validateCheckNotEqualDependValue(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");
               
        oCheckNotEqualDependValue = eval('new ' + formName.value + '_checkNotEqualDependValue()');
        for (x in oCheckNotEqualDependValue) {
            var field = form[oCheckNotEqualDependValue[x][0]];
            var fieldDepend = form[oCheckNotEqualDependValue[x][2]("dependTwo")];  
            var fieldDependOne = form[oCheckNotEqualDependValue[x][2]("depend")];
            var dependOneValue = (oCheckNotEqualDependValue[x][2]("value"));
            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea' ||               
                field.type == 'select-one' ||
                field.type == 'password') &&
                field.disabled == false && fieldDependOne.value == dependOneValue) {

                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 dependValue = '';
                // get field's value
                if (fieldDepend.type == "select-one") {
                    var si = fieldDepend.selectedIndex;
                    if (si >= 0) {
                        dependValue = fieldDepend.options[si].value;
                    }
                } 
                else {
                    dependValue = fieldDepend.value;
                }
                if (trim(value).length != 0) {  
                   if(value == dependValue) {   
                      if (i == 0) {
                        focusField = field;
                      }
                      fields[i++] = oCheckNotEqualDependValue[x][1];
                      isValid=false;
                   }
                }
           }
        }
        if (fields.length > 0) {
           if(focusField.style.display!='none' &&
              focusField.type!='hidden'){
            focusField.focus();
           }
           showValidationMsg(fields.join('\n'));
        }
        return isValid;
     }
function validateRequiredIf(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");
               
        oRequiredIf = eval('new ' + formName.value + '_requiredif()');

        for (x in oRequiredIf) {
            var field = form[oRequiredIf[x][0]];
            var fieldDepend = form[oRequiredIf[x][2]("depend")];
            var dependValue = (oRequiredIf[x][2]("value"));
            
               // get depend field's value
                var dValue = '';
                if (fieldDepend.type == "select-one") {
                    var si = fieldDepend.selectedIndex;
                    if (si >= 0) {
                        dValue = fieldDepend.options[si].value;
                    }
                } else if (fieldDepend.type == 'checkbox') {
                    if (fieldDepend.checked) {
                        dValue = fieldDepend.value;
                    }
                } else {
                    dValue = fieldDepend.value;
                }    
        if(dValue == dependValue) {
            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea' ||
                field.type == 'file' ||
                field.type == 'checkbox' ||
                field.type == 'select-one' ||
                field.type == 'password') &&
                field.disabled == false) {

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

                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid = false;
                }
                    
            } else if (field.type == "select-multiple") { 
    
                var numOptions = field.options.length;
                lastSelected=-1;
                for(loop=numOptions-1;loop>=0;loop--) {
                    if(field.options[loop].selected) {
                        lastSelected = loop;
                        value = field.options[loop].value;
                        break;
                    }
                }
                if(lastSelected < 0 || trim(value).length == 0) {
                    if(i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid=false;
                }
            } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
                isChecked=-1;
                for (loop=0;loop < field.length;loop++) {
                    if (field[loop].checked) {
                        isChecked=loop;
                        break; // only one needs to be checked
                    }
                }
                if (isChecked < 0) {
                    if (i == 0) {
                        focusField = field[0];
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid=false;
                }
            }
        }
     }
        if (fields.length > 0) {
           if(focusField.style.display!='none' &&
              focusField.type!='hidden'){
            focusField.focus();
           }
           showValidationMsg(fields.join('\n'));
        }
        return isValid;
        }
        
        // Trim whitespace from left and right sides of s.
        function trim(s) {
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
        }
function validateFloat(form) {
                  var bValid = true;
                  var focusField = null;
                  var i = 0;
                  var fields = new Array();
                  var formName = form.getAttributeNode("name");
                  oFloat = eval('new ' + formName.value + '_float()');
                  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) {
                              // remove '.' before checking digits
                              var tempArray = value.split('.');
                              var joinedString= tempArray.join('');
                              //Strip off leading '0'
                              var zeroIndex = 0;
                              while (joinedString.charAt(zeroIndex) == '0') {
                                  zeroIndex++;
                              }
                              var noZeroString = joinedString.substring(zeroIndex,joinedString.length);
                              if (!isAllDigits(noZeroString)) {
                                  bValid = false;
                                  if (i == 0) {
                                      focusField = field;
                                  }
                                  fields[i++] = oFloat[x][1];
  
                              } else {
                                  var iValue = parseFloat(value);
                                  if (isNaN(iValue)) {
                                      if (i == 0) {
                                          focusField = field;
                                      }
                                      fields[i++] = oFloat[x][1];
                                      bValid = false;
                                  }
                              }
                          }
                      }
                  }
                  if (fields.length > 0 &&
                    focusField.type!='hidden') {
                     focusField.focus();
                     showValidationMsg(fields.join('\n'));
                     
                  }
                  return bValid;
              }
function validateEmail(form) {
        var bValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");


        oEmail = eval('new ' + formName.value + '_email()');

        for (x in oEmail) {
            var field = form[oEmail[x][0]];
            if ((field.type == 'hidden' || 
                 field.type == 'text' ||
                 field.type == 'textarea') &&
                (field.value.length > 0) &&
                field.disabled == false) {
                if (!checkEmail(field.value)) {
                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oEmail[x][1];
                    bValid = false;
                }
            }
        }
        if (fields.length > 0 &&
            focusField.type!='hidden') {
            focusField.focus();
            showValidationMsg(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;
    }
function validateDateReport(form) {       
	    var bValid = true;
	    var focusField = null;
	    var i = 0;
	    var fields = new Array();
            var formName = form.getAttributeNode("name"); 
	    var oDate = eval('new ' + formName.value +  '_dateReport()');
          
           for (x in oDate) {
           var field = form[oDate[x][0]];
           var value = field.value;
           var day =  value.indexOf("/") == 1 ? "0"+value.substring(0,1) :value.substring(0,2);
           var month;
           if(value.indexOf("/") == 1) {
             month = value.indexOf("/", 2) == 3 ? "0"+value.substring(2,3) : value.substring(2,(value.indexOf("/",4)));
           } else if(value.indexOf("/") == 2) {
             month = value.indexOf("/", 3) == 4 ? "0"+value.substring(3,4) : value.substring(3,(value.indexOf("/",5)));
           }
           var year;
           if((value.substring(value.indexOf("/",3)+1)).length == 1) {
             year =  "200"+value.substring(value.indexOf("/",3)+1);
           } else if((value.substring(value.indexOf("/",3)+1)).length == 2) {
             year = "20"+value.substring(value.indexOf("/",3)+1);
           } else {
             year = value.substring(value.indexOf("/",3)+1)
           }
           value = day+"/"+month+"/"+year;  
           
           var datePattern = oDate[x][2]("datePatternStrict");
           // try loose pattern
           if (datePattern == null)
               datePattern = oDate[x][2]("datePattern");
           if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea') &&
               (value.length > 0) && (datePattern.length > 0) &&
                field.disabled == false) {
                 var MONTH = "MM";
                 var DAY = "dd";
                 var YEAR = "yyyy";
                 var orderMonth = datePattern.indexOf(MONTH);
                 var orderDay = datePattern.indexOf(DAY);
                 var orderYear = datePattern.indexOf(YEAR);
                 if ((orderDay < orderYear && orderDay > orderMonth)) {
                     var iDelim1 = orderMonth + MONTH.length;
                     var iDelim2 = orderDay + DAY.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderDay && iDelim2 == orderYear) {
                        dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                     } else if (iDelim1 == orderDay) {
                        dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                     } else if (iDelim2 == orderYear) {
                        dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                     } else {
                        dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                        if (!isValidDate(matched[2], matched[1], matched[3])) {
                           if (i == 0) {
                               focusField = field;
                           }
                           fields[i++] = oDate[x][1];
                           bValid =  false;
                        }
                     } else {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oDate[x][1];
                        bValid =  false;
                     }
                 } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                     var iDelim1 = orderDay + DAY.length;
                     var iDelim2 = orderMonth + MONTH.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                         dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                     } else if (iDelim1 == orderMonth) {
                         dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                     } else if (iDelim2 == orderYear) {
                         dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                     } else {
                         dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                         if (!isValidDate(matched[1], matched[2], matched[3])) {
                             if (i == 0) {
                         focusField = field;
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                          }
                     } else {
                         if (i == 0) {
                             focusField = field;
                         }
                         fields[i++] = oDate[x][1];
                         bValid =  false;
                     }
                 } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                     var iDelim1 = orderYear + YEAR.length;
                     var iDelim2 = orderMonth + MONTH.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                         dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
                     } else if (iDelim1 == orderMonth) {
                         dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
                     } else if (iDelim2 == orderDay) {
                         dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
                     } else {
                         dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                         if (!isValidDate(matched[3], matched[2], matched[1])) {
                             if (i == 0) {
                                 focusField = field;
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                         }
                     } else {
                          if (i == 0) {
                              focusField = field;
                          }
                          fields[i++] = oDate[x][1];
                          bValid =  false;
                     }
                 } else {
                     if (i == 0) {
                         focusField = field;
                     }
                     fields[i++] = oDate[x][1];
                     bValid =  false;
                 }
          }          
          if(bValid){            
            field.value = value;
          }
       }
       if (fields.length > 0) {
          focusField.focus();
          showValidationMsg(fields.join('\n'));
       } 
       return bValid;
    }
    
    function isValidDate(day, month, year) {
	    if (month < 1 || month > 12) {
            return false;
        }
        if (day < 1 || day > 31) {
            return false;
        }
        if ((month == 4 || month == 6 || month == 9 || month == 11) &&
            (day == 31)) {
            return false;
        }
        if (month == 2) {
            var leap = (year % 4 == 0 &&
               (year % 100 != 0 || year % 400 == 0));
            if (day>29 || (day == 29 && !leap)) {
                return false;
            }
        }
        return true;
     }

    /*$RCSfile: validateMask.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */
    /**
    * Check to see if fields are a valid using a regular expression.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateMask(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name"); 

        oMasked = eval('new ' + formName.value + '_mask()');      
        for (x in oMasked) {
            var field = form[oMasked[x][0]];

            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                 field.type == 'textarea' ||
				 field.type == 'file') &&
                 (field.value.length > 0) &&
                 field.disabled == false) {

                if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oMasked[x][1];
                    isValid = false;
                }
            }
        }

        if (fields.length > 0) {
           focusField.focus();
           alert(fields.join('\n'));
        }
        return isValid;
    }

    function matchPattern(value, mask) {
       return mask.exec(value);
    }

function validateRequiredIfDependNotExists(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");
               
        oRequiredIf = eval('new ' + formName.value + '_requiredifdependnotexists()');

        for (x in oRequiredIf) {
            var field = form[oRequiredIf[x][0]];
            var fieldDepend = form[oRequiredIf[x][2]("depend")];            
            // get depend field's value
                var dValue = '';
                if (fieldDepend.type == "select-one") {
                    var si = fieldDepend.selectedIndex;
                    if (si >= 0) {
                        dValue = fieldDepend.options[si].value;
                    }
                } else if (fieldDepend.type == 'checkbox') {
                    if (fieldDepend.checked) {
                        dValue = fieldDepend.value;
                    }
                } else {
                    dValue = fieldDepend.value;
                } 
         if(dValue == '')   {        
            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'textarea' ||
                field.type == 'file' ||
                field.type == 'checkbox' ||
                field.type == 'select-one' ||
                field.type == 'password') &&
                field.disabled == false) {

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

                if (trim(value).length == 0) {

                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid = false;
                }
            } else if (field.type == "select-multiple") { 
                var numOptions = field.options.length;
                lastSelected=-1;
                for(loop=numOptions-1;loop>=0;loop--) {
                    if(field.options[loop].selected) {
                        lastSelected = loop;
                        value = field.options[loop].value;
                        break;
                    }
                }
                if(lastSelected < 0 || trim(value).length == 0) {
                    if(i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid=false;
                }
            } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
                isChecked=-1;
                for (loop=0;loop < field.length;loop++) {
                    if (field[loop].checked) {
                        isChecked=loop;
                        break; // only one needs to be checked
                    }
                }
                if (isChecked < 0) {
                    if (i == 0) {
                        focusField = field[0];
                    }
                    fields[i++] = oRequiredIf[x][1];
                    isValid=false;
                }
            }
        }
        }
        if (fields.length > 0) {
           if(focusField.style.display!='none' &&
              focusField.type!='hidden'){
            focusField.focus();
           }
           showValidationMsg(fields.join('\n'));
        }
        return isValid;
        }
function validateMinLength(form) {
        var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");


        oMinLength = eval('new ' + formName.value + '_minlength()');

        for (x in oMinLength) {
            var field = form[oMinLength[x][0]];

            if ((field.type == 'hidden' ||
                field.type == 'text' ||
                field.type == 'password' ||
                field.type == 'textarea') &&
                field.disabled == false) {

                var iMin = parseInt(oMinLength[x][2]("minlength"));
                if ((trim(field.value).length > 0) && (field.value.length < iMin)) {
                    if (i == 0) {
                        focusField = field;
                    }
                    fields[i++] = oMinLength[x][1];
                    isValid = false;
                }
            }
        }
        if (fields.length > 0 &&
            focusField.type!='hidden') {
           focusField.focus();
           showValidationMsg(fields.join('\n'));
        }
        return isValid;
    }

