YAHOO.namespace('istore.app');

YAHOO.istore.app.CartCarousel = function(id, config) {
	YAHOO.istore.app.CartCarousel.superclass.constructor.call(this, id, config);
}

YAHOO.lang.extend(YAHOO.istore.app.CartCarousel, YAHOO.extension.Carousel, {
	
	getItemQty: function(id) {
		var qtyChanger = YAHOO.istore.utils.Cache.get('cart-item-qty-' + id);
		if (qtyChanger) {
			return qtyChanger.cfg.getProperty('qty');
		}
		
		return false;
	},
	
	getItemIdx: function (id) {
		
		// li element
		var el = YAHOO.util.Dom.get('cartitems-item-container-' + id).parentNode; 
		
		// idx of li element
		var idx = el.id.substr(el.id.lastIndexOf('-') + 1) - 0;
		
		return (idx > 0) ? idx : false;
	},
	
	getItemIdxByProductId: function (vendor, prodId, options) {
		var id = this.getItemIdByProductId(vendor, prodId, options);
		
		return this.getItemIdx(id);
	},
	
	getItemQtyByProductId: function (vendor, prodId, options) {
		var id = this.getItemIdByProductId(vendor, prodId, options)
		
		return this.getItemQty(id);
	},
	
	getItemIdByProductId : function (vendor, prodId, options) {
		
		var size = this.cfg.getProperty('size');
		
		if (size > 0) {
			
			var i = 1;
			var optionsStr = '';
			for (key in options) {
				optionsStr += i + ':' + options[key] + ';';
				i++;
			}
			
			for (var i = 1; i <= size; i++) {
				var item = this.getItem(i);
				var itemVendor = '' + YAHOO.util.Dom.getElementsByClassName('param-vendor', 'input', item)[0].value;
				var itemProdId = YAHOO.util.Dom.getElementsByClassName('param-prod_id', 'input', item)[0].value - 0;
				var itemOptions = '' + YAHOO.util.Dom.getElementsByClassName('param-option_values', 'input', item)[0].value;
				if (itemVendor == vendor && itemProdId == prodId && optionsStr == itemOptions) {
					var id = YAHOO.util.Dom.getElementsByClassName('param-id', 'input', item)[0].value - 0
					return id;
				}
			}
		}
		
		return false;
	},
	
	removeItem : function (refIdx) {
		
		var refItem = this.getItem(refIdx);
		var size = this.cfg.getProperty("size");
		
		
		if (refIdx > this.cfg.getProperty("size")) {
			return null;
		}
		
		if (!this._isValidObj(refItem)) {
			return null;
		}
		
		
		if (size != this.UNBOUNDED_SIZE) {
			this.cfg.setProperty("size", size - 1, true);
		}
		
		this.carouselList.removeChild(refItem);
		
		for (var i = refIdx; i <= size; i++) {
			
			var anItem = this.getItem(i);
			if (this._isValidObj(anItem)) {
				anItem.id = this._carouselElemID + '-item-' + (i-1);
			}
			
		}
		
		this._enableDisableControls();
		this._arrangeCarousel();
		
	},
	
	insertBefore : function (refIdx, innerHTML) {
		
		var numVisible = this.cfg.getProperty('numVisible');
		var size = this.cfg.getProperty('size');
		
		if (size != 0) {
			var liElem = YAHOO.istore.app.CartCarousel.superclass.insertBefore.call(this, refIdx, innerHTML);
			/*
			if (this.isCartCarouselClosed()) {
				this.openCartCarousel();
			}
			*/
			if (this.cfg.getProperty('size') > numVisible) {
				this.scrollTo(refIdx);
			}
		} else {
			var size = this.cfg.getProperty('size');
			this.cfg.setProperty("size", size + 1, true);
			var liElem = this.addItem(1, innerHTML);
		}
		
		return liElem;
	},
	
	insertAfter : function (refIdx, innerHTML) {
		
		var numVisible = this.cfg.getProperty('numVisible');
		var size = this.cfg.getProperty('size');
		
		if (size != 0) {
			var liElem = YAHOO.istore.app.CartCarousel.superclass.insertAfter.call(this, refIdx, innerHTML);
			/*
			if (this.isCartCarouselClosed()) {
				this.openCartCarousel();
			}
			*/
			if (this.cfg.getProperty('size') > numVisible) {
				this.scrollTo(refIdx + 1);
			}
		} else {
			var size = this.cfg.getProperty('size');
			this.cfg.setProperty("size", size + 1, true);
			var liElem = this.addItem(1, innerHTML);
		}
		
		return liElem;
	},
	
	
	_arrangeCarousel : function () {
		
		var size = this.cfg.getProperty("size");
		var lastVisible = this.getLastVisible();
		var numVisible = this.cfg.getProperty("numVisible");
		
		if (lastVisible > size && size >= numVisible) {
			_tmp = this.cfg.getProperty('animationSpeed');
			this.scrollTo(size - numVisible + 1);
		}
		
	},
	
	
	/*
	incItemQuantity : function(e, args) {
		this.updateItemQuantity(args[0], 1);
	},
	
	
	decItemQuantity : function(e, args) {
		this.updateItemQuantity(args[0], -1);
	},
	
	
	updateItemQuantity : function(id, num) {
		
		var oThis = this;
		var item = 'cartitems-item-body-' + id;
		var qtyCont = 'cartitems-qty-' + id;
		var btnInc = 'cartitems-btn-inc-' + id;
		var btnDec = 'cartitems-btn-dec-' + id;
		var ico = 'cartitems-qty-ico-ajax-' + id;
		var vendor = '' + YAHOO.util.Dom.getElementsByClassName('param-vendor', 'input', item)[0].value;
		var prodId = YAHOO.util.Dom.getElementsByClassName('param-prod_id', 'input', item)[0].value - 0;
		var optionValues = '' + YAHOO.util.Dom.getElementsByClassName('param-option_values', 'input', item)[0].value;
		
		YAHOO.util.Dom.setStyle(ico, 'opacity', 0);
		YAHOO.util.Dom.setStyle(ico, 'display', 'block');
		
		new YAHOO.util.Anim(btnInc, {opacity: {to: 0}}, 0.4).animate();
		new YAHOO.util.Anim(btnDec, {opacity: {to: 0}}, 0.4).animate();
		var anim = new YAHOO.util.Anim(ico, {opacity: {to: 1}}, 0.4);
		
		anim.onComplete.subscribe(
			function () {
				
				var newQty = parseInt(YAHOO.util.Dom.get(qtyCont).innerHTML) + num;
				
				var hideAnim = function () {
					
					new YAHOO.util.Anim(btnInc, {opacity: {to: 1}}, 0.4).animate();
					new YAHOO.util.Anim(btnDec, {opacity: {to: 1}}, 0.4).animate();
					anim = new YAHOO.util.Anim(ico, {opacity: {to: 0}}, 0.4);
					anim.onComplete.subscribe(
						function () {
							YAHOO.util.Dom.setStyle(ico, 'display', 'none');
						}
					);
					anim.animate();
					
				}
				
				// ajax callback handlers
				var callback = {
					scope: oThis,
					success: function(o) {
						
						var root = o.responseXML.documentElement;
						var status = root.getElementsByTagName('status')[0].firstChild ? root.getElementsByTagName('status')[0].firstChild.nodeValue : '';
						var opCode = root.getElementsByTagName('opcode')[0].firstChild ? root.getElementsByTagName('opcode')[0].firstChild.nodeValue : '';
						var opText = root.getElementsByTagName('optext')[0].firstChild ? root.getElementsByTagName('optext')[0].firstChild.nodeValue : '';
						
						if (status == 'ok') {
							
							YAHOO.util.Dom.get(qtyCont).innerHTML = newQty;
							
							this.updateInfoBlock();
							this.onQtyChangeEvt.fire(vendor, prodId, optionValues, newQty);
							console.log(vendor, prodId, optionValues, newQty);
							
						}
						
						hideAnim();
						
					},
					failure: function(o) {
						hideAnim();
					}
				}
				
				var connObj = YAHOO.util.Connect.asyncRequest('GET', '/ajax/cart/update/' + id + '?qty=' + newQty, callback);
				
			}
		);
		
		anim.animate();
	},
	*/
	
	updateInfoBlock : function(callback) {
		
		// ajax callback handlers
		var ajaxCallback = {
			success: function(o) {
				
				var root = o.responseXML.documentElement;
				var status = root.getElementsByTagName('status')[0].firstChild ? root.getElementsByTagName('status')[0].firstChild.nodeValue : '';
				var opCode = root.getElementsByTagName('opcode')[0].firstChild ? root.getElementsByTagName('opcode')[0].firstChild.nodeValue : '';
				var opText = root.getElementsByTagName('optext')[0].firstChild ? root.getElementsByTagName('optext')[0].firstChild.nodeValue : '';
				var price = root.getElementsByTagName('price')[0].firstChild ? root.getElementsByTagName('price')[0].firstChild.nodeValue : '';
				var qty = root.getElementsByTagName('qty')[0].firstChild ? root.getElementsByTagName('qty')[0].firstChild.nodeValue : '';
				
				if (status == 'ok') {
					
					YAHOO.util.Dom.get('carousel-item').innerHTML = qty;
					YAHOO.util.Dom.get('carousel-price').innerHTML = YAHOO.extension.funclib.formatCurrency(price);
					
					if (callback) {
						callback();
					}
					
				}
				
			},
			failure: function(o) {
			}
		}
		
		var connObj = YAHOO.util.Connect.asyncRequest('POST', '/ajax/cart/info', ajaxCallback, 'cart_info_mode=0');
		
	},
	
	
	removeCarouselItem : function(e, args) {
		
		var id = args[0];
		var vendor = args[1];
		var prodId = args[2];
		var optionValues = args[3];
		
		// ajax callback handlers
		var callback = {
			scope: this,
			success: function(o) {
				
				var oThis = this;
				var root = o.responseXML.documentElement;
				var status = root.getElementsByTagName('status')[0].firstChild ? root.getElementsByTagName('status')[0].firstChild.nodeValue : '';
				var opCode = root.getElementsByTagName('opcode')[0].firstChild ? root.getElementsByTagName('opcode')[0].firstChild.nodeValue : '';
				var opText = root.getElementsByTagName('optext')[0].firstChild ? root.getElementsByTagName('optext')[0].firstChild.nodeValue : '';
				
				// li element
				var el = YAHOO.util.Dom.get('cartitems-item-container-' + id).parentNode; 
				
				// idx of li element
				var idx = el.id.substr(el.id.lastIndexOf('-') + 1) - 0;
				if (status == 'ok') {
					
					this.updateInfoBlock();
					
					if (this.cfg.getProperty('size') - 1 <= 4) {
						this.cfg.setProperty('numVisible', this.cfg.getProperty('size') - 1, true);
						this.resizeCarouselItemsAnimated();
					}
					
					var anim = new YAHOO.util.Anim(el, {opacity: {to: 0}, width: {to: 0}}, 0.5);
					anim.onComplete.subscribe(
						function () {
							oThis.removeItem(idx);
							oThis.updatePaging();
							
							if (oThis.cfg.getProperty('size') == 0) {
								oThis.closeCartCarousel();
							}
						}
					);
					anim.animate();
					
					// track event in google analytics
					// pageTracker._trackPageview('/event/cart/remove/' + vendor + '/' + prodId);
					
					this.onQtyChangeEvt.fire(vendor, prodId, optionValues, 0);
				}
				
			},
			failure: function(o) {
			}
		}
		
		var connObj = YAHOO.util.Connect.asyncRequest('GET', '/ajax/cart/remove/' + id, callback);
	},
	
	
	addItemToCarousel : function (id, data) {
		
		var oThis = this;
		
		// if item already exists in cart do not add 'em
		if (YAHOO.util.Dom.getElementsBy(function(el) {return (el.name == 'id' && el.value == id)}, 'input', 'cartitems').length > 0) {
			return false;
		}
		
		if (this.cfg.getProperty('size') < 4) {
			this.cfg.setProperty('numVisible', this.cfg.getProperty('size') + 1, true);
			this.resizeCarouselItemsAnimated();
		}
		
		// add item into carousel cart
		// return added li element
		var li = this.insertBefore(1, data);
		
		// update paging properties
		this.updatePaging();
		
		// open shopping cart if it was closed
		if (this.isCartCarouselClosed()) {
			this.openCartCarousel();
		}
		
		// idx of li element
		var idx = li.id.substr(li.id.lastIndexOf('-') + 1);
		
		// width of item in cart
		var width = Math.round(this.carouselElem.offsetWidth / this.cfg.getProperty('numVisible'));
		
		// animation
		var anim = new YAHOO.util.Anim(li, {opacity: {from: 0, to: 1}, width: {to: width}}, 0.5);
		var animIEFix = new YAHOO.util.Anim(li.getElementsByTagName('div')[0], {width: {to: width}}, 0.5); // IE compatibility
		
		anim.onComplete.subscribe(
			function() {
				oThis.calculateSize();
			}
		);
		
		anim.animate()
		animIEFix.animate()
		
		this.initItem(id);
		
	},
	
	initItem : function (id) {
		
		var oThis = this;
		
		var element = YAHOO.util.Dom.get('cartitems-item-container-' + id);
		
		var vendor = '' + YAHOO.util.Dom.getElementsByClassName('param-vendor', 'input', element)[0].value;
		var prodId = YAHOO.util.Dom.getElementsByClassName('param-prod_id', 'input', element)[0].value - 0;
		var optionValues = '' + YAHOO.util.Dom.getElementsByClassName('param-option_values', 'input', element)[0].value;
		
		var qtyLimit = parseInt(YAHOO.util.Dom.get('cart-item-qty-limit-' + id).value);
		
		var handleCarouselItemQtyChange = function () {
			
			var me = this;
			var id = this.id.substr(this.id.lastIndexOf('-') + 1);
			var qty = this.cfg.getProperty('qty');
			
			// disable qty changer element
			this.disable();
			
			// ajax callback handlers
			var callback = {
				scope: oThis,
				success: function(o) {
					
					var root = o.responseXML.documentElement;
					var status = root.getElementsByTagName('status')[0].firstChild ? root.getElementsByTagName('status')[0].firstChild.nodeValue : '';
					var opCode = root.getElementsByTagName('opcode')[0].firstChild ? root.getElementsByTagName('opcode')[0].firstChild.nodeValue : '';
					var opText = root.getElementsByTagName('optext')[0].firstChild ? root.getElementsByTagName('optext')[0].firstChild.nodeValue : '';
					
					me.enable();
					
					if (status == 'ok') {
						this.updateInfoBlock();
						this.onQtyChangeEvt.fire(vendor, prodId, optionValues, qty);
					}
					
				},
				failure: function(o) {
					this.enable();
				}
			}
			
			var connObj = YAHOO.util.Connect.asyncRequest('GET', '/ajax/cart/update/' + id + '?qty=' + qty, callback);
			
		}
		
		// create quantity changer instance
		var qtyChanger = new YAHOO.istore.app.qtyChanger('cart-item-qty-' + id,
			{
				onChangeHandler:	handleCarouselItemQtyChange,
				limit:				qtyLimit
			}
		);
		
		// register quantity changer in the cache
		YAHOO.istore.utils.Cache.register('cart-item-qty-' + id, qtyChanger);
		YAHOO.util.Event.addListener('cartitems-btn-remove-' + id, 'click', this.removeCarouselItem, [id, vendor, prodId, optionValues], this);
	},
	
	
	resizeCarouselItems : function() {
		
		var items = this.carouselList.getElementsByTagName('li');
		
		if (items.length > 0) {
			
			var numVisible = this.cfg.getProperty('numVisible');
			var newWidth = Math.floor(this.carouselElem.offsetWidth / numVisible);
			
			for (var i = 0; i < items.length; i++) {
				YAHOO.util.Dom.setStyle(items[i], 'width', newWidth + 'px');
				YAHOO.util.Dom.setStyle(items[i].getElementsByTagName('div')[0], 'width', newWidth + 'px'); // IE compatibility
			}
			
			this.calculateSize();
			
		}
		
	},
	
	resizeCarouselItemsAnimated : function() {
		
		var items = this.carouselList.getElementsByTagName('li');
		
		if (items && items.length) {
			
			var numVisible = this.cfg.getProperty('numVisible');
			var newWidth = (numVisible == 0) ? 0 : Math.floor(this.carouselElem.offsetWidth / numVisible);
			
			for (var i = 0; i < items.length; i++) {
				new YAHOO.util.Anim(items[i], {width: {to: newWidth}}, 0.58).animate();
				new YAHOO.util.Anim(items[i].getElementsByTagName('div')[0], {width: {to: newWidth}}, 0.58).animate();
			}
			
			this.calculateSize();
			
		}
		
	},
	
	changePage : function(e, args) {
		
		var itemNum = args[0];
		var size = this.cfg.getProperty('size');
		var numVisible = this.cfg.getProperty('numVisible');
		
		if (!this._scrollPrevAnim.isAnimated() && !this._scrollNextAnim.isAnimated()) {
			if (size > numVisible) {
				this.scrollTo(itemNum);
			}
		}

	},
	
	updatePaging : function() {
		
		var size = this.cfg.getProperty('size');
		var numVisible = this.cfg.getProperty('numVisible');
		var firstVisible = this.cfg.getProperty('firstVisible');
		
		// num pages
		var numPages = Math.ceil(size / numVisible);
		
		if (numPages > 1) {
			this.openNavBlock();
		} else {
			this.closeNavBlock();
		}
		
		if (size == this.UNBOUNDED_SIZE) return;
		
		// paging container
		if (!(cont = YAHOO.util.Dom.get('carousel-paging').getElementsByTagName('table')[0].getElementsByTagName('tr')[0])) return false;
		
		var links = cont.getElementsByTagName('a'); 
		
		for (var i = 0; i < numPages; i++) {
			
			if (!links[i]) {
				
				var li = document.createElement('td');
				var a = document.createElement('a');
				a.innerHTML = '' + (i + 1);
				a.href = 'javascript:void(0)';
				a.id = this._carouselElemID + '-tab-' + (i + 1);
				li.appendChild(a);
				cont.appendChild(li);
				
				YAHOO.util.Event.addListener(this._carouselElemID + '-tab-' + (i + 1), "click", this.changePage, [(i * numVisible + 1)], this);
				
			}
			
		}
		
		// remove odd pages
		if (links.length > numPages) {
			for (var i = numPages; i < links.length; i++) {
				cont.removeChild(links[i].parentNode);
			}
		}
		
		this.updateCurrPage();
		
	},
	
	updateCurrPage : function() {
		
		var currPage = this.cfg.getProperty('currPage');
		
		// paging container
		if (!(cont = YAHOO.util.Dom.get('carousel-paging').getElementsByTagName('table')[0].getElementsByTagName('tr')[0])) {
			return false;
		}
		
		var links = cont.getElementsByTagName('a'); 
		
		// set active page
		for (var i = 0; i < links.length; i++) {
			(i + 1 == currPage) ? YAHOO.util.Dom.addClass(links[i], 'active') : YAHOO.util.Dom.removeClass(links[i], 'active');
		}
		
	},
	
	
	toggleInfoBlock : function () {
		
		if (parseInt(YAHOO.util.Dom.getStyle('cart-carousel-info-block', 'marginTop')) == 0) {
			this.closeInfoBlock();
		} else {
			this.openInfoBlock();
		}
		
	},
	
	
	openInfoBlock : function () {
		
		new YAHOO.util.Anim(YAHOO.util.Dom.get('cart-carousel-info-block'), {marginTop: {to: 0}}, 0.5, YAHOO.util.Easing.easeOut).animate();
		
	},
	
	
	closeInfoBlock : function () {
		
		new YAHOO.util.Anim(YAHOO.util.Dom.get('cart-carousel-info-block'), {marginTop: {to: parseInt(YAHOO.util.Dom.get('cart-carousel-info-block').offsetHeight)}}, 0.5, YAHOO.util.Easing.easeIn).animate();
		
	},
	
	
	toggleNavBlock : function () {
		
		if (parseInt(YAHOO.util.Dom.getStyle('cart-carousel-nav-block', 'marginTop')) == 0) {
			this.closeNavBlock();
		} else {
			this.openNavBlock();
		}
		
	},
	
	openNavBlock : function () {
		
		new YAHOO.util.Anim(YAHOO.util.Dom.get('cart-carousel-nav-block'), {marginTop: {to: 0}}, 0.5, YAHOO.util.Easing.easeOut).animate();
		
	},
	
	
	closeNavBlock : function () {
		
		new YAHOO.util.Anim(YAHOO.util.Dom.get('cart-carousel-nav-block'), {marginTop: {to: -parseInt(YAHOO.util.Dom.get('cart-carousel-nav-block').offsetHeight)}}, 0.5, YAHOO.util.Easing.easeIn).animate();
		
	},
	
	toggleCartCarousel : function (e, args) {
		
		if (this.isCartCarouselClosed()) {
			this.openCartCarousel();
		} else {
			this.closeCartCarousel();
		}
		
	},
	
	isCartCarouselClosed: function () {
		return (parseInt(YAHOO.util.Dom.getStyle('carousel', 'height')) == 0);
	},
	
	openCartCarousel : function() {
		
		if (this.cfg.getProperty('size') != 0) {
			this.openInfoBlock();
			new YAHOO.util.Anim('carousel', {height: {to: YAHOO.util.Dom.get('carousel-cont').offsetHeight}}, 0.4, YAHOO.util.Easing.easeOut).animate();
			YAHOO.util.Dom.get('cart-carousel-toggle-btn').setAttribute('src', 'images/btn-cart-info-up.gif');
		}
		
	},
	
	closeCartCarousel : function() {
		
		if (this.cfg.getProperty('size') == 0) {
			this.closeInfoBlock();
		}
		
		new YAHOO.util.Anim('carousel', {height: {to: 0}}, 0.3, YAHOO.util.Easing.easeIn).animate();
		YAHOO.util.Dom.get('cart-carousel-toggle-btn').setAttribute('src', 'images/btn-cart-info-down.gif');
		
	},
	
	checkoutBtnClickHandler : function(e, args) {
		document.location.href = '/cart';
	},
	
	init : function (id, config) {
		
		// call superclass (YAHOO.istore.app.CartCarousel) constructor 
		YAHOO.istore.app.CartCarousel.superclass.init.call(this, id, config);
		
		// on last item remove change custom event
		this.onQtyChangeEvt = new YAHOO.util.CustomEvent('on quantity change event');
		
		YAHOO.util.Event.addListener('cart-carousel-toggle-btn', 'click', this.toggleCartCarousel, this, true);
		YAHOO.util.Event.addListener('cart-carousel-checkout-btn', 'click', this.checkoutBtnClickHandler, this, true);
		YAHOO.util.Event.addListener(window, 'resize', this.resizeCarouselItems, this, true);
		
	}
	
});


// cartCarousel is global
// todo: make it not global!
var cartCarousel;

YAHOO.util.Event.onContentReady('cartitems',
	function () {
		
		
		var handlePrevButtonState = function(type, args) {
			var enabling = args[0];
			var leftImage = args[1];
			
			if (enabling) {
				leftImage.src = 'images/cart-nav-arr-left-enabled.gif';	
			} else {
				leftImage.src = 'images/cart-nav-arr-left-disabled.gif';	
			}
		};
		
		
		var handleNextButtonState = function(type, args) {
			var enabling = args[0];
			var rightImage = args[1];
			
			if (enabling) {
				rightImage.src = 'images/cart-nav-arr-right-enabled.gif';
			} else {
				rightImage.src = 'images/cart-nav-arr-right-disabled.gif';
			}
		};
		
		
		var loadInitialItems = function(type, args) {
			
			var start = args[0];
			var last = this.cfg.getProperty('size');
			
			for (var i = last; i >= start; i--) {
				var id = YAHOO.util.Dom.getElementsBy(function(el) {return (el.name == 'id')}, 'input', this.getItem(i))[0].value;
				this.initItem(id);
			}
			
		};
		
		
		var scrollPrevPage = function(type, args) {
			this.updateCurrPage();
		}
		
		
		var scrollNextPage = function(type, args) {
			this.updateCurrPage();
		}
		
		var size = YAHOO.util.Dom.getElementsByClassName('carousel-list', 'ul', 'cartitems')[0].getElementsByTagName('li').length;
		var numVisible = (size / 4 < 1) ? size : 4;
		
		cartCarousel = new YAHOO.istore.app.CartCarousel('cartitems', 
			{
				numVisible:			numVisible,
				animationSpeed:		0.5,
				scrollInc:			1,
				navMargin:			0,
				size:				size,
				loadInitHandler:	loadInitialItems,
				prevElement:		"cart-btn-prev",
				nextElement:		"cart-btn-next",
				prevButtonStateHandler:	handlePrevButtonState,
				nextButtonStateHandler:	handleNextButtonState,
				scrollPrevPageHandler:	scrollPrevPage,
				scrollNextPageHandler:	scrollNextPage
			}
		);
		
		cartCarousel.resizeCarouselItems();
		cartCarousel.updatePaging();
		
	}
);


