/* Helper Functions */
function sz_bEquals ($szFirst, $szSecond) {
	return (($szFirst.indexOf ($szSecond) == 0) && ($szFirst.length == $szSecond.length))
}

/* Validation Function - Newsletter Signup */
function validate ($elForm) {
	
	/* disable signup button */
	$elForm.elements.btnSignUp.disabled = true;
	
	/* trim data */
	/* first and last name */
	$elForm.elements.txtFirstName.value = $elForm.elements.txtFirstName.value.replace (/^\s+|\s+$/g, '');
	$elForm.elements.txtLastName.value = $elForm.elements.txtLastName.value.replace (/^\s+|\s+$/g, '');
	
	/* birthday */
	$elForm.elements.txtBirthMonth.value = $elForm.elements.txtBirthMonth.value.replace (/^\s+|\s+$/g, '');
	$elForm.elements.txtBirthDay.value = $elForm.elements.txtBirthDay.value.replace (/^\s+|\s+$/g, '');
	$elForm.elements.txtBirthYear.value = $elForm.elements.txtBirthYear.value.replace (/^\s+|\s+$/g, '');
	
	/* email */
	$elForm.elements.txtEmailAddress.value = $elForm.elements.txtEmailAddress.value.replace (/^\s+|\s+$/g, '');
	
	/* submit unless invalid email */
	return !AJAX.createRequest ('POST', 'scripts/email_validate.php',
		'txtEmailAddress=' + $elForm.elements.txtEmailAddress.value, function ($sResponse) {
			
			/* search string */
			var $sSearch = '$bEmailValidated=';
			var $sValue = 'true';
			
			/* check if valid response was provided */
			if ($sResponse.indexOf ($sSearch) == 0) {
				
				/* key answer */
				var $sAnswer = $sResponse.substr ($sSearch.length);
				
				/* email validate (true/false) */
				/*var $bEmailValidated = (($sAnswer.indexOf ($sValue) == 0) && ($sAnswer.length == $sValue.length));*/
				var $bEmailValidated = sz_bEquals ($sAnswer, $sValue);
				
				/* if validated */
				if ($bEmailValidated) {
					
					/* clear form's onsubmit handler so we don't call this infinitely */
					$elForm.onsubmit = function ($oEvent) {return true;};
					
					/* create hidden element on the fly */
					var $elHidden = document.createElement ('input');
					$elHidden.type = 'hidden';
					$elHidden.name = 'hidSignUp';
					$elHidden.value = '1';
					
					/* append hidden element to form */
					$elForm.appendChild ($elHidden);
					
					/* submit form */
					$elForm.submit ();
					
				} else {
					
					/* show alert box */
					alert ('Email Address provided did not pass validation.');
					
					/* Give focus to email text box */
					$elForm.elements.txtEmailAddress.focus ();
					
					/* re-enable signup button */
					$elForm.elements.btnSignUp.disabled = false;
					
					/* reset original button text */
					//$elForm.elements.btnSignUp.value = $szButtonText;
				}
				
			} else {
				/* something wrong -+- so output response as debug */
				//alert ('The arrived response was invalid and it contains:\n\n' + $sResponse);
			}
		}
	);
}

/* Validation Function - General Email Form -- FUNCTION NO LONGER USED */
function e_validate ($form) {
	
	var $nameRegExp = new RegExp('^\\S+\\s\\S+$','g');
	var $emailRegExp = new RegExp('^(?:(?:(?:[a-zA-Z0-9][-.+_]?)*)[a-zA-Z0-9])+\\@(?:(?:(?:[a-zA-Z0-9][-._]?){0,62})[a-zA-Z0-9])+\\.[a-zA-Z0-9]{2,6}$', 'g');
	
	if (!$form.elements.full_name.value.match ($nameRegExp)) {
		
		alert ('Please enter your Full Name');
		$form.elements.full_name.focus ();
	} else if (!$form.elements.email.value.match ($emailRegExp)) {
		
		alert ('Please enter your Email Address');
		$form.elements.email.focus ();
	} else {
		
		// need to add email validation on the fly
		return true;
	}
	
	return false;
}