if (!funcDefined('showViewedItems')) {
	showViewedItems = function($viewedSlider, cookieItems, config) {
		config = (typeof config === 'object' && config) ? config : {};
		config.SHOW_MEASURE = config.SHOW_MEASURE !== 'N' ? 'Y' : 'N';
		config.SHOW_BONUS = config.SHOW_BONUS !== 'Y' ? 'N' : 'Y';

		if ($viewedSlider.length) {			
			try {
				let storageItems = JViewed.get().getProducts();
				
				// remove some old items
				for (var i in cookieItems) {
					let productId = cookieItems[i].PRODUCT_ID;
					if(
						productId && 
						typeof storageItems[productId] == 'undefined'
					) {
						$viewedSlider.find('.catalog-viewed__item-wrap[data-id=' + productId + ']').closest('.catalog-viewed__item').remove();
					}
				}
				
				for (let productId in storageItems) {
					var $item = $viewedSlider.find('.catalog-viewed__item-wrap[data-id=' + productId + ']');

					if ($item.length) {
						let storageItem = storageItems[productId];

						let picture = {
							ID: false,
							SRC: arAsproOptions.SITE_TEMPLATE_PATH + '/images/svg/noimage_product.svg',
							ALT: storageItem.NAME,
							TITLE: storageItem.NAME,
						};
						if (typeof $item.attr('data-picture') !== 'undefined') {
							picture = JSON.parse($item.attr('data-picture'));
						}

						let bSaleMode = arAsproOptions.MODULES.sale;
						let isOffer = storageItem.IS_OFFER == 'Y';
						let bWithOffers = storageItem.WITH_OFFERS == 'Y';
						let bShowMeasure = config.SHOW_MEASURE == 'Y' && !bWithOffers && storageItem.CATALOG_MEASURE_NAME.length;
						let bHasPrice = typeof storageItem.PRICE === 'object' && storageItem.PRICE && (storageItem.PRICE.PRICE > 0 || (!bSaleMode &&storageItem.PRICE.PRICE.length));
						let bHasEconomy = typeof storageItem.PRICE === 'object' && storageItem.PRICE && (storageItem.PRICE.ECONOMY > 0 || (!bSaleMode &&storageItem.PRICE.ECONOMY.length));

						let priceHtml = '';
						if (bHasPrice) {
							let pricePrint = typeof storageItem.PRICE.PRICE_PRINT !== 'undefined' ? storageItem.PRICE.PRICE_PRINT : storageItem.PRICE.PRICE;
							priceHtml = '<div class="price__new"><span class="price__new-val font_15">' + (bWithOffers && bSaleMode ? BX.message('CATALOG_FROM_VIEWED') + ' ' : '') + pricePrint.replace(BX.message('CATALOG_FROM_VIEWED'), '').trim() + (bShowMeasure ? '/' + storageItem.CATALOG_MEASURE_NAME : '') + '</span></div>';
						}
						priceHtml = '<div class="price color_222">' + priceHtml + '</div>';

						let stickersHtml = '';
						let economyHtml = '';
						if (bHasEconomy) {
							let economyPrint = typeof storageItem.PRICE.ECONOMY_PRINT !== 'undefined' ? storageItem.PRICE.ECONOMY_PRINT : storageItem.PRICE.ECONOMY;
							economyHtml = '<div class="catalog-viewed__item-sticker-value rounded-x sticker__item sticker__item--sale">' + economyPrint + '</div>';
						}

						let bonusHtml = '';
						// if (config.SHOW_BONUS == 'Y') {
						// 	bonusHtml = '<div class="bonus-system-block lb_bonus lb_bonus_viewed lb_ajax_' + storageItem.productId + '" data-item="' + storageItem.productId + '"></div>';
						// }

						if (economyHtml || bonusHtml) {
							stickersHtml = '<div class="catalog-viewed__item-sticker">' + economyHtml + bonusHtml + '</div>';
						}

						$item.html(
							'<div class="catalog-viewed__item__inner flexbox flexbox--column">' +
								'<div class="catalog-viewed__item__image__wrap">' +
									'<div class="catalog-viewed__item__image">' +
										'<a href="' + storageItem.DETAIL_PAGE_URL + '" class="thumb">' +
											'<img border="0" src="' + picture.SRC + '" alt="' + (picture.ALT.length ? picture.ALT : storageItem.NAME) + '" title="' + (picture.TITLE.length ? picture.TITLE : storageItem.NAME) + '" />' +
										'</a>' +
									'</div>' +
									stickersHtml +
								'</div>' +
								'<div class="catalog-viewed__item__info item_info">' +
									priceHtml +
									'<div class="catalog-viewed__item__title font_14 linecamp-2">' +
										'<a class="dark_link switcher-title color-theme-target" href="' + storageItem.DETAIL_PAGE_URL + '"><span>' + storageItem.NAME + '</span></a>' +
									'</div>' +
								'</div>' +
							'</div>'
						);
					}
					else {
						// item not finded
						// may be if it`s new item (it`s detail page now)
						// or quantity limit
					}
				}
	
				// if no items than remove block
				if (!$viewedSlider.find('.catalog-viewed__item').length) {
					$viewedSlider.closest('.catalog-viewed-list').remove();
				}
			}
			catch (e) {
				console.error(e);
			}
		}
	}
}
