/* 
	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) {
		this.settings = settings;
		this.form = document.getElementById(this.settings["formId"]);
		formInputs = this.form.getElementsByTagName("input");
		formInputs2 = this.form.getElementsByTagName("textarea");
		formInputs3 = this.form.getElementsByTagName("radio");
		/*formInputs4 = this.form.getElementsByTagName("checkbox");*/
		
		// change color of inputs on focus
		for(i=0;i<formInputs.length;i++)
		{
			if(formInputs[i].getAttribute("type") != "submit" || formInputs[i].getAttribute("type") != "reset") {
				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];
				}
			}
		};
		for(i=0;i<formInputs2.length;i++)
		{
			if(formInputs2[i].getAttribute("type") != "submit") {
				input = formInputs2[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];
				}
			}
		};
		for(i=0;i<formInputs3.length;i++)
		{
			if(formInputs3[i].getAttribute("type") != "submit") {
				input = formInputs3[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];
				}
			}
		};
		/*for(i=0;i<formInputs4.length;i++)
		{
			if(formInputs4[i].getAttribute("type") != "submit") {
				input = formInputs4[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];
				}
			}
		};*/
		this.form.onsubmit = function () {
			error = cleanValidator.validate();
			if(error.length < 1) {
				return true, formSubmitted();
				
			} else {
				cleanValidator.printError(error);
				return false;
			}
			
		};
	},
	validate: function () {
		error = '';
		validationTypes = new Array("isRequired", "isEmail", "isNumeric", "IsPhoneNumber");
		for(n=0; n<validationTypes.length; n++) {
			var x = this.settings[validationTypes[n]];
			if(x != null) {
				for(i=0; i<x.length; i++) 
				{
					inputField = document.getElementById(x[i]);
					switch (validationTypes[n]) {
						/*case "isChecked" :
						valid = !isChecked(inputField.value);
						errorMsg = "is a required field.";
						break;*/
						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;
						case "IsPhoneNumber" :
						valid = IsPhoneNumber(inputField.value);
						errorMsg = "is an invalid phone number.";
						break;
					}
					if(!valid) {
						error += x[i]+" "+errorMsg+"\n";
						inputField.style.background = this.settings["errorColors"][0];
						inputField.style.border = "1px solid "+this.settings["errorColors"][1];
					} else {
						inputField.style.background = this.settings["inputColors"][0];
						inputField.style.border = '1px solid';
					}
				}
			}
		}
		return error;
	},
	printError: function (error) {
		alert(error);
	}
};


// returns true if the string is not empty
/*function isChecked(str){
	return (str == null) || (str.length == 0);
}*/
// 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;
}

//returns true if string contains numbers, dash,  comma, or parenteses
 function IsPhoneNumber(str)

    {

    for ( var i=0; i < size; i++) {     

      if(str.charAt(i)!="" ){	    

        if(str.charAt(i)!="-" ){

          if(str.charAt(i)!="," ){

            if(str.charAt(i)!="(" ){

              if(str.charAt(i)!=")" ){

                if( str.charAt(i) < "0" || str.charAt(i) > "9") {

                  if(str != "")alert(strAlert)

	      return false;

                }
				return false;

              }
			  return false;

            }
			return false;

          }   
		  return false;

        }
		return false;

      }
	  return false;

     }

     return true;

    }