// Make trim a method of all Strings ===========================================
String.prototype.trim = function()
{
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function()
{
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function()
{
	return this.replace(/\s+$/,"");
}
//==============================================================================

function Ajax_TestCheckout()
{
	var ajaxObj = new Class_Ajax();
	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=test_checkout&');
}
function Ajax_TestCheckoutHandler(msg)
{
	alert("msg: "+msg);
}

function Ajax_ShowChangeBillingAddressForm()
{
	document.getElementById('change_billing_address_form').innerHTML = 'loading...';
	document.getElementById('change_billing_address_form').style.display = 'block';

	var ajaxObj = new Class_Ajax();
	//ajaxObj.data_obj.some_var = some_var;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=show_change_billing_address_form&');
}

function Ajax_ShowChangeBillingAddressFormHandler(billing_address_form)
{
	document.getElementById('change_billing_address_form').innerHTML = billing_address_form;
}

function Ajax_ShowChangeShippingAddressForm()
{
	document.getElementById('change_shipping_address_form').innerHTML = 'loading...';
	document.getElementById('change_shipping_address_form').style.display = 'block';

	var ajaxObj = new Class_Ajax();
	//ajaxObj.data_obj.some_var = some_var;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=show_change_shipping_address_form&');
}

function Ajax_ShowChangeShippingAddressFormHandler(shipping_address_form)
{
	document.getElementById('change_shipping_address_form').innerHTML = shipping_address_form;
}

function Ajax_CreateNewShippingAddressHandler(alert_message, address_book_id)
{
	if(alert_message)
	{
		alert(alert_message);
	}
	else
	{
		Ajax_LoadShippingAddress(address_book_id);
	}
}

function Ajax_CreateNewShippingAddress()
{

	error_string = '';

	if(error_string)
	{
		alert("The following error(s) have occurred:\n\n"+error_string);
	}
	else
	{
		var ajaxObj = new Class_Ajax();
		ajaxObj.data_obj.address_book_first_name   = document.getElementById("address_book_first_name").value.trim();
		ajaxObj.data_obj.address_book_last_name    = document.getElementById("address_book_last_name").value.trim();
		ajaxObj.data_obj.address_book_address_name = document.getElementById("address_book_address_name").value.trim();
		ajaxObj.data_obj.address_book_company_name = document.getElementById("address_book_company_name").value.trim();
		ajaxObj.data_obj.address_book_address1     = document.getElementById("address_book_address1").value.trim();
		ajaxObj.data_obj.address_book_address2     = document.getElementById("address_book_address2").value.trim();
		ajaxObj.data_obj.address_book_city         = document.getElementById("address_book_city").value.trim();
		ajaxObj.data_obj.address_book_state        = document.getElementById("address_book_state").value.trim();
		ajaxObj.data_obj.address_book_zip          = document.getElementById("address_book_zip").value.trim();
		ajaxObj.data_obj.address_book_country      = document.getElementById("address_book_country").value.trim();
		ajaxObj.data_obj.address_book_phone_number = document.getElementById("address_book_phone_number").value.trim();
		ajaxObj.data_obj.address_book_phone_ext    = document.getElementById("address_book_phone_ext").value.trim();

		ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=create_new_shipping_address&');
	}
}

function Ajax_CreateNewBillingAddress()
{

	error_string = '';

	if(error_string)
	{
		alert("The following error(s) have occurred:\n\n"+error_string);
	}
	else
	{
		var ajaxObj = new Class_Ajax();
		ajaxObj.data_obj.address_book_first_name   = document.getElementById("address_book_first_name").value.trim();
		ajaxObj.data_obj.address_book_last_name    = document.getElementById("address_book_last_name").value.trim();
		ajaxObj.data_obj.address_book_address_name = document.getElementById("address_book_address_name").value.trim();
		ajaxObj.data_obj.address_book_company_name = document.getElementById("address_book_company_name").value.trim();
		ajaxObj.data_obj.address_book_address1     = document.getElementById("address_book_address1").value.trim();
		ajaxObj.data_obj.address_book_address2     = document.getElementById("address_book_address2").value.trim();
		ajaxObj.data_obj.address_book_city         = document.getElementById("address_book_city").value.trim();
		ajaxObj.data_obj.address_book_state        = document.getElementById("address_book_state").value.trim();
		ajaxObj.data_obj.address_book_zip          = document.getElementById("address_book_zip").value.trim();
		ajaxObj.data_obj.address_book_country      = document.getElementById("address_book_country").value.trim();
		ajaxObj.data_obj.address_book_phone_number = document.getElementById("address_book_phone_number").value.trim();
		ajaxObj.data_obj.address_book_phone_ext    = document.getElementById("address_book_phone_ext").value.trim();

		ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=create_new_billing_address&');
	}
}

function Ajax_CreateNewBillingAddressHandler(alert_message, address_book_id)
{
	if(alert_message)
	{
		alert(alert_message);
	}

	Ajax_LoadBillingAddress(address_book_id);
}

function Ajax_UpdateShippingMethodOption(shipping_method_id)
{
	document.getElementById("shipping_method_name_display_area").innerHTML   = 'Shipping:';
	document.getElementById("shipping_method_charge_display_area").innerHTML = '...';
	document.getElementById("tax_total_display_area").innerHTML              = '...';
	document.getElementById("order_total_display_area").innerHTML            = '...';

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.shipping_method_id = shipping_method_id;
	ajaxObj.data_obj.add_rush_production = document.getElementById("add_rush_production").options[document.getElementById("add_rush_production").selectedIndex].value;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=update_shipping_method_option&');
}

function Ajax_UpdateShippingMethodOptionHandler(shipping_method_id, new_shipping_method_name_display, new_shipping_method_charge_display, new_tax_total_display, new_order_total_display, new_anticipated_ship_date, new_anticipated_arrival_date, show_shipping_method_tbd_area)
{
	//todo: validate the shipping_method before updating...

	document.getElementById("shipping_method_name_display_area").innerHTML   = new_shipping_method_name_display;
	document.getElementById("shipping_method_charge_display_area").innerHTML = new_shipping_method_charge_display;
	document.getElementById("tax_total_display_area").innerHTML              = new_tax_total_display;
	document.getElementById("order_total_display_area").innerHTML            = new_order_total_display;

	document.getElementById("anticipated_ship_date_area").innerHTML          = new_anticipated_ship_date;
	document.getElementById("anticipated_arrival_date_area").innerHTML       = new_anticipated_arrival_date;
	
	
	if(show_shipping_method_tbd_area)
	{
		document.getElementById("shipping_method_tbd_area").style.display = '';
		document.getElementById("shipping_method_dropdown_area").style.display = 'none';
	}
	else
	{
		document.getElementById("shipping_method_tbd_area").style.display = 'none';
		document.getElementById("shipping_method_dropdown_area").style.display = '';
	}
}

function Ajax_UpdateRushProductionOption(use_rush_production)
{
	document.getElementById("rush_production_charge_row").style.display = (use_rush_production=='y'?'':'none');
	document.getElementById("anticipated_ship_date_area").innerHTML     = '...';
	document.getElementById("anticipated_arrival_date_area").innerHTML  = '...';
	document.getElementById("order_total_display_area").innerHTML       = '...';

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.use_rush_production = use_rush_production;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=update_rush_production_option&');

}

function Ajax_UpdateRushProductionOptionHandler(new_anticipated_ship_date, new_anticipated_arrival_date, new_order_total_display)
{
	document.getElementById("anticipated_ship_date_area").innerHTML    = new_anticipated_ship_date;
	document.getElementById("anticipated_arrival_date_area").innerHTML = new_anticipated_arrival_date;
	document.getElementById("order_total_display_area").innerHTML      = new_order_total_display;
}

function Ajax_DeleteShippingAddress(address_book_id)
{
	HideChangeShippingAddressForm();

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.address_book_id = address_book_id;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=delete_shipping_address&');
}
function Ajax_DeleteBillingAddress(address_book_id)
{
	HideChangeBillingAddressForm();

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.address_book_id = address_book_id;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=delete_billing_address&');
}

function Ajax_LoadShippingAddress(address_book_id)
{
	HideChangeShippingAddressForm();

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.address_book_id = address_book_id;
	ajaxObj.data_obj.selected_shipping_method_id = document.getElementById("shipping_method_id").value;

	document.getElementById('shipping_display_full_name').innerHTML    = "loading...";
	document.getElementById('shipping_display_company').innerHTML      = "loading...";
	document.getElementById('shipping_display_address1').innerHTML     = "loading...";
	document.getElementById('shipping_display_address2').innerHTML     = "loading...";
	document.getElementById('shipping_display_city').innerHTML         = "loading...";
	document.getElementById('shipping_display_state').innerHTML        = "loading...";
	document.getElementById('shipping_display_zip').innerHTML          = "loading...";
	document.getElementById('shipping_display_country').innerHTML      = "loading...";
	document.getElementById('shipping_display_phone').innerHTML        = "loading...";
	
	document.getElementById("shipping_method_dropdown_area").innerHTML = 'loading...';

	document.getElementById("tax_total_display_area").innerHTML        = 'loading...';

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=load_shipping_address&');
}

function Ajax_LoadShippingAddressHandler(full_name, company_name, address1, address2, city, state, zip, country, phone, tax_display, new_shipping_dropdown)
{
	document.getElementById('shipping_display_full_name').style.display = "inline";

	document.getElementById('shipping_display_full_name').innerHTML    = full_name;
	document.getElementById('shipping_display_company').innerHTML      = company_name;
	document.getElementById('shipping_display_address1').innerHTML     = address1;
	document.getElementById('shipping_display_address2').innerHTML     = address2;
	document.getElementById('shipping_display_city').innerHTML         = city;
	document.getElementById('shipping_display_state').innerHTML        = state;
	document.getElementById('shipping_display_zip').innerHTML          = zip;
	document.getElementById('shipping_display_country').innerHTML      = country;
	document.getElementById('shipping_display_phone').innerHTML        = phone;
	
	document.getElementById("shipping_method_dropdown_area").innerHTML = new_shipping_dropdown;

	document.getElementById("tax_total_display_area").innerHTML        = tax_display;
	
	
	// Now update the shipping method selection...
	Ajax_UpdateShippingMethodOption(document.getElementById("shipping_method_id").value);
}

function Ajax_LoadBillingAddress(address_book_id)
{
	HideChangeBillingAddressForm();

	document.getElementById('billing_display_full_name').innerHTML = "loading...";
	document.getElementById('billing_display_company').innerHTML   = "loading...";
	document.getElementById('billing_display_address1').innerHTML  = "loading...";
	document.getElementById('billing_display_address2').innerHTML  = "loading...";
	document.getElementById('billing_display_city').innerHTML      = "loading...";
	document.getElementById('billing_display_state').innerHTML     = "loading...";
	document.getElementById('billing_display_zip').innerHTML       = "loading...";
	document.getElementById('billing_display_country').innerHTML   = "loading...";
	document.getElementById('billing_display_phone').innerHTML     = "loading...";

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.address_book_id = address_book_id;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=load_billing_address&');
}

function Ajax_LoadBillingAddressHandler(full_name, company_name, address1, address2, city, state, zip, country, phone)
{
	document.getElementById('billing_display_full_name').style.display = "inline";

	document.getElementById('billing_display_full_name').innerHTML = full_name;
	document.getElementById('billing_display_company').innerHTML   = company_name;
	document.getElementById('billing_display_address1').innerHTML  = address1;
	document.getElementById('billing_display_address2').innerHTML  = address2;
	document.getElementById('billing_display_city').innerHTML      = city;
	document.getElementById('billing_display_state').innerHTML     = state;
	document.getElementById('billing_display_zip').innerHTML       = zip;
	document.getElementById('billing_display_country').innerHTML   = country;
	document.getElementById('billing_display_phone').innerHTML     = phone;
}

function HideChangeShippingAddressForm()
{
	document.getElementById('change_shipping_address_form').style.display = 'none';
}

function HideChangeBillingAddressForm()
{
	document.getElementById('change_billing_address_form').style.display = 'none';
}

function ContinueToPaymentPage()
{
	window.location = g_current_general_url+'param=checkout&stage=payment&';
}

function Ajax_UpdateMailingListOption()
{
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.sign_up = document.getElementById("signup_for_mailing_list").checked;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=update_mailing_list_option&');
}

function Ajax_SubmitDiscountCode()
{
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.discount_code = document.getElementById("discount_code").value;

	document.getElementById("discount_code").value = "";

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=submit_discount_code&');
}

function DisableCreditCardEntry()
{
	document.getElementById("cc_card_num").value       = '';
	document.getElementById("cc_exp_date_year").value  = '';
	document.getElementById("cc_exp_date_month").value = '';
	document.getElementById("cc_ccv_code").value       = '';

	document.getElementById("cc_card_num").disabled       = true;
	document.getElementById("cc_exp_date_year").disabled  = true;
	document.getElementById("cc_exp_date_month").disabled = true;
	document.getElementById("cc_ccv_code").disabled       = true;
}
function EnableCreditCardEntry()
{
	document.getElementById("cc_card_num").disabled       = false;
	document.getElementById("cc_exp_date_year").disabled  = false;
	document.getElementById("cc_exp_date_month").disabled = false;
	document.getElementById("cc_ccv_code").disabled       = false;
}

function SetCreditCardEntryRequirement()
{
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.discount_code = document.getElementById("discount_code").value;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=submit_discount_code&');
}

function Ajax_RemoveDiscount(discount_code)
{
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.discount_code = discount_code;

	ajaxObj.SendRequest(g_current_general_url+'param=checkout&sub_param=process_ajax&operation=remove_discount_code&');
}
function SetDiscountTable(discount_table_html)
{
	document.getElementById("discount_table").innerHTML = discount_table_html;
}
function SetItemTable(item_table_html)
{
	document.getElementById("item_table_area").innerHTML = item_table_html;
}

function CheckOrderAccuracyCheckbox()
{
	if(document.getElementById("confirm_accuracy").checked)
	{
		return true;
	}
	else
	{
		alert('Please check over your order and confirm its accuracy before submitting it.');
		return false;
	}
}
















