$.ajaxSetup({cache: true});
$.getScript('/scripts/jquery.timers.1.1.2.js',function(){$(initCart);});


function initCart() {
    var cart = new Cart();
    cart.create();
}

function Cart()
{
    var that= this;
    this.create = function (data)
        {
            var cartHTML = '<div id="cartWrap"><div id="cartContainer"><div id="cartBox"><div id="cartData"><div class="clearfix" id="cartS"></div></div></div></div></div>';
            var x = document.getElementById('cartContainer');
            if(x) {
                $(x).replaceWith(cartHTML);
            } else {
				$('.shopWrap').append(cartHTML);
				$('#cartContainer').css('top',-15000);
            }
            $('#littleCart').mouseenter(this.show);
            $('#littleCart').mouseleave(function(){that.hide()});
            $('#cartBox').mouseenter(this.show);
            $('#cartBox').mouseleave(function(){that.hide()});
            if(document.getElementById('cartSubmit')) {
                $($('#cartSubmit')[0].form).submit(function() {
                                    return that.post($(this).serialize(), function(x){
that.change(x);
 that.show(); 
that.hide(3000);});
                                }
                            );
            }            
            this.get({},function(data) {that.change(data); that.hide(0,true);});
        }
    this.get = function(data,fn)
        {
            $.ajax (
                {
                'type': "GET",
                'url': g_cartSummaryUrl,
                'data': data,
                'cache': false,
                'success': fn,
                'dataType': "json",
                'error': function(x) {
                        //alert(x);
                    }
                }
            );
            return false;
        }
        
    this.post = function(data,fn)
    {
        $.ajax (
                {
                'type': "POST",
                'url': g_cartSummaryUrl,
                'data': data,
                'cache': false,
                'success': fn,
                'dataType': "json",
                'error': function(x) {
                    }
                }
            );
        return false;
    }
        
    var createItem = function(item)
    {
        return $('<li><div class="clearfix"><div class="jCartDesc"><h5>'+item.sci_variation_display_name+'</h5><h6>'+item.sci_brand_name+'</h6></div>'+
					'<div class="jCartCost"><h6>x'+item.sci_quantity+'</h6></div></div>'+
					'<div class="jBottom clearfix"><div class="jCartDescSize">'+item.sci_attribute_value_list+'</div><h5>'+(new Number(item.sci_total_sold_price)).toFixed(2)+' zł</h5></div></li>');
    }
    
    var showNotices = function(data) {
        if(!data.error && !data.info && !data.warning) {
            return;
        }
        var errorContainer = $('<div id="cartNotices"></div>');
        $('#cartData').before(errorContainer);
        if(data.info && 0 < data.info.length) {
            var createInfo = function (info) {
                return $('<div class="cartInfo">'+info+'</div>');
            }
            var c = data.info.length;
            for(var i=0; i<c; i++) {
                errorContainer.append(createInfo(data.info[i]));
            }
        }
        if(data.warning && 0 < data.warning.length) {
            var createWarning = function (info) {
                return $('<div class="cartWarning">'+info+'</div>');
            }
            var c = data.warning.length;
            for(var i=0; i<c; i++) {
                errorContainer.append(createWarning(data.warning[i]));
            }
        }
        if(data.error && 0 < data.error.length) {
            var createError = function (info) {
                return $('<div class="cartError">'+info+'</div>');
            }
            var c = data.error.length;
            for(var i=0; i<c; i++) {
                errorContainer.append(createError(data.error[i]));
            }
        }
        return;
    }
        
    this.change = function (data)
        {
            $('#cartCount').empty().append('('+data.items_count+')');
            var value = data.items_value?data.items_value:0;
            $('#cartPrice').empty().append(new Number(value).toFixed(2) + ' zł');
            if(data.items_count == 0) {
                $('#cartData').replaceWith($('<div id="cartData"><div id="emptyBin"><p class="empty">Koszyk jest pusty</p></div></div>'));
            } else {
                var cartHTML = '<div id="cartData"><div id="cartWrapme">';
                var items = '<ul id="ajaxCartItemList">';
                items = items + '</ul>';
                cartHTML = cartHTML + items;
                cartHTML = cartHTML + '</div>';
                cartHTML = cartHTML + '<div class="clearfix" id="cartS"><a href="'+data.cart_link+'">Pokaż koszyk</a><h3>Razem: <span>'+ new Number(data.items_value).toFixed(2)+ ' zł</span></h3></div></div>';
                $('#cartData').replaceWith($(cartHTML));
                var count = data.items.length;
                var ul = $('#ajaxCartItemList');
                for(i=0; i<count; i++) {
                    ul.append(createItem(data.items[i]));
                }
				ul.children('li').removeClass('last');
				ul.children('li:last').addClass('last');
				$('#cartContainer').css('top',-1*$('#cartContainer').outerHeight(true));
				
            }
            showNotices(data);
        }
        
    this.show = function ()
        {
            $('#cartWrap').show(0);
			$('#cartWrap').css('height',$('#cartContainer').outerHeight(true));
			return $('#cartContainer').stopTime("hideCart").stop(true,true).animate({'top':0},300);
			
        }
        
    this.hide = function (timeout)
        {
           if(!timeout){
				timeout = 500;
            }
          $('#cartContainer').oneTime(timeout, "hideCart", function() {
				$(this).animate({'top':-1*$(this).outerHeight(true)},300,function(){
					$('#cartWrap').hide(0);
					$('#cartWrap').css('height',0);
					});
				$('#cartNotices').remove();
          });
        }
}
