$(document).ready( function() {
	$("ul.lead-grabber li.submit-holder input").click( function() {

		/* 
			Since we can use this form many times on the page we need to select which form actually submitted it.
		*/
		var formElement = $(this).closest("form.lead-grabber-form");

		var firstName = $("ul.lead-grabber li.lead-grabber-first-name input",formElement).val();
		var gender = $("ul.lead-grabber li.lead-grabber-gender select",formElement).val();
		var sexualPreference = $("ul.lead-grabber li.lead-grabber-sexual-preference select",formElement).val();
		var postalCode = $("ul.lead-grabber li.lead-grabber-postal-code input",formElement).val();
		var email = $("ul.lead-grabber li.lead-grabber-email input",formElement).val();
		var password = $("ul.lead-grabber li.lead-grabber-password input",formElement).val();
		var month = $("ul.lead-grabber li.date-of-birth select[name='Month']",formElement).val();
		var day = $("ul.lead-grabber li.date-of-birth select[name='Day']",formElement).val();
		var year = $("ul.lead-grabber li.date-of-birth select[name='Year']",formElement).val();

		// a Regular expression to validate the email against
		var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})+$/;

		// we want to make sure that users input letters only without numbers
		var numbersRegEx = /([0-9]+)/;

		// whether the typed email validated against the regular expression
		var emailValid = emailRegEx.test( email );

		// test against the numbers regex
		var displayNameHasNumbers = numbersRegEx.test( firstName );

		var errorMessage = false;

		if( !firstName || !gender || !sexualPreference || !postalCode || !email || !password || month == 'MM' || day == 'DD' || year == 'YYYY' ){
			errorMessage = 'You must fill in all of the fields.';
		}
		else if( displayNameHasNumbers )
			errorMessage = 'Your display name may contain letters only';
		else if( !emailValid ){
			errorMessage = 'Please enter a valid email address.';
		}
		else if( password.length < 6 ) {
			errorMessage = 'Your password must be at least 6 characters long.';
		}
		else{
			$.ajax({
				beforeSend: function(){ $("ul.lead-grabber li.lead-loading",formElement).show(); },
				timeout: 5000,
				error: function() { $(formElement).submit(); },
				type: "POST",
				dataType: "html",
				data: $(formElement).serialize(),
				url: "registration.php?AjaxRequest&Registration",
				success: function(data) {

					switch( data )
					{
						case '0':
							errorMessage = 'You must fill in all of the fields.';
							break;

						case '1':
							errorMessage = 'Please enter a valid email address.';
							break;

						case '2':
							errorMessage = 'Postal-Code is invalid.';
							break;

						case '3':
							errorMessage = 'Postal-Code could not be found in our system.';
							break;

						case '4':
							errorMessage = 'Date of Birth is invalid.';
							break;

						case '5':
							errorMessage = 'Email address is already taken.';
							break;

						case '6':
							errorMessage = 'Please type in your first name.';
							break;

						case 'OK':
							$("form#lead-grabber-form input[name=BeginHere]").attr('disabled','disabled');
							$(formElement).submit();
							break;
					}

					if( errorMessage )
					{
						$("ul.lead-grabber li.error-message",formElement).text(errorMessage).fadeIn('slow', function() {
							setTimeout(function(){ $("ul.lead-grabber li.error-message",formElement).fadeOut('slow'); }, 3000);
						});
					}

					if( data != 'OK' )
					{
						$("ul.lead-grabber li.lead-loading",formElement).hide();
					}
				}
			});
		}

		if( errorMessage )
		{
			$("ul.lead-grabber li.error-message",formElement).text(errorMessage).fadeIn('slow', function() {
				setTimeout(function(){ $("ul.lead-grabber li.error-message",formElement).fadeOut('slow'); }, 3000);
			});
		}

		return false;
	});

	/*
		The whole point of this script is to change the sexual preference when ever we change our gender

		By default when we click on "I am a Male" it will switch "seeking women" and vice versa
	*/
	$("ul.lead-grabber li.lead-grabber-gender select").change( function() {

		// Selected gender
		var gender = parseInt($(this).val());

		switch( gender )
		{
			case 2:
				var selectedSexualPreference = 1;
				break;

			case 1:
			default:
				var selectedSexualPreference = 2;
				break;
		}

		$("ul.lead-grabber li.lead-grabber-sexual-preference select option").each( function() {

			if( $(this).val() == selectedSexualPreference )
				$(this).attr("selected","selected");
			else
				$(this).attr("selected","");
		});
	});

	$("li.lead-grabber-first-name:has(div.tooltip) input").bind('focus',function(){
		var parentContainer = $(this).closest('li');

		$("div.tooltip",parentContainer).fadeIn('slow');
	});

	$("li.lead-grabber-first-name:has(div.tooltip) input").bind('blur',function(){
		var parentContainer = $(this).closest('li');

		$("div.tooltip",parentContainer).fadeOut('slow');
	});
});
