previousCardNameText = '';
paypal_clicked = false;
use_saved_address = false;

$(document).ready(function(){
	$('.define_phone').live('change', function() {
		var phonetype = $(this).attr('id').split('_')[1];
		var val = $(this).val();

		// restore all options
		if ($(this).children('option').length != 5) {
			$(this).html(phone_types_options);
		}

		if (phonetype == 'primary') {
			$('#phone_secondary option[value="'+val+'"]').remove();
			if (val == 'work') {
				if (!$('#phone_primary').data('ext_added')) {
					$('#phone_primary').before('<span id="workext_box">Ext. <input type="text" name="workext" id="workext" size="3" value="" /> </span>').data('ext_added', 1);
				}
			} else {
				$('#phone_primary').siblings('#workext_box').remove();
				$('#phone_primary').data('ext_added', 0);
			}
		} else if (phonetype == 'secondary') {
			$('#phone_primary option[value="'+val+'"]').remove();
			if (val == 'work') {
				if (!$('#phone_secondary').data('ext_added')) {
					$('#phone_secondary').before('<span id="workext_box">Ext. <input type="text" name="workext" id="workext" size="3" value="" /> </span>').data('ext_added', 1);
				}
			} else {
				$('#phone_secondary').siblings('#workext_box').remove();
				$('#phone_secondary').data('ext_added', 0);
			}
		}
		$('option[value="'+val+'"]', this).attr('selected', 'selected');
	});

	$('.use_address').click(function() {
		// reset form fields
		$('input', 'form#order_form').removeClass('prefilled_txt').removeClass('required').each(function() {
			if ($(this).val() == settings.lang.required_txt) {
				$(this).val('');
			}
		});
		$('option[value=""]', 'form#order_form select#state').attr('selected', 'selected');
		$('option[value=""]', 'form#order_form select#country').attr('selected', 'selected');

		var jsondata = jQuery.parseJSON($(this).parents('.address_box').dataset('address_json'));

		$('input#fname', 'form#order_form').val(jsondata.fname);
		$('input#lname', 'form#order_form').val(jsondata.lname);
		$('input#companyname', 'form#order_form').val(jsondata.companyname);
		$('input#street', 'form#order_form').val(jsondata.street);
		$('input#city', 'form#order_form').val(jsondata.city);
		$('input#zip', 'form#order_form').val(jsondata.zip);
		$('input#fax', 'form#order_form').val(jsondata.fax);
		$('input#email', 'form#order_form').val(jsondata.email);

		$('option[value="'+jsondata.country+'"]', 'form#order_form select#country').attr('selected', 'selected');
		$('form#order_form select#country').change();
		$('option[value="'+jsondata.state+'"]', 'form#order_form select#state').attr('selected', 'selected');
		if (!$('form#order_form select#state option:selected').val().match(/^[A-Z]{2}$/)) {
			$('option[value=""]', 'form#order_form select#state').attr('selected', 'selected');
			$('input#state_text', 'form#order_form').val(jsondata.state);
		} else {
			$('input#state_text', 'form#order_form').val('');
		}
		$(':radio#address_type[value="'+jsondata.type+'"]', 'form#order_form').attr('checked', 'checked');

		var primary_phone = new Array;
		var secondary_phone = new Array;
		if (jsondata.cell) {
			primary_phone.number = jsondata.cell;
			primary_phone.type = 'cell';
		} else if (jsondata.workphone) {
			primary_phone.number = jsondata.workphone;
			primary_phone.type = 'work';
		} else if (jsondata.homephone) {
			primary_phone.number = jsondata.homephone;
			primary_phone.type = 'home';
		} else {
			primary_phone.number = '';
			primary_phone.type = '';
		}

		if (jsondata.workphone && primary_phone.type != 'work') {
			secondary_phone.number = jsondata.workphone;
			secondary_phone.type = 'work';
		} else if (jsondata.homephone && primary_phone.type != 'home') {
			secondary_phone.number = jsondata.homephone;
			secondary_phone.type = 'home';
		} else {
			secondary_phone.number = '';
			secondary_phone.type = '';
		}

		if (primary_phone) {
			$('input#phone_primary_text', 'form#order_form').val(primary_phone.number);
			$('option[value="'+primary_phone.type+'"]', 'select#phone_primary').attr('selected', 'selected');
			$('select#phone_primary').change();
			if (primary_phone.type == 'work' && jsondata.workext) {
				$('input#workext', 'form#order_form').val(jsondata.workext);
			} else if (primary_phone.type == 'work') {
				$('input#workext', 'form#order_form').val('');
			}
		}
		if (secondary_phone) {
			$('input#phone_secondary_text', 'form#order_form').val(secondary_phone.number);
			$('option[value="'+secondary_phone.type+'"]', 'select#phone_secondary').attr('selected', 'selected');
			$('select#phone_secondary').change();
			if (primary_phone.type == 'work' && jsondata.workext) {
				$('input#workext', 'form#order_form').val(jsondata.workext);
			} else if (primary_phone.type == 'work') {
				$('input#workext', 'form#order_form').val('');
			}
		}

		use_saved_address = true;
	});

	$('table.shipping table td :text, table.billing table td :text').change(function() {
		if (use_saved_address && !$('.address_box.prompt_save').length) {
			$(':radio.use_address:checked').parents('div.address_box').after('<div class="ui-corner-all address_box prompt_save"><label title="Change in a saved address detected. Check this box if you would like to save this as a new address, or it will update the existing record."><input type="radio" name="use_address" value="" /> Save as a new address<\/label><\/div>');
		}
	});

	disable_invalid_states = function(country) {
		var CA_provinces = ['AB','BC','MB','NB','NL','NT','NS','NU','ON','PE','QC','SK','YT','-----','------'];

		if (country == 'CA') {
			$('option', 'select#state').hide(); // disable all first
			for (var i=0; i < CA_provinces.length; i++) {
				$('option[value="'+CA_provinces[i]+'"]', 'select#state').show();
			}
		} else {
			$('option', 'select#state').show(); // enable all first
			for (var i=0; i < CA_provinces.length; i++) {
				$('option[value="'+CA_provinces[i]+'"]', 'select#state').hide();
			}
		}
	}

	$('input.required, select.required, label.required', 'form#order_form').live('focus', function() {
		$(this).removeClass('required');
		if ($(this).is(':text') && $(this).val() == settings.lang.required_txt) {
			$(this).val('');
		} else if ($(this).is(':checkbox')) {
			$(this).parents('label').removeClass('required');
			$(this).attr('checked');
		}
	});

	validate_order_form = function() {
		$('input[data-prefilled_txt]', 'form#order_form').each(function() {
			if ($(this).val() == $(this).dataset('prefilled_txt')) {
				$(this).val('');
			}
		});

		var has_no_error = true;
		$(':text[data-required="1"], select[data-required="1"]', 'form#order_form').each(function() {
			if ($(this).val() == '' || $(this).val() == settings.lang.required_txt) {
				$(this).addClass('required');
				if ($(this).is(':text')) {
					$(this).val(settings.lang.required_txt);
				}
				has_no_error = false;
			}
		});
		$(':checkbox[data-required="1"]', 'form#order_form').each(function() {
			if ($(this).attr('checked') == '') {
				$(this).addClass('required');
				$(this).parents('label').addClass('required');
				has_no_error = false;
			}
		});

		if (!has_no_error) {
			alert('Wait! Error(s) are detected.\r\nTake a look at field(s) highlighted in red.');
		}

		return has_no_error;
	}

	get_shipping_methods_by_region = function() {
		var country = $(this).val();

		$.ajax({
			url: 'ajaxhandler.php',
			data: settings.ajax.data_prefix+"get_shipping_methods_by_region&country="+country,
			success: function(html){
				$('#shipping_method_section #shipping_methods').html(html);
			}
		});
	}

	disable_pmt = function() {
		$(this).attr('disabled', 'disabled').attr('data-required', 0).removeClass('required');
		if ($(this).val() == settings.lang.required_txt) $(this).val('');
	}

	show_pmt_box = function(pmt_type) {
		if (pmt_type == 'Cash' || pmt_type == 'Check' || pmt_type == 'Wire Transfer' || pmt_type == 'US Post International Money Order') {
			$('#cc_name').each(disable_pmt);
			$('#cc_number').each(disable_pmt);
			document.order_form.cc_expiry_Month.disabled = true;
			document.order_form.cc_expiry_Year.disabled = true;
			$('#cc_panel_code').each(disable_pmt);
			document.getElementById('paypaltext').innerHTML = "";
			if (paypal_clicked) {
				document.getElementById('cardnametext').innerHTML  = previousCardNameText;
			}
		} else if (pmt_type == 'Paypal') {
			document.getElementById('paypaltext').innerHTML = "<strong>Note: You will NOT be brought directly to PayPal upon check out.</strong> Our staff will review your order, and email you a paypal money request for payment."
			if (previousCardNameText.length == 0) {
				previousCardNameText = document.getElementById('cardnametext').innerHTML;
			}
			document.getElementById('cardnametext').innerHTML = "Enter your Paypal email address:";
			document.order_form.cc_name.disabled = false;
			$('#cc_name').dataset('required', 1);
			document.order_form.cc_number.disabled = true;
			$('#cc_number').each(disable_pmt);
			document.order_form.cc_expiry_Month.disabled = true;
			document.order_form.cc_expiry_Year.disabled = true;
			document.order_form.cc_panel_code.disabled = true;
			$('#cc_panel_code').each(disable_pmt);
			paypal_clicked = true;
		}	else {
			document.order_form.cc_name.disabled = false;
			$('#cc_name').dataset('required', 1);
			document.order_form.cc_number.disabled = false;
			$('#cc_number').dataset('required', 1);
			document.order_form.cc_expiry_Month.disabled = false;
			document.order_form.cc_expiry_Year.disabled = false;
			document.order_form.cc_panel_code.disabled = false;
			$('#cc_panel_code').dataset('required', 1);
			document.getElementById('paypaltext').innerHTML = ""
			if (paypal_clicked) {
				document.getElementById('cardnametext').innerHTML  = previousCardNameText;
			}
		}
	}

	submit_form_with_prefilled_fields = function(formEl) {
		$('input[data-prefilled_txt]', formEl).each(function() {
			if ($(this).val() == $(this).dataset('prefilled_txt')) {
				$(this).val('');
			}
		});
		return formEl.submit();
	}
});

function popUp(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=690,height=730,left = 640,top = 325');");
}

function set_state_fields() {
	// Handler for .ready() called.
	if ($("select#country").val() == "US" || $("select#country").val() == "CA") {
		$("select#state").removeAttr("disabled");
		$("input#state_text").attr("disabled", "disabled");
		disable_invalid_states($("select#country").val());
	} else {
		$("select#state").attr("disabled", "disabled");
		$("input#state_text").removeAttr("disabled");
	}
}
