// Validation of contact forms throughout all M-W pages. All forms should have an id="contactForm"

/*global document, cleanOutJunk,isEmail,checkInternationalPhone,CheckMaxLength, addContactFormValidation, validateContactForm, addErrorMessage, addLoadEvent, removeErrorMessages */

function addWealthFormValidation()
{
	//adds validation to any form called #contactForm
	if (document.getElementById("wealthComment"))
	{
		document.getElementById("wealthComment").onsubmit = function () {
			return (validateWealthForm()); 
		};
	}
}

function validateWealthForm()
{
	//Must run removeErrorMessages() a couple times to get rid off all the messages for some reason...
	removeErrorMessages();
	removeErrorMessages();
	removeErrorMessages();
	removeErrorMessages();

	var form = document.getElementById("wealthComment");
	var isError = false;

	//Check if all the required fields are filled in
	//****************************************************************************************************

	if (form.name.value === "")
	{
		addErrorMessage(form.name, "Please add your name.");
		isError = true;
	}
	if ((form.email.value === "") || (!isEmail(form.email.value)))
	{
		addErrorMessage(form.email, "This email is not in the proper format (name@provider.com).");
		isError = true;
	}

	if (form.comment.value === "")
	{
		addErrorMessage(form.comment, "Please let us know what wealth means to you.");
		isError = true;
	}
	else if (form.comment.value.length > 400)
	{
		addErrorMessage(form.comment, "Please shorten your comment to 400 characters or fewer.");
		isError = true;
	}


	//End checking for filled in fields
	//****************************************************************************************************

	// if there are any errors, then don't send the info...
	if (isError === true) 
	{
		document.getElementById("errorMessageSection").innerHTML = '<p class="message-box error">There were some problems with the info you provided. Please review all the fields with red error messages above them.</p>';
		return false;
	}
	
	// form is valid! Send info on to the PHP!
	form.validated.value = "true";
	return true;
}


// cleans any string of unwanted junk input and also changes certain characters to words
function cleanOutJunk(str)
{
	if(str !== "")
	{
		str = str.replace(/\s+|^\s|\s$/g," "); //remove multiple white spaces
		str = str.replace(/&/g," and "); //replaces & with and
		str = str.replace(/'/g,"`"); //replaces ' with `
		str = str.replace(/\.+/g,"."); //replaces multiple . with only one
		str = str.replace(/\s+,/g,","); //replaces ' ,'  with ','
		str = str.replace(/\s+\./g,"."); //replaces ' .' with '.'
		str = str.replace(/,+/g,","); //replaces multiple , characters with only one
		str = str.replace(/,\b/g,", "); //replaces , with no space after it with , with a space after it
		str = str.replace(/^\s+|\s+$|^,+|,+$|^\.|^\b\s+|\.$/g,""); //removes white space at beginning and end along with commas at the beginning.
		str = str.replace(/^\s+|\s+$|^,+|,+$|^\.|^\b\s+/g,""); //removes white space at beginning and end along with commas at the beginning.
		str = str.replace(/\s+|^\s|\s$/g," "); //remove multiple white spaces
	}
	return str;
}

//checks if the email address is proper format
function isEmail(str)
{
	var regex =/^[\-_.a-z0-9]+@(([\-_a-z0-9]+\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i;
	return regex.test(str);
}

// Phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
//****************************************************************************************************
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- .";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone number.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{
	var i;
	for (i = 0; i < s.length; i++)
	{   
		// Check that current character is number.
   	var c = s.charAt(i);
   	if (((c < "0") || (c > "9"))){return false;}
	}
	// All characters are numbers.
	return true;
}

function stripCharsInBag(s, bag)
{   
	var i;
   var returnString = "";
   // Search through string's characters one by one.
   // If character is not in bag, append to returnString.
   for (i = 0; i < s.length; i++)
   {   
   	// Check that current character isn't whitespace.
   	var c = s.charAt(i);
   	if (bag.indexOf(c) === -1){returnString += c;}
   }
   return returnString;
}

function checkInternationalPhone(strPhone)
{
	var s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}




addLoadEvent(addWealthFormValidation);

