/* 
	Form Validation 
	This js file can be used for Validation of Form.
	It can validate 
	    whether the required fields are filled, 
	    is email address valid, 
*/

var validator = {
	init: function (settings) {
		this.settings = settings;
		this.form = document.getElementById(this.settings["formId"]);
		formInputs = this.form.getElementsByTagName("input");
		
		error = validator.validate();
		if(error.length < 1) {
			return true;
		} else {
			//validator.printError(error);
			return false;
		}
	},
	validate: function () {
		error = '';
		errorFields='';
		email_error='';
		flag=0;
		validationTypes = new Array("isRequired", "isReqEmail");
		validationFields = new Array("ReqFields", "ReqEmailFields");
		for(n=0; n<validationTypes.length; n++) {
			var x = this.settings[validationTypes[n]];
			var y = this.settings[validationFields[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 "isReqEmail" :
						    valid = !isRequired(inputField.value) && isEmail(inputField.value);
                            if(isRequired(inputField.value))
                            {
						        errorMsg = "is a required field.";
						        email_error = "This is a required field.";
						    }
						    else if(!isEmail(inputField.value))
						    {
						        errorMsg = "is an invalid email address.";
						        email_error = "This is an invalid email address.";
						    }
						    break;
					}
					if(!valid) 
					{
 						if(flag>0)
 						    errorFields += ", #"+x[i];
 						else
 						    errorFields += "#"+x[i]; 						    
					    flag++;
 						error += y[i]+" "+errorMsg+"\n";
						inputField.style.background = this.settings["errorColors"][0];
						inputField.style.border = "2px inset "+this.settings["errorColors"][1];
					} else {
						inputField.style.background = this.settings["inputColors"][0];
						inputField.style.border = "1px solid " +this.settings["inputColors"][1];
					}
				}
			}
		}
		return error;
	},
	printError: function (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);
}

