//<!--
$(document).ready(function()
{
	// Form submit handler
	$('.btn1').click(function( event )
	{
		event.preventDefault();
		event.stopImmediatePropagation();
		
		$('#form_opt_in').submit();//$(this).closest('form').submit();
		
		return false;
	});
	
	// Set form elements
	var formRef = $('#form_opt_in');
	var targetRef = null;
	
	// Set form options; $.ajax options can be used here too.
	var options = { 
		target: targetRef // target element(s) to be updated with server response
		, timeout: 300000
		, cache: false
		, processData: false
		, type: 'POST'
		, beforeSubmit: beforeSubmitHandler
		, success: successHandler
		, error: errorHandler
	};
	
	// Bind functionality 
	formRef.ajaxForm(options);
	
	// Before submission handler
	function beforeSubmitHandler( formData, jqForm, options )
	{
		if ( emailCheck($('input[name=email]').val()) !== true )
		{
			return false;
		}
	}
	
	// Success handler
	function successHandler( data, textStatus )
	{
		formRef.find('.clearFields').clearFields();
		
		record_page_hit('opt-in_thank-you');
		$('.box5').fadeIn();
	}
	
	// Error handler
	function errorHandler( XMLHttpRequest, textStatus, errorThrown )
	{
		formRef.find('.clearFields').clearFields();
		
		record_page_hit('opt-in_thank-you');
		//alert('There was an error with the request... '+ errorThrown);
		$('.box5').fadeIn();
	}
	
	// VALIDATION
	
	function emailCheck (emailStr) 
	{
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=emailStr.match(emailPat);
		
		if (matchArray==null) 
		{
		    alert("Email address seems incorrect (check @ and .'s)");
		    return false;
		}
		
		var user=matchArray[1];
		var domain=matchArray[2];
		
		if (user.match(userPat)==null) 
		{
		    alert("The username doesn't seem to be valid.");
		    return false;
		}
		
		var IPArray=domain.match(ipDomainPat);
		
		if (IPArray!=null) 
		{
		      for (var i=1;i<=4;i++) 
		      {
		        if (IPArray[i]>255) 
		        {
					alert("Destination IP address is invalid!");
					return false;
		        }
		    }
		    return true;
		}
		
		var domainArray=domain.match(domainPat);
		
		if (domainArray==null) 
		{
		    alert("The domain name doesn't seem to be valid.");
		    return false;
		}
		
		var atomPat=new RegExp(atom,"g");
		var domArr=domain.match(atomPat);
		var len=domArr.length;
		
		if ((domArr[domArr.length-1] != "info") &&
		    (domArr[domArr.length-1] != "name") &&
		    (domArr[domArr.length-1] != "arpa") &&
		    (domArr[domArr.length-1] != "coop") &&
		    (domArr[domArr.length-1] != "aero")) 
		{
			if (domArr[domArr.length-1].length<2 ||
				domArr[domArr.length-1].length>3) 
			{
				alert("The address must end in a three-letter domain, or two letter country.");
				return false;
			}
		}
		
		if (len<2)
		{
		   var errStr="This address is missing a hostname!";
		   alert(errStr);
		   return false;
		}
		return true;
	}
	
});
//-->