
// WHEN THE DOCUMENT IS READY
$(function(){

	// CHECK IF THERE ARE ANY ITEMS IN THE cart
	var cartHasItems = $('span.jcart2-item-qty').html();
	if(cartHasItems === null)
		{
		// DISABLE THE PAYPAL CHECKOUT BUTTON
		$('#jcart2-paypal-checkout').attr('disabled', 'disabled');
		}

	// HIDE THE UPDATE AND EMPTY BUTTONS SINCE THESE ARE ONLY USED WHEN JAVASCRIPT IS DISABLED
	$('.jcart2-hide').remove();

	// DETERMINE IF THIS IS THE CHECKOUT PAGE BY CHECKING FOR HIDDEN INPUT VALUE
	// SENT VIA AJAX REQUEST TO jcart2.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 jcart2-relay.php
	var isCheckout = $('#jcart2-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.jcart2').submit(function(){
    
        
		// GET INPUT VALUES FOR USE IN AJAX POST
		var itemId = $(this).find('input[name=my-item-id]').val();
		var itemPrice = $(this).find('input[name=my-item-price]').val();
		var itemName = $(this).find('input[name=my-item-name]').val();
		var itemImg = $(this).find('input[name=my-item-img]').val();
		var itemSku = $(this).find('input[name=my-item-sku]').val();
		var itemQty = $(this).find('input[name=my-item-qty]').val();
		var itemAdd = $(this).find('input[name=my-add-button_x]').val();

		// SEND ITEM INFO VIA POST TO INTERMEDIATE SCRIPT WHICH CALLS jcart2.php AND RETURNS UPDATED cart HTML
        
        $.post('/jcart2/jcart2-relay.php', { "show_cart_count2": "show_cart_count2" }, function(data) { $('#cart-count2').html(data);}); 
        
		$.post('/jcart2/jcart2-relay.php', { "my-item-id": itemId, "my-item-price": itemPrice, "my-item-name": itemName, "my-item-img": itemImg, "my-item-sku": itemSku, "my-item-qty": itemQty, "my-add-button_x" : itemAdd }, function(data) {

			// REPLACE EXISTING cart HTML WITH UPDATED cart HTML
			$('#jcart2').html(data);
			$('.jcart2-hide').remove();
			
			});
            
        $.post('/jcart2/jcart2-relay.php', { "show_cart_count2": "show_cart_count2" }, function(data) { $('#cart-count2').html(data);});     
            
    	//Get the window height and width
		var winH = $(window).height();
		var winW = $(window).width();
        var scrollY = $(window).scrollTop();
        var scrollX = $(window).scrollLeft();
        var aniY = 100;
              
		//Set the popup window to center
		$('#itemAdded2').show();   
		$('#itemAdded2').css('top', scrollY+winH/2-$('#itemAdded2').height());
		$('#itemAdded2').css('left', scrollX+winW/2-$('#itemAdded2').width()/2);     
		$('#itemAdded2').animate({ top: winH/2+scrollY-aniY+"px"}, 'slow').delay(3000).fadeOut('slow');

		// 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
	$('#jcart2').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
	$('#jcart2 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 jcart2.php AND RETURNS UPDATED cart HTML
		$.get('/jcart2/jcart2-relay.php', { "jcart2_remove": removeId, "jcart2_is_checkout":  isCheckout },
			function(data) {

			// REPLACE EXISTING cart HTML WITH UPDATED cart HTML
			$('#jcart2').html(data);
			$('.jcart2-hide').remove();
			});
		
        $.post('/jcart2/jcart2-relay.php', { "show_cart_count2": "show_cart_count2" }, function(data) { $('#cart-count2').html(data);});
		// 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
	$('#jcart2 input[class="jcart2_qty"]').live('keyup', function(){

		// GET ITEM ID FROM THE ITEM QTY INPUT ID VALUE, FORMATTED AS jcart2-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 jcart2.php AND RETURNS UPDATED cart HTML
				$.post('/jcart2/jcart2-relay.php', { "item_id": updateId, "item_qty": updateQty, "jcart2_update_item": 'update', "jcart2_is_checkout": isCheckout }, function(data) {

					// REPLACE EXISTING cart HTML WITH UPDATED cart HTML
					$('#jcart2').html(data);
					$('.jcart2-hide').remove();
					});
                $.post('/jcart2/jcart2-relay.php', { "show_cart_count2": "show_cart_count2" }, function(data) { $('#cart-count2').html(data);});
				}, 1);
			}

		// 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
	});
