<!--THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
5724-I63, 5724-H88(C) COPYRIGHT International Business Machines Corp., 1997, 2008
All Rights Reserved * Licensed Materials - Property of IBM
US Government Users Restricted Rights - Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.-->

<form-validation>
  <global>
    <constant>
      <constant-name>phone</constant-name>
      <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>
    </constant>
    <constant>
      <constant-name>zip</constant-name>
      <constant-value>^\d{5}\d*$</constant-value>
    </constant>
    <constant>
      <constant-name>was_name</constant-name>
      <constant-value>^[^\\\/\,\:\;\&quot;\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\&quot;\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@]*$</constant-value>
    </constant>
    <constant>
      <constant-name>file_name</constant-name>
      <constant-value>^[^\&quot;\`\:\*\?\>\&lt;\|][^\&quot;\`\:\*\?\>\&lt;\|]*[\:]?[^\&quot;\`\:\*\?\>\&lt;\|]*$</constant-value>
    </constant>
    <constant>
      <constant-name>path</constant-name>
      <constant-value>^[^\*\?\&gt;\&lt;\|][^\*\?\&gt;\&lt;\|]*$</constant-value>
    </constant>
    <constant>
      <constant-name>class_name</constant-name>
      <constant-value>^[^\*\?\&gt;\&lt;\|\\\/][^\*\?\&gt;\&lt;\|\\\/]*$</constant-value>
    </constant>
    <constant>
      <constant-name>protocol</constant-name>
      <constant-value>^[^\,\;\&quot;\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\`][^\,\;\&quot;\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\`]*$</constant-value>
    </constant>
    <constant>
      <constant-name>db2_name</constant-name>
      <constant-value>^[^\%\!\~\^\&amp;\*\+\#\@\&lt;\&gt;\=\?][^\%\!\~\^\&amp;\*\+\#\@\&lt;\&gt;\=\?]*$</constant-value>
    </constant>
    <constant>
      <constant-name>umask</constant-name>
      <constant-value>^([0-7]){3}$</constant-value>
    </constant>
    <!--changes for LI1107-->
    <constant>
      <constant-name>IPv4</constant-name>
      <constant-value>^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$</constant-value>
    </constant>
    <constant>
      <constant-name>IPv6</constant-name>
      <constant-value>(^(:{2}((([0-9A-Fa-f]{1,4})?)|(([0-9A-Fa-f]{1,4}:){1,5}[0-9A-Fa-f]{1,4})))$)|(^(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})$|^(([0-9A-Fa-f]{1,4}:){5}:((([0-9A-Fa-f]{1,4}:)[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4})?)))$|^(([0-9A-Fa-f]{1,4}:){4}:((([0-9A-Fa-f]{1,4}:){1,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4})?)))$|^(([0-9A-Fa-f]{1,4}:){3}:((([0-9A-Fa-f]{1,4}:){1,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4})?)))$|^(([0-9A-Fa-f]{1,4}:){2}:((([0-9A-Fa-f]{1,4}:){1,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4})?)))$|^(([0-9A-Fa-f]{1,4}:):((([0-9A-Fa-f]{1,4}:){1,5}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4})?)))$)</constant-value>
    </constant>
    <constant>
      <constant-name>IPv4CompatibleIPv6</constant-name>
      <constant-value>^([0]*[0]*[0]*[0]*:){1,7}((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))$</constant-value>
    </constant>
    <constant>
      <constant-name>IPv4MappedIPv6</constant-name>
      <constant-value>^([0]*[0]*[0]*[0]*:){1,6}([fF][fF][fF][fF]:){1}((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))$</constant-value>
    </constant>
    <constant>
      <!-- hostname must be separate from dns hostname to prevent values like 256.256.256.256. Make similar changes to HostnameWithAsterisk below-->
      <constant-name>Hostname</constant-name>
      <constant-value>^(([a-zA-Z0-9]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))(([a-zA-Z0-9\-]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))*))$</constant-value>
    </constant>
    <constant>
     <!-- PK59166 hostname which allows wildcards *.test, test.*, *test-->
      <constant-name>HostnameWithWildcards</constant-name>
      <constant-value>^(\*\.)?(\*)?(([a-zA-Z0-9]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))(([a-zA-Z0-9\-]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))*(\.\*)?(\*)?))$</constant-value>
    </constant>
    <constant>
      <constant-name>DNSHostname</constant-name>
      <!-- <constant-value>^(([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6})||(([a-zA-Z0-9]([a-zA-Z0-9\-\.])*)?((\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))([a-zA-Z0-9\-\.]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))*)$</constant-value> -->
      <!-- <constant-value>^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9]{2,61}$</constant-value> -->
      <constant-value>^(([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9\-]{2,61})||(([a-zA-Z0-9]([a-zA-Z0-9\-\.])*)?((\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))([a-zA-Z0-9\-\.]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))*)$</constant-value>
    </constant>
    <!-- PK59166 hostname with wildcards -->
    <constant>
        <constant-name>DNSHostnameWithWildcards</constant-name>
        <constant-value>^((\*\.)?(\*)?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z0-9\-]{2,61}(\.\*)?(\*)?)||((\*\.)?(\*)?([a-zA-Z0-9]([a-zA-Z0-9\-\.])*)?((\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))([a-zA-Z0-9\-\.]||(\$\{[^\\\/\,\:\;\"\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\#\$\@][^\\\/\,\:\;\"\*\?\&lt;\&gt;\|\=\+\&amp;\%\'\#\$\@]*\}))*(\.\*)?(\*)?)$</constant-value>
    </constant>
    <constant>
      <constant-name>URL</constant-name>
      <!-- <constant-value>^[^\&gt;\&lt;\|\^\!\&quot;\,][^\&gt;\&lt;\|\^\!\&quot;\,]*$</constant-value>-->
      <constant-value>^[^\&lt;\|\^\!\&quot;][^\&lt;\|\^\!\&quot;]*$</constant-value>
    </constant>
    <!--end of changes for LI1107--><!--cmvc pok89202 mask provided by zOZ team--><constant>
	<constant-name>hostIP</constant-name>
	<constant-value>^([*]|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$</constant-value>
</constant>

  	<validator name="required"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateRequired"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 msg="errors.required">
      <javascript><![CDATA[
            function validateRequired(form) {                                                                       
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                          
                var fields = new Array();                                                                           
                oRequired = new required();                                                                         
                                                                                                                    
                for (x in oRequired) {                                                                              
                    if ((form[oRequired[x][0]].type == 'text' || form[oRequired[x][0]].type == 'textarea' || form[oRequired[x][0]].type == 'select' || form[oRequired[x][0]].type == 'radio' || form[oRequired[x][0]].type == 'password') && form[oRequired[x][0]].value == '') {
                       if (i == 0)
                          focusField = form[oRequired[x][0]]; 
                          
                       fields[i++] = oRequired[x][1];
                        
                       bValid = false;                                                                             
                    }                                                                                               
                }                                                                                                   
                                                                                                                   
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                      
                }                                                                                                   
                                                                                                                   
                return bValid;                                                                                      
            }]]>
      </javascript>
    </validator>

    <validator name="apacheMask"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateMask"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.invalid">
      <javascript><![CDATA[
            function validateMask(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMasked = new mask();
                for (x in oMasked) {
                    var field = form[oMasked[x][0]];
                    
                    if ((field.type == 'text' || 
                         field.type == 'textarea') && 
                         (field.value.length > 0)) {
                        
                        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);
            }]]>
      </javascript>
    </validator>

    <validator name="byte"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateByte"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.byte">
      <javascript><![CDATA[
            function validateByte(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                          
                var fields = new Array();                                                                           
                oByte = new byte();                                                                         
            
                for (x in oByte) {                                                                              
                    if ((form[oByte[x][0]].type == 'text' || form[oByte[x][0]].type == 'textarea' || form[oByte[x][0]].type == 'select' || form[oByte[x][0]].type == 'radio') && form[oByte[x][0]].value.length > 0) {   
                       var iValue = parseInt(form[oByte[x][0]].value);
            
                       if (!iValue || !(iValue >= -128 && iValue <= 127)) {
                          if (i == 0)
                             focusField = form[oByte[x][0]]; 
                             
                          fields[i++] = oByte[x][1];
                           
                          bValid = false;
                       }
                    }                                                                                               
                }                                                                                                   
            
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                      
                }                                                                                                   
                                                                                                                   
                return bValid;                                                                                      
            }]]>
      </javascript>
    </validator>

    <validator name="short"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateShort"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.short">
      <javascript><![CDATA[
            function validateShort(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                          
                var fields = new Array();                                                                           
                oShort = new short();                                                                         
            
                for (x in oShort) {                                                                              
                    if ((form[oShort[x][0]].type == 'text' || form[oShort[x][0]].type == 'textarea' || form[oShort[x][0]].type == 'select' || form[oShort[x][0]].type == 'radio') && form[oShort[x][0]].value.length > 0) {   
                       var iValue = parseInt(form[oShort[x][0]].value);
            
                       if (!iValue || !(iValue >= -32768 && iValue <= 32767)) {
                          if (i == 0)
                             focusField = form[oShort[x][0]]; 
                             
                          fields[i++] = oShort[x][1];
                           
                          bValid = false;
                       }
                    }                                                                                               
                }                                                                                                   
            
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                      
                }                                                                                                   
                                                                                                                   
                return bValid;                                                                                      
            }]]>
      </javascript>
    </validator>

    <validator name="integer"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateInteger"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.integer">
      <javascript><![CDATA[
            function validateInteger(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                          
                var fields = new Array();                                                                           
                oInteger = new integer();                                                                         
            
                for (x in oInteger) {                                                                              
                    if ((form[oInteger[x][0]].type == 'text' || form[oInteger[x][0]].type == 'textarea' || form[oInteger[x][0]].type == 'select' || form[oInteger[x][0]].type == 'radio') && form[oInteger[x][0]].value.length > 0) {   
                       var iValue = parseInt(form[oInteger[x][0]].value);
            
                       if (!iValue || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                          if (i == 0)
                             focusField = form[oInteger[x][0]]; 
                             
                          fields[i++] = oInteger[x][1];
                           
                          bValid = false;
                       }
                    }                                                                                               
                }                                                                                                   
            
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                      
                }                                                                                                   
                                                                                                                   
                return bValid;                                                                                      
            }]]>
      </javascript>
    </validator>
      
















    <validator name="long"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateLong"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.long">
      <javascript><![CDATA[
            function validateLong(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                          
                var fields = new Array();                                                                           
                oLong = new long();                                                                         
            
                for (x in oLong) {                                                                              
                    if ((form[oLong[x][0]].type == 'text' || form[oLong[x][0]].type == 'textarea' || form[oLong[x][0]].type == 'select' || form[oLong[x][0]].type == 'radio') && form[oLong[x][0]].value.length > 0) {   
                       var iValue = parseInt(form[oLong[x][0]].value);
            
                       if (!iValue || !(iValue >= -4611686014132420610 && iValue <= 4611686014132420609)) {
                          if (i == 0)
                             focusField = form[oLong[x][0]]; 
                             
                          fields[i++] = oLong[x][1];
                           
                          bValid = false;
                       }
                    }                                                                                               
                }                                                                                                   
            
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                      
                }                                                                                                   
                                                                                                                   
                return bValid;                                                                                      
            }]]>
      </javascript>
    </validator>

    <validator name="float"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateFloat"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.float">
      <javascript><![CDATA[
            function validateFloat(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                          
                var fields = new Array();                                                                           
                oFloat = new float();                                                                         
            
                for (x in oFloat) {                                                                              
                    if ((form[oFloat[x][0]].type == 'text' || form[oFloat[x][0]].type == 'textarea' || form[oFloat[x][0]].type == 'select' || form[oFloat[x][0]].type == 'radio') && form[oFloat[x][0]].value.length > 0) {   
                       var iValue = parseFloat(form[oFloat[x][0]].value);
            
                       if (!iValue) {
                          if (i == 0)
                             focusField = form[oFloat[x][0]]; 
                             
                          fields[i++] = oFloat[x][1];
                           
                          bValid = false;
                       }
                    }                                                                                               
                }                                                                                                   
            
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                      
                }                                                                                                   
                                                                                                                   
                return bValid;                                                                                      
            }]]>
      </javascript>
    </validator>

    <validator name="double"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateDouble"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends=""
                 msg="errors.double"/>

    <validator name="date"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateDate"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends="required"
                 msg="errors.date">
      <javascript><![CDATA[
            function validateDate(form) {                                                                                                                             
               var bValid = true;   
               var focusField = null;                                                                                                                                  
               var i = 0;                                                                                                                                             
               var fields = new Array();                                                                                                                              
               oDate = new date();                                                                                                                                                                                                                                                                                        
               
               for (x in oDate) { 
                  var value = form[oDate[x][0]].value;
                  var datePattern = oDate[x][2]("datePatternStrict");
            
                  if ((form[oDate[x][0]].type == 'text' || form[oDate[x][0]].type == 'textarea') && value.length > 0 && datePattern.length > 0) {
                     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 = form[oDate[x][0]]; 
                                 
                              fields[i++] = oDate[x][1];
                              bValid =  false;
                           }
                        } else {
                           if (i == 0)
                              focusField = form[oDate[x][0]]; 
            
                           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 = form[oDate[x][0]]; 
            
                              fields[i++] = oDate[x][1];
                              bValid =  false;
                           }
                        } else {
                           if (i == 0)
                              focusField = form[oDate[x][0]]; 
            
                           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 = form[oDate[x][0]]; 
            
                              fields[i++] = oDate[x][1];
                              bValid =  false;
                           }
                        } else {
                           if (i == 0)
                              focusField = form[oDate[x][0]]; 
            
                           fields[i++] = oDate[x][1];
                           bValid =  false;
                        }
                     } else {
                        if (i == 0)
                           focusField = form[oDate[x][0]]; 
            
                        fields[i++] = oDate[x][1];
                        bValid =  false;
                     }
            
                  }                                                                                                                                                  
               }                                                                                                                                                                                                                                                                                                             
               
               if (fields.length > 0) { 
                  focusField.focus();                                                                                                                                 
                  alert(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;
            }]]>
      </javascript>
    </validator>

    <validator name="range"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateRange"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends="required,integer"
                 msg="errors.range">
      <javascript><![CDATA[
            function validateRange(form) {                                                                                                    
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                                                    
                var fields = new Array();                                                                                                     
                oRange = new range();                                                                                                        
                                                                                                                                              
                for (x in oRange) {                                                                                                          
                    if ((form[oRange[x][0]].type == 'text' || form[oRange[x][0]].type == 'textarea') && form[oRange[x][0]].value.length > 0) {   
                       var iMin = parseInt(oRange[x][2]("min"));
                       var iMax = parseInt(oRange[x][2]("max"));
                       var iValue = parseInt(form[oRange[x][0]].value);
            
                       if (!(iValue >= iMin && iValue <= iMax)) {
                          if (i == 0)
                             focusField = form[oRange[x][0]]; 
            
                          fields[i++] = oRange[x][1];
            
                          bValid = false;                                                                                                     
                       }                                                                                                                      
                    }                                                                                                                         
                }                                                                                                                             
                                                                                                                                              
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                                                  
                }                                                                                                                             
                                                                                                                                              
                return bValid;                                                                                                                
            }]]>
      </javascript>
    </validator>

    <validator name="creditCard"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateCreditCard"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 depends="required"
                 msg="errors.creditcard">
      <javascript><![CDATA[
            function validateCreditCard(form) {                                                                                                    
                var bValid = true;
                var focusField = null;
                var i = 0;                                                                                                                    
                var fields = new Array();                                                                                                     
                oCreditCard = new creditCard();                                                                                                        
                                                                                                                                              
                for (x in oCreditCard) {                                                                                                          
                    if ((form[oCreditCard[x][0]].type == 'text' || form[oCreditCard[x][0]].type == 'textarea') && form[oCreditCard[x][0]].value.length > 0) {   
                       if (!luhnCheck(form[oCreditCard[x][0]].value)) {
                          if (i == 0)
                             focusField = form[oCreditCard[x][0]]; 
            
                          fields[i++] = oCreditCard[x][1];
            
                          bValid = false;                                                                                                     
                       }                                                                                                                      
                    }                                                                                                                         
                }                                                                                                                             
                                                                                                                                              
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));                                                                                                  
                }                                                                                                                             
                                                                                                                                              
                return bValid;                                                                                                                
            }      
            
            /**
             * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
            */
            function luhnCheck(cardNumber) {
                if (isLuhnNum(cardNumber)) {    
                    var no_digit = cardNumber.length;
                    var oddoeven = no_digit & 1;
                    var sum = 0;
                    for (var count = 0; count < no_digit; count++) {
                        var digit = parseInt(cardNumber.charAt(count));
                        if (!((count & 1) ^ oddoeven)) {
                            digit *= 2;
                            if (digit > 9) digit -= 9;
                        };
                        sum += digit;
                    };
                    if (sum == 0) return false;        
                    if (sum % 10 == 0) return true;
                };
                return false;
            }
            
            function isLuhnNum(argvalue) {
                argvalue = argvalue.toString();
                if (argvalue.length == 0) 
                   return false;
                for (var n = 0; n < argvalue.length; n++)
                   if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n,n+1) > "9") 
                      return false;
                
                return true;
            }]]>
      </javascript>
    </validator>

    <validator name="email"
                 classname="org.apache.struts.validator.FieldChecks"
                 method="validateEmail"
                 methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                 msg="errors.email">
      <javascript><![CDATA[
            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;
            }]]>
      </javascript>
    </validator>
    







    <validator name="when"
                             classname="com.ibm.ws.console.core.validate.FieldChecksExtender"
                             method="validateWhen"
                             methodParams="java.lang.Object,
                                   org.apache.commons.validator.ValidatorAction,
                                   org.apache.commons.validator.Field,
                                   org.apache.struts.action.ActionErrors,
                                   org.apache.commons.validator.Validator,
                                   javax.servlet.http.HttpServletRequest"
                 msg=""/>
                 
    <validator name="longRange"
                                   classname="org.apache.struts.validator.FieldChecks"
                                   method="validateLongRange"
                                   methodParams="java.lang.Object,
                                                org.apache.commons.validator.ValidatorAction,
                                                org.apache.commons.validator.Field,
                                                org.apache.struts.action.ActionErrors,
                                                javax.servlet.http.HttpServletRequest"
                                   depends=""
                                   msg="errors.range"/> 
                                   
    <validator name="maxlength"
                          classname="org.apache.struts.validator.FieldChecks"
                          method="validateMaxLength"
                          methodParams="java.lang.Object,
                                org.apache.commons.validator.ValidatorAction,
                                org.apache.commons.validator.Field,
                                org.apache.struts.action.ActionErrors,
                                javax.servlet.http.HttpServletRequest"
                          depends=""
                     msg="errors.maxlength"/><!--cmvc pok89202 -->
    <validator name="hostMask" classname="com.ibm.ws.console.core.validate.FieldChecksExtender" method="validateHostMask" methodParams="java.lang.Object,org.apache.commons.validator.ValidatorAction,org.apache.commons.validator.Field,org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest" msg="errors.invalid"></validator>
    <validator name="rangeOS" classname="com.ibm.ws.console.core.validate.FieldChecksExtender" method="validateRangeOS" methodParams="java.lang.Object,org.apache.commons.validator.ValidatorAction,org.apache.commons.validator.Field,org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest" msg="errors.range"></validator>
<!--  CMVC defect 245687.1 -->
<validator name="MaximumHeapSize" classname="com.ibm.ws.console.core.validate.FieldChecksExtender" method="validateMaxHeapLimit" methodParams="java.lang.Object,org.apache.commons.validator.ValidatorAction,org.apache.commons.validator.Field,org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest" msg="errors.required"></validator>
	<validator name="int_Or_WAS_Var" 
				classname="com.ibm.ws.console.core.validate.FieldChecksExtender" 
				method="validateInt_Or_WAS_Var" 
				methodParams="java.lang.Object,
								org.apache.commons.validator.ValidatorAction,
								org.apache.commons.validator.Field,
								org.apache.struts.action.ActionErrors,
								javax.servlet.http.HttpServletRequest"
				depends=""
				msg="errors.invalid"/>
	<validator name="mask" 
				classname="com.ibm.ws.console.core.validate.FieldChecksExtender" 
				method="validateJavaMask" 
				methodParams="java.lang.Object,
								org.apache.commons.validator.ValidatorAction,
								org.apache.commons.validator.Field,
								org.apache.struts.action.ActionErrors,
								javax.servlet.http.HttpServletRequest"
				depends=""
				msg="errors.invalid"/>

        <validator name="JavaURLValidation"
               classname="com.ibm.ws.console.core.validate.FieldChecksExtender"
               method="validateURL"
               methodParams="java.lang.Object,
                             org.apache.commons.validator.ValidatorAction,
                             org.apache.commons.validator.Field,
                             org.apache.struts.action.ActionErrors,
                             javax.servlet.http.HttpServletRequest,
                             javax.servlet.ServletContext"/>

        <validator name="JavaURIValidation"
               classname="com.ibm.ws.console.core.validate.FieldChecksExtender"
               method="validateURI"
               methodParams="java.lang.Object,
                             org.apache.commons.validator.ValidatorAction,
                             org.apache.commons.validator.Field,
                             org.apache.struts.action.ActionErrors,
                             javax.servlet.http.HttpServletRequest,
                             javax.servlet.ServletContext"/>

  </global>

    <formset>
        <form name="com.ibm.ws.console.core.authgroup.AuthorizationGroupDetailForm">
            <field property="name" depends="mask">
                <arg0 key="AuthorizationGroup.name.displayName"/>
                <var>
                    <var-name>mask</var-name>
                     <var-value>^[^\.\\\/\,\:\;\&quot;\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\`\[\]\#\$\@][^\\\/\,\;\&quot;\*\?\&gt;\&lt;\|\=\+\&amp;\%\'\`\[\]\#\$\@]*$</var-value>  
                </var>
            </field>
        </form>
  </formset>

</form-validation>
