

function validateEquals(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oEquals = new strEquals();
                    for(x in oEquals){
                        var field = form[oEquals[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compStr = oEquals[x][2]("equals");
                            
                            if(value != compStr){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oEquals[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateIntGreater(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oIntGreater = new intGreater();
                    for(x in oIntGreater){
                        var field = form[oIntGreater[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseInt(oIntGreater[x][2]("greater"));
                            
                            if(parseInt(value) <= compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oIntGreater[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
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;
            }
function validateDate(form) {
               var bValid = true;
               var focusField = null;
               var i = 0;
               var fields = new Array();
               oDate = new DateValidations();
               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;
            }
function validateMaskZenkakuAlphabet(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oZenkakuAlphabet = new maskZenkakuAlphabet();
                    for(x in oZenkakuAlphabet){
                        var field = form[oZenkakuAlphabet[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isZenkakuAlphabet(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oZenkakuAlphabet[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isZenkakuAlphabet(str){
                    var strZenkakuAlphabet = "`abcdefghijklmnopqrstuvwxy";
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strZenkakuAlphabet.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateFloatGreaterEqual(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oFloatGreaterEqual = new floatGreaterEqual();
                    for(x in oFloatGreaterEqual){
                        var field = form[oFloatGreaterEqual[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseFloat(oFloatGreaterEqual[x][2]("greaterEqual"));
                            
                            if(parseFloat(value) < compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oFloatGreaterEqual[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateFloat(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oFloat = new FloatValidations();
                for (x in oFloat) {
                	var field = form[oFloat[x][0]];
                	
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        
                    	var value = '';
						// get field's value
						if (field.type == "select-one") {
							var si = field.selectedIndex;
							if (si >= 0) {
							    value = field.options[si].value;
							}
						} else {
							value = field.value;
						}
                        
                        if (value.length > 0) {
                            // remove '.' before checking digits
                            var tempArray = value.split('.');
                            var joinedString= tempArray.join('');

                            if (!isAllDigits(joinedString)) {
                                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.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
function validateIntEquals(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oIntEquals = new intEquals();
                    for(x in oIntEquals){
                        var field = form[oIntEquals[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseInt(oIntEquals[x][2]("equals"));
                            
                            if(parseInt(value) != compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oIntEquals[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMinimumLength(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMinlength = new minlength();
                    for(x in oMinlength){
                        var field = form[oMinlength[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compLength = parseInt(oMinlength[x][2]("minlength"));
                            
                            if(value.length <= compLength){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oMinlength[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMinimumByteLength(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMinbytes = new minbytes();
                    for(x in oMinbytes){
                        var field = form[oMinbytes[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compLength = parseInt(oMinbytes[x][2]("minbytes"));
                            
                            if(getByteLength(value) < compLength){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oMinbytes[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateFloatRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRange = new floatRange();
                for (x in oRange) {
                    var field = form[oRange[x][0]];
                    
                    if ((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.focus();
                    alert(fields.join('\n'));
                }
                return isValid;
            }
function validateMaximumLength(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMaxlength = new maxlength();
                    for(x in oMaxlength){
                        var field = form[oMaxlength[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compLength = parseInt(oMaxlength[x][2]("maxlength"));
                            
                            if(value.length >= compLength){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oMaxlength[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskHankaku(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oHankaku = new maskHankaku();
                    for(x in oHankaku){
                        var field = form[oHankaku[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isHankaku(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oHankaku[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isHankaku(str){
                    var strHankaku = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜĻŨ§¨ŠĒĢ¯Ŧ­Ž°Ūß !#%&()*+,-./:;<=>?@[]^_`{|}~ĨĸŖ$\"\'\\\r\nĄ¤";
                    for(var i = 0; i < str.length; i++ ){
                        var c = str.charAt(i);
                        if(strHankaku.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateInteger(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oInteger = new IntegerValidations();
                for (x in oInteger) {
                	var field = form[oInteger[x][0]];

                    if (field.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) {
                        
                            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.focus();
                   alert(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 validateRange(form) {
                return validateIntRange(form);
            }
function validateFloatGreater(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oFloatGreater = new floatGreater();
                    for(x in oFloatGreater){
                        var field = form[oFloatGreater[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseFloat(oFloatGreater[x][2]("greater"));
                            
                            if(parseFloat(value) <= compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oFloatGreater[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateFloatLess(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oFloatLess = new floatLess();
                    for(x in oFloatLess){
                        var field = form[oFloatLess[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            var compValue = parseFloat(oFloatLess[x][2]("less"));
                            
                            if(parseFloat(value) >= compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oFloatLess[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaximumByteLength(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMaxbytes = new maxbytes();
                    for(x in oMaxbytes){
                        var field = form[oMaxbytes[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compLength = parseInt(oMaxbytes[x][2]("maxbytes"));
                            
                            if(getByteLength(value) > compLength){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oMaxbytes[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function getByteLength(str){
                    var count = 0;
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(isHankaku(c)){
                            count++;
                        }else{
                            count += 2;
                        }
                    }
                    return count;
                }
function validateIntLessEqual(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oIntLessEqual = new intLessEqual();
                    for(x in oIntLessEqual){
                        var field = form[oIntLessEqual[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseInt(oIntLessEqual[x][2]("lessEqual"));
                            
                            if(parseInt(value) > compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oIntLessEqual[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateShort(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oShort = new ShortValidations();
                for (x in oShort) {
                	var field = form[oShort[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) {
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oShort[x][1];

                            } else {
                        
	                            var iValue = parseInt(value);
	                            if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
	                                if (i == 0) {
	                                    focusField = field;
	                                }
	                                fields[i++] = oShort[x][1];
	                                bValid = false;
	                            }
	                       }
                       }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
function validateNotEquals(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oNotEquals = new strNotEquals();
                    for(x in oNotEquals){
                        var field = form[oNotEquals[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compStr = oNotEquals[x][2]("notEquals");
                            
                            if(value == compStr){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oEquals[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskHankakuKatakana(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oHankakuKatakana = new maskHankakuKatakana();
                    for(x in oHankakuKatakana){
                        var field = form[oHankakuKatakana[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isHankakuKatakana(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oHankakuKatakana[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isHankakuKatakana(str){
                    var strHankakukana = "ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜĻŨ§¨ŠĒĢ¯Ŧ­Ž°Ūß ";
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strHankakukana.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateFloatLessEqual(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oFloatLessEqual = new floatLessEqual();
                    for(x in oFloatLessEqual){
                        var field = form[oFloatLessEqual[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseFloat(oFloatLessEqual[x][2]("lessEqual"));
                            
                            if(parseFloat(value) > compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oFloatLessEqual[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskZenkakuKatakana(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oZenkakuKatakana = new maskZenkakuKatakana();
                    for(x in oZenkakuKatakana){
                        var field = form[oZenkakuKatakana[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isZenkakuKatakana(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oZenkakuKatakana[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isZenkakuKatakana(str){
                    var strZenkakuKatakana = "ACEGIJLNPRTVXZ\^`cegijklmnqtwz}~KMOQSUWY[]_adfhorux{psvy|@BDFHb[@KJRSE";
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strZenkakuKatakana.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateByte(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oByte = new ByteValidations();
                for (x in oByte) {
                	var field = form[oByte[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) {
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oByte[x][1];

                            } else {

	                            var iValue = parseInt(value);
	                            if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
	                                if (i == 0) {
	                                    focusField = field;
	                                }
	                                fields[i++] = oByte[x][1];
	                                bValid = false;
	                            }
                            }
						}
						
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
function validateMaskAlphabet(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oAlphabet = new maskAlphabet();
                    for(x in oAlphabet){
                        var field = form[oAlphabet[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isHankakuAlphabet(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oAlphabet[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isHankakuAlphabet(str){
                    var strAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strAlphabet.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateFloatEquals(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oFloatEquals = new floatEquals();
                    for(x in oFloatEquals){
                        var field = form[oFloatEquals[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseFloat(oFloatEquals[x][2]("equals"));
                            
                            if(parseFloat(value) != compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oFloatEquals[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateIntGreaterEqual(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oIntGreaterEqual = new intGreaterEqual();
                    for(x in oIntGreaterEqual){
                        var field = form[oIntGreaterEqual[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseInt(oIntGreaterEqual[x][2]("greaterEqual"));
                            
                            if(parseInt(value) < compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oIntGreaterEqual[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskZenkaku(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oZenkaku = new maskZenkaku();
                    for(x in oZenkaku){
                        var field = form[oZenkaku[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isZenkaku(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oZenkaku[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isZenkaku(str){
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(isHankaku(c) && c != '\r' && c != '\n'){
                            return false;
                        }
                    }
                    return true;
                }
function validateMaskHankakuNumber(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oNumber = new maskNumber();
                    for(x in oNumber){
                        var field = form[oNumber[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isHankakuNumber(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oNumber[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isHankakuNumber(str){
                    var strNumber  ="0123456789";
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strNumber.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateIntNotEquals(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oIntNotEquals = new intNotEquals();
                    for(x in oIntNotEquals){
                        var field = form[oIntNotEquals[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseInt(oIntNotEquals[x][2]("notEquals"));
                            
                            if(parseInt(value) == compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oIntNotEquals[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskZenkakuAlphaNum(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oZenkakuAlphaNum = new maskZenkakuAlphaNum();
                    for(x in oZenkakuAlphaNum){
                        var field = form[oZenkakuAlphaNum[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isZenkakuAlphabet(value)
                                    && !isZenkakuNumber(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oZenkakuAlphaNum[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskZenkakuNumber(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oZenkakuNumber = new maskZenkakuNumber();
                    for(x in oZenkakuNumber){
                        var field = form[oZenkakuNumber[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isZenkakuNumber(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oZenkakuNumber[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isZenkakuNumber(str){
                    var strZenkakuNumber = "OPQRSTUVWX";
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strZenkakuNumber.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateJustByteLength(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oJustbytes = new justbytes();
                    for(x in oJustbytes){
                        var field = form[oJustbytes[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compLength = parseInt(oJustbytes[x][2]("bytes"));
                            
                            if(getByteLength(value) != compLength){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oJustbytes[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateRequired(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRequired = new required();
                for (x in oRequired) {
                	var field = form[oRequired[x][0]];
                	
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'file' ||
                        field.type == 'select-one' ||
                        field.type == 'radio' ||
                        field.type == 'password') {
                        
                        var value = '';
						// get field's value
						if (field.type == "select-one") {
							var si = field.selectedIndex;
							if (si >= 0) {
								value = field.options[si].value;
							}
						} else {
							value = field.value;
						}
                        
                        if (trim(value).length == 0) {
                        
	                        if (i == 0) {
	                            focusField = field;
	                        }
	                        fields[i++] = oRequired[x][1];
	                        isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
            // Trim whitespace from left and right sides of s.
            function trim(s) {
                return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
            }
function validateJustLength(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oJustlength = new justlength();
                    for(x in oJustlength){
                        var field = form[oJustlength[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var value = '';
                            if(field.type == "select-one"){
                                var si = field.selectedIndex;
                                if(si >= 0){
                                    value = field.options[si].value;
                                }
                            }else{
                                value = field.value;
                            }
                            
                            var compLength = parseInt(oJustlength[x][2]("length"));
                            
                            if(value.length != compLength){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oJustlength[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskASCII(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oASCII = new maskASCII();
                    for(x in oASCII){
                        var field = form[oASCII[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isAscii(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oASCII[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isAscii(str){
                    var c;
                    for(var i = 0; i < str.length; i++){
                        c = str.charCodeAt(i);
                        if(!(c >= 0x00 && c <= 0x7F)){
                            return false;
                        }
                    }
                    return true;
                }
function validateFloatNotEquals(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oFloatNotEquals = new floatNotEquals();
                    for(x in oFloatNotEquals){
                        var field = form[oFloatNotEquals[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseFloat(oFloatNotEquals[x][2]("notEquals"));
                            
                            if(parseFloat(value) == compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oFloatNotEquals[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateIntRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRange = new intRange();
                for (x in oRange) {
                    var field = form[oRange[x][0]];
                    
                    if ((field.type == 'text' ||
                         field.type == 'textarea') &&
                        (field.value.length > 0)) {
                        
                        var iMin = parseInt(oRange[x][2]("min"));
                        var iMax = parseInt(oRange[x][2]("max"));
                        var iValue = parseInt(field.value);
                        if (!(iValue >= iMin && iValue <= iMax)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRange[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return isValid;
            }
function validateMaskAlphaNum(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oAlphaNum = new maskAlphaNum();
                    for(x in oAlphaNum){
                        var field = form[oAlphaNum[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isHankakuAlphabet(value)
                                    && !isHankakuNumber(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oAlphaNum[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
function validateMaskZenkakuHiragana(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oZenkakuHiragana = new maskZenkakuHiragana();
                    for(x in oZenkakuHiragana){
                        var field = form[oZenkakuHiragana[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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(!isZenkakuHiragana(value)){
                                    bValid = false;
                                    if(i == 0){
                                        focusField = field;
                                    }
                                    fields[i++] = oZenkakuHiragana[x][1];
                                }
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }
                
                function isZenkakuHiragana(str){
                    var strZenkakuHiragana = " ĸ¤Ļ¨ŠĢ­¯ąŗĩˇšģŊŋÂÄÆČÉĘËĖÍĐĶÖŲÜŨŪßāâîäīæįčéęëíđņĒŦŽ°˛´ļ¸ēŧžĀÃÅĮÎŅÔ×ÚĪŌÕØÛĄĨ§Ááãå[@"
                    for(var i = 0; i < str.length; i++){
                        var c = str.charAt(i);
                        if(strZenkakuHiragana.indexOf(c, 0) == -1){
                            return false;
                        }
                    }
                    return true;
                }
function validateEmail(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oEmail = new email();
                for (x in oEmail) {
                    if ((form[oEmail[x][0]].type == 'text' ||
                         form[oEmail[x][0]].type == 'textarea') &&
                        (form[oEmail[x][0]].value.length > 0)) {
                        if (!checkEmail(form[oEmail[x][0]].value)) {
                            if (i == 0) {
                                focusField = form[oEmail[x][0]];
                            }
                            fields[i++] = oEmail[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return bValid;
            }

            /**
             * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
             * http://javascript.internet.com
             */
            function checkEmail(emailStr) {
               if (emailStr.length == 0) {
                   return true;
               }
               var emailPat=/^(.+)@(.+)$/;
               var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
               var validChars="\[^\\s" + specialChars + "\]";
               var quotedUser="(\"[^\"]*\")";
               var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
               var atom=validChars + '+';
               var word="(" + atom + "|" + quotedUser + ")";
               var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
               var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
               var matchArray=emailStr.match(emailPat);
               if (matchArray == null) {
                   return false;
               }
               var user=matchArray[1];
               var domain=matchArray[2];
               if (user.match(userPat) == null) {
                   return false;
               }
               var IPArray = domain.match(ipDomainPat);
               if (IPArray != null) {
                   for (var i = 1; i <= 4; i++) {
                      if (IPArray[i] > 255) {
                         return false;
                      }
                   }
                   return true;
               }
               var domainArray=domain.match(domainPat);
               if (domainArray == null) {
                   return false;
               }
               var atomPat=new RegExp(atom,"g");
               var domArr=domain.match(atomPat);
               var len=domArr.length;
               if ((domArr[domArr.length-1].length < 2) ||
                   (domArr[domArr.length-1].length > 3)) {
                   return false;
               }
               if (len < 2) {
                   return false;
               }
               return true;
            }
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);
            }
function validateIntLess(form){
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oIntLess = new intLess();
                    for(x in oIntLess){
                        var field = form[oIntLess[x][0]];
                        
                        if(field.type == 'text'
                            || field.type == 'textarea'
                            || field.type == 'select-one'
                            || field.type == 'radio'
                        ){
                            var 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){
                                continue;
                            }
                            
                            var compValue = parseInt(oIntLess[x][2]("less"));
                            
                            if(parseInt(value) >= compValue){
                                bValid = false;
                                if(i == 0){
                                    focusField = field;
                                }
                                fields[i++] = oIntLess[x][1];
                            }
                        }
                    }
                    if(fields.length > 0){
                        focusField.focus();
                        alert(fields.join('\n'));
                    }
                    return bValid;
                }

