	/**
	 * 
	 * Javascript Basket class
	 * 
	 * @name Module_Basket
	 * @author Vincent Cantin Bellemre
	 * @since 2008-01-11
	 * @version 1.0.0
	 * @package reptileframework
	 * 
	 */
	
	var Basket = {};
	
	Basket.dynamic_class = 'dynamic_promotion_code';
	
	Basket.confirm_cancel_shop = function(confirmed)
	{
		if(confirmed == null)
		{
			Interface.confirm_pop(PHPVars.get('confirm_cancel'),'Basket.confirm_cancel_shop(true)','');
		}
		else
		{
			location.href = $('confirm_cancel_link').href;
		}
	};
	
	Basket.test_promotion_code = function()
	{
		var req = new AJAX.Request
		(
			Request.get('basepath') + CURRENT_LANG + '/basket/api_test_promotion_code/', 
			{
				method : 'POST',
				json : true,
				parameters: 
				[

				],
				onComplete : function(response)
				{
					Basket.responseJSON = response.responseJSON;
					
					if(Basket.responseJSON.show_confirm == 1)
					{
						Interface.alert_pop(Basket.responseJSON.show_confirm_message);					
						$('link_alert_close').style.display 	= 'none';
						$('div_popup_text').style.margin 		= '50px 0 0 15px';
					}	
					else
					{
						document.form_step_2.submit();						
					}	
				}
			}
		);				
	};
		
	Basket.submit_step_2 = function()
	{
		if(document.form_step_2.policy.checked)
		{
			Basket.test_promotion_code();
		}
		else
		{
			Interface.alert_pop(PHPVars.get('error_validation_step_2'));	
		}
	};
	
	Basket.min_message_error = function(show_div,message,message_type)
	{
		if(message_type == null)
		{
			message_type = 'order';
		}
		
		if(typeof(show_div) == 'string')
		{
			show_div = (show_div == 'true');
		}
		
		try
		{
			/*
				Message error
			*/
			if(show_div)
			{
				var show_div_display_error	= 'block';
				var input_show_value = 0;
			}
			else
			{
				var show_div_display_error	= 'none';
				var input_show_value = 1;
			}
			
			if(message_type == 'order')
			{
				if (document.getElementById('input_amount_min_allowed')) 
				{
					$('input_amount_min_allowed').value = input_show_value;
				}
			}
			
			$('basket_bottom_link_error_' + message_type).style.display = show_div_display_error;
			$('basket_bottom_link_error_' + message_type).innerHTML = message;			
		}
		catch(e)
		{
			log(e);
			// Empty cart			
		}		
	};
	
	Basket.submit_step_1 = function()
	{
		var current_form = document.basket;
		
		if(typeof(Basket.loading_page) != 'undefined' && Basket.loading_page == true)
		{					
			if(current_form.amount_min_allowed.value == 1)
			{
				current_form.submit();
			}
			else
			{
				Interface.alert_pop($('basket_bottom_link_error_order').innerHTML);
			}
		}
		else
		{
			log('loading page... please wait.');	
		}
	};
	
	Basket.alert_min_order = function()
	{
		Interface.alert_pop($('basket_bottom_link_error').innerHTML);	
	};	
	
	Basket._call_remove_promotion_code = function()
	{
		var req = new AJAX.Request
		(
			Request.get('basepath') + 'basket/api_remove_promotion_code/', 
			{
				method : 'POST',
				json : true,
				parameters: 
				[
					'promotion_code_id=' + escape(Basket.promotion_code_id)
				],
				onComplete : function(response)
				{
					Basket.responseJSON = response.responseJSON;
					Basket._remove_promotion_code();
					Basket._refresh_total(true);
				}
			}
		);											
	};
	
	Basket.remove_promotion_code = function(current_link)
	{
		var confirmed 				= PHPVars.get('confirm_remove_promotion_code');
		var input_collection 		= current_link.parentNode.parentNode.getElementsByTagName('input');
		
		if (typeof(input_collection[0]) != 'undefined') 
		{
			Basket.promotion_code_id = input_collection[0].value;
		}
		
		Interface.confirm_pop(confirmed,'Basket._call_remove_promotion_code();');
	};
	
	Basket._remove_promotion_code = function()
	{
		Basket._rebuild_promotions_codes();			
	};

	Basket.add_promotion_code = function()
	{		
		if(Basket.promotion_code_input.value == "")
		{
			return false;
		}
		
		var req = new AJAX.Request
		(
			Request.get('basepath') + 'basket/api_add_promotion_code/', 
			{
				method : 'POST',
				json : true,
				parameters: 
				[
					'promotion_code=' + escape(Basket.promotion_code_input.value)
				],
				onComplete : function(response)
				{
					Basket.promotion_code_input.value = '';
					Basket.responseJSON = response.responseJSON;
					
					if(Basket.responseJSON.is_locked == 1)
					{
						Interface.alert_pop(PHPVars.get('locker_promotion'));
					}
					else
					{
						Basket._add_promotion_code();
						Basket._refresh_total(false);																	
					}
				}
			}
		);						
	};
	
	Basket.adjust_cart = function(response)
	{
		if(response != null)
		{
			Basket.responseJSON	= response;
		}
		
		if(Basket.responseJSON.nb_items == 0)
		{
			location.reload();	
		}
		
		Basket.row = 'div_product_' + Basket.responseJSON.general_product_id;
		
		/* 
			Removing product if quantity
		*/
		if(Basket.responseJSON.item_quantity == 0)
		{
			$(Basket.row).parentNode.removeChild($(Basket.row));
		}
		
		try
		{
			/* 
				Affecting values
			*/
			Quick_Cart.input_in_process.value = Basket.responseJSON.item_quantity;
		
			$('total_without_taxes_formatted_' + Basket.responseJSON.general_product_id).innerHTML = Basket.responseJSON.item_total_without_taxes_formatted; 
		}
		catch(e)
		{
			//Only for step 1	
		}		

		Basket.min_message_error(Basket.responseJSON.min_order_error,Basket.responseJSON.min_order_error_difference,'order');
		Basket.min_message_error(Basket.responseJSON.min_free_shipping_error,Basket.responseJSON.min_free_shipping_error_difference,'free_shipping');
		
		for(var i in Basket.responseJSON)
		{
			if(document.getElementById(i) != null)
			{
				$(i).innerHTML = Basket.responseJSON[i];
			}
		}		
	};
	
	Basket._refresh_total = function(refresh_page)
	{
		Quick_Cart.responseJSON = Basket.responseJSON;
		Basket.adjust_cart();
		
		if(Quick_Cart.responseJSON.promotions_codes.length == 0 && refresh_page)
		{
			var display_promotion_code = false;	
			location.reload();
		}
		else
		{
			var display_promotion_code = (Quick_Cart.responseJSON.has_promotion == 'true');
		}
		
		Basket.display_promotion(display_promotion_code);
	};
	
	Basket._remove_promotions_codes = function()
	{
		var tr_collection = Basket.promotion_code_table.getElementsByTagName('tr');
		var tr_length = tr_collection.length;
		
		for(var i = tr_length; i > 0; i--)
		{
			if(typeof(tr_collection[i]) != 'undefined')
			{
				if(tr_collection[i].className == Basket.dynamic_class)
				{				
					tr_collection[i].parentNode.removeChild(tr_collection[i]);
				}
			}
		}			
	};

	Basket._rebuild_promotions_codes = function(promotions_codes)
	{
		if(promotions_codes != null)
		{
			Basket.responseJSON  = {};
			Basket.responseJSON.promotions_codes = promotions_codes;
		}

		Basket._remove_promotions_codes();	

		if(Basket.responseJSON.promotions_codes.length > 0)
		{ 
			for(var i = 0; i < Basket.responseJSON.promotions_codes.length; i++)
			{				
				var new_tr 				= Basket.promotion_code_tr_clone.cloneNode(true);
				new_tr.style.display 	= (Browser.isIE()) ? 'block' : 'table-row';
				new_tr.className 		= Basket.dynamic_class;
			
				new_tr.id				= Math.random(0,400); 								
				var input_collection 	= new_tr.getElementsByTagName('input');
				
				
				if (typeof(input_collection[0]) != 'undefined') 
				{
					input_collection[0].value = Basket.responseJSON.promotions_codes[i].promotion_code_id;
				}
				
				var td_collection = new_tr.getElementsByTagName('td');								
				td_collection[0].innerHTML = Basket.responseJSON.promotions_codes[i].promotion_code;
				td_collection[1].innerHTML = Basket.responseJSON.promotions_codes[i].description_automatic;

				Basket.promotion_code_tr_add.parentNode.insertBefore(new_tr,Basket.promotion_code_tr_add);					
			}
		}
		
		Basket.display_add_tr((Basket.responseJSON.promotions_codes.length > 0));
	};
	
	Basket.display_add_tr = function(has_promotion)
	{
		var display_explorer = (Browser.isIE()) ? 'block' : 'table-row';
		
		try
		{
			Basket.promotion_code_tr_add.style.display = (has_promotion == true) ? 'none' : display_explorer;				
		}
		catch(e){}
	};
	
	Basket.display_promotion = function(display_promotion)
	{
		var tr_key = 'tr_promotions_codes';
		
		if(display_promotion)
		{
			var display_tr = (Browser.isIE()) ? 'block' : 'table-row';	
		}
		else
		{
			var display_tr = 'none';
		}

		if(document.getElementById(tr_key))
		{
			document.getElementById(tr_key).style.display = display_tr;	
		}
	};
	
	Basket.reset_promotion_code = function()
	{	
		try
		{
			Basket.promotion_code_input.value 	= '';
			Basket.promotion_code_input.focus();	
		}
		catch(e){}
	};
	
	Basket._add_promotion_code = function()
	{		
		if(Basket.responseJSON.validation_error == 1)
		{
			Basket._rebuild_promotions_codes();
		}
		else
		{
			var msg = PHPVars.get('promotion_code_error_' + Basket.responseJSON.validation_error);
		}
		
		Basket.reset_promotion_code();
		
		if(typeof(msg) != 'undefined')
		{
			Interface.alert_pop(msg);
		}				
	};
	
	Basket.conditions_popup = function()
	{
		if ($('conditions_popup').style.display == "none")
		{
			$('title_small').style.display = "none";
			$('clearsite').style.display = "block";
			$('clearsite').style.width = document.documentElement.scrollWidth + "px";
			if (document.documentElement.scrollHeight < document.documentElement.clientHeight)
			{
				$('clearsite').style.height = document.documentElement.clientHeight + "px";
			}
			else
			{
				$('clearsite').style.height = document.documentElement.scrollHeight + "px";
			}
			$('conditions_popup').style.top = Browser.posTop() + ((Browser.pageHeight() - 360) / 2) + "px";
			$('conditions_popup').style.left = ((Browser.pageWidth() - 600) / 2) + "px";
			$('conditions_popup').style.display = "block";
		}
		else
		{
			$('clearsite').style.display = "none";
			$('conditions_popup').style.display = "none";
			$('title_small').style.display = "block";
			$('clearsite').style.width = "0px";
			$('clearsite').style.height = "0px";
		}				
	};
