/*
Coded by Marco Alionso Ramirez, m.alionso@gmail.com

This validates form inputs and writes an error messages to a div if the required fields
aren't filled in.

Usage:

Add to your classes the class name "required" and put the message you want to appear
in the title attribute.  If you want to validate an email address give it both classnames,
"required" and "email."
*/
var FormValidator = {
	
	validateTextField: function(field, message) {
		return field.value == "" ? message + "\r\n" : '';
	},
	
	validateCheckbox: function(field, message) {
		return (!field.checked) ? message + "\r\n" : '';
	},
	
	validateRadioField: function(field, message){
		var checked = false;
		for(var i = 0; i < field.length; i++){
			if(field[i].checked){
				checked = true;
				return '';
			}
		}
		return message + "\r\n";
	},
	
	emailRegExp: /^[A-Z0-9_+.-]+@([A-Z0-9-]+\.)+[A-Z]+$/i,
	
	validateEmailAddress: function(field, message){
		return this.emailRegExp.test(field.value) ? '' : message + "\r\n";
	},
	
	validateForm: function(form, div){
		var errMsg = '';
		for(var i = 0; i < form.elements.length; i++){
			var field = form.elements[i];
			if(/\brequired\b/.test(field.className)){
				if(field.onvalidate){
					errMsg += field.onvalidate();
				}else if(/\bemail\b/.test(field.className)){
					errMsg += this.validateEmailAddress(field, field.title);
				}else if(field.type == "checkbox"){
					errMsg += this.validateCheckbox(field, field.title);
				}else if(field.type == "radio"){
					errMsg += this.validateRadioField(form[field.name], field.title);
				}else{
					errMsg += this.validateTextField(field, field.title);
				}
			}
		}
		if (errMsg != "") {
			alert("Missing Required Fields:\r\n" + errMsg);
			//div.innerHTML = '<div class="errorHeader">Missing Required Fields</div>' + errMsg;
			//div.className = 'errorDiv';
			return false;
		}
		return true;
	}
};