$(function(){

	var rootPath = window._x_webapp_root ? window._x_webapp_root : '/';
	var staticPath = window._x_webapp_static ? window._x_webapp_static : '/';

	FavoriteScripts = {};

	FavoriteScripts.addItem = function(_self) {

		var cur = $(_self);
		var goodsNo = cur.find("input[name=goodsNo]").val();
		var goodsStkNo = cur.find("input[name=goodsStkNo]").val();
		if (goodsNo == null || goodsNo == "") {
			goodsNo = cur.find("input[name=goods_no]").val();
		}
		var attGrpId = cur.attr("data-original-attr-grp-id");
		var url = rootPath + "favorite/switch-favorite-goods-J/";
		var headers = {};
		if (document.cookie) {
			var cookies = document.cookie.split(";");
			for (var i = 0; i < cookies.length; i++) {
				var str = cookies[i].split("=");
				if (str[0].trim() == window._x_webapp_xsrf_token) {
					headers['X-XSRF-TOKEN'] = unescape(str[1]);
					break;
				}
			}
		}
		$.ajax({
			type : "POST",
			url : url,
			headers : headers,
			data : {
				"goodsNo" : goodsNo
				,"attGrpId" : attGrpId
				,"goodsStkNo" : goodsStkNo
			},
			success : function onSuccess(data) {
				if (data.result === "error") {
					var errmsg = data.message;
					alert(errmsg);

					return;
				}
  				if(data.hasAdded){
  					cur.find("img").attr("src", '/shared/pc_pal/images/item/favorite_on.png');
//  
//  					var favoritemodal = $("#favorite-modal");
//  					var att1Lbl = data.goods.att1DispNm ? (data.goods.att1DispNm + ":" + data.goods.att1DispVal):"";
//  					var att2Lbl = data.goods.att2DispNm ? (data.goods.att2DispNm + ":" + data.goods.att2DispVal):""; 
//  					//favoritemodal.find(".item-detail-modal-table img").attr("src", goodsImgPath + "/" + file);
//  					var tbase = favoritemodal.find(".item-detail-modal-table td:first");
//  					var tcur;
//  					tbase.find(".p_goodsNm").text(data.goods.goodsNm);
//  					tcur = tbase.find(".p_att1");
//  					tcur.text(att1Lbl);
//  					tcur = tbase.find(".p_att2");
//  					tcur.text(att2Lbl);
//  					
//  					favoritemodal.find(".item-detail-modal-table .price").html(data.goods.formattedRealPrice);
//  
//  					favoritemodal.modal("show");
                    cur.find("img").removeClass("imgChange_on");
                    cur.find("img").addClass("imgChange_off");
                    if (cur.parent().parent().parent().find(".imgChange_off").length > 0) {
                        cur.parent().parent().parent().find(".favorite_prom").hide();
                    }
                    var favoriteLogin = cur.parent().parent().find(".favorite_login");
                    if (favoriteLogin.length > 0) {
                        favoriteLogin.show();
                    }
                    var favoriteInfo = cur.parent().parent().find(".favorite_info");
                    if (favoriteInfo.length > 0) {
                        favoriteInfo.show();
                    }
  				}else{
  					cur.find("img").attr("src", '/shared/pc_pal/images/item/favorite_off.png');
                    cur.find("img").removeClass("imgChange_off");
                    cur.find("img").addClass("imgChange_on");
                    if (cur.parent().parent().parent().find(".imgChange_off").length <= 0) {
                        cur.parent().parent().parent().find(".favorite_prom").show();
                    }
                    var favoriteLogin = cur.parent().parent().find(".favorite_login");
                    if (favoriteLogin.length > 0) {
                        favoriteLogin.hide();
                    }
                    var favoriteInfo = cur.parent().parent().find(".favorite_info");
                    if (favoriteInfo.length > 0) {
                        favoriteInfo.hide();
                    }
  				}
  				$(".favorite-count").each(function(i) {
  					$(this)[0].setAttribute("data-fovorite-num",data.goodsFavoriteCount);
  				});
  				
  				FavoriteScripts.countUpFavorite();
  				FavoriteScripts.getKarteFavoriteList(data);
  				
			}
		});

		return false;
	}

	FavoriteScripts.countUpFavorite = function(){
		if ( $(".favorite-count")[0] == null ) {
			return;
		}
		$(".favorite-count").each(function(i) {
			var obj = $(this);
			var start = obj.text();
			var end =obj[0].getAttribute("data-fovorite-num");
			$({cnt:start}).animate({cnt:end},{
				duration: 1000,
				easing: 'swing',
				progress: function() { 
					obj.text(Math.ceil(this.cnt)); 
				}
			});
		});
	}

	$(".delete-fgoods").each(function(i) {
		$(this).on("click", function(event) {
			FavoriteScripts.deleteFavorite($(this));
		});
	});
	$('#favorite-item').on('inview', function() {
		if($("#favorite-item").find(".dummy")[0]){
			FavoriteScripts.getFavoriteList($(this));
		}
	});

	FavoriteScripts.deleteFavorite = function(obj) {
		var goodsNo = $(obj)[0].getAttribute("data-del-goods");
		var attGrpId = $(obj)[0].getAttribute("data-del-attGrpId");
		var rootPath = window._x_webapp_root ? window._x_webapp_root : '/';
		var url = rootPath + "favorite/goods/delete-J/";
		var headers = {};
		if (document.cookie) {
			var cookies = document.cookie.split(";");
			for (var i = 0; i < cookies.length; i++) {
				var str = cookies[i].split("=");
				if (str[0].trim() == window._x_webapp_xsrf_token) {
					headers['X-XSRF-TOKEN'] = unescape(str[1]);
					break;
				}
			}
		}
		$.ajax({
			type : "POST",
			url : url,
			headers : headers,
			data : {
				"goodsNo" : goodsNo
				,"attGrpId" : attGrpId
			},
			success : function onSuccess(data) {
				if (data.result === "error") {
					var errmsg = data.message;
					alert(errmsg);

					return;
				}
				$(".favorite"+goodsNo).fadeOut("slow",function(){$(obj).remove()});
			}
		});
	}
	FavoriteScripts.getFavoriteList = function(obj){
		var rootPath = window._x_webapp_root ? window._x_webapp_root : '/';
		var url = rootPath + "favorite/itemlist-J/";
		var headers = {};
		if (document.cookie) {
			var cookies = document.cookie.split(";");
			for (var i = 0; i < cookies.length; i++) {
				var str = cookies[i].split("=");
				if (str[0].trim() == window._x_webapp_xsrf_token) {
					headers['X-XSRF-TOKEN'] = unescape(str[1]);
					break;
				}
			}
		}
		$.ajax({
			type : "GET",
			url : url,
			headers : headers,
			data : {
			},
			success : function onSuccess(data) {
				if (data.result === "error") {
					return;
				}
				if(data.favoriteGoods){
					var itemSlide = obj.find("#favorite-item__slide");
					var dummy = itemSlide.find("li.f-item:last").clone(true);
					var path = window._x_webapp_path ? window._x_webapp_path :'';
					path = path.replace(/\/$/,'');
					var $html = $();
					$.each(data.favoriteGoods, function(i, goods) {
						if(!goods){
							return false;
						}
						var copy = dummy.clone(true);
						copy.removeClass("dummy");
						copy.find("img.f-item-img").attr("src", goods.goodsIcnImg);
						copy.find("a:not(.delete-fgoods)").attr("href",path + goods.url);
						copy.find("a.delete-fgoods").attr("data-del-goods",goods.goodsNo);
						copy.find("a.delete-fgoods").attr("data-del-attGrpId",goods.attGrpId);
						copy.find(".goods-nm").html(goods.goodsNm);
						copy.find(".real-price").html(goods.formattedRealPrice);
						if(goods.formattedSalePrice != null && goods.formattedSalePrice > 0){
							copy.find(".item-price .del").html(goods.formattedSalePrice);
						}else{
							copy.find(".item-price .del").remove();
						}
						copy.find(".item-icon__stock").html(goods.formattedStockMsg);
						copy.removeClass(function(index, className) {
							return (className.match(/\bfavorite\S+/g) || []).join(' ');
						});
						copy.find(".item-ph__new").css("display",goods.isNew ? "block":"none");
						copy.addClass("favorite"+goods.goodsNo);
						if(goods.reviewUseYn == '1' && goods.review && goods.review.totalCount > 0){
							var star = goods.review.averageRate;
							copy.find(".item-rate li:not(:last)").each(
									function(i) {
										$(this).removeClass();
										if (star > i) {
											$(this).addClass("icon_rate_on");
										} else if (star != i && star > i-1){
											$(this).addClass("icon_rate_half");
										} else {
											$(this).addClass("icon_rate_off");
										}
									});
							copy.find(".item-rate a").attr("href",path + goods.url + "?tp=reviews");
							copy.find(".item-rate").show();
						}else{
							copy.find(".item-rate").hide();
						}
						$html = $html.add(copy);
					});
					itemSlide.find('.item-list').slick("unslick");
					itemSlide.find('.item-list').append($html);
					itemSlide.find('.item-list').find(".dummy").remove();
					if(data.favoriteGoods.length > 0){
						obj.children().show();
						FavoriteScripts.resetSlick(itemSlide.find('.item-list'));
					}
				}
			}
		});
	}
	FavoriteScripts.getKarteFavoriteList = function(obj){
		var rootPath = window._x_webapp_root ? window._x_webapp_root : '/';
		var url = rootPath + "favorite/karte-itemlist-J/";
		var headers = {};
		if (document.cookie) {
			var cookies = document.cookie.split(";");
			for (var i = 0; i < cookies.length; i++) {
				var str = cookies[i].split("=");
				if (str[0].trim() == window._x_webapp_xsrf_token) {
					headers['X-XSRF-TOKEN'] = unescape(str[1]);
					break;
				}
			}
		}
		$.ajax({
			type : "GET",
			url : url,
			headers : headers,
			data : {
			},
			success : function onSuccess(data) {
				if (data.result === "error") {
					return;
				}
				if(data.favoriteGoods){
					try{
				        var __karte__items = [];
				        
				        var favoriteItemModel = data.favoriteGoods;
				        var map = JSON.parse(favoriteItemModel);
				        var itemList = map["ItemModel"];

				        if (itemList) {
				            itemList.forEach(function (item) {
				                __karte__items.push({ 
				                id:item["id"],
				                name:item["name"],
				                price:Number(item["priceTaxExcluded"]),
				                sku:item["sku"],
				                brandid:item["brandId"],
				                category1:item["category1"],
				                category2:item["category2"],
				                item_url:item["item_url"],
				                item_image_url:item["item_image_url"],
				                item_sku_image_url:item["item_sku_image_url"]
				                });
				            });
				          }
				    
				        var item_ids = __karte__items.map( function(item) { return item.id; });
				        var item_names = __karte__items.map( function(item) { return item.name; });
				        var item_prices = __karte__items.map( function(item) { return item.price; });
				        var item_categories1 = __karte__items.map( function(item) { return item.category1; });
				        var item_categories2 = __karte__items.map( function(item) { return item.category2; });
				        var item_sku_ids = __karte__items.map( function(item) { return item.sku; });
				        var item_brands = __karte__items.map( function(item) { return item.brandid; });
				        var item_urls = __karte__items.map( function(item) { return item.item_url; });
				        var item_sku_image_urls = __karte__items.map( function(item) { return item.item_sku_image_url; });
				        var item_image_urls = __karte__items.map( function(item) { return item.item_image_url; });
				        
						if(obj.hasAdded){
							tracker.track("favorite", {
								price: map["price"],
								quantity: map["quantity"],
								status: map["status"],
								item_ids: item_ids,
								item_names: item_names,
								item_prices: item_prices,
								item_categories1: item_categories1,
								item_categories2: item_categories2,
								item_sku_ids: item_sku_ids,
								item_brands: item_brands,
								item_urls: item_urls,
								item_sku_image_urls: item_sku_image_urls,
								item_image_urls: item_image_urls,
								items: __karte__items,
								added_item_sku_id : obj.added_item_sku_id,
								added_item_id : obj.added_item_id
							});
						}else{
							tracker.track("favorite", {
								price: map["price"],
								quantity: map["quantity"],
								status: map["status"],
								item_ids: item_ids,
								item_names: item_names,
								item_prices: item_prices,
								item_categories1: item_categories1,
								item_categories2: item_categories2,
								item_sku_ids: item_sku_ids,
								item_brands: item_brands,
								item_urls: item_urls,
								item_sku_image_urls: item_sku_image_urls,
								item_image_urls: item_image_urls,
								items: __karte__items,
								deleted_item_sku_id : obj.deleted_item_sku_id,
								deleted_item_id : obj.deleted_item_id
							});
				        }
				    }catch(e){
				        if('tracker' in window){
				            tracker.track('_error',{
				                message: e.message
				            });
				        }
				    }
				}
			}
		});
	}
	FavoriteScripts.resetSlick = function(target){
		target.slick({
			dots: false,
			accessibility: true,
			arrows: true,
			variableWidth: true,
			speed: 500,
			cssEase: 'ease',
			autoplay:false,
			pauseOnHover: true,
			infinite: false,
			slidesToShow: 7,
			slidesToScroll: 7,
			centerMode: false,
			centerPadding: '0',
			responsive: [
				{
					breakpoint: 768,
					settings: {
						speed: 650,
						cssEase: 'ease-out',
						centerMode: false,
						variableWidth: true,
						slidesToShow: 2.5,
						slidesToScroll: 2
					}
				}
			]
		});
		
	}
});