/*
 * no-flash.js
 *
 * このスクリプトを使用する場合は、先に jQuery.js（ver 1.2.X 以上） を読み込む必要があります。
 *
 * jQuery：     http://jquery.com/
 *
 * @author      Hiroaki Wakamatsu
 * @copyright  ZYYX Inc. <http://www.zyyx.jp/>
 * @version     1.0
 *
 */

var isiPad = navigator.userAgent.match(/iPad/i) != null;
var isiPhone = navigator.userAgent.match(/iPhone/i) != null;

jQuery.easing.quart = function (x, t, b, c, d) {
	return -c * ((t=t/d-1)*t*t*t - 1) + b;
}; 


/**
 * TopVisual class のコンストラクタ
 *
 * サイトのトップページのメインビジュアルを切り替え表示するためのクラス
 *
 */
var TopVisual = {};
(function() {

	TopVisual.fiTime = 1500;	// フェードインの時間（ミリ秒）
	TopVisual.foTime = 800;		// フェードアウトの時間（ミリ秒）
	TopVisual.interval = 8000;	// 次画像読み込みまでの時間（ミリ秒）

	// 各種変数
	TopVisual.complete = 0;
	TopVisual.nowSlide = -1;

	/*
	 * TopVisual class ： loadImage メソッド
	 * 
	 * メインビジュアルの読み込みを開始
	 */
	TopVisual.loadImage = function(url) {
		if (!isiPad && !isiPhone) {
			return false;
		}
		// 表示対象となる要素の有無を確認し、有る場合はxmlを読み込む
		var obj = $("div#top");
		if (0 <obj.size()) {
			obj.html("").addClass("loadingWait");
			$(document).ready(function() {
				$.ajax({
					type: "GET",
					url: url,
					dataType: "xml",
					success: function(xml) {
						// xmlの解析
						TopVisual.parseXml(xml);
					}
				});
			});
		}
	};

	/*
	 * TopVisual class ： parseXml メソッド
	 * 
	 * xmlを解析し、画像要素を作成
	 */
	TopVisual.parseXml = function(xml) {
		$(xml).find("firstPage").each(function() {
			$("div#top").html("<img id='opening' src='" + $(this).text() + "' class='slide' />");
		});

		TopVisual.cntComplete = 0;
		var cntImage = 0;
		$(xml).find("Page").each(function() {
			var src;
			var href;
			var target;
			$(this).find("showcaseImg").each(function() {
				src = $(this).text();
			});
			$(this).find("link").each(function() {
				href = $(this).text();
				target = $(this).attr("target");
			});
			src = src.toLowerCase()

			// jpg、png、gifの画像ファイルのみ表示
			if(-1 < src.indexOf(".jpg", 0) || -1 < src.indexOf(".jpeg", 0) || -1 < src.indexOf(".png", 0) || -1 < src.indexOf(".gif", 0)) {
				var id = "slide_" + cntImage;
				$("div#top").append("<a id='" + id + "' href='" + href + "' target='_" + target + "' class='slide'><img src='" + src + "' /></a>");
				$("img", "#" + id).load(function() {
					TopVisual.cntComplete ++;

					// 全ての画像の読み込みが完了したら、表示を開始
					if (TopVisual.cntComplete == cntImage) {
						$("#opening").addClass("curent");
						$("div#top").css("background-image", "none");
						setTimeout("TopVisual.startChanger()", Math.floor(TopVisual.interval / 2));
					}
				});
				cntImage ++;
			}

		});
	};

	/*
	 * TopVisual class ： startChanger メソッド
	 * 
	 * 画像をフェードイン・フェードアウトで切り替える
	 */
	TopVisual.startChanger = function() {
		if (TopVisual.cntComplete <= TopVisual.nowSlide) TopVisual.nowSlide = 0;
		if (TopVisual.nowSlide == -1) {
			$("#opening").removeClass("curent");
			TopVisual.nowSlide = 0;
		} else if (TopVisual.nowSlide == 0) {
			$("#slide_" + (TopVisual.cntComplete - 1)).removeClass("curent");
		} else {
			$("#slide_" + (TopVisual.nowSlide - 1)).removeClass("curent");
		}
		$("#slide_" + TopVisual.nowSlide).addClass("curent");
		TopVisual.nowSlide ++;
		setTimeout("TopVisual.startChanger()", TopVisual.interval);
	};

})();


var NormalVisual = {};
(function() {

	NormalVisual.fiTime = 1500;	// フェードインの時間（ミリ秒）
	NormalVisual.foTime = 800;		// フェードアウトの時間（ミリ秒）
	NormalVisual.interval = 8000;	// 次画像読み込みまでの時間（ミリ秒）

	// 各種変数
	NormalVisual.baseId = "";
	NormalVisual.complete = 0;
	NormalVisual.nowSlide = -1;

	/*
	 * TopVisual class ： loadImage メソッド
	 * 
	 * メインビジュアルの読み込みを開始
	 */
	NormalVisual.loadImage = function(id, url) {
		if (!isiPad && !isiPhone) {
			return false;
		}

		NormalVisual.baseId = id;

		// 表示対象となる要素の有無を確認し、有る場合はxmlを読み込む
		var obj = $("#" + NormalVisual.baseId);
		if (0 < obj.size()) {
			obj.html("").addClass("loadingWait");
			$(document).ready(function() {
				$.ajax({
					type: "GET",
					url: url,
					dataType: "xml",
					success: function(xml) {
						// xmlの解析
						NormalVisual.parseXml(xml);
					}
				});
			});
		}
	};

	/*
	 * NormalVisual class ： parseXml メソッド
	 * 
	 * xmlを解析し、画像要素を作成
	 */
	NormalVisual.parseXml = function(xml) {

		NormalVisual.cntComplete = 0;
		var cntImage = 0;
		$(xml).find("Page").each(function() {
			var src;
			var href;
			var target;
			$(this).find("showcaseImg").each(function() {
				src = $(this).text();
			});
			$(this).find("link").each(function() {
				href = $(this).text();
				target = $(this).attr("target");
			});
			src = src.toLowerCase()

			// jpg、png、gifの画像ファイルのみ表示
			if(-1 < src.indexOf(".jpg", 0) || -1 < src.indexOf(".jpeg", 0) || -1 < src.indexOf(".png", 0) || -1 < src.indexOf(".gif", 0)) {
				var id = "slide_" + cntImage;
				$("#" + NormalVisual.baseId).append("<a id='" + id + "' href='" + href + "' target='_" + target + "' class='slide'><img src='" + src + "' /></a>");
				$("img", "#" + id).load(function() {
					NormalVisual.cntComplete ++;

					// 全ての画像の読み込みが完了したら、表示を開始
					if (NormalVisual.cntComplete == cntImage) {
						$("#" + NormalVisual.baseId).css("background-image", "none");
						NormalVisual.startChanger();
					}
				});
				cntImage ++;
			}

		});
	};

	/*
	 * NormalVisual class ： startChanger メソッド
	 * 
	 * 画像をフェードイン・フェードアウトで切り替える
	 */
	NormalVisual.startChanger = function() {
		if (NormalVisual.cntComplete <= NormalVisual.nowSlide) NormalVisual.nowSlide = 0;
		if (NormalVisual.nowSlide == -1) {
			NormalVisual.nowSlide = 0;
		} else if (TopVisual.nowSlide == 0) {
			//$("#slide_" + (NormalVisual.cntComplete - 1)).removeClass("curent");
		} else {
			//$("#slide_" + (NormalVisual.nowSlide - 1)).removeClass("curent");
		}
		$(".curent", "#" + NormalVisual.baseId).removeClass("curent");
		$("#slide_" + NormalVisual.nowSlide).addClass("curent");
		NormalVisual.nowSlide ++;
		setTimeout("NormalVisual.startChanger()", NormalVisual.interval);
	};


})();

var ShopVisual = {};
(function() {

	ShopVisual.fiTime = 1500;
	ShopVisual.foTime = 800;
	ShopVisual.interval = 8000;

	ShopVisual.baseId = 0;
	ShopVisual.nowSlide = 0;

	ShopVisual.array = new Array();

	ShopVisual.setImage = function(src) {
		var no = ShopVisual.array.length;
		ShopVisual.array[no] = new Object();
		ShopVisual.array[no].id = "slide_" + no;
		ShopVisual.array[no].src = src;
	};

	ShopVisual.loadImage = function(id, width, height) {
		if (!isiPad && !isiPhone) {
			//return false;
		}

		ShopVisual.baseId = id;
		if (width != null && height != null) {
			$(function() {
				var obj = $("#" + ShopVisual.baseId);
				obj.html("").css({"position": "relative", "margin": "0 auto", "width": width + "px", "height": height + "px", "overflow": "hidden"});
				var ary = ShopVisual.array;
				for(var i=0; i<ary.length; i++) {
					obj.append("<span id='" + ary[i].id + "' style='position: absolute; left: 0; top: 0; display: none;'><img src='" + ary[i].src + "' /></span>");
				}
				ShopVisual.startChanger();
			});
		}
	};

	ShopVisual.startChanger = function() {
		if (ShopVisual.array.length == 0) {
		} else if (ShopVisual.array.length == 1) {
			$("#slide_0").css("display", "block");
		} else {
			hiddenSlide = ShopVisual.nowSlide - 1;
			if (ShopVisual.nowSlide == 0) {
				hiddenSlide = ShopVisual.array.length - 1;
			} else if (ShopVisual.nowSlide == ShopVisual.array.length) {
				ShopVisual.nowSlide = 0;
			}
			$("#slide_" + hiddenSlide).css("display", "none");
			$("#slide_" + ShopVisual.nowSlide).css("display", "block");
			ShopVisual.nowSlide ++;

			setTimeout("ShopVisual.startChanger()", ShopVisual.interval);
		}
	};
})();


var SlideNav = {};
(function() {

	// 各種変数
	SlideNav.nowSlide = -1;
	SlideNav.baseId = "";

	SlideNav.loadNav = function(id, url) {
		if (!isiPad && !isiPhone) {
			return false;
		}

		SlideNav.baseId = id;

		// 表示対象となる要素の有無を確認し、有る場合はxmlを読み込む
		var obj = $("#" +SlideNav.baseId);
		if (0 <obj.size()) {
			obj.html("<a id='snBtnPrev' href='#'></a><a id='snBtnNext' href='#'></a>").addClass("slideNav");
			$(document).ready(function() {
				$.ajax({
					type: "GET",
					url: url,
					dataType: "xml",
					success: function(xml) {
						// xmlの解析
						SlideNav.parseXml(xml);
					}
				});
			});
		}
	};

	SlideNav.navWidth = 214;
	SlideNav.margin = 0;
	SlideNav.startNo = 0;
	SlideNav.isSliding = false;

	/*
	 * SlideNav class ： parseXml メソッド
	 * 
	 * xmlを解析し、画像要素を作成
	 */
	SlideNav.parseXml = function(xml) {

		// ナビゲーションの表示枠を作成
		$("#" + SlideNav.baseId).append("<div id='snImageFrame'><div id='snImageInner' class='clearfix'></div></div>").css("background-image", "none");

		var obj = $("#snImageInner", "#" + SlideNav.baseId);
		var cntNav = 0;

		$(xml).find("Page").each(function() {
			var src;
			var href;
			var target;
			$(this).find("thumbImg").each(function() {
				src = $(this).text();
			});
			$(this).find("link").each(function() {
				href = $(this).text();
				target = $(this).attr("target");
			});
			src = src.toLowerCase();

			obj.append("<a href='" + href + "' target='_" + target + "' class='slide'><img src='" + src + "' /></a>");

			cntNav ++;
		});

		if (cntNav < 3) {
			$("#snBtnPrev", "#" + SlideNav.baseId).hide();
			$("#snBtnNext", "#" + SlideNav.baseId).hide();
		} else {
			var objA = $("a", obj);
			SlideNav.margin = objA.get(1).offsetLeft - objA.get(0).offsetLeft - objA.get(0).offsetWidth;

			SlideNav.insertImage("prepend");

			$("#snBtnPrev", "#" + SlideNav.baseId).click(function() {
				SlideNav.slideImage("prev");
				return false;
			});
			$("#snBtnNext", "#" + SlideNav.baseId).click(function() {
				SlideNav.slideImage("next");
				return false;
			});

			setTimeout("SlideNav.autoSlide()", 3000);
		}
	};

	/*
	 * SlideNav class ： autoSlide メソッド
	 * 
	 * 自動でスライドする
	 */
	SlideNav.autoSlide = function() {
		SlideNav.slideImage("next");
		setTimeout("SlideNav.autoSlide()", 3000);
	};

	/*
	 * SlideNav class ： insertImage メソッド
	 * 
	 * 既存のバナー郡の前後にスライド処理に備えて、予め画像を設置しておく
	 */
	SlideNav.insertImage = function(method) {
		var objPar = $("#snImageInner", "#" + SlideNav.baseId);
		var obj = $("a", objPar);
		if (method == "prepend") {
			SlideNav.startNo --;

			$(obj.get(0)).before($(obj.get(obj.size() - 1)));

//			var left = - (SlideNav.navWidth + SlideNav.margin);
			var left = - 226;
			$("#snImageInner", "#" + SlideNav.baseId).css("left", left + "px");
		} else {
			SlideNav.startNo ++;
			
			$(obj.get(obj.size() - 1)).after($(obj.get(0)));

//			var left = - SlideNav.navWidth - SlideNav.margin;
			var left = - 226;
			$("#snImageInner", "#" + SlideNav.baseId).css("left", left + "px");
		}
		SlideNav.isSliding = false;
	};

	/*
	 * SlideNav class ： slideImage メソッド
	 * 
	 * クリックしたボタンに応じて、前後にスライドする
	 */
	SlideNav.slideImage = function(method) {
		if (SlideNav.isSliding) return false;

		SlideNav.isSliding = true;

		if (method == "prev") {
			$("#snImageInner").animate({"left": "0"}, {
				"duration": 250,
				"easing": "swing",
				"complete": function() {
					SlideNav.insertImage("prepend");
				}
			});
		} else {
			$("#snImageInner").animate({"left": "-452px"}, {
//			$("#snImageInner").animate({"left": ((- SlideNav.navWidth - SlideNav.margin) * 2) + "px"}, {
				"duration": 250,
				"easing": "swing",
				"complete": function() {
					SlideNav.insertImage("append");
				}
			});
		}
	};

})();


var SearchGenre = {};
(function() {

	// 各種変数
	SearchGenre.baseId = "";
	SearchGenre.loadComplete = 0;
	SearchGenre.cntComplete = 0;

	SearchGenre.load = function(id, url) {
		if (!isiPad && !isiPhone) {
			return false;
		}

		SearchGenre.baseId = id;

		// 表示対象となる要素の有無を確認し、有る場合はxmlを読み込む
		var obj = $("#" +SearchGenre.baseId);
		if (0 <obj.size()) {
			obj.hide();
			obj.after("<div id='searchGenre'></div>");
			$(document).ready(function() {
				$.ajax({
					type: "GET",
					url: url,
					dataType: "xml",
					success: function(xml) {
						// xmlの解析
						SearchGenre.parseXml(xml);
					}
				});
			});
		}
	};

	SearchGenre.parseXml = function(xml) {
		var obj = $("#searchGenre");

		var no = 0;
		var cntImage = 0;
		$(xml).find("category").each(function() {
			var wrapId = "category" + no;
			obj.append("<div id='" + wrapId + "' class='genreWrap'></div>");
			var tabSrc;
			var tabHref;
			var tabTarget;
			$(this).find("tabBtnLink").each(function() {
				tabHref = $(this).text();
				tabTarget = $(this).attr("target");
			});
			$(this).find("tabOverImg").each(function() {
				tabSrc = $(this).text();
			});
			$("#" + wrapId, obj).append("<a href='" + tabHref + "' class='icon' target='_" + tabTarget + "'><img src='" + tabSrc + "' /></a>").append("<a href='" + tabHref + "' class='title' target='_" + tabTarget + "'></a>");

			var btnNo = 0;
			$(this).find("subCategory").each(function() {
				var btnId = wrapId + "_btn" + btnNo;
				var btnSrc;
				var btnHref;
				var btnTarget;
				$(this).find("btnNormalImg").each(function() {
					btnSrc = $(this).text();
				});
				$(this).find("btnLink").each(function() {
					btnHref = $(this).text();
					btnTarget = $(this).attr("target");
				});
				$("#" + wrapId, obj).append("<a id='" + btnId + "' href='" + btnHref + "' class='button' target='_" + btnTarget + "'><img src='" + btnSrc + "' /></a>");

				$("img", "#" + btnId).load(function() {
					SearchGenre.cntComplete ++;

					// 全ての画像の読み込みが完了したら、表示を開始
					if (SearchGenre.cntComplete == cntImage) {
						$("div.genreWrap").each(function() {
							var btnLeft = 0;
							var btnTop = 43;
							var thisNo = 0;
							var parentId = $(this).attr("id");
							$("a.button", $(this)).each(function() {
								if (thisNo % 2 == 0) {
									btnLeft = "129";
									if (2 <= thisNo) {
										var height1 = $("#" + parentId + "_btn" + (thisNo - 2)).height();
										var height2 = $("#" + parentId + "_btn" + (thisNo - 1)).height();
										if (height1 < height2) {
											btnTop += height2 + 9;
										} else {
											btnTop += height1 + 9;
										}
									}
								} else {
									btnLeft = "292";
								}

								$(this).css({"left": btnLeft + "px", "top": btnTop + "px"});
								thisNo ++;
							});
						});
					}
				});

				cntImage ++;
				btnNo ++;
			});

			no ++;
		});
		obj.append("<div class='footer'></div>");
	};

})();


var Hallmap = {};
(function() {

	Hallmap.loadHall = function(id) {
		if (!isiPad && !isiPhone) {
			return false;
		}
		var obj = $("#" + id);
		obj.html("").addClass("mapHall");
		for(var i=1; i<=7; i++) {
			obj.append("<a href='#' id='point" + i + "'></a><span id='img" + i + "'></span>");
			$("#img" + i, obj).hide();
			$("#point" + i, obj).click(function() {
				$(this).next().show();
				$("div.screen", obj).show();
				$("#btnClose", obj).show();
				return false;
			});
		}
		obj.append("<div class='screen'></div><a href='#' id='btnClose'></a>");
		$("div.screen", obj).hide();
		$("#btnClose", obj).hide().click(function() {
			$(this).hide();
			$("div.screen").hide();
			$("span[id^='img']", obj).hide();
			return false;
		});
	};


	Hallmap.loadConference = function(id) {
		if (!isiPad && !isiPhone) {
			return false;
		}
		var obj = $("#" + id);
		obj.html("").addClass("mapConference");
		for(var i=1; i<=10; i++) {
			obj.append("<a href='#' id='point" + i + "'></a><span id='img" + i + "'></span>");
			$("#img" + i, obj).hide();
			$("#point" + i, obj).click(function() {
				$(this).next().show();
				$("div.screen", obj).show();
				$("#btnClose", obj).show();
				return false;
			});
		}
		obj.append("<div class='screen'></div><a href='#' id='btnClose'></a>");
		$("div.screen", obj).hide();
		$("#btnClose", obj).hide().click(function() {
			$(this).hide();
			$("div.screen").hide();
			$("span[id^='img']", obj).hide();
			return false;
		});
	};

})();

