
$(function(){
	
    	
	



	// CHECK IF THERE ARE ANY ITEMS IN THE CART
	var cartHasItems = $('td.jcart-item-qty').html();
	if(cartHasItems === null)
    {
		// DISABLE THE PAYPAL CHECKOUT BUTTON
		$('#jcart-paypal-checkout').attr('disabled', 'disabled');
    }

	// HIDE THE UPDATE AND EMPTY BUTTONS SINCE THESE ARE ONLY USED WHEN JAVASCRIPT IS DISABLED
	$('.jcart-hide').remove();

	// DETERMINE IF THIS IS THE CHECKOUT PAGE BY CHECKING FOR HIDDEN INPUT VALUE
	// SENT VIA AJAX REQUEST TO jcart.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 jcart-relay.php
	var isCheckout = $('#jcart-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.jcart').submit(function(){
        // EX JCART
		// GET INPUT VALUES FOR USE IN AJAX POST
		var itemId = $(this).find('input[name=field_id]').val();
		var itemPrice = $(this).find('input[name=field_price]').val();
		var itemName = $(this).find('input[name=field_name]').val();
		var itemQty = $(this).find('input[name=field_qty]').val();
		var itemAdd = $(this).find('input[name=field_add_button]').val();

		// SEND ITEM INFO VIA POST TO INTERMEDIATE SCRIPT WHICH CALLS jcart.php AND RETURNS UPDATED CART HTML
		$.post('http://granule/dossiers/moishes/jcart/jcart-relay.php', { "field_id": itemId, "field_price": itemPrice, "field_name": itemName, "field_qty": itemQty, "field_add_button" : itemAdd }, function(data) {

			// REPLACE EXISTING CART HTML WITH UPDATED CART HTML
			$('#jcart').html(data);
			$('.jcart-hide').remove();

			});

		// PREVENT DEFAULT FORM ACTION
		return false;

    });

    
    
    //
    // MOISHES
    // MOISHES
    //
	$("form a.add_cart").click(function(){
	    add_cart();
	});
	
	
	
	
	
	// 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
	$('#jcart').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
	$('#jcart a').live('click', function(){

		// GET THE QUERY STRING OF THE LINK THAT WAS CLICKED
		var queryString = $(this).attr('href');
		queryString = queryString.split('=');

		// THE ID OF THE ITEM TO REMOVE
		var removeId = queryString[1];

		// SEND ITEM ID VIA GET TO INTERMEDIATE SCRIPT WHICH CALLS jcart.php AND RETURNS UPDATED CART HTML
		$.get(
		    'http://granule/dossiers/moishes/jcart/jcart-relay.php', 
		    { "jcart_remove": removeId, "jcart_is_checkout":  isCheckout },
			function(data) {

                // REPLACE EXISTING CART HTML WITH UPDATED CART HTML
                $('#jcart').html(data);
                $('.jcart-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
	$('#jcart input[type="text"]').live('keyup', function(){

		// GET ITEM ID FROM THE ITEM QTY INPUT ID VALUE, FORMATTED AS jcart-item-id-n
		var updateId = $(this).attr('id');
		updateId = updateId.split('-');

		// THE ID OF THE ITEM TO UPDATE
		updateId = updateId[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 jcart.php AND RETURNS UPDATED CART HTML
                    $.post('http://granule/dossiers/moishes/jcart/jcart-relay.php', { "item_id": updateId, "item_qty": updateQty, "jcart_update_item": 'update', "jcart_is_checkout": isCheckout }, function(data) {
    
                        // REPLACE EXISTING CART HTML WITH UPDATED CART HTML
                        $('#jcart').html(data);
                        $('.jcart-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);
			});
		});
});



//
// MOISHES
// MOISHES
//
function add_cart(){
    // GET INPUT VALUES FOR USE IN AJAX POST
    var itemId = $("form input[name='field_id']").val();
    var itemPrice = $("form input[name='field_price']").val(); 
    var itemName = $("form input[name='field_name']").val(); 
    var itemQty = $("form input[name='field_qty']").val(); 

    // SEND ITEM INFO VIA POST TO INTERMEDIATE SCRIPT WHICH CALLS jcart.php AND RETURNS UPDATED CART HTML
    $.post(
        'http://granule/dossiers/moishes/jcart/jcart-relay.php', 
        { 
            "field_id": itemId, 
            "field_price": itemPrice, 
            "field_name": itemName, 
            "field_qty": itemQty,
            "field_add_button" : 1           // agie comme un boolean pr indiquer que l'on ajoute 
        }, 
        function(data) 
        {

            // REPLACE EXISTING CART HTML WITH UPDATED CART HTML
            $('#jcart').html(data);
            $('.jcart-hide').remove();

        }
    );

    // PREVENT DEFAULT FORM ACTION
    return false;
}

