function validateRequired(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oRequired = eval('new ' + formName.value + '_required()');
    
    for (x in oRequired) {
    	var field = form[oRequired[x][0]];
    	
    	if (field.type == 'text' ||
            field.type == 'textarea' ||
            field.type == 'file' ||
            field.type == 'select-one' ||
            (field.length>1 && field[0].type == 'radio') ||(field.length>1 && field[0].type == 'checkbox') ||
            field.type == 'hidden' ||
            field.type == 'password') {
            
            if (field.length>1 && field[0].type == 'radio') {
				if (!isCheckedInRequired(field)) {
	                if (i == 0) {
	                    if (field.type == 'hidden') {
	                    	focusField = '';
	                    } else {
	                    	focusField = field[0];
	                    }
	                }
					fields[i++] = oRequired[x][1];
					isValid = false;
				}
            }else if (field.length>1 && field[0].type == 'checkbox') {
				if (!isCheckedInRequired(field)) {
	                if (i == 0) {
	                    if (field.type == 'hidden') {
	                    	focusField = '';
	                    } else {
	                    	focusField = field[0];
	                    }
	                }
					fields[i++] = oRequired[x][1];
					isValid = false;
				}
            } else {
	            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) {
	                    if (field.type == 'hidden') {
	                    	focusField = '';
	                    } else {
	                    	focusField = field;
	                    }
	                }
	                fields[i++] = oRequired[x][1];
	                isValid = false;
	            }
			}
        }
    }
    if (fields.length > 0) {
		if (focusField != '') {
			if(focusField.name=='content'){
			var editor_obj = document.all["_content_editor"];
			if( editor_obj != '' && editor_obj!=null){
				editor_focus(editor_obj);
			}
			}else{
				focusField.focus(); //?
			}
		}
//       alert(fields.join('\n'));
		alert(fields[0]);
    }
    return isValid;
}

// Trim whitespace from left and right sides of s.
function trim(s) {
    return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

function isCheckedInRequired(f)
{
	var i;
	for (i=0; i<f.length; i++) {
		if (f[i].checked == true) {
			return true;
		}
	}
	return false;
}


// true if all checkbox is not checked
function checkboxCheck(f)
{
	var i, flag=true;
	for (i=0; i<f.length; i++) {
		if (f[i].checked == true) {
			flag = false;
		}
	}
	if (flag) {
		return true;
	} else {
		return false;
	}
}


function validateMinLength(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oMinLength = eval('new ' + formName.value + '_minlength()');
	var p, len;		// to check Korean
	var cnt = 0;
    for (x in oMinLength) {
    
        var field = form[oMinLength[x][0]];
        
        if (field.type == 'text' ||
            field.type == 'password' ||
        	field.type == 'hidden' ||
        	field.type == 'textarea') {

            var iMin = parseInt(oMinLength[x][2]("minlength"));
            
            len=0;
			for(p=0; p< field.value.length; p++)
			{
				(field.value.charCodeAt(p)  > 255) ? len+=2 : len++;	 // check Korean
			}
			
            if ((trim(field.value).length > 0) && (len < iMin)) {
                if (i == 0) {
                    if (field.type == 'hidden') {
                    	focusField = '';
                    } else {
                    	focusField = field;
                    }                
                }
                fields[i++] = oMinLength[x][1];
                isValid = false;
            }
        }
    }
    if (fields.length > 0) {
       if (focusField != '') {
          focusField.focus();
       }
       alert(fields.join('\n'));
    }
    return isValid;
}

function validateMaxLength(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
	var p, len;		// to check Korean
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oMaxLength = eval('new ' + formName.value + '_maxlength()');
    
    for (x in oMaxLength) {
        var field = form[oMaxLength[x][0]];

        if (field.type == 'text' ||
            field.type == 'password' ||
        	field.type == 'hidden' ||
            field.type == 'textarea') {

            var iMax = parseInt(oMaxLength[x][2]("maxlength"));

            len=0;
			for(p=0; p< field.value.length; p++)
			{
				(field.value.charCodeAt(p)  > 255) ? len+=2 : len++;	 // check Korean
			}

            if (len > iMax) {
                if (i == 0) {
                    if (field.type == 'hidden') {
                    	focusField = '';
                    } else {
                    	focusField = field;
                    }
                }
                fields[i++] = oMaxLength[x][1];
                isValid = false;
            }
        }

    }
    if (fields.length > 0) {
       if (focusField != '') {
          focusField.focus();
       }
       alert(fields.join('\n'));
    }
    return isValid;
}

function validateMask(form)
{
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oMasked = eval('new ' + formName.value + '_mask()');
    for (x in oMasked)
    {
        var field = form[oMasked[x][0]];
        if (field.type == 'text' ||
            field.type == 'textarea' ||
            field.type == 'file' ||
            field.type == 'select-one' ||
            (field.length>1 && field[0].type == 'radio') ||
            field.type == 'hidden' ||
            field.type == 'password')
       {
            if (field.length>1 && field[0].type == 'radio')
            {
               if ( !isValidCheckedValue(field, oMasked[x][2]("mask")) )
               {
                  if (i == 0)
                  {
                      if (field[0].type == 'hidden')
                        focusField = '';
                      else
 	                    focusField = field[0];
                  }
                  fields[i++] = oMasked[x][1];
                  isValid = false;
               }
            }
            else
            {
              if (!matchPattern(field.value, oMasked[x][2]("mask")))
              {
                if (i == 0)
                {
                    if (field.type == 'hidden')
                    	focusField = '';
                    else
 	                    focusField = field;
                }
                fields[i++] = oMasked[x][1];
                isValid = false;
             }
           }
      }
    }

    if (fields.length > 0) {
		if (focusField != '') {
			focusField.focus();
		}
		// alert(fields.join('\n'));
		alert(fields[0]);
    }
    return isValid;
}
// true if mask exists in field.
function isValidCheckedValue(field, mask)
{
	var flag = false;
	for(var j = 0; j < field.length; j++)
	if( field[j].checked && matchPattern(field[j].value, mask) )
		flag = true;
	return flag;
}
// true if match
function matchPattern(value, mask) {
   return mask.exec(value);
}

function validateByte(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oByte = eval('new ' + formName.value + '_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 validateShort(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oShort = eval('new ' + formName.value + '_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 validateInteger(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oInteger = eval('new ' + formName.value + '_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 validateFloat(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
    oFloat = eval('new ' + formName.value + '_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 validateDate(form) {
   var bValid = true;
   var focusField = null;
   var i = 0;
   var fields = new Array();
   var formName = form.getAttributeNode("name");
   oDate = eval('new ' + formName.value + '_DateValidations()');
   
   for (x in oDate) {
       var 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 validateRange(form) {
    return validateIntRange(form);
}

function validateIntRange(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
   	oRange = eval('new ' + formName.value + '_intRange()');
  
    for (x in oRange) {
        var field = form[oRange[x][0]];

        if ((field.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 validateFloatRange(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
   	oRange = eval('new ' + formName.value + '_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 validateCreditCard(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
   	oCreditCard = eval('new ' + formName.value + '_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 validateEmail(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
   	oEmail = eval('new ' + formName.value + '_email()');
    for (x in oEmail) {
        if ((form[oEmail[x][0]].type == 'text' || form[oEmail[x][0]].type == 'hidden' ||
             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 validateTwoFields(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
   	oTwoFields = eval('new ' + formName.value + '_twofields()');
  
    for (x in oTwoFields) {
        var field = form[oTwoFields[x][0]];
        var secondField = form[oTwoFields[x][2]("secondProperty")];
    
        if (field.type == 'text' ||
            field.type == 'textarea' ||
            field.type == 'select-one' ||
            field.type == 'radio' ||
            field.type == 'password') {
    
            var value;
            var secondValue;
            // get field's value
            if (field.type == "select-one") {
                var si = field.selectedIndex;
                value = field.options[si].value;
                secondValue = secondField.options[si].value;
            } else {
                value = field.value;
                secondValue = secondField.value;
            }
        
            if (value != secondValue) {
            
                if (i == 0) {
                    focusField = field;
                }
                fields[i++] = oTwoFields[x][1];
                bValid = false;
            }
        }
    }
    
    if (fields.length > 0) {
        focusField.focus();
        alert(fields.join('\n'));
    }
    
    return bValid;
}

function validateValidWhen(form) {
    var bValid = true;
/*    var focusField = null;
    var i = 0;
    var fields = new Array();
    var formName = form.getAttributeNode("name");
   	oEmail = eval('new ' + formName.value + '_email()');
    for (x in oEmail) {
        if ((form[oEmail[x][0]].type == 'text' || form[oEmail[x][0]].type == 'hidden' ||
             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;
}

// fill the input value
function setInputValue(obj, value, isEscape)
{
	if( obj.type == "text" ||
		obj.type == "textarea" ||
		obj.type == "file" ||
		obj.type == "hidden" ||
		obj.type == "password" )
	{
		obj.value = ( isEscape != false ) ? unescapeXml(value) : value;
	}
	else if( obj.type == "select-one" || obj.type == "select-multiple" )
	{
		for(var i = 0; i < obj.options.length; i++)
		{
			if( obj.options[i].value == value )
				obj.options[i].selected = true;
		}
	}
	else if( obj.length > 1 && obj[0].type == "radio" )
	{
		for(var i = 0; i < obj.length; i++)
		{
			if( obj[i].value == value )
				obj[i].checked = true;
		}
	}
}

function unescapeXml(value)
{
	//<,>,&,'," 
	value = value.replace(/&lt;/g, "<");
	value = value.replace(/&gt;/g, ">");
	value = value.replace(/&amp;/g, "&");
	value = value.replace(/&#039;/g, "'");
	value = value.replace(/&#034;/g, "\"");
	return value;
}