/* 
	Clean Form Validation was written from scratch by Marc Grabanski
// http://marcgrabanski.com/code/clean-form-validation
/* Under the Creative Commons Licence http://creativecommons.org/licenses/by/3.0/
	Share or Remix it but please Attribute the authors. */

var cleanValidator = {
	init: function (settings) {
		var form = document.getElementById(settings["formId"]);
		var formInputs = form.getElementsByTagName("input");
		
		// change color of inputs on focus
		for(i=0;i<formInputs.length;i++)
		{
			if(formInputs[i].getAttribute("type") != "submit") {
				input = formInputs[i];
				input.style.background = settings["inputColors"][0];
				input.onblur = function () {
					this.style.background = settings["inputColors"][0];
				}
				input.onfocus = function () {
					this.style.background = settings["inputColors"][1];
				}
			}
		};
		form.onsubmit = function () {
			error = validate();
			if(error.length < 1) {
				return true;
			} else {
				printError(error);
				return false;
			}
		};
		
		function validate() {
    		error = '';
    		validationTypes = new Array("isRequired", "isEmail", "isNumeric");
    		for(n=0; n<validationTypes.length; n++) {
    			var x = settings[validationTypes[n]];
    			if(x != null) {
    				for(i=0; i<x.length; i++) 
    				{
    					inputField = document.getElementById(x[i]);
    					switch (validationTypes[n]) {
    						case "isRequired" :
    						valid = !isRequired(inputField.value);
    						errorMsg = "is a required field.";
    						break;
    						case "isEmail" :
    						valid = isEmail(inputField.value);
    						errorMsg = "is an invalid email address.";
    						break;
    						case "isNumeric" :
    						valid = isNumeric(inputField.value);
    						errorMsg = "can only be a number.";
    						break;
    					}
    					if(!valid) {
    						error += x[i]+" "+errorMsg+"\n";
    						inputField.style.background = settings["errorColors"][0];
    						inputField.style.border = "1px solid "+settings["errorColors"][1];
    					} else {
    						inputField.style.background = settings["inputColors"][0];
    						inputField.style.border = '1px solid';
    					}
    				}
    			}
    		}
    		return error;
    	}
    	function printError(error) {
    		alert(error);
    	}
	}
};

// returns true if the string is not empty
function isRequired(str){
	return (str == null) || (str.length == 0);
}
// returns true if the string is a valid email
function isEmail(str){
	if(isRequired(str)) return false;
	var re = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i
	return re.test(str);
}
// returns true if the string only contains characters 0-9 and is not null
function isNumeric(str){
	if(isRequired(str)) return false;
	var re = /[\D]/g
	if (re.test(str)) return false;
	return true;
}