var g_validate = true;
function validate(form)
{
	var ok = true;
	var message;
	
	form.find(':input.required').removeClass('error');
	
	form.find(':input.required').each(function() {
		var verify_field = $('[name=' + $(this).attr('name')+'_verify]');
		var val = $.trim($(this).val());
		var verify_val = verify_field.val();
		
		if(!val) {
			ok = false;
			setError($(this));
			message = 'One or more fields were not completed correctly.  Please check the fields highlighted in red.';
		}
		else if(verify_val && val != verify_val) {
			ok = false;
			
			$(this).addClass('error');
			verify_field.addClass('error');
			
			$(this).change(function() {
				$(this).removeClass('error');
			});
			verify_field.change(function() {
				$(this).removeClass('error');
			});
			
			message = 'Please check that the contents of the fields in red match.';
		}
		
		if($(this).hasClass('email')) {
			if(!val.match(/^.+@.+\..+$/)) {
				ok = false;
				setError($(this));
				message = 'Please check the format of your email address.';
			}
		}
	});
	
	if(ok) {
		form.find('#terms').each(function() {
			if(!$(this).attr('checked')) {
				ok = false;
				message = 'Please read and agree to the terms and conditions.';
			}
		});
	}
	
	if(ok) {
		return (true);
	}
	else {
		alert(message);
		return (false);
	}
}

function setError(field)
{
	field.addClass('error');
	field.change(function() {
		field.removeClass('error');
	});
}

$(document).ready(function() {
	
	/* Attach asterisks to any required fields */
	$(':input.required').each(function() {
		var name = $(this).attr('name');
		$('label[for='+name+']').append("<span class='required-star'>*</span>");
	});
	
	
	
	/* Handle "Next", "Previous", "Payment Type" and "Purchase" buttons */
	$('.submit_next').click(function() {
		var form = $(this).parents('form');
		form.find('input[name="act"]').val('next');
		form.submit();
	});
	
	$('.submit_prev').click(function() {
		g_validate = false;
		var form = $(this).parents('form');
		form.find('input[name="act"]').val('prev');
		form.submit();
	});
	
	$('.submit_purchase').click(function() {
		g_validate = false;
		var form = $(this).parents('form');
		form.attr('action', 'purchase.cgi');
		form.find('input[name="act"]').val('purchase');

		$(this).unbind('click');
		$(this).attr('disabled', 'disabled');
				
		form.submit();
	});
	
	$('#payment_selector').change(function() {
		var payment_type = $(this).val();
		
		if(payment_type == 'Paypal') {
			$('#paypal_form').show();
			$('#cc_form').hide();
			
			$('#cc_form').find(':input.required').addClass('_required').removeClass('required');
		}
		else if (payment_type == '') {
			$('#paypal_form').hide();
			$('#cc_form').hide();
			
			$('#cc_form').find(':input.required').addClass('_required').removeClass('required');
		}
		else {
			$('#paypal_form').hide();
			$('#cc_form').show();
			
			$('#cc_form').find(':input._required').addClass('required').removeClass('_required');
		}
	});
	$('#payment_selector').change();
	
	/* Handle state/country fields */
	$(':input[name=mailing_country]').change(function() {
		if($(this).val() == 'US') {
			$(':input[name=mailing_state]').addClass('required');
			$('.mailing_state_cont').show();
		}
		else {
			$(':input[name=mailing_state]').val('');
			$(':input[name=mailing_state]').removeClass('required');
			$('.mailing_state_cont').hide();
		}
	}).change();
	
	/* Handle state/country fields */
	$(':input[name=billing_country]').change(function() {
		if($(this).val() == 'US') {
			$(':input[name=billing_state]').addClass('required');
			$('.billing_state_cont').show();
		}
		else {
			$(':input[name=billing_state]').val('');
			$(':input[name=billing_state]').removeClass('required');
			$('.billing_state_cont').hide();
		}
	}).change();
	
	
	/* Handle "Other" input fields */
	$(':input[name=howdidyouhear]').change(function() {
		if($(this).val() == 'Other (please specify)') {
			$('.howdidyouhear_other_cont label .replace').html('Other');
			$(':input[name=howdidyouhear_other]').addClass('required');
			$('.howdidyouhear_other_cont').show();
		}
		else if ($(this).val() == 'Referred by') {
			$('.howdidyouhear_other_cont label .replace').html('Enter full name of the person that referred you');
		  $(':input[name=howdidyouhear_other]').addClass('required');
			$('.howdidyouhear_other_cont').show();
		}
		else {
			$(':input[name=howdidyouhear_other]').removeClass('required');
			$('.howdidyouhear_other_cont').hide();
		}

	}).change();
	
	
	
	/* Handle form validation */
	$('form').submit(function() {
		if(g_validate) {
			return validate($(this));
		}
	});
	
});