// インジケーター用画像ファイルのパス
var INDICATOR_GIF = "/common/img/indicator.gif";

var jewelryXmlFilePath = "/jewelry/xml/jewelry.xml";

// 商品画像ファイルの格納場所
var jewelryImageFilePath = "/jewelry/img/";

var xmlData;
var xmlDataIdToUrl;

var getQueryDataAry = getQueryDataAry = fdc_util_getQueryData();

var dummyElemExist = false;

var notReady = 2;	// 20091016 非同期動作未完了カウンタ

// お気に入りリストの表示状態
var favoritesDispFlg = false;
// お気に入りリストの初期化フラグ
var initFavoriteFlg = false;
// 商品情報XMLを全部取得したか管理するフラグ
var xmlReadAllFlg = false;

// スライダー画像サイズ
var SLIDE_IMAGE_SIZE = 96;
// スライダーの一ページ内の画像個数
var SLIDE_PAGE_IMAGE_NUM = 7;
// スライダースクローする個数
var SLIDE_SCROLL_NUM = 3;

var imageFileInfoAry = new Array();

$(function(){
	// オンラインショップ
	$('#gotoOnLineShopBtn').css("visibility", "hidden");

	//$(".relatedBox02").css("visibility", "hidden");

	checkReady();
});

$.event.add(window, "load",
	function() {
		if (getQueryDataAry['slider'] != null) {
			// スライドアイテムの初期化
			$("#carouselBox > h2").after($("<div/>")
											.attr("id", "carouselIndicator")
											.append($("<img/>")
												.attr("src", INDICATOR_GIF)
											)
										);
			initSlideItem();
			
		} else {
			// スライド表示領域を削除
			$("#carouselBox").remove();
		}

		//20091016 非同期化
		fdc_util_PrepareGoToItemPage(
			function(xml) {
				xmlDataIdToUrl = xml;
				checkReady();
			}
		);
	}
);



function checkReady(){
	if(--notReady == 0) {
		finalInitialize();
	}
}

function initSlideItem() {

	// スライドに表示する商品IDを取得
	var slideItemInfo = $.cookie('sliderItemInfo');

	if (slideItemInfo == null || slideItemInfo == '') {
		// インジケーター削除
		$("#carouselIndicator").remove();
		return;
	}

	cgiPath = "/jewelry/xml/getPageXml.php?";
	cgiPath += "slider=" + slideItemInfo;

	// JKL.ParseXMLオブジェクトを生成
	var http = new JKL.ParseXML(cgiPath);
	http.setOutputArrayAll();
	// ダウンロード～解析する
	slideItemData = http.parse();

/*
<div class="prev">
	<img src="/common/img/jewelry/btn_slide_prev.gif" width="24" height="24" alt="前へ"/>
</div>
<div class="jCarouselLite">
	<ul></ul>
</div>
<div class="next">
	<img src="/common/img/jewelry/btn_slide_next.gif" width="24" height="24" alt="次へ"/>
</div>
*/

	// カルーセル枠を作成
	$(".relatedBox02")
		.append($("<div/>")
			.addClass("prev")
			.append($("<img/>")
				.attr("src", "/common/img/jewelry/btn_slide_prev.gif")
				.attr("width", "24")
				.attr("height", "24")
				.attr("alt", "前へ")
			)
		)
		.append($("<div>")
			.addClass("jCarouselLite")
			.append($("<ul/>"))
		)
		.append($("<div/>")
			.addClass("next")
			.append($("<img/>")
				.attr("src", "/common/img/jewelry/btn_slide_next.gif")
				.attr("width", "24")
				.attr("height", "24")
				.attr("alt", "次へ")
			)
		);

	// カルーセルデータをセット
	for (i=0; i<slideItemData.jewelryList[0].jewelry.length; i++) {
		var itemData = slideItemData.jewelryList[0].jewelry[i];
		
		var thumbImageURL = "";
		if (itemData.thumbnail2 != null) {
			thumbImageURL = itemData.thumbnail2[0];
		} else {
			var thumbId = 1;
			if (itemData.imageList[0].thumbnail != null) {
				thumbId = itemData.imageList[0].thumbnail[0];
				if (itemData.imageList[0].imageURL.length < thumbId) {
					thumbId = 1;
				}
			}
			thumbImageURL = itemData.imageList[0].imageURL[thumbId - 1];
		}
		
		$(".relatedBox02 .jCarouselLite").children("ul")
			.append($("<li/>")
				.append($("<a/>")
					.attr("href", itemData.entrylink + "?slider=1")
					.append($("<img/>")
						.attr("src", thumbImageURL)
						.attr("alt", itemData.id)
						.attr("width", SLIDE_IMAGE_SIZE)
						.attr("height", SLIDE_IMAGE_SIZE)
					)
				)
			);
	}
	
	var scrollNum = SLIDE_SCROLL_NUM;
	if (slideItemData.length < SLIDE_PAGE_IMAGE_NUM) {
		scrollNum = 0;
	}

	// カルーセルコントロール生成
	$(".relatedBox02 .jCarouselLite").jCarouselLite(
		{
			btnNext: ".relatedBox02 .next",
			btnPrev: ".relatedBox02 .prev",
			speed: 500,
			visible: SLIDE_PAGE_IMAGE_NUM,
			scroll: scrollNum
		}
	);

	// インジケーター削除
	$("#carouselIndicator").remove();
}

function finalInitialize(){
	// 商品情報XMLの非同期読み込み
	fdc_util_readJewelryXML(jewelryXmlFilePath,
		function(xml) {
			//alert("xml read");
			xmlData = xml;
			xmlReadAllFlg = true;
		}
	);
	var id = $(".productNum").text();
	fdc_util_GoToItemPage(xmlDataIdToUrl, id);


// 商品をドラッグ可能に設定
$(".favoriteAdd").draggable({helper:'clone', zIndex:100});


// [お気に入りリストを見る]ボタン制御
$('#favoriteMenu').click(
	function(){
		// お気に入りリストの初期化済み？
		if (!initFavoriteFlg) {
			// お気に入りリストの初期化
			initFavoriteDisp();
			initFavoriteFlg = true;
		}

		if (!favoritesDispFlg) {
			favoritesDispFlg = true;
			$('#favoriteAddBox')
			.fadeIn("slow");
		} else {
			favoritesDispFlg = false;
			$('#favoriteAddBox')
			.fadeOut("slow");
		}
	}
);

// お気に入りリスト内[Close]ボタン制御
$("#closeBtn").click(
	function(){
		favoritesDispFlg = false;
		$('#favoriteAddBox').fadeOut("slow");
	}
);


// お気に入りアイコンの表示制御
$(".favoriteAdd").hover(
	function() {
		$(".favoriteIcon").css("display", "block");
	},
	function() {
		$(".favoriteIcon").css("display", "none");
	}
);

var itemId = $("#thumb00").children("a").children("span.productNum").text();
imageFileInfoAry[0] = jewelryImageFilePath + "4_" + itemId + "_1.jpg";
imageFileInfoAry[1] = jewelryImageFilePath + "4_" + itemId + "_2.jpg";
imageFileInfoAry[2] = jewelryImageFilePath + "4_" + itemId + "_3.jpg";
imageFileInfoAry[3] = jewelryImageFilePath + "4_" + itemId + "_4.jpg";

var thumbSrc1 = $("#thumb01").children("a").children("img").attr("src");
var thumbSrc2 = $("#thumb02").children("a").children("img").attr("src");
var thumbSrc3 = $("#thumb03").children("a").children("img").attr("src");
var thumbSrc4 = $("#thumb04").children("a").children("img").attr("src");

var imageElem = $(".favoriteAdd").children("a").children("img");
// サムネイルロールオーバー
$("#thumb01").mouseover(
	function() {
		if (thumbSrc1 != null && thumbSrc1 != "") {
			imageElem.attr("src", imageFileInfoAry[0]);
		}
	}
);

$("#thumb01").children("a").attr("href", "")
	.click(function () {
		return false;
	});

$("#thumb02").mouseover(
	function() {
		if (thumbSrc2 != null && thumbSrc2 != "") {
			imageElem.attr("src", imageFileInfoAry[1]);
		}
	}
);

$("#thumb02").children("a").attr("href", "")
	.click(function () {
		return false;
	});

$("#thumb03").mouseover(
	function() {
		if (thumbSrc3 != null && thumbSrc3 != "") {
			imageElem.attr("src", imageFileInfoAry[2]);
		}
	}
);

$("#thumb03").children("a").attr("href", "")
	.click(function () {
		return false;
	});


$("#thumb04").mouseover(
	function() {
		if (thumbSrc4 != null && thumbSrc4 != "") {
			imageElem.attr("src", imageFileInfoAry[3]);
		}
	}
);

$("#thumb04").children("a").attr("href", "")
	.click(function () {
		return false;
	});


// お気に入りリストへのドロップ
$("#favoriteList > ul")
	.droppable({
		activeClass: "droppable-active",    // draggableアイテムがアクティブになったときのクラス
		hoverClass: "dropped-hover",        // draggableアイテムが通過するときのクラス
		accept: ".favoriteAdd",               // favoriteAddクラスの要素をドロップ可能にする
		drop: function(ev, ui) {            // ドロップしたときの処理

			// ドラッグしてきた商品ID
			var dragItemId = $(ui.draggable).children("a").children("span.productNum").text();

			// 登録個数チェック
			var favoriteListNum = $("#favoriteList li").length;

			// 同じお気に入りがあるかどうか
			var exists = checkFavoriteListExists(dragItemId);

			// 新しいお気に入り
			if (exists.length == 0) {
				// クッキーに保存
				addToFavoriteCookie(dragItemId);

				// お気に入りリストに表示するスペースがあるか
				if (favoriteListNum >= 12) {
					// リストに表示されている最後のアイテムを削除し、アイテムを追加するためのスペースを作る。クッキーからは削除されない。
					$("#favoriteList > ul > li:eq(11)").remove();
				}

				// 要素を複製
				var item = $(ui.draggable).clone();
				// 商品ID
				var itemId = item.children("a").children("span").text();

				// お気に入りリストに追加
				addFavoriteListItem(itemId);
			} else {
			    $(exists)
			        .prependTo(this);   // 最上位に移動
			}

			$(this).sortable("refresh");    // 並び替え項目に変更があったことを知らせる

		}
	});

// [お気に入りに追加]ボタン
$("#favoriteBtn").click(
	function() {
		// お気に入りリストの初期化済み？
		if (!initFavoriteFlg) {
			// お気に入りリストの初期化
			initFavoriteDisp();
			initFavoriteFlg = true;
		}

		// 登録する商品ID
		var addItemId = $(".favoriteAdd").children("a").children("span.productNum").text();

		// 登録個数チェック
		var favoriteListNum = $("#favoriteList li").length;

		// お気に入りに登録済みか
		var exists = checkFavoriteListExists(addItemId);

		// 新しいお気に入り
		if (exists.length == 0) {
			// [1アイテム追加]アイコンの表示エフェクト
			$("#addIcon").css("display", "block");
			$("#addIcon").fadeTo(200, 1,
				function() {
					$("#addIcon").fadeTo(700, 0,
						function() {
							$("#addIcon").css("display", "none");
						}
					);
				}
			);

			// クッキーに保存
			addToFavoriteCookie(addItemId);

			// お気に入りリストに表示するスペースがあるか？
	        if (favoriteListNum >= 12) {
				// リストに表示されている最後のアイテムを削除し、アイテムを追加するためのスペースを作る。クッキーからは削除されない。
				$("#favoriteList > ul > li:eq(11)").remove();
			}
			
			// お気に入りリストに追加
			addFavoriteListItem(addItemId);
		} else {
			$(exists)
				.prependTo($("#favoriteList > ul"));   // 最上位に移動
		}
	});

}


// お気に入りリストの初期化
function initFavoriteDisp() {
	if (!xmlReadAllFlg) {
		$("#favoriteList > ul").html("<li><img src=\"" + INDICATOR_GIF + "\"/></li>");
		var intervalId = setInterval(function() {
			if(xmlReadAllFlg) {
				clearInterval(intervalId);
				initFavoriteDispProcess();
			}
		}, 100);
	} else {
		initFavoriteDispProcess();
	}
}

// お気に入りリストの初期化の実際の処理
function initFavoriteDispProcess() {
	$("#favoriteList > ul").empty();

	var temp = $.cookie('favoriteItemInfo');
	if (temp == null || temp == '') {
		$("#favoriteList > ul")
			.append($("<li/>").text("　"));

		dummyElemExist = true;
		return;
	}
	
	var idAry = temp.split(';');

	var sId;
	var eId;
	if (idAry.length > 12 ) {
		sId = idAry.length - 12;
		eId = idAry.length - 1;
	} else {
		sId = 0;
		eId = idAry.length - 1;
	}

	for (i = sId ; i <= eId; i++) {
		addFavoriteListItem(idAry[i]);
	}

	if ($("#favoriteList > ul > li").length == 0) {
		$("#favoriteList > ul")
			.append($("<li/>").text("　"));
		dummyElemExist = true;
	}
}


// 同じお気に入りがあるかどうか
function checkFavoriteListExists(addItemId) {
	var exists = $.grep($("#favoriteList li"),
			function(item, index){
				var favoriteItemId = $(item).children("a").children("img").attr("alt");
				return favoriteItemId == addItemId;
			}
		);
	return exists;
}

// お気に入りリストに追加
function addFavoriteListItem(itemId) {

	var itemImageURL = "";
	var entryLink = "";

	$.each(xmlData.jewelryList[0].jewelry,
		function() {
			// 商品ID
			var id = this.id[0];
			// お気に入り表示対象の商品かチェック
			if (id != itemId) {
				return;
			}

			// 商品詳細ページへのURL
			if (this.entrylink != null) {
				entryLink = this.entrylink[0];
			}

			// 商品画像
			itemImageURL

			if (this.thumbnail2 != null) {
				itemImageURL = this.thumbnail2[0];
			} else {
				var thumbId = 1;
				if (this.imageList[0].thumbnail != null) {
					thumbId = this.imageList[0].thumbnail[0];
					if (this.imageList[0].imageURL.length < thumbId) {
						thumbId = 1;
					}
				}
				itemImageURL = this.imageList[0].imageURL[thumbId - 1];
			}
			
			return false;
		}
	);


	// ダミーli要素があるなら削除
	if (dummyElemExist) {
		$("#favoriteList > ul > li:last").remove();
		dummyElemExist = false;
	}

	// 追加するli要素を作成
	$("<li/>")
		.append($("<a/>").attr("href", entryLink)
							.append($("<img/>").attr("src", itemImageURL)
								.attr("width","96")
								.attr("height","96")
								.attr("alt", itemId)
							)
			)
		.append($("<span/>")
			.append($("<a/>").addClass("del")
				.append($("<img/>").attr("src", "/common/img/jewelry/btn_delete.gif")
									.attr("width", "13")
									.attr("height", "12")
									.attr("alt", "削除")
									.click(
										function(){
											var itemId = $(this).parent().parent().parent().children("a").children("img").attr("alt");
											$(this).parent().parent().parent().fadeOut("slow",
											function() {
												// お気に入りクッキーから削除
												deleteFromFavoriteCookie(itemId);
												$(this).remove();
												initFavoriteDisp();
											});
										}
									)
				)
			)
		)
		.prependTo($("#favoriteList > ul"));   // 最上位に追加
}


function deleteFromFavoriteCookie(itemId) {
	var temp = $.cookie('favoriteItemInfo');
	if (temp == null || temp == '') {
		return;
	}
	var favoriteItemAry = temp.split(';');
	var aryId = $.inArray(itemId, favoriteItemAry);
	if (aryId == -1) {
		return ;
	}
	favoriteItemAry.splice(aryId, 1);
	temp = favoriteItemAry.join(';');
	$.cookie('favoriteItemInfo', temp, {expires:FDC_COOKIE_EXP, path:FDC_COOKIE_PATH});

}

function addToFavoriteCookie(itemId) {
	var temp = $.cookie('favoriteItemInfo');
	var favoriteItemAry = new Array();
	if (temp != null && temp != '') {
		favoriteItemAry = temp.split(';');
		var aryId = $.inArray(itemId, favoriteItemAry);
		if (aryId != -1) {
			return ;
		}
	}

	favoriteItemAry.push(itemId);
	temp = favoriteItemAry.join(';');
	$.cookie('favoriteItemInfo', temp, {expires: FDC_COOKIE_EXP, path:FDC_COOKIE_PATH});

}

