

function findElement(form, name) {
  result = null;
  for (var i=0;i < form.length && result==null; i++) {
    if (form.elements[i].name == name)
       result = form.elements[i];
  }
  return result;
}

function flyToPN(form, disp) {
   findElement(form, "paging.dispatch").value = disp;
   form.submit();
}

function isChecked(form, cbName)  {
   var checked = false;
   for (i=0; i < form.elements.length && !checked; i++) {
      if (form.elements[i].name == cbName) {
         checked = form.elements[i].checked;
      }
   }
   return checked;
}

function getComboText(comboElement) {
   return comboElement.options[comboElement.selectedIndex].text;
}


function strutsIsValidDate(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 strutsValidateDate(field, datePattern) {
   var bValid = true;
   var value = field.value;
   if ((field.type == 'hidden' ||
        field.type == 'text' ||
        field.type == 'textarea') &&
       (value.length > 0) && (datePattern.length > 0) &&
         field.disabled == false) {
         var MONTH = "MM";
        var DAY = "dd";
        var YEAR = "yyyy";
        var orderMonth = datePattern.indexOf(MONTH);
        var orderDay = datePattern.indexOf(DAY);
        var orderYear = datePattern.indexOf(YEAR);
        if ((orderDay < orderYear && orderDay > orderMonth)) {
            var iDelim1 = orderMonth + MONTH.length;
            var iDelim2 = orderDay + DAY.length;
            var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
            var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
            if (iDelim1 == orderDay && iDelim2 == orderYear) {
               dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
            } else if (iDelim1 == orderDay) {
               dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
            } else if (iDelim2 == orderYear) {
               dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
            } else {
               dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
            }
            var matched = dateRegexp.exec(value);
            if(matched != null) {
               if (!strutsIsValidDate(matched[2], matched[1], matched[3])) {
                  bValid =  false;
               }
            } else {
               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 (!strutsIsValidDate(matched[1], matched[2], matched[3])) {
                    bValid =  false;
                 }
            } else {
                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 (!strutsIsValidDate(matched[3], matched[2], matched[1])) {
                    bValid =  false;
                }
            } else {
                 bValid =  false;
            }
        } else {
            bValid =  false;
        }
   }
   return bValid;
}


function strutsValidateMask(field,mask) {
      var isValid = true;

      if ((field.type == 'hidden' ||
          field.type == 'text' ||
          field.type == 'textarea' ||
          field.type == 'file') &&
			 (field.value.length > 0) &&
          field.disabled == false) {

          if (!strutsMatchPattern(field.value,mask)) {
               isValid = false;
          }
     }

     return isValid;
}

function strutsMatchPattern(value, mask) {
   var re = new RegExp(mask);
   return re.exec(value);
}



