// Make startsWith & endsWith functions of all strings =========================
String.prototype.startsWith = function(s)
{
	var reg = new RegExp("^" + s);
	return reg.test(this);
}
String.prototype.endsWith = function(s)
{
	var reg = new RegExp(s + "$");
	return reg.test(this);
}
//==============================================================================

var g_available_product_array = [];
var g_available_category_array = [];

function SetDateDropdownToToday(dropdown_id, month, day, year)
{
	month = month*1; 	// cast to an int
	day = day*1; 		// cast to an int
	
	document.getElementById(dropdown_id+"_month").value 	= month;
	document.getElementById(dropdown_id+"_day").value 	= day;
	document.getElementById(dropdown_id+"_year").value 	= year;
}
function SyncDateDropdown(dropdown_id, sync_from_id)
{
	document.getElementById(dropdown_id+"_month").value 	= document.getElementById(sync_from_id+"_month").value;
	document.getElementById(dropdown_id+"_day").value 	= document.getElementById(sync_from_id+"_day").value;
	document.getElementById(dropdown_id+"_year").value 	= document.getElementById(sync_from_id+"_year").value;
}
function ClearDateDropdown(dropdown_id)
{
	document.getElementById(dropdown_id+"_month").value 	= '';
	document.getElementById(dropdown_id+"_day").value 	= '';
	document.getElementById(dropdown_id+"_year").value 	= '';
}

function SubmitAddProductToDiscountList()
{
     var product_code_and_id = document.getElementById("available_for_products").options[document.getElementById("available_for_products").selectedIndex].value;

	if(product_code_and_id)
	{
		if(g_available_product_array.indexOf(product_code_and_id) < 0)
		{
			g_available_product_array[g_available_product_array.length] = product_code_and_id;
		}
		document.getElementById("available_to_all_products_label").innerHTML = "Available to the following products only: ";
		document.getElementById("available_to_all_products_label").style.textAlign = "left";

		document.getElementById("product_"+product_code_and_id).style.display = '';
		document.getElementById("clear_selected_product_availability_link").style.display = '';
	}
	else
	{
		ClearSelectedProductAvailability();
	}
}

function ClearSelectedProductAvailability()
{
	for(i=0; i<g_available_product_array.length; i++)
	{
		document.getElementById("product_"+g_available_product_array[i]).style.display = 'none';
	}

	g_available_product_array = [];

	document.getElementById("available_to_all_products_label").innerHTML = "Available to all products";
	document.getElementById("available_to_all_products_label").style.textAlign = "center";
	
	document.getElementById("clear_selected_product_availability_link").style.display = 'none';
}

function ClearSelectedCategoryAvailability()
{
	for(i=0; i<g_available_category_array.length; i++)
	{
		document.getElementById("category_"+g_available_category_array[i]).style.display = 'none';
	}

	g_available_category_array = [];

	document.getElementById("available_to_all_categories_label").innerHTML = "Available in every category";
	document.getElementById("available_to_all_categories_label").style.textAlign = "center";

	document.getElementById("clear_selected_category_availability_link").style.display = 'none';
}

function SubmitAddCategoryToDiscountList()
{
	var category_id = document.getElementById("available_for_categories").options[document.getElementById("available_for_categories").selectedIndex].value;

	if(category_id)
	{
		if(g_available_category_array.indexOf(category_id) < 0)
		{
			g_available_category_array[g_available_category_array.length] = category_id;
		}
		document.getElementById("available_to_all_categories_label").innerHTML = "Available to the following categories only: ";
		document.getElementById("available_to_all_categories_label").style.textAlign = "left";

		document.getElementById("category_"+category_id).style.display = '';
		document.getElementById("clear_selected_category_availability_link").style.display = '';
	}
	else
	{
          ClearSelectedCategoryAvailability();
	}
}

function Ajax_SubmitCustomerListFilter()
{
     document.getElementById("customer_list_table_area").innerHTML = 'Loading...';

     var sel_start_year 	= document.getElementById("account_date_start_year");
     var sel_start_month = document.getElementById("account_date_start_month");
     var sel_start_day 	= document.getElementById("account_date_start_day");
     var sel_end_year 	= document.getElementById("account_date_end_year");
     var sel_end_month 	= document.getElementById("account_date_end_month");
     var sel_end_day 	= document.getElementById("account_date_end_day");

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_date_start_year 	= sel_start_year.options[sel_start_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_month = sel_start_month.options[sel_start_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_day	= sel_start_day.options[sel_start_day.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_year 	= sel_end_year.options[sel_end_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_month 	= sel_end_month.options[sel_end_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_day	= sel_end_day.options[sel_end_day.selectedIndex].value;
	ajaxObj.data_obj.customer_last_name 	= document.getElementById("customer_last_name").value;
	ajaxObj.data_obj.customer_first_name 	= document.getElementById("customer_first_name").value;
	ajaxObj.data_obj.customer_state 		= document.getElementById("customer_state").value;
	ajaxObj.data_obj.has_purchased 		= document.getElementById("has_purchased").value;
	ajaxObj.data_obj.origin_source 		= document.getElementById("origin_source").value;
	ajaxObj.data_obj.is_on_mailing_list 	= document.getElementById("is_on_mailing_list").value;

	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_customer_list_filter&');
}
function AjaxHandler_SubmitCustomerListFilter(customer_list_table_area_contents)
{
     document.getElementById("customer_list_table_area").innerHTML = customer_list_table_area_contents;
}


function Ajax_SubmitLogoSalesReportFilter()
{
     document.getElementById("logo_sales_report_results_area").innerHTML = 'Loading...';

     var sel_start_year 	= document.getElementById("order_date_start_year");
     var sel_start_month = document.getElementById("order_date_start_month");
     var sel_start_day 	= document.getElementById("order_date_start_day");
     var sel_end_year 	= document.getElementById("order_date_end_year");
     var sel_end_month 	= document.getElementById("order_date_end_month");
     var sel_end_day 	= document.getElementById("order_date_end_day");


	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_date_start_year 	= sel_start_year.options[sel_start_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_month = sel_start_month.options[sel_start_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_day	= sel_start_day.options[sel_start_day.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_year 	= sel_end_year.options[sel_end_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_month 	= sel_end_month.options[sel_end_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_day	= sel_end_day.options[sel_end_day.selectedIndex].value;

	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_logo_sales_report_filter&');
}
function AjaxHandler_SubmitLogoSalesReportFilter(logo_sales_report_output)
{
     document.getElementById("logo_sales_report_results_area").innerHTML = logo_sales_report_output;
}


function Ajax_SubmitDiscountUsageReportFilter()
{
     document.getElementById("discount_usage_report_results_area").innerHTML = 'Loading...';

     var sel_start_year 	= document.getElementById("order_date_start_year");
     var sel_start_month = document.getElementById("order_date_start_month");
     var sel_start_day 	= document.getElementById("order_date_start_day");
     var sel_end_year 	= document.getElementById("order_date_end_year");
     var sel_end_month 	= document.getElementById("order_date_end_month");
     var sel_end_day 	= document.getElementById("order_date_end_day");



	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_date_start_year 	= sel_start_year.options[sel_start_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_month = sel_start_month.options[sel_start_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_day	= sel_start_day.options[sel_start_day.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_year 	= sel_end_year.options[sel_end_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_month 	= sel_end_month.options[sel_end_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_day	= sel_end_day.options[sel_end_day.selectedIndex].value;

	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_discount_usage_report_filter&');
}
function AjaxHandler_SubmitDiscountUsageReportFilter(discount_usage_report_output)
{
     document.getElementById("discount_usage_report_results_area").innerHTML = discount_usage_report_output;
}


function Ajax_SubmitCatalogExportFilter()
{
     document.getElementById("catalog_export_results_area").innerHTML = 'Loading...';
	
	var ajaxObj = new Class_Ajax();
	Ajax_SubmitForm(ajaxObj, document.catalog_export, g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_catalog_export_filter&');
}
function AjaxHandler_SubmitCatalogExportFilter(catalog_export_output)
{
     document.getElementById("catalog_export_results_area").innerHTML = catalog_export_output;
}


function Ajax_SubmitEditDiscountForm(discount_number)
{
     document.getElementById("input_button_td").innerHTML = 'Loading...';
	
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.discount_number = discount_number;
	ajaxObj.data_obj.available_product_array = g_available_product_array;
	ajaxObj.data_obj.available_category_array = g_available_category_array;
	Ajax_SubmitForm(ajaxObj, document.edit_discount_form, g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_edit_discount_form&');
}
function AjaxHandler_SubmitEditDiscountForm(discount_management_area_html)
{
     document.getElementById("discount_management_area").innerHTML = discount_management_area_html;
}


function Ajax_SubmitCreateNewDiscountForm()
{
     document.getElementById("input_button_td").innerHTML = 'Loading...';

	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.available_product_array = g_available_product_array;
	ajaxObj.data_obj.available_category_array = g_available_category_array;
	Ajax_SubmitForm(ajaxObj, document.create_new_discount_form, g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_create_new_discount_form&');
}
function AjaxHandler_SubmitCreateNewDiscountForm(discount_management_area_html)
{
     document.getElementById("discount_management_area").innerHTML = discount_management_area_html;
}


function Ajax_SubmitItemSalesReportFilter()
{
     document.getElementById("item_sales_report_results_area").innerHTML = 'Loading...';

     var sel_start_year 	= document.getElementById("order_date_start_year");
     var sel_start_month = document.getElementById("order_date_start_month");
     var sel_start_day 	= document.getElementById("order_date_start_day");
     var sel_end_year 	= document.getElementById("order_date_end_year");
     var sel_end_month 	= document.getElementById("order_date_end_month");
     var sel_end_day 	= document.getElementById("order_date_end_day");


	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_date_start_year 	= sel_start_year.options[sel_start_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_month = sel_start_month.options[sel_start_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_day	= sel_start_day.options[sel_start_day.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_year 	= sel_end_year.options[sel_end_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_month 	= sel_end_month.options[sel_end_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_day	= sel_end_day.options[sel_end_day.selectedIndex].value;
	ajaxObj.data_obj.separate_by_color 	= document.getElementById("separate_by_color").value;

	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_item_sales_report_filter&');
}
function AjaxHandler_SubmitItemSalesReportFilter(item_sales_report_output)
{
     document.getElementById("item_sales_report_results_area").innerHTML = item_sales_report_output;
}


function Ajax_SubmitSalesSummaryReportFilter()
{
     document.getElementById("sales_summary_results_area").innerHTML = 'Loading...';

     var sel_start_year 	= document.getElementById("order_date_start_year");
     var sel_start_month = document.getElementById("order_date_start_month");
     var sel_start_day 	= document.getElementById("order_date_start_day");
     var sel_end_year 	= document.getElementById("order_date_end_year");
     var sel_end_month 	= document.getElementById("order_date_end_month");
     var sel_end_day 	= document.getElementById("order_date_end_day");


	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_date_start_year 	= sel_start_year.options[sel_start_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_month = sel_start_month.options[sel_start_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_day	= sel_start_day.options[sel_start_day.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_year 	= sel_end_year.options[sel_end_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_month 	= sel_end_month.options[sel_end_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_day	= sel_end_day.options[sel_end_day.selectedIndex].value;

	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_sales_summary_filter&');
}
function AjaxHandler_SubmitSalesSummaryReportFilter(sales_summary_output)
{
     document.getElementById("sales_summary_results_area").innerHTML = sales_summary_output;
}


function Ajax_SubmitOrderListFilter()
{
     document.getElementById("order_list_table_area").innerHTML = 'Loading...';

     var sel_start_year 	= document.getElementById("order_date_start_year");
     var sel_start_month = document.getElementById("order_date_start_month");
     var sel_start_day 	= document.getElementById("order_date_start_day");
     var sel_end_year 	= document.getElementById("order_date_end_year");
     var sel_end_month 	= document.getElementById("order_date_end_month");
     var sel_end_day 	= document.getElementById("order_date_end_day");
     
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_status 		= document.getElementById("order_status").value;
	ajaxObj.data_obj.order_number 		= document.getElementById("order_number").value;
	ajaxObj.data_obj.order_date_start_year 	= sel_start_year.options[sel_start_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_month = sel_start_month.options[sel_start_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_start_day	= sel_start_day.options[sel_start_day.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_year 	= sel_end_year.options[sel_end_year.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_month 	= sel_end_month.options[sel_end_month.selectedIndex].value;
	ajaxObj.data_obj.order_date_end_day	= sel_end_day.options[sel_end_day.selectedIndex].value;
	ajaxObj.data_obj.customer_last_name 	= document.getElementById("customer_last_name").value;
	ajaxObj.data_obj.customer_first_name 	= document.getElementById("customer_first_name").value;
	ajaxObj.data_obj.customer_state 		= document.getElementById("customer_state").value;

	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_order_list_filter&');
}
function AjaxHandler_SubmitOrderListFilter(order_list_table_area_contents)
{
     document.getElementById("order_list_table_area").innerHTML = order_list_table_area_contents;
}



function Ajax_ChangeOrderStatusToProcessing(order_id)
{
	document.getElementById("order_status_"+order_id).innerHTML = '...';
	
	var ajaxObj = new Class_Ajax();
	ajaxObj.data_obj.order_id = order_id;
	ajaxObj.SendRequest(g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=change_order_status_to_processing&');
}
function AjaxHandler_ChangeOrderStatusToProcessing(order_id, new_status_name)
{
	document.getElementById("order_status_"+order_id).innerHTML = new_status_name;
}



function Ajax_SubmitEditOrderInfoTable(order_id)
{
	var the_form = document.order_edit_form;
	
	if(FormHasChanged(the_form))
	{
		var url = g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_edit_order_info_table&';

		var ajaxObj = new Class_Ajax();
		ajaxObj.data_obj.order_id = order_id;
		Ajax_SubmitForm(ajaxObj, the_form, url);
	}
	else
	{
	     alert('No changes to the form were made!');
	}
}
function AjaxHandler_SubmitEditOrderInfoTable(success_message)
{
     document.getElementById("change_notes").value = '';
	alert(success_message);
}



function Ajax_SubmitEditCustomerInfoTable(user_id)
{
	var the_form = document.customer_edit_form;

	if(FormHasChanged(the_form))
	{
		var url = g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_edit_customer_info_table&';

		var ajaxObj = new Class_Ajax();
		ajaxObj.data_obj.user_id = user_id;
		Ajax_SubmitForm(ajaxObj, the_form, url);
	}
	else
	{
	     alert('No changes to the form were made!');
	}
}
function AjaxHandler_SubmitEditCustomerInfoTable(success_message)
{
     document.getElementById("change_notes").value = '';
	alert(success_message);
}



function Ajax_SubmitManualShippingInfo()
{
	var the_form = document.manual_tracking_input_form;

	if(FormHasChanged(the_form))
	{
     	document.getElementById("manual_tracking_input_form_response_area").innerHTML = '';
     
		var url = g_current_general_url+'param=outside_admin&operation=process_ajax&ajax_operation=submit_manual_shipping_info&';

		var ajaxObj = new Class_Ajax();
		//ajaxObj.data_obj.user_id = user_id;
		Ajax_SubmitForm(ajaxObj, the_form, url);
	}
	else
	{
	     alert('No changes to the form were made!');
	}
}
function AjaxHandler_SubmitManualShippingInfo(success_message)
{
     document.getElementById("order_number").value = '';
     document.getElementById("tracking_number").value = '';
     
     document.getElementById("manual_tracking_input_form_response_area").innerHTML = success_message;
	//alert(success_message);
}

function Ajax_SubmitForm(ajaxObj, the_form, url)
{
	
	var elem = the_form.elements;

	ajaxObj.data_obj.var_array = new Object();

	for(var i=0;i<elem.length;i++)
	{
		if(elem[i].name)
		{
			if(elem[i].options)// ...if it's a selectbox
			{
			     if(elem[i].selectedIndex >= 0)
			     {
			          ajaxObj.data_obj.var_array[elem[i].name] = elem[i].options[elem[i].selectedIndex].value;
			     }
			     else if(elem[i].options.length > 0)
			     {
			          ajaxObj.data_obj.var_array[elem[i].name] = elem[i].options[0].value;
			     }
			     else
			     {
			          ajaxObj.data_obj.var_array[elem[i].name] = '';
			     }
			}
			else
			{
				if(elem[i].type == "checkbox")
				{
			     	ajaxObj.data_obj.var_array[elem[i].name] = elem[i].checked;
				}
				else
				{
				     ajaxObj.data_obj.var_array[elem[i].name] = elem[i].value;
				}
				
			     /*
				if(elem[i].name.endsWith('_number'))
				{
			     	ajaxObj.data_obj.var_array[elem[i].name+'_number'] = elem[i].value;
				}
				else if(elem[i].name.endsWith('_ext'))
				{
			     	ajaxObj.data_obj.var_array[elem[i].name+'_ext'] = elem[i].value;
				}
				*/
			}
		}
		else
		{
		     alert("error: an input does not have a name!");
		}
	}
	
	ajaxObj.SendRequest(url);
}

function FormHasChanged(the_form)
{
	var elem = the_form.elements;
	
	for(var i=0;i<elem.length;i++)
	{
		if(!elem[i].defaultValue)// Cant read the default value...
		{
			if(elem[i].options)// ...because it's a selectbox
			{
				if(elem[i].selectedIndex >= 0 && elem[i].options.length > 0 && !elem[i].options[elem[i].selectedIndex].defaultSelected)
				{
				     // NOTE: This may start out as "changed" if...
					//		...there is no selected value
					//	    	AND
					// 		...there is no starting blank value
						
					//alert(elem[i].name);
					return true;
				}
			}
			else if(elem[i].type != "submit") // ...because it's a textbox with an empty default value
			{
				if(elem[i].value!=="")
				{
					//alert(elem[i].name);
					return true;
				}
			}
		}
		else if(elem[i].value!=elem[i].defaultValue)
		{
			//alert(elem[i].name);
			return true;
		}
	}
	return false;
}
