window.onload = function() {
	$('input:text').bind('blur', fieldChanged);
	$('input:text').bind('change', fieldChanged);
	$('select[name=country]').bind('blur', countryChanged);
	$('select[name=country]').bind('change', countryChanged);
	$('select[name=guest]').bind('blur', guestChanged);
	$('select[name=guest]').bind('change', guestChanged);
    $('form#reg').bind('submit', formSubmitted);
}

function data_validate(name, value)
{
	var options = {
		url: "data_validate_ajax.php",
		method: "POST",
		async: false,
		data: {name: name, value: value}
	};

	var result = $.ajax(options);

	return eval('('+result.responseText+')');
}

function formSubmitted(e)
{
	// force country field to be checked to fix issue with browser auto-complete
	$('select[name=country]').trigger('change');

	var errorCount = 0;
	var fields = $('input:enabled, select:enabled');
	for(i=0; i < fields.length; ++i)
	{
		var field = $(fields.get(i));
		if (!checkField(field))
			++errorCount;
	}
	if (errorCount > 0)
	{
		alert ("Some of your form input failed validation.  Please review any error messages on the page and fix the problems.");
		return false;
	}
	return true;
}
function fieldChanged(e)
{
	var field = $(this);

	checkField(field);
}
function checkField(field)
{
	var name = field.attr('name');
	var value = field.attr('value');
	var valid = $('#'+name+"_valid");

	if (name == "email_verify")
	{
		var email = $('input[name=email]').val();
		if (email != value)
		{
			valid.text("The verification email does not match.");
			return false;
		}
	}

	var v = data_validate(name, value);
	if (!v.valid)
	{
		valid.text(v.rule);
		return false;
	}
	else
	{
		valid.text('');
		return true;
	}
}
function countryChanged(e)
{
	var countrySelect = $(this);
	var value = countrySelect.val();
	if (value == "United States")
	{
		$('#staterow').css('display', '');
		$('[name=state]').attr('disabled', false);
		$('#ziprow').css('display', '');
		$('[name=zip]').attr('disabled', false);
	}
	else
	{
		$('#staterow').css('display', 'none');
		$('[name=state]').attr('disabled', true);
		$('#ziprow').css('display', 'none');
		$('[name=zip]').attr('disabled', true);
	}
}
function guestChanged(e)
{
    var guestSelect = $(this);
	var value = guestSelect.val();
	if (value == "1")
	{
		$('#guestnamerow').css('display', '');
		$('[name=guestname]').attr('disabled', false);
	}
	else
	{
		$('#guestnamerow').css('display', 'none');
		$('[name=guestname]').attr('disabled', true);
	}

    checkField(guestSelect);
}
