window.addEvent('domready', function(){

	$('newsletterSignUp').addEvent('submit', function(e) {
		/**
		 * Prevent the submit event
		 */
		new Event(e).stop();
		
		if(validateFormOnSubmit($('newsletterSignUp')) ) {
			/**
			 * This empties the log and shows the spinning indicator
			 */
			var newsletterResult = $('newsletterResult').empty().addClass('ajax-loading');
			$('newsletterSignUp').setStyle('display','none');
			$('newsletterResult').setStyle('display','block');
			
			/**
			 * send takes care of encoding and returns the Ajax instance.
			 * onComplete removes the spinner from the log.
			 */
			this.send({
				update: newsletterResult,
				onComplete: function() {
					newsletterResult.removeClass('ajax-loading');
				}
			});
		}
	});
});

function validateFormOnSubmit(theForm) {
	emailTest = emailval(theForm.Email.value);
	
	checkboxTest = validateCheckbox(theForm, "newsletters[]", "Newsletter");
	
	if (emailTest && checkboxTest) {
		return true;
	} else {
		return false;
	}
}

function validateEmailFieldOnBlur(theFormField) {
	return emailval(theFormField.value);
}

function validateCheckboxesOnBlur(theForm) {
	return validateCheckbox(theForm, "newsletters[]");
}

function emailval(emailValue) {
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	if (regex.test(emailValue)) {
		$('error2').setStyle('display','none');
		return true;
	} else {
		$('error2').setStyle('display','inline');
		return false;
	}
}

function validateEmpty(fld, fldname) {
	var error = "";
  
	if (fld.value.length == 0) {
		fld.style.background = '#FAE200'; 
		error = "The " + fldname + " field has not been filled in.\n";
	} else {
		fld.style.background = 'White';
	}
	return error;
}

function validateCheckbox(form, arrayName) {
	var error = "";
	
	var itemsChecked = checkArray($('newsletterSignUp'), arrayName);
	
	if (itemsChecked.length < 1 ) {
		// If there were no selections made, add to error list
		$('error1').setStyle('display','inline');
		return false;
	} else {
		$('error1').setStyle('display','none');
		return true;
	}

}
	
function checkArray(form, arrayName) {
	var retval = new Array();
	for (var i=0; i < form.elements.length; i++) {
		var el = form.elements[i];
		
		if(el.type == "checkbox" && el.name == arrayName && el.checked) {
			retval.push(el.value);
		}
	}
	return retval;
}