function validateForm(form, fields, display, message) {
var dataCheck = function(field) {
switch(field.type) {
case "select-one": if(field.selectedIndex == 0) return false;
break;
case "select-multiple": if(field.selectedIndex == 0) return false;
break;
case "checkbox": if(field.checked) return false;
break;
default: if(field.value.replace(/^\s*/, "") == "") return false;
}
return true;
}
if(arguments.length > 1) {
if(fields == "") return true;
fields = fields.split(',');
var ok = Boolean(display && form[fields[0]].getAttribute);
var msg = (message) ? message : (ok) ? "Please fill in the following fields:" : "Please enter all mandatory fields.";
var error = false;
var f = function() {
error = true;
if(ok) msg += val + "\n";
};
if(ok) msg += "\n\n";
for(var i = 0; i < fields.length; i++) {
var val = (ok && form[fields[i]].getAttribute("displayValue")) ? form[fields[i]].getAttribute("displayValue") : form[fields[i]].name.toLowerCase();
if(!dataCheck(form[fields[i]])) f();
}
if(error) {
alert(msg);
return false;
}
else return true;
}
else {
var required = [];
var returnVal = true;
var element = null;
for(var i = 0; i < form.elements.length; i++) {
var field = form.elements[i];
if(field.disabled) continue;
if(field.required) {
if(!dataCheck(field)) required[required.length] = field.displayName
}
if(field.dataType) {
var ret = field.checkValue();
if(!ret && !element) element = field;
returnVal = (!returnVal) ? false : ret;
}
}
if(element) {
element.focus();
element.select();
}
if(required.length) {
alert("Please fill in the following fields:\n\n" + required.join("\n"));
return false;
}
return returnVal;
}
}