﻿
$(document).ready(function(){

//表示させる年の数
var yearNum = 4;

//検索モード 1:詳細 2:簡易 3:サブジャンル
var searchMode = remove_tab($(".searchMode").html());

//すべてのサブジャンル用のメインジャンルを非表示にする
function allSubGenHide() {
	$("#sub_gen-01-wrap").hide();
	$("#sub_gen-03-wrap").hide();
	$("#sub_gen-02-wrap").hide();
	$("#sub_gen-07-wrap").hide();
	$("#sub_gen-0506-wrap").hide();
	$("#sub_gen-04-wrap").hide();
}

//すべてのサブジャンル用の特集を非表示にする
function allSubGenConHide() {
	$("#sub_con-01-wrap").hide();
	$("#sub_con-03-wrap").hide();
	$("#sub_con-02-wrap").hide();
	$("#sub_con-07-wrap").hide();
	$("#sub_con-0506-wrap").hide();
	$("#sub_con-04-wrap").hide();
}

//すべての選択項目を非選択状態にする
function allResetSelected() {
	$(".selected_form_event a").removeClass("no_link selected");
	$(".selected_form_event").removeClass("selected_form_event");
}

//すべての小ジャンルラップを非表示にする
function allGenreSHide() {
	$("#lg-01-wrap").hide();
	$("#lg-03-wrap").hide();
	$("#lg-02-wrap").hide();
	$("#lg-07-wrap").hide();
	$("#lg-05-wrap").hide();
	$("#lg-06-wrap").hide();
	$("#lg-04-wrap").hide();
}

//すべての都道府県ラップを非表示にする
function allPrefectureHide() {
	$("#rg-05-wrap").hide();
	$("#rg-07-wrap").hide();
	$("#rg-01-wrap").hide();
	$("#rg-05-wrap").hide();
	$("#rg-03-wrap").hide();
	$("#rg-08-wrap").hide();
	$("#rg-02-wrap").hide();
	$("#rg-06-wrap").hide();
	$("#rg-04-wrap").hide();
}

//全ての発売状況ラップを非表示にする
function allRlsKndHide() {
	$("#rlsKnd-01-wrap").hide();
	$("#rlsKnd-02-wrap").hide();
	$("#rlsKnd-03-wrap").hide();
	$("#rlsKnd-04-wrap").hide();
	$("#rlsKnd-05-wrap").hide();
	$("#rlsKnd-06-wrap").hide();
}


//現在の年からn年までoptionをセットする
function setYear(name) {
	var i;
	//既にオプションがあった場合は追加しない
	if ($("select[name='" + name + "'] > option").size() < yearNum) {
		for (i = 0 ; i < yearNum ; i++ ) {
			$("select[name='" + name + "']").after($("select[name='" + name + "']").clone()).remove();
			if ($("select[name='" + name + "']").size() > 0) {
				$("select[name='" + name + "']").append('<option value="' + (Number($("input[name='now_y']").val()) + i) + '">' + (Number($("input[name='now_y']").val()) + i) + '</option>');
			}
		}
	}
}

//日付をセットする
function setSelectDate() {
	$("select[name='pfdy']").val(remove_tab($(".pfdy").html()));
	$("select[name='pfdm']").val(remove_tab($(".pfdm").html()));
	$("select[name='pfdd']").val(remove_tab($(".pfdd").html()));
	$("select[name='ptdy']").val(remove_tab($(".ptdy").html()));
	$("select[name='ptdm']").val(remove_tab($(".ptdm").html()));
	$("select[name='ptdd']").val(remove_tab($(".ptdd").html()));
	$("select[name='rfdy']").val(remove_tab($(".rfdy").html()));
	$("select[name='rfdm']").val(remove_tab($(".rfdm").html()));
	$("select[name='rfdd']").val(remove_tab($(".rfdd").html()));
	$("select[name='rtdy']").val(remove_tab($(".rtdy").html()));
	$("select[name='rtdm']").val(remove_tab($(".rtdm").html()));
	$("select[name='rtdd']").val(remove_tab($(".rtdd").html()));
}

//日付をセットする
function setInputDate() {
	setInputValue("pfdy", $("select[name='pfdy']").val(), "#search_dtl_result_form form");
	setInputValue("pfdm", $("select[name='pfdm']").val(), "#search_dtl_result_form form");
	setInputValue("pfdd", $("select[name='pfdd']").val(), "#search_dtl_result_form form");
	setInputValue("ptdy", $("select[name='ptdy']").val(), "#search_dtl_result_form form");
	setInputValue("ptdm", $("select[name='ptdm']").val(), "#search_dtl_result_form form");
	setInputValue("ptdd", $("select[name='ptdd']").val(), "#search_dtl_result_form form");
	setInputValue("rfdy", $("select[name='rfdy']").val(), "#search_dtl_result_form form");
	setInputValue("rfdm", $("select[name='rfdm']").val(), "#search_dtl_result_form form");
	setInputValue("rfdd", $("select[name='rfdd']").val(), "#search_dtl_result_form form");
	setInputValue("rtdy", $("select[name='rtdy']").val(), "#search_dtl_result_form form");
	setInputValue("rtdm", $("select[name='rtdm']").val(), "#search_dtl_result_form form");
	setInputValue("rtdd", $("select[name='rtdd']").val(), "#search_dtl_result_form form");
}

//hiddenがある場合は書き換える。なかった場合はtargetにappendする
function setInputValue(name, value, target) {
	if ($("."+ name).size() > 0) {
		$("."+ name).html($("select[name='" + name + "']").val());
	} else {
		if (value != "") {
			$(target).append('<div style="display:none" class="' + name + '">' + value + '</div>');
		}
	}
}

//日付を削除する
function deletePDate() {
	$(".pfdy").html("");
	$(".pfdm").html("");
	$(".pfdd").html("");
	$(".ptdy").html("");
	$(".ptdm").html("");
	$(".ptdd").html("");
}

//日付を削除する
function deleteRDate() {
	$(".rfdy").html("");
	$(".rfdm").html("");
	$(".rfdd").html("");
	$(".rtdy").html("");
	$(".rtdm").html("");
	$(".rtdd").html("");
}

//指定をセットする
function setToggleBoolean(name) {
	var val;

	if (remove_tab($("." + name).html()) + "" == "true") {
		val = "false";
	} else {
		val = "true";
	}
	$("." + name).html(val);
}

//指定をセットする
function setInputReserved(name) {
	var val;

	if (name == "cAsgnFlg") {
		$(".bAsgnFlg").html("false");
	} else if (name == "bAsgnFlg") {
		$(".cAsgnFlg").html("false");
	}

	if (remove_tab($("." + name).html()) + "" == "true") {
		val = "false";
	} else {
		val = "true";
	}
	$("." + name).html(val);
}

//第1引数で受け取ったnameに従い選択状態をセットする。第2引数うがtrueの場合wrapを開く
//同じname内で2つ以上選択されている場合はリンクになる。
function setSelectedMain(name, nameSub, wrapF) {
	var i;
	var val;
	var id;
	var selectedFormEventLinkOk;
	var selectedFormEvent;

	for ( i = 0 ; i < $("." + name).size() ; i++ ) {
		val = remove_tab($("." + name + ":eq(" + i + ")").html());
		id = name + "-" + val;

		if(wrapF) {
			$("#" + id + "-wrap").show();
		}

		selectedFormEventLinkOk = $("#" + id + "-wrap .selected_form_event_link_ok");
		selectedFormEvent = $("#" + id + "-wrap .selected_form_event");

		//リンクなし
		if ($("." + name).size() == 1 && selectedFormEventLinkOk.size() == 0 && selectedFormEvent.size() == 0) {
			$("#" + id + " > a").addClass("no_link selected");
			$("#" + id + " > a").removeAttr("href");
			$("#" + id).addClass("selected_form_event");
		}
		//リンクあり
		else {
			$("#" + id).addClass("selected_form_event_link_ok");
		}

	}
}

//第1引数で受け取ったnameに従い選択状態をセットする。第2引数うがtrueの場合wrapを開く
//wrap内で2つ以上選択されている場合はリンクになる。
function setSelectedSub(name, subName) {
	var i;
	var k;
	var id;
	var idS;
	var val;
	var valS;
	var selectedFormEventLinkOk;

	//リンクあり
	for ( k = 0 ; k < $("." + subName).size() ; k++ ) {
		valS = remove_tab($("." + subName + ":eq(" + k + ")").html());
		idS = subName + "-" + valS;
		$("#" + idS).addClass("selected_form_event_link_ok");
	}

	for ( i = 0 ; i < $("." + name).size() ; i++ ) {
		val = remove_tab($("." + name + ":eq(" + i + ")").html());
		id = name + "-" + val;

		selectedFormEventLinkOk = $("#" + id + "-wrap .selected_form_event_link_ok");

		//リンクなし
		if (selectedFormEventLinkOk.size() == 1) {
			selectedFormEventLinkOk.find("a").addClass("no_link selected");
			selectedFormEventLinkOk.find("a").removeAttr("href");
			selectedFormEventLinkOk.removeClass("selected_form_event_link_ok");
			selectedFormEventLinkOk.addClass("selected_form_event");
		}
	}

}


//サブジャンル用の大ジャンル選択状態をセットする
function setSelectedSubGenre() {
	var i;
	var val;
	var valS;
	var id;
	var idS;
	var genreSSize;

	for ( i = 0 ; i < $(".lg").size() ; i++ ) {
		genreSSize = 0;
		val = remove_tab($(".lg:eq(" + i + ")").html());
		id = "lg-" + val;
		$("#" + id + " > a").addClass("no_link selected");
		$("#" + id + " > a").removeAttr("href");
		$("#" + id).addClass("selected_form_event");
		$("#sub_gen-" + val + "-wrap").show();
		$("#sub_con-" + val + "-wrap").show();
	}
}

//○○日で絞り込み
function setSelectedRls(name) {
	var val;
	var id;
	val = remove_tab($("." + name).html());
	id = name + "-" + val;
	$("#" + id + " > a").addClass("no_link selected");
	$("#" + id + " > a").removeAttr("href");
	$("#" + id).addClass("selected_form_event");
}

//○○指定
function setSelectedBoolean(name) {
	if (remove_tab($("." + name).html()) == "true") {
		$("#" + name + " > a").removeAttr("href");
		$("#" + name).addClass("selected_form_event_link_ok");
	}
}

//イベントをセットする
function setEvent() {

	//hiddenの値を書き換えた後、フォームをサブミットする
	$(".form_event").click(function() {
		if (!$(this).hasClass("selected_form_event")) {

			//日付チェック
			if ($(this).attr("id") == "rlsDate") {
				if (rangeCheck(
						$("select[name='rfdy']").val(),
						$("select[name='rfdm']").val(),
						$("select[name='rfdd']").val(),
						$("select[name='rtdy']").val(),
						$("select[name='rtdm']").val(),
						$("select[name='rtdd']").val()
						) == false) {
					 jAlert($("#JS00067").html(),$("#JS00066").html());
					 return false;
				}
			}

			//日付チェック
			if ($(this).attr("id") == "perfDate") {
				if (rangeCheck(
						$("select[name='pfdy']").val(),
						$("select[name='pfdm']").val(),
						$("select[name='pfdd']").val(),
						$("select[name='ptdy']").val(),
						$("select[name='ptdm']").val(),
						$("select[name='ptdd']").val()
						) == false) {
					 jAlert($("#JS00068").html(),$("#JS00066").html());
					 return false;
				}
			}

			changeFormParam($(this).attr("id"));
			getListHtml(1);
		}

	  return false; //リンクを無効にする
	});

}

//hiddenの値を書き換える
function changeFormParam(id) {

	nameAndValue = id.split("-");

	if (nameAndValue.length > 1) {
		//選択された大ジャンルの小ジャンルをすべて削除する
		//deleteSub("sg", nameAndValue[1]);

		//大ジャンルが選択された
		if (nameAndValue[0] == "lg") {
			deleteHidden("sg");
			deleteHidden("lg");
		}

		//小ジャンルが選択された
		if (nameAndValue[0] == "sg") {
			deleteHidden("sg");
			deleteHidden("lg");
		}

		//地域、都道府県の項目をすべて削除する
		if (nameAndValue[0] == "rg") {
			deleteHidden("rg");
			deleteHidden("pf");
		}

		//都道府県を全て削除する
		if (nameAndValue[0] == "pf") {
			deleteHidden("rg");
			deleteHidden("pf");
		}

		//発売方法の時
		if (nameAndValue[0] == "rlsKnd") {
			deleteHidden("rlsStatus");
			deleteHidden("rlsKnd");
		}

		//発売状況の時
		if (nameAndValue[0] == "rlsStatus") {
			deleteHidden("rlsStatus");
			deleteHidden("rlsKnd");
		}

		//発売日・受付日で絞込み
		if (nameAndValue[0] == "rlsIn" && $(".rlsIn").size() > 0) {
			deleteRDate();
			$(".rlsIn").html(nameAndValue[1]);
		}
		//公演日で絞込み
		else if (nameAndValue[0] == "perfIn" && $(".perfIn").size() > 0) {
			deletePDate();
			$(".perfIn").html(nameAndValue[1]);
		}
		else {
			$("#search_dtl_result_form form").append('<div style="display:none" class="'  + nameAndValue[0] + '">' + nameAndValue[1] + '</div>');
		}

	} else {
		setInputDate();
		if (nameAndValue == "cAsgnFlg") {
			setInputReserved("cAsgnFlg");
		}
		else if (nameAndValue == "bAsgnFlg") {
			setInputReserved("bAsgnFlg");
		}
		else if (nameAndValue == "includeSaleEnd") {
			setToggleBoolean("includeSaleEnd");
		}
		else if (nameAndValue == "rlsDate") {
			$(".rlsIn").html("false");
		}
		else if (nameAndValue == "perfDate") {
			$(".perfIn").html("false");
		}
	}
}

//第一引数で渡されたnameを持つinputのうち、valueがidSの上2桁にマッチする項目をすべて削除する
function deleteSub(name, idS) {
	var i;
	var id;
	var valS;

	id = idS.substring(0,2);

	for ( i = 0 ; i < $("." + name).size() ; i++ ) {
  	valS = remove_tab($("." + name + ":eq(" + i + ")").html());
		if (valS.substring(0,2) == id.substring(0,2)) {
			$("." + name + ":eq(" + i + ")").remove();
			i--;
		}
	}

}

//第一引数で渡されたnameを持つinputを全て削除する
function deleteHidden(name) {
	$("." + name).remove();
}


//タブと改行を削除する
function remove_tab(text){
	if (text != null && text != "") {
	  text = text.replace(/\t/g, "");
		text = text.replace(/\v/g, "");
		text = text.replace(/\r\n/g, "");//IE
		text = text.replace(/\n/g, "");//Firefox
	}
  return text;
}

//初期処理
function updateView() {

	$(".no_link selected").unbind("click");

	//全ての選択項目を削除する
	allResetSelected();

	//すべての小ジャンルラップを非表示にする
	allGenreSHide();

	//すべての都道府県ラップを非表示にする
	allPrefectureHide();

	//全ての発売状況ラップを非表示にする
	allRlsKndHide();

	//詳細検索の時
	if (searchMode == 1) {

		//小ジャンルの選択状態をセットする
		setSelectedSub("lg", "sg");

		//大ジャンルの選択状態をセットする
		setSelectedMain("lg", "sg", true);

		//年を設定する
		setYear("pfdy");
		setYear("ptdy");
		setYear("rfdy");
		setYear("rtdy");

		$(".period_selector").show(); //日付選択を表示する

		//日付をセットする
		setSelectDate();

		//サブ要素を選択状態にする
		setSelectedSub("rg", "pf");//都道府県

		//メイン要素を選択状態にしてサブ要素のラップ(#id-wrap)を表示状態にする
		setSelectedMain("rg", "pf", true);

		//○○指定
		$("#bc_asgn_wrap").show();
		setSelectedBoolean("cAsgnFlg"); //Cアサイン
		setSelectedBoolean("bAsgnFlg"); //Bアサイン
		setSelectedBoolean("includeSaleEnd"); //発売終了も含む

		//もっと詳しくを非表示にする
		$("#more_search").hide();

	}
	//サブジャンル・簡易版の時
	else {

		//簡易版の時
		if (searchMode == 2) {
			setSelectedMain("lg", "sg", false);
			$("#bc_asgn_wrap").hide();
		}

		//サブジャンルの時
		if (searchMode == 3) {

			allSubGenHide();
			allSubGenConHide();
			setSelectedSubGenre();

			//小ジャンルの選択状態をセットする
			setSelectedSub("lg", "sg");

			//○○指定
			setSelectedBoolean("cAsgnFlg"); //Cアサイン
			setSelectedBoolean("bAsgnFlg"); //Bアサイン
			setSelectedBoolean("includeSaleEnd"); //発売終了も含む
		}

		//メイン要素を選択状態にする。サブ要素のラップ(#id-wrap)を表示状態にしない
		setSelectedMain("rg", "pf", false); //エリア
		$(".period_selector").hide(); //日付選択を非表示にする

	}

	setSelectedSub("rlsKnd", "rlsStatus"); //発売状況
	setSelectedMain("rlsKnd", "rlsStatus", true); //発売

	//○○日で絞り込み
	setSelectedRls("rlsIn"); //発売日・受付日
	setSelectedRls("perfIn"); //公演日

	//javaScriptUtilで設定しているno_linkのイベントを削除(押下条件はform_event内で判断する為)

	$(".no_link selected").unbind("click");

}

//イベントの追加
setEvent();
updateView();

//もっと詳しく
$("#more_search").click(function() {
	//検索モード 1:詳細 2:簡易 3:サブジャンル
	$(".searchMode").html("1");
	searchMode = 1;
	$(this).hide();
	updateView();
	return false;
});

});

