Event.observe(window, 'load', init_shopping_summary);
Event.observe(window, 'load', load_product_sub_type);


function init_shopping_summary ()
{
	response = new Ajax.Updater('shopping_summary_frag', '/load.php', 
						{ evalJSON: true, sanitizeJSON: true,
						  parameters: 	{
						  					method: 'load_shopping_summary'
										} 
						});
}



// *********************************************************************************
//									ADD TO ORDER
// *********************************************************************************
function add_to_order ( arg_model_id, arg_product_id )
{
	// submit_button_processing_on ( 'button_' + arg_product_id, 'Adding to cart...' );
	var param_hash = new Hash ();
	param_hash.set ( 'method', 'add_to_order' );
	param_hash.set ( 'model_id', arg_model_id );
	param_hash.set ( 'product_id', arg_product_id );
	
	new Ajax.Request( absolute_link_path + 'ajax.php', 
	{	
		method: "post",
		parameters: $H(param_hash),
		onSuccess: add_to_order_callback,
		onFailure: errback_global
	});  // end Ajax.Request.
}

function add_to_order_callback ( oReq, json )
{
	ajax_require_logged_in ( oReq.responseJSON.status );
	if ( oReq.responseJSON.status == 'success' )
	{
		
		$('header_shopping_link').innerHTML = oReq.responseJSON.data['store_number_products'] + " items";
		$('order_header').style.display = 'block';
	
		init_shopping_summary();
		
	}
	else
	{
		callback_show_general_errors ( 'store_error_general', oReq );
	}
	// submit_button_processing_off ( 'button_' + arg_product_id, 'Add to Cart' );
}




// *********************************************************************************
//								FUP_ADD_PRODUCT
// *********************************************************************************
function add_product ( arg_category )
{
	// 1.  Initialize Event Autocompleter.
	// 2.  Show the FUP.
	
	show_fup ( 'fup_add_product' );
}  // end function add_product.


function init_event_autocompleter()
{
	var editor = new Ajax.Autocompleter('event_autocomplete_textbox', 'event_choices', '/lookup.php?method=lookup_event', {
		afterUpdateElement: event_autocompleter_after_update,
		indicator: 'event_name_loading',
		paramName: 'typed_chars',
		minChars: 1
	}); // end Ajax.Autocompleter.
	
	function event_autocompleter_after_update(text, li)
	{
		var param_hash = new Hash();
		param_hash.set('method', 'get_event_name');
		param_hash.set('event_id', li.id);
		
		// Get the name of the event so we can display it after the user selects it.
		new Ajax.Request(absolute_link_path + 'ajax.php', {
			method: "post",
			evalJSON: true,
			sanitizeJSON: true,
			parameters: $H(param_hash),
			onSuccess: function(transport){
				ajax_require_logged_in(transport.responseJSON.status);
				
				$('event_autocomplete_textbox').style.display = 'none';
				$('event_name_formatted').innerHTML = transport.responseJSON.data['event_name'];
				$('event_name_formatted').style.display = 'block';
				
				// When the user clicks the location name, we want to display the textbox again so he can change his selection.	
				$('event_name_formatted').onclick = show_event_autocomplete;
				
				// Update the hidden field with the venue_id, since we can't 
				// save it anywhere just yet - the event hasn't been created.
				$('event_id').value = li.id;
			} // end onSuccess.
		}); // end Ajax.Request.
	} // end afterUpdateElement function.
}

function show_event_autocomplete ()
{
	$('event_name_formatted').style.display = 'none';
	$('event_autocomplete_textbox').value = '';
	$('event_autocomplete_textbox').style.display = 'block';
	$('event_autocomplete_textbox').focus ();
}




// *********************************************************************************
//								FUP_ADD_PRODUCT
// *********************************************************************************
function add_product_to_catalog ()
{
	submit_button_processing_on ( 'add_product_submit_button', 'Adding...' );
	
	var param_hash = new Hash ();
	param_hash.set ( 'method', 'add_product_to_catalog' );
		
	param_hash.set ( 'category', $('category').value );
	param_hash.set ( 'name', $('name').value );
	param_hash.set ( 'description', $('description').value );
	param_hash.set ( 'event_id', $('event_id').value );
	param_hash.set ( 'num_for_sale', $('num_for_sale').value );
	param_hash.set ( 'price', $('price').value );
	
	// If category is shirts, include, color and size.
	if ( $('category').value == 1 )
	{
		param_hash.set ( 'size', $('size').value );
		param_hash.set ( 'color', $('color').value );
	}
	
	new Ajax.Request( absolute_link_path + 'ajax.php', 
	{	
		method: "post",
		parameters: $H(param_hash),
		onSuccess: add_to_order_callback,
		onFailure: errback_global
	});  // end Ajax.Request.
}  // end function add_product_to_catalog.


function add_product_to_catalog_callback (oReq, json)
{
	submit_button_processing_off('add_product_submit_button', 'Add');
	
}  // end function add_product_to_catalog_callback.









// *********************************************************************************
//								FUP_ADD_MODEL
// *********************************************************************************
function add_model ()
{
	// 1.  Initialize Event Autocompleter.
	// 2.  Show the FUP.
	init_event_autocompleter ();
	show_fup ( 'fup_add_model' );
}  // end function add_product.




function add_model_to_catalog ()
{
	submit_button_processing_on ( 'add_model_submit_button', 'Adding...' );
	callback_hide_general_errors ( 'fup_add_model_error_general' );

	callback_hide_error ( 'name_error' );
	callback_hide_error ( 'description_error' );
	callback_hide_error ( 'category_error' );
	callback_hide_error ( 'gender_error' );
	callback_hide_error ( 'product_type_error' );
	callback_hide_error ( 'product_sub_type_error' );
	
	var param_hash = new Hash ();
	param_hash.set ( 'method', 'add_model_to_catalog' );
	param_hash.set ( 'name', $('name').value );
	param_hash.set ( 'description', $('description').value );	
	param_hash.set ( 'event_id', $('event_id').value );
	param_hash.set ( 'category', $('category').value );
	param_hash.set ( 'manufacturers_id', $('manufacturer').value );
	param_hash.set ( 'gender', $('gender').value );
	param_hash.set ( 'product_type_id', $('product_type').value );
	param_hash.set ( 'product_sub_type_id', $('product_sub_type').value );
	
	new Ajax.Request( absolute_link_path + 'ajax.php',
	{	
		method: "post",
		parameters: $H(param_hash),
		onSuccess: add_model_to_catalog_callback,
		onFailure: errback_global
	});  // end Ajax.Request.
}  // end function add_product_to_catalog.


function add_model_to_catalog_callback (oReq, json)
{
	ajax_require_logged_in ( oReq.responseJSON.status );
	if ( oReq.responseJSON.status == 'success')
	{
		hide_fup ( 'fup_add_model', '' );
		
		// If apparel, redirect to the list of products where this model resides.
		if ( oReq.responseJSON.data['category'] == 1 )
		{
			var redirect = "http://thefightersunion.com/catalog/apparel/" + oReq.responseJSON.data['gender_name'] + "/" + oReq.responseJSON.data['product_type_name'] + "/" + oReq.responseJSON.data['product_sub_type_name'];			
			window.location = redirect;
		}		
	}
	else
	{
		callback_show_general_errors ( 'fup_add_model_error_general', oReq );
		callback_show_error ( 'category_error', oReq.responseJSON.data_errors['category'] );
		callback_show_error ( 'name_error', oReq.responseJSON.data_errors['name'] );
		callback_show_error ( 'description_error', oReq.responseJSON.data_errors['description'] );
		callback_show_error ( 'gender_error', oReq.responseJSON.data_errors['gender'] );
		callback_show_error ( 'product_type_error', oReq.responseJSON.data_errors['product_type'] );
		callback_show_error ( 'product_sub_type_error', oReq.responseJSON.data_errors['product_sub_type'] );
	}
	submit_button_processing_off ( 'add_model_submit_button', 'Add' );
}  // end function add_product_to_catalog_callback.





// *********************************************************************************
//								REMOVE MODEL
// *********************************************************************************

function remove_model ( arg_model_id )
{
	if (confirm("Are you sure you want to remove that model from the catalog?")) 
	{
		callback_hide_general_errors('model_' + arg_model_id + '_error_general');
		
		var param_hash = new Hash();
		param_hash.set('method', 'remove_model_from_catalog');
		param_hash.set('model_id', arg_model_id);
		
		new Ajax.Request(absolute_link_path + 'ajax.php', {
			method: "post",
			parameters: $H(param_hash),
			onSuccess: remove_model_callback,
			onFailure: errback_global
		}); // end Ajax.Request.
	}  // endif confirm.
}  // end function remove_product.


function remove_model_callback ( oReq, json )
{
	ajax_require_logged_in ( oReq.responseJSON.status );
	if ( oReq.responseJSON.status == 'success')
	{
		init_catalog ();
	}
	else
	{
		callback_show_general_errors ( 'model_' + oReq.responseJSON.data['model_id'] + '_error_general' );
	}
}  // end function remove_product_callback.







function toggle_fup_sections ()
{
	// If the user has selected apparel, show the div_apparel div.
	if ( $('category').value == 1 )
	{
		$('div_apparel').style.display = 'block';
	}
	else
	{
		$('div_apparel').style.display = 'none';
	}
}



function load_product_sub_type ()
{
	$('frag_sub_type').innerHTML = $('sub_type_loading_indicator').innerHTML;
	
	var product_type_id = $('product_type').value;

	response = new Ajax.Updater('frag_sub_type', '/load.php', 
						{ evalJSON: true, sanitizeJSON: true,
						  parameters: 	{
						  					method: 'load_product_sub_type',
											product_type_id: product_type_id
										} 
						});
}  // end function load_product_sub_type.

















