$(document).ready(function() {
		
		// Submit Button Values
		var SubmitOK = "Submit"; //Text of button when It is ok to submit
		var SubmitProgress = 'Please Complete Form';
		var SubmitCannot = "Cannot Submit";//Text of button when it is NOT ready to submit
		var SubmitComplete = "Email Processing";//Text of button when the form as already been submitted
		
		
		// Default Explanation values
		var PlzCheck = 'Please check the boxes with errors and correct them appropriately';
		var etContinue = 'Please continue filling out the form';
		var etSubmit = 'Thank you for filling out the required fields.  When you are ready, you may submit your E-mail';
		var etProcessing = 'Thank You!  We are processing your email.  Please wait.';
		
		
		// ++++++ DO NOT TOUCH ++++++ 
		
		// Global Variables
		var Form = $(".ValidateForm");
			var FormInputs = Form.find('input, textarea, select');
			var ErrorText = $('p.ErrorText');
			var SubmitBtn = $('.SubmitBtn');
			var Complete = false;
			
			// Required Fields
			var Email = $("#Email");
			var Phone = $("#Phone");
			var RequiredInputs = [];
			var DefaultValues = [""];
		
			
			
			// Gets values
			var Required = [Form.find('.Required'),Form.find('.required')];
			for (i=0; i<= Required.length-1; i++){
				Required[i].each(function(){
					DefaultValues.push($(this).val());
					RequiredInputs.push($(this));
					});
			}

		// Disable Submit As Default
		SubmitBtn.mouseover(function(){
			if (Complete != true){
				$(this).val(SubmitProgress)
				$(this).attr("disabled", "true");
			}
		});
					
		
		
		// +++++ This is for Required Validation +++++
		
		for(ri=0; ri<= RequiredInputs.length-1; ri++){
			RequiredInputs[ri].addClass('NotValidated');
			RequiredInputs[ri].blur(function (){
				var RequiredValue = $(this).val();
				for (i=0; i<=DefaultValues.length-1; i++){
					if (RequiredValue == DefaultValues[i]){
						$(this).css({
							"background-image": "url('images/validNo.png')",
							"background-position" : "center right",
							"background-repeat" : "no-repeat"
							});
						$(this).val(DefaultValues[i]);
						$(this).removeClass('Validated').addClass('ValidationPending');
						break;
						
					}
					else {
						$(this).css({
							"background-image": "url('images/validYes.png')",
							"background-position" : "center right",
							"background-repeat" : "no-repeat"});
						$(this).removeClass('NotValidated').removeClass('ValidationPending').addClass('Validated');
					}
				} //end for loop
			});//End Required Validation
		}// end loop for RequiredInputs
		
		
		// +++++ This is for Email Validation +++++
		
		Email.blur(function(){
		
			var email = Email.val();
			
			if(email != 0){
				if(isValidEmailAddress(email)){
					Email.css({
						"background-image": "url('images/validYes.png')",
						"background-position" : "center right",
						"background-repeat" : "no-repeat"
						});
				$(this).removeClass('NotValidated').addClass('Validated');
				} 
				else {
					Email.css({
						"background-image": "url('images/validNo.png')",
						"background-position" : "center right",
						"background-repeat" : "no-repeat"
						});
				$(this).removeClass('Validated').addClass('NotValidated');
				}
			}
				
		
		});//End Email Validation
		
		
		// Phone validation
		if(Phone.hasClass('Required') || Phone.hasClass('required')){
			Phone.blur(function(){
				var PhoneVal = $(this).val();
				var Stripped = $(this).val().replace(/[\(\)\.\-\ ]/gi, '');
				var Stripped = Stripped.replace(/ext/i, '');
				if (!(isNaN(Stripped)) && Stripped.length >=10){
					Phone.css({
							"background-image": "url('images/validYes.png')",
							"background-position" : "center right",
							"background-repeat" : "no-repeat"
							});
					$(this).removeClass('NotValidated').addClass('Validated');
				}
				else{
					Phone.css({
							"background-image": "url('images/validNo.png')",
							"background-position" : "center right",
							"background-repeat" : "no-repeat"
							});
					$(this).removeClass('Validated').addClass('NotValidated');
				}
				
			
			});
		}//End Phone Validation

		
		// +++++ Submit Button Stipulations and Submit Disable/Enable +++++
		FormInputs.keyup(function(){
			Errors = false;
			for(r=0; r<=RequiredInputs.length-1; r++){
				SubmitBtn.val(SubmitProgress);
				ErrorText.text(etContinue);
				if (!(RequiredInputs[r].hasClass('Validated'))){
					Errors = true;
					break;
				}
			}//forloop	
				if(Errors != true){
					Complete = true;
					SubmitBtn.removeAttr("disabled");
					SubmitBtn.val(SubmitOK);
					ErrorText.text(etSubmit);
					$("form").submit(function(){
							SubmitBtn.val(SubmitComplete);
							ErrorText.text(etProcessing);
							Form.find('input, textarea, select').css({'color':'#888','background':'#999'});
							SubmitBtn.css({'color':'#fff','background':'#999', 'font-style' : 'italic', 'cursor' : 'progress'});
							SubmitBtn.attr("disabled", "true");
					});//End Submit Function
				}//if	
				
				else if ($('.ValidationPending').length >=1){
					SubmitBtn.val(SubmitCannot);
					ErrorText.text(PlzCheck);
				}
				else {
					SubmitBtn.val(SubmitProgress);
					ErrorText.text(etContinue);
				}

		});

});//End Entire Function


// +++++ Patterns for Email +++++DO NOT TOUCH +++++ 	
function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}


/* CLEAR FORM FUNCTION
-------------------------------------------------- */
function clearText(thefield) {
if (thefield.defaultValue==thefield.value) { thefield.value = "" }
} function replaceText(thefield) {
if (thefield.value=="") { thefield.value = thefield.defaultValue }
}



