function formguard() {
this.errorMessages='';
this.errorFieldNames=new Array();
this.isChecked=isChecked;
this.isDate=isDate;
this.isPassword=isPassword;
this.isEmail=isEmail;
this.isMatch=isMatch;
this.isNumber=isNumber;
this.isFilled=isFilled;
this.isSelected=isSelected;
this.alertErrors=alertErrors;
this.collateErrors=collateErrors;
if (typeof(tinyMCE)=="object") tinyMCE.triggerSave();
}

function isChecked(fieldName, message) {
if (! document.getElementsByName(fieldName)[0].checked) this.collateErrors(fieldName, message);
}

function isDate(fieldName, message, required) {
var fieldsArray=document.getElementsByName(fieldName);
for (var i = 0; i < fieldsArray.length; i++) {
if (required) var regEx=/^(\d{2})\/(\d{2})\/(\d{4})$/;
else var regEx=/^((\d{2})(\/)(\d{2})(\/)(\d{4}))?$/; // dd/mm/yyyy
if (! regEx.test(fieldsArray[i].value)) {
this.collateErrors(fieldName, message);
break;
}
}
}

function isEmail(fieldName, message, required) {
var fieldsArray=document.getElementsByName(fieldName);
for (var i = 0; i < fieldsArray.length; i++) {
if (required) var regEx=/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/
else var regEx=/^([\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7})?$/;
if (! regEx.test(fieldsArray[i].value))  {
this.collateErrors(fieldName, message);
break;
}
}
}

function isFilled(fieldName, message, required) {
var fieldsArray=document.getElementsByName(fieldName);
for (var i = 0; i < fieldsArray.length; i++) {
if (fieldsArray[i].value=='') {
this.collateErrors(fieldName, message);
break;
}
}
}

function isMatch(fieldName1, fieldName2,  message) {
if (document.getElementsByName(fieldName1)[0].value != document.getElementsByName(fieldName2)[0].value) this.collateErrors(fieldName1, message);
}

function isNumber(fieldName, message, required) {
var fieldsArray=document.getElementsByName(fieldName);
for (var i=0; i < fieldsArray.length; i++) {
if ((required && fieldsArray[i].value=="") || (fieldsArray[i].value!="" && isNaN(parseFloat(fieldsArray[i].value)))) {
this.collateErrors(fieldName, message);
break;
}
}
}

function isPassword(fieldName, message, required) {
if (required) var regEx=/^([a-zA-Z0-9_]){4,}$/; 
else var regEx=/^(([a-zA-Z0-9_]){4,})?$/;
if (! regEx.test(document.getElementsByName(fieldName)[0].value)) this.collateErrors(fieldName, message);
}

function isSelected(fieldName, message) {
var fieldsArray=document.getElementsByName(fieldName);
for (var i = 0; i < fieldsArray.length; i++) {
var minIndex=(fieldsArray[i].type=="select-one") ? 1 : 0;
if (fieldsArray[i].selectedIndex < minIndex)  {
this.collateErrors(fieldName, message);
break;
}
}
}

function alertErrors() {
if (this.errorMessages) {
alert(this.errorMessages);
// highlight labels of problematic fields if possible
var labelsArray=document.getElementsByTagName('label');
for (var l=0; l < labelsArray.length; l++) {
for (var f=0; f < this.errorFieldNames.length; f++) {
if (this.errorFieldNames[f]==labelsArray[l].getAttribute('for')) labelsArray[l].style.color="red";
}
}
return false;
}
return true;
}

function collateErrors(fieldName, message) {
this.errorMessages+=message+"\r\n";
this.errorFieldNames.push(fieldName);
}

