
// WHEN THE DOCUMENT IS READY
$(function(){

	
	 $("#error").dialog({
		  autoOpen:false, 
		  modal:true,
		  width:450,
		  height:100,
		  title:'ATTENZIONE',
		  buttons: 
			{  
				"Ok": function()
				{  
					$(this).dialog("close");  
				}  

			}
	 });
	
	// CHECK IF THERE ARE ANY ITEMS IN THE CART
	var cartHasItems = $('td.jliste-item-qty').html();
	if(cartHasItems === null)
		{
		// DISABLE THE PAYPAL CHECKOUT BUTTON
		$('#jliste-paypal-checkout').attr('disabled', 'disabled');
		}

	// HIDE THE UPDATE AND EMPTY BUTTONS SINCE THESE ARE ONLY USED WHEN JAVASCRIPT IS DISABLED
	$('.jliste-hide').remove();

	// DETERMINE IF THIS IS THE CHECKOUT PAGE BY CHECKING FOR HIDDEN INPUT VALUE
	// SENT VIA AJAX REQUEST TO jliste.php WHICH DECIDES WHETHER TO DISPLAY THE CART CHECKOUT BUTTON OR THE PAYPAL CHECKOUT BUTTON BASED ON ITS VALUE
	// WE NORMALLY CHECK AGAINST REQUEST URI BUT AJAX UPDATE SETS VALUE TO jliste-relay.php
	var isCheckout = $('#jliste-is-checkout').val();

	// IF THIS IS NOT THE CHECKOUT THE HIDDEN INPUT DOESN'T EXIST AND NO VALUE IS SET
	if (isCheckout !== 'true') { isCheckout = 'false'; }


	// WHEN AN ADD-TO-CART FORM IS SUBMITTED
	$('form.jliste').submit(function(){

		// GET INPUT VALUES FOR USE IN AJAX POST
		var itemId = $(this).find('input[name=id_negozi_prodotti]').val();
		var itemPrice = $(this).find('input[name=prezzo_prodotto]').val();
		var itemName = $(this).find('input[name=nome_prodotto]').val();
		var itemQty = $(this).find('input[name=qta]').val();
		var itemAdd = $(this).find('input[name=bottone_acquista]').val();
		var itemType = $(this).find('input[name=tipo_prodotto]').val();
		var n_box = $(this).find('input[name=n_box]').val();
		//var lingua = $(this).find('input[name=]').val();
		lingua = $('#lingua').val();

		// SEND ITEM INFO VIA POST TO INTERMEDIATE SCRIPT WHICH CALLS jliste.php AND RETURNS UPDATED CART HTML
		$.post('liste/jliste-relay.php', { "id_negozi_prodotti": itemId, "prezzo_prodotto": itemPrice, "nome_prodotto": itemName, "qta": itemQty, "bottone_acquista" : itemAdd, "tipo_prodotto" : itemType ,"n_box" : n_box ,lingua : lingua }, function(data) {

			//splitto la risposta
			data = data.split('@||@');

			// REPLACE EXISTING CART HTML WITH UPDATED CART HTML
			$('#liste_contenitore').html(data[0]);

			//se ci sono errori li visualizzo
			if(typeof(data[1]) == 'string')
			{
				//$('#error').html(data[1]);
				//$('#error').show();

				$("#error").html(data[1]);
				$("#error").dialog('open');  
				return false;

			}
			else
			{
				//$('#error').hide();
			}
			
			$('.jliste-hide').remove();

			});

		// PREVENT DEFAULT FORM ACTION
		return false;

		});
		




	// WHEN THE VISITOR HITS THEIR ENTER KEY
	// THE UPDATE AND EMPTY BUTTONS ARE ALREADY HIDDEN
	// BUT THE VISITOR MAY UPDATE AN ITEM QTY, THEN HIT THEIR ENTER KEY BEFORE FOCUSING ON ANOTHER ELEMENT
	// THIS MEANS WE'D HAVE TO UPDATE THE ENTIRE CART RATHER THAN JUST THE ITEM WHOSE QTY HAS CHANGED
	// PREVENT ENTER KEY FROM SUBMITTING FORM SO USER MUST CLICK CHECKOUT OR FOCUS ON ANOTHER ELEMENT WHICH TRIGGERS CHANGE FUNCTION BELOW
	$('#jliste').keydown(function(e) {

		// IF ENTER KEY
		if(e.which == 13) {

		// PREVENT DEFAULT ACTION
		return false;
		}
	});


	// JQUERY live METHOD MAKES FUNCTIONS BELOW AVAILABLE TO ELEMENTS ADDED DYNAMICALLY VIA AJAX

	// WHEN A REMOVE LINK IS CLICKED
	$('#jliste a').live('click', function(){

		//se il link non è quello di visualizzazione dell'elenco
		if( ($(this).attr('href') != "liste_modifica.php") && ($(this).attr('href') != "liste_prodotti.php") && ($(this).attr('href') != "liste_dati_registrazione.php") && ($(this).attr('href') != "liste.php") )
		{
			// GET THE QUERY STRING OF THE LINK THAT WAS CLICKED
		/*	
			var queryString = $(this).attr('href');
			queryString = queryString.split('=');
		*/
			
			var queryString = $(this).attr('href');
			queryString = queryString.split('&');
			
			query_id = queryString[0].split('=');
			query_lingua = queryString[1].split('=');


			// THE ID OF THE ITEM TO REMOVE
			var removeId = parseInt(query_id[1]);

			//LINGUA
			var lingua = query_lingua[1];

			// SEND ITEM ID VIA GET TO INTERMEDIATE SCRIPT WHICH CALLS jliste.php AND RETURNS UPDATED CART HTML
			$.get('liste/jliste-relay.php', { "jcart_remove": removeId, "jcart_is_checkout":  isCheckout, "lingua": lingua },
				function(data) {

				// REPLACE EXISTING CART HTML WITH UPDATED CART HTML
				$('#jliste').html(data);
				$('.jliste-hide').remove();
				});

			// PREVENT DEFAULT LINK ACTION
			return false;
		}
	});


	// WHEN AN ITEM QTY CHANGES
	// CHANGE EVENT IS NOT CURRENTLY SUPPORTED BY LIVE METHOD
	// STILL WORKS IN MOST BROWSERS, BUT NOT INTERNET EXPLORER
	// INSTEAD WE SIMULATE THE CHANGE EVENT USING KEYUP AND SET A DELAY BEFORE UPDATING THE CART
	$('#jliste input[type="text"]').live('keyup', function(){

		// GET ITEM ID FROM THE ITEM QTY INPUT ID VALUE, FORMATTED AS jliste-item-id-n
		var updateId = $(this).attr('id');
		updateId = updateId.split('-');

		// THE ID OF THE ITEM TO UPDATE
		updateId = updateId[3];

		// type jliste-item-type-n
		var updateType = $(this).attr('type');
		updateType = updateType.split('-');

		// THE ID OF THE ITEM TO UPDATE
		updateType = updateType[3];

		// GET THE NEW QTY
		var updateQty = $(this).val();

		// AS LONG AS THE VISITOR HAS ENTERED A QTY
		if (updateQty !== '')
			{
			// UPDATE THE CART ONE SECOND AFTER KEYUP
			var updateDelay = setTimeout(function(){

				// SEND ITEM INFO VIA POST TO INTERMEDIATE SCRIPT WHICH CALLS jliste.php AND RETURNS UPDATED CART HTML
				$.post('liste/jliste-relay.php', { "item_id": updateId, "item_qty": updateQty, "item_type": updateType, "jcart_update_item": 'update', "jcart_is_checkout": isCheckout }, function(data) {

					// REPLACE EXISTING CART HTML WITH UPDATED CART HTML
					$('#jliste').html(data);
					$('.jliste-hide').remove();
					});

				}, 1000);
			}

		// IF THE VISITOR PRESSES ANOTHER KEY BEFORE THE TIMER HAS EXPIRED, CLEAR THE TIMER
		// THE NEW KEYDOWN RESULTS IN A NEW KEYUP, TRIGGERING THE KEYUP FUNCTION AGAIN AND RESETTING THE TIMER
		// REPEATS UNTIL THE USER DOES NOT PRESS A KEY BEFORE THE TIMER EXPIRES IN WHICH CASE THE AJAX POST IS EXECUTED
		// THIS PREVENTS THE CART FROM BEING UPDATED ON EVERY KEYSTROKE
		$(this).keydown(function(){
			window.clearTimeout(updateDelay);
			});
		});


	// END THE DOCUMENT READY FUNCTION
	});

