var order_method_value = "";

$(document).ready( function()
{
	/** 
	 * Keičiant prekės kiekio laukelį (name = "amountInCart") - keičiamas prisijungusio
	 * vartotojo krepšelis serveryje.
	 */
	$('input[name="amountInCart"]').change( function() 
	{
		ref = this;

		// Išgaunam ajax URL ir produkto PID
		url 	  = $('#set_amount_url').val();
		productId = $('#' + this.id + "_pid").val();
		
		// Ajax funkcija ir lauko pakeitimas. Paskui atnaujinam sumas.
		$.ajax({
		  url:      url,
		  data:     {amount: this.value,
		  		     pid:    productId},
		  dataType: 'json',
		  success:  function(responce) {ref.value = responce.amount; 
		  								update_sums();
										update_sums_header();}
		});
	});
	
	/** 
	 * Papsuadus "Pridėti į krepšelį" (id = "add_to_cart"), pridedama viena prekė į krepšelį
	 */
	$('#add_to_cart').click( function() 
	{
		update_status(CartStatus.ADDING);
		
		// Išgaunam ajax URL ir produkto PID
		url 	  = $('#increase_amount_url').val();
		productId = $('#amount_pid').val(); 
		
		// Ajax funkcija ir lauko pakeitimas
		$.ajax({
		  url:      url,
		  data:     {pid: productId},
		  dataType: 'json',
		  success:  function(responce) {update_status(responce.changed == 1 ? 
		  											  CartStatus.ADDED : 
													  CartStatus.NOT_ENOUGH);
										update_sums_header();}
		});
		
		// Grąžinam false, kad nereaguotų į paspaustą nuorodą
		return false;
	});
	
	/** 
	 * Pasirinkus tam tikrą užsakymo radiobutton, parodoma atitinkama forma
	 */
	$('input[name="order_method"]').click( function() 
	{
		// Jei pasirinkom tą patį - nieko nedarom
		if (this.value == order_method_value)
			return;
		else
			order_method_value = this.value;
			
		switch (order_method_value)
		{
			case "register" :
				$('#form_order_guest').hide();
				$('#form_order_register').show();
				break;
				
			case "guest" :
				$('#form_order_register').hide();
				$('#form_order_guest').show();				
				break;
		}
	});
	
	// Išjungiam nepasirinktą užsakymo formą
	order_method_value = $('input[name="order_method"]:checked').val();
	switch (order_method_value)
	{
		case "register" :
			$('#form_order_guest').hide();
			break;
			
		case "guest" :
			$('#form_order_register').hide();		
			break;
	}
	
	// Atnaujinam sumas
	update_sums();
	update_sums_header();
})

/*************************************************************************************************/

/**
 * Suapvalina skaičių su kiekiu po kablelio
 *
 * @param num - apvalinamas skaičius
 * @param dec - kiek sk. po kablelio suapvalinti
 */
function round_number(num, dec) 
{
	var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
	return result;
}

/*************************************************************************************************/

/**
 * Atnaujina krepšelio sumas headeryje. AJAX
 */
function update_sums_header()
{		
	// URL
	url = $("#get_cart_sums_url").val();
	
	// Ajax funkcija ir laukų pakeitimas
	$.ajax({
	  url:      url,
	  dataType: 'json',
	  success:  function(responce) 
	  			{
					$("#header_cart_count").text(responce.count);
					$("#header_cart_sum").text(responce.sum);
				},
	  error:	function()
	  			{
					$("#header_cart_count").text(0);
					$("#header_cart_sum").text(0);
				}
	});
}
 
/*************************************************************************************************/

/**
 * Atnaujina sumas krepšelio prekių lentelėje.
 */
function update_sums()
{
	rows  		 = $('tr[name=item_row]');
	count 	     = rows.length;
	total_price  = 0;
	total_amount = 0;	
	
	for (i = 0; i < count; i++)
	{
		id     = rows[i].id;
		amount = parseInt($("#amount"+id).val());
		price  = parseFloat($("#price_"+id).text());
		
		item_price   = amount * price;
		total_price	 += item_price;
		total_amount += amount;
		
		$("#price_"+id+"_sum").text(item_price.toFixed(2));	
	}
	
	total_price = round_number(total_price, 2);
	$("#price_total_sum").text(total_price.toFixed(2));
	$("#amount_total_sum").text(total_amount);
}

/*************************************************************************************************/

CartStatus = {
	EMPTY 	   : -1,
    NOT_ENOUGH : 0,
    ADDED 	   : 1,
    ADDING 	   : 2
}

/**
 * Atnaujina užrašėlį (id = cart_status) nuo paduotos būsenos
 *
 * @param status - krepšelio būsena
 */
function update_status(status)
{
	switch (status)
	{
		case CartStatus.EMPTY :
			$('#cart_status').html("");
		break;
		
		case CartStatus.NOT_ENOUGH :
			$('#cart_status').html("<span class='cart_status_failed'>Tokios prekės sandėlyje daugiau nebėra</span>");
		break;
		
		case CartStatus.ADDED :
			$('#cart_status').html("<span class='cart_status_success'>Prekė pridėta</span>");
		break;
		
		case CartStatus.ADDING :
			$('#cart_status').html("<span class='cart_status_loading'>Pridedama...</span>");
		break;		
	}
}

/*************************************************************************************************/
