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, msg) {
if (! document.getElementsByName(fieldName)[0].checked) this.collateErrors(fieldName, msg);
}

function isDate(fieldName, msg, required) {
if (required) var regEx=/^(\d{2})(\/|-)(\d{2})(\/|-)(\d{2}|\d{4})$/;
else var regEx=/^((\d{2})(\/|-)(\d{2})(\/|-)(\d{2}|\d{4}))?$/; // dd-mm-yy[yy] or dd/mm/yy[yy]
if (! regEx.test(fieldName.value)) this.collateErrors(fieldName, msg);
}

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

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

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

function isNumber(fieldName, msg, 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, msg);
break;
}
}
}


function isPassword(fieldName, msg, 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, msg);
}

function isSelected(fieldName, msg) {
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, msg);
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;
}
}

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

