/**
 * Ajax Queue Plugin
 */
(function($) {
    var ajax = $.ajax;
    var pendingRequests = {};

    $.ajax = function(settings) {
        settings = jQuery.extend(
            settings,
            jQuery.extend(
                {},
                jQuery.ajaxSettings,
                settings
            )
        );
        var port = settings.port;

        switch(settings.mode) {
            case "abort":
                if ( pendingRequests[port] ) {
                    pendingRequests[port].abort();
                }
                return pendingRequests[port] = ajax.apply(this, arguments);

            case "queue":
                var _old = settings.complete;
                settings.complete = function(){
                    if ( _old )
                        _old.apply( this, arguments );
                    jQuery([ajax]).dequeue("ajax" + port );
                };

                jQuery([ ajax ]).queue("ajax" + port, function(){
                    ajax( settings );
                });
                return;

            case "dequeue":
                jQuery([ajax]).dequeue("ajax" + port );

                if(jQuery.isFunction(settings.complete))
                    settings.complete(settings);

                return;
        }

        return ajax.apply(this, arguments);
    };
})(jQuery);
/**
 * Update WishList Cart by adding, deleting, updating objects
 *
 * @return void
 */
function WishlistCart(id, action, id_product, id_product_attribute,id_wishlist, quantity)
{
	$.ajax({
		type: 'GET',
		url:	baseDir + 'modules/blockwishlist/cart.php',
		mode: 'abort',
	    port: 'WishlistCart'+id,
	    async: true,
	    cache: false,
		data: 'action=' + action + '&id_product=' + id_product + '&quantity=' + quantity + '&token=' + static_token + '&id_product_attribute=' + id_product_attribute+'&id_wishlist='+id_wishlist,
		success: function(data)
		{
			if(typeof(modalAjaxCart) != 'undefined') {
				modalAjaxCart.showModalWishList(id_product, id_product_attribute,id_wishlist);
			}
			if($('#' + id).length != 0)
			{
				$('#' + id).slideUp('normal');
				document.getElementById(id).innerHTML = data;
				$('#' + id).slideDown('normal');
			}
		}
	});
}
function WishlistCartWithoutResponse(action, id_product, id_product_attribute,id_wishlist, quantity)
{
	$.ajax({
		type: 'GET',
		mode: 'abort',
	    port: 'WishlistCartWithoutResponse'+id_product,
	    async: true,
	    cache: false,
		url:	baseDir + 'modules/blockwishlist/cart.php',
		data: 'action=' + action + '&id_product=' + id_product + '&quantity=' + quantity + '&token=' + static_token + '&id_product_attribute=' + id_product_attribute+'&id_wishlist='+id_wishlist,
		success: function(data)
		{
			return;
		}
	});
}

/**
 * Change customer default wishlist
 *
 * @return void
 */
function WishlistChangeDefault(id, id_wishlist)
{
	$.ajax({
		type: 'GET',
		url:	baseDir + 'modules/blockwishlist/cart.php',
		mode: 'abort',
	    port: 'WishlistChangeDefault'+id_wishlist,
	    async: true,
	    cache: false,
		data: 'id_wishlist=' + id_wishlist + '&token=' + static_token,
		success: function(data)
		{
			$('#' + id).slideUp('normal');
			document.getElementById(id).innerHTML = data;
			$('#' + id).slideDown('normal');
		}
	});
}

/**
 * Buy Product
 *
 * @return void
 */
function WishlistBuyProduct(token, id_product, id_product_attribute, id_quantity, button, ajax)
{
	if(ajax)
		ajaxCart.add(id_product, id_product_attribute, false, button, 1, [token, id_quantity]);
	else if(typeof(modalAjaxCart) != 'undefined') {
		WishlistAddProductCart(token, id_product, id_product_attribute, id_quantity)

		modalAjaxCart.add(id_product, id_product_attribute, false, button,$('#' + id_quantity).val());
	}
	else
	{

		WishlistAddProductCart(token, id_product, id_product_attribute, id_quantity)
		document.forms['addtocart' + '_' + id_product  + '_' + id_product_attribute].method='POST';
		document.forms['addtocart' + '_' + id_product  + '_' + id_product_attribute].action=baseDir + 'cart.php';
		document.forms['addtocart' + '_' + id_product  + '_' + id_product_attribute].elements['token'].value = static_token;
		document.forms['addtocart' + '_' + id_product  + '_' + id_product_attribute].submit();
	}
	return (true);
}

function WishlistAddProductCart(token, id_product, id_product_attribute, id_quantity)
{
	if ($('#' + id_quantity).val() <= 0)
		return (false);
	var quantity = $('#' + id_quantity).val();
	var quantity_wanted = parseInt($('#quantity_wanted_' + id_quantity).html());
	var quantity_remaind = ((quantity_wanted - quantity) == 0)?'0':quantity_wanted - quantity;
	$.ajax({
		type: 'GET',
		url: baseDir + 'modules/blockwishlist/buywishlistproduct.php',
		data: 'token=' + token + '&static_token=' + static_token + '&id_product=' + id_product  + '&quantity='+quantity +'&id_product_attribute=' + id_product_attribute,
		mode: 'abort',
	    port: 'WishlistAddProductCart'+id_product,
	    async: true,
	    cache: false,
		success: function(data)
		{
			if (data)
				alert(data);
			else
			{
				$('#' + id_quantity).val(quantity_wanted - quantity);
				$('#quantity_wanted_' + id_quantity).html(quantity_remaind);

			}
		}
	});
	return (true);
}

/**
 * Show wishlist managment page
 *
 * @return void
 */
function WishlistManage(id, id_wishlist)
{
	$.ajax({
		type: 'GET',
		url: baseDir + 'modules/blockwishlist/managewishlist.php',
		data: 'id_wishlist=' + id_wishlist + '&refresh=' + false,
		mode: 'abort',
	    port: 'WishlistManage'+id_wishlist,
	    async: true,
	    cache: false,
		success: function(data)
		{
			$('#' + id).hide();
			document.getElementById(id).innerHTML = data;
			$('#block-history').hide();
			$('#' + id).fadeIn('slow',function() {initWishPriority();});
		}
	});
}

/**
 * Show wishlist product managment page
 *
 * @return void
 */
function WishlistProductManage(id, action, id_wishlist, id_product, id_product_attribute, quantity, priority)
{
	$.ajax({
		type: 'GET',
		mode: 'abort',
	    port: 'WishlistProductManage'+id_wishlist,
	    async: true,
	    cache: false,
		url: baseDir + 'modules/blockwishlist/managewishlist.php',
		data: 'action=' + action + '&id_wishlist=' + id_wishlist + '&id_product=' + id_product + '&id_product_attribute=' + id_product_attribute + '&quantity=' + quantity + '&priority=' + priority + '&refresh=' + true,
		success: function(data)
		{
			if (action == 'delete')
				$('#wlp_' + id_product + '_' + id_product_attribute).fadeOut('fast');
			else if (action == 'update')
			{
				$('#wlp_' + id_product + '_' + id_product_attribute).fadeOut('fast');
				$('#wlp_' + id_product + '_' + id_product_attribute).fadeIn('fast');
			}
		}
	});
}

/**
 * Delete wishlist
 *
 * @return boolean succeed
 */
function WishlistDelete(id, id_wishlist, msg)
{
	var res = confirm(msg);
	if (res == false)
		return (false);
	$.ajax({
		type: 'GET',
		url: baseDir + 'modules/blockwishlist/mywishlist.php',
		mode: 'abort',
	    port: 'WishlistDelete'+id_wishlist,
	    async: true,
	    cache: false,
		data: 'deleted&id_wishlist=' + id_wishlist,
		success: function(data)
		{
			$('#' + id).fadeOut('slow');
		}
	});
}

/**
 * Hide/Show bought product
 *
 * @return void
 */
function WishlistVisibility(bought_class, id_button)
{
	if ($('#hide' + id_button).css('display') == 'none')
	{
		$('.' + bought_class).slideDown('fast');
		$('#show' + id_button).hide();
		$('#hide' + id_button).fadeIn('fast');
	}
	else
	{
		$('.' + bought_class).slideUp('fast');
		$('#hide' + id_button).hide();
		$('#show' + id_button).fadeIn('fast');
	}
}

/**
 * Send wishlist by email
 *
 * @return void
 */
function WishlistSend(id, id_wishlist, id_email)
{
	$.post(baseDir + 'modules/blockwishlist/sendwishlist.php',
	{ token: static_token,
	  id_wishlist: id_wishlist,
	  email1: $('#' + id_email + '1').val(),
	  email2: $('#' + id_email + '2').val(),
	  email3: $('#' + id_email + '3').val(),
	  email4: $('#' + id_email + '4').val(),
	  email5: $('#' + id_email + '5').val(),
	  email6: $('#' + id_email + '6').val(),
	  email7: $('#' + id_email + '7').val(),
	  email8: $('#' + id_email + '8').val(),
	  email9: $('#' + id_email + '9').val(),
	  email10: $('#' + id_email + '10').val() },
	function(data)
	{
		if (data)
			alert(data);
		else {
			$('#confirm_sendFriendForm').slideDown('normal');
			setTimeout(function() {
				$('#confirm_sendFriendForm').slideUp('normal');
			},3000);
			WishlistBackDetail();
		}
	});
}

/**
 * Back to wishlist
 *
 * @return void
 */
function WishlistBack()
{
	$('#block-order-detail').hide();
	$('#block-order-detail').html('');
	$('#block-history').fadeIn('normal');
}
function WishlistBackDetail()
{
	$('.wl_send').hide();
	if($('#block-order-detail').html() !='')
		$('#block-order-detail').fadeIn('normal');
	else
		$('#block-history').fadeIn('normal');
}
var currentIdWishlist = false;
function sendFriendForm(id_wishlist)
{
	currentIdWishlist = id_wishlist;
	$('#block-history').hide();
	$('#block-order-detail').hide();
	$('.wl_send').fadeIn('normal');
}


function initWishPriority()
{
	$('.wish_priority').each(function() {
		$(this).click(function() {
			$(this).parent('.wish_priority_box').children('.wish_priority_value').val($(this).attr('title'));
		});
		$(this).hover(function() {
			$(this).prevAll('.wish_priority').addClass('wish_priority_selected');
			$(this).nextAll('.wish_priority').removeClass('wish_priority_selected');
		},function() {
			var curPriority = $(this).parent('.wish_priority_box').children('.wish_priority_value').val();
			$(this).parent('.wish_priority_box').children('.wish_priority').removeClass('wish_priority_selected');
			if(curPriority == 0) {
				$(this).parent('.wish_priority_box').children('.wish_priority').addClass('wish_priority_selected');
			}
			else if(curPriority == 1) {
				$(this).parent('.wish_priority_box').children('.wish_priority:nth-child(1), .wish_priority:nth-child(2)').addClass('wish_priority_selected');
			}
			else if(curPriority == 2) {
				$(this).parent('.wish_priority_box').children('.wish_priority:nth-child(1)').addClass('wish_priority_selected');
			}
		})
	})
};

function addAllToCart(e,onlySelection)
{
	if(typeof(modalAjaxCart) != 'undefined') {
		var id_products = new Array();
		var id_products_attributes = new Array();
	}
	if(typeof(onlySelection) != 'undefined' && $('.wishlist_product_select').children('input:checked').length == 0) alert(selectionEmpty);
	else {
		$('.ajax_block_product').each(function() {
			var curParent = $(this).children('li').children('.wishlist_product_detail').children('.addtocart_form');
			var id_product = $(curParent).children('input[name=id_product]').val();
			var id_product_attribute = $(curParent).children('input[name=id_product_attribute]').val();
			var token = $(curParent).children('input[name=token]').val();
			var isSelected = true;
			if(typeof(onlySelection) != 'undefined') {
				var isSelected = $(this).children('li').children('.wishlist_product_select').children('input:checked').length;
			}
			if(id_product!='undefined' && id_product && id_product_attribute != 'undefined' && token != 'undefined' && token && isSelected) {
				var key = id_product+'_'+id_product_attribute;
				var quantity = $('#' + key).val();

				if(quantity!=0) {
					if(typeof(modalAjaxCart) == 'undefined')
						WishlistBuyProduct(token, id_product, id_product_attribute, key, e, true);
					else {
						id_products.push(id_product);
						id_products_attributes.push(id_product_attribute);

						//send the ajax request to the server
						$.ajax({
							type: 'GET',
							url: baseDir + 'cart.php',
							mode: 'abort',
						    port: 'WishlistDelete'+key,
						    async: true,
						    cache: false,
							dataType : "json",
							data: 'add&ajax=true&id_product=' + id_product + '&qty='+quantity+'&token=' + token + ( (parseInt(id_product_attribute) && id_product_attribute != null) ? '&ipa=' + parseInt(id_product_attribute): ''),
							success: function(jsonData)
							{
								modalAjaxCart.updateCart(jsonData);
								WishlistAddProductCart(token, id_product, id_product_attribute, key);
							},
							error: function(XMLHttpRequest, textStatus, errorThrown) {
								alert("TECHNICAL ERROR: unable to add the product.\n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
							}
						});

					}
				}
				//alert(key);
			}
			//WishlistBuyProduct('{$token|escape:'htmlall':'UTF-8'}', '{$product.id_product}', '{$product.id_product_attribute}', '{$product.id_product}_{$product.id_product_attribute}', this, {$ajax});
		});
		if(typeof(modalAjaxCart) != 'undefined') {
			if(id_products_attributes.length)
				modalAjaxCart.showModalCustomProducts(id_products,id_products_attributes);
			else alert(productsEmpty);
		}
	}
}
function initMenuWishlistsProduct(e,onlySelection)
{
$('#wishlist_product').hover(function() {
	$(this).children('#menuWishlistsProduct').fadeIn('fast');
},function() {
	$(this).children('#menuWishlistsProduct').fadeOut('fast');
});
}
function showWishlistsProductCreateForm(e) {
	$(e).next('#menuWishlistsProductCreateForm').fadeIn('fast');
}
function addWish(id_product) {
	var wishName = $('#wishname').val();
	$.ajax({
	   type: "POST",
	   mode: 'abort',
	    port: 'WishlistDelete'+id_product,
	    async: true,
	    cache: false,
	   url: baseDir+"modules/blockwishlist/mywishlist.php",
	   data: "submitWishlistAjax=1&name="+wishName,
	   success: function(data){
	     $('#menuWishlistsProductWishLists').html(data);
	     $('#wishname').val('');
	     $('#menuWishlistsProductCreateForm').fadeOut('fast');
	   }
	 });
}
function changeWishname(name) {
	$('.wishname').html(name);
}

