function validate(form) { if (validation_rule.get(form.name)) { var error = false; var rules = validation_rule.get(form.name); for (var i = 0; i < rules.length; i++) { var obj = $(form.name + '_' + rules[i].name); if (obj) { if (! validateElement(form, obj, rules[i].rule)) error = true; } } return ! error; } else return true; } function validateElement(form, element, rule) { if ((rule.required != null) && (element.value.length == 0)) { alert(rule.required.msg); return false; } if (rule.sfStringValidator != null) { if (! checkString(element.value, rule.sfStringValidator)) return false; } if (rule.sfNumberValidator != null) { if (! checkNum(element.value, rule.sfNumberValidator)) return false; } if (rule.sfEmailValidator != null) { if (! checkEmail(element.value, rule.sfEmailValidator)) return false; } if (rule.sfUrlValidator != null) { if (! checkUrl(element.value, rule.sfUrlValidator)) return false; } if (rule.sfRegexValidator != null) { if (! checkRegex(form, element, rule.sfRegexValidator)) return false; } if (rule.sfCompareValidator != null) { if (! checkCompare(element.value, rule.sfRegexValidator)) return false; } return true; } function checkUrl(value, rule) { if (value.match('/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)/i')) { alert(rule.url_error); return false } return true; } function checkCompare(form, element, rule) { targetelement = $(form.name + '_' + rule.check); if (targetelement) { if (targetelement.value != element.value) { alert(rule.compare_error); return false; } else return true; } else { alert(rule.compare_error); return false; } } function checkRegex(value, rule) { if (value.match(rule.pattern)) { if (value.match == "No") { alert(rule.match_error); return false; } else return true; } else { if (value.match == "Yes") { alert(rule.match_error); return false; } else return true; } } function checkNum(value, rule) { if (value.length == 0) return true; if (parseInt(value)) { if (rule.min != null && parseInt(value) < rule.min) { alert(rule.min_error); return false; } if (rule.max != null && parseInt(value) > rule.max) { alert(rule.max_error); return false; } } else { alert(rule.nan_error); return false; } return true; } function checkEmail(value, rule) { if (! value.match(/\w+([-+.]\w+)*\@\w+([-.]\w+)*\.\w+([-.]\w+)*/)) { alert(rule.email_error); return false; } return true; } function checkString(value, rule) { if (rule.min != null && value.length < rule.min) { alert(rule.min_error); return false; } if (rule.max != null && value.length > rule.max) { alert(rule.max_error); return false; } if (rule.values != null && rule.values.indexOf(rule.values) < 0) { alert(rule.values_error); return false; } return true; }