$(document).ready(function(){
	// indexOfの配列対応
	Array.prototype.myIndexOf = function(object){
		for(var i = 0; i < this.length; i++){
			if( this[i] == object ){
				return i;
			}
		}
		return -1;
	}
	// use searchPanelLib
	var pnLib = new PnLib();
	var formObj = document.f;
	// 初回表示時のパラメータ保持用(ドリルダウンajax用)
	pnLib.saveFirstParam($("form#paramForAjax input.firstParam"));
	//-----------------------------------------------------
	// ★ドリルダウン対象コンボボックス
	//-----------------------------------------------------
	$("select.drillCombo").change(function(){
		var changedCombo = this;
		// ■ドリルコンボを変更不可にする
		pnLib.setPanelDisable("select.drillCombo", true);
		// ■現在選択中のドリル項目を記憶しておく(コンボ更新後の再選択処理のため)
		var selectedOptions = {};
		$("select.drillCombo").each(function(key, val){
			selectedOptions[val.id] = $(val).children("option:selected").attr("value");
		});
		selectedOptions["GRDKC"] = $("select#GRDKC :selected").attr("value");
		selectedOptions["CITY"] = $("select#CITY :selected").attr("value");
		// ■各コンボの独自処理(変更したコンボの下位コンボの選択解除など)
		if( changedCombo.id == "BRDC" ){
			// メーカーを「こだわらない」にした場合、選択中の車種が上位250車種の中に出現してもselectedにしない
			if( changedCombo.value == "_n" ){
				formObj["CARC"].options.length = 1;
				formObj["CARC"].value = "_n";
				formObj["CARC"][0].selected = true;
				selectedOptions["CARC"] = "_n";
				formObj["GRDKC"].options.length = 1;
				formObj["GRDKC"].value = "_n";
				formObj["GRDKC"][0].selected = true;
				selectedOptions["GRDKC"] = "_n";
				pnLib.firstParam["GRDKC"] = "_n";
			} else {
				// 車種が複数指定中の場合は選択解除しない
				if( formObj["CARC"].value.search(/\*/) == -1 && changedCombo.value != formObj["CARC"].value.substring(0,2) ){
					formObj["CARC"].value = "_n";
					formObj["CARC"][0].selected = true;
					formObj["GRDKC"].value = "_n";
					formObj["GRDKC"][0].selected = true;
					selectedOptions["GRDKC"] = "_n";
					// 選択中のグレードとは別のブランドを選択した場合は、初回表示時のグレード括り縛りを解除
					pnLib.firstParam["GRDKC"] = "_n";
				}
			}
			// FMCC、MCC、GRDC、GRD⇒動線から考えて、メーカー変更時は必ず紐付かなくなるはずなので解除
			if( formObj["FMCC"] ){
				$(formObj["FMCC"]).remove();
				pnLib.firstParam["FMCC"] = "_n";
			}
			if( formObj["MCC"] ){
				$(formObj["MCC"]).remove();
				pnLib.firstParam["MCC"] = "_n";
			}
			if( formObj["GRDC"] ){
				$(formObj["GRDC"]).remove();
				pnLib.firstParam["GRDC"] = "_n";
			}
			if( formObj["GRD"] ){
				$(formObj["GRD"]).remove();
				pnLib.firstParam["GRD"] = "";
			}
		} else if( changedCombo.id == "CARC" ){
			// 車種を「こだわらない」にした場合、グレードコンボはリセット
			if( changedCombo.value == "_n" ){
				formObj["GRDKC"].options.length = 1;
				formObj["GRDKC"].value = "_n";
				formObj["GRDKC"][0].selected = true;
				selectedOptions["GRDKC"] = "_n";
				pnLib.firstParam["GRDKC"] = "_n";
			} else {
				// グレードが単数指定時、選択した車種と異なる車種のグレードだった場合は選択解除
				if( formObj["GRDKC"].value.search(/\*/) == -1 && changedCombo.value != formObj["GRDKC"].value.substring(0,7) ){
					formObj["GRDKC"].value = "_n";
					formObj["GRDKC"][0].selected = true;
					selectedOptions["GRDKC"] = "_n";
				// 車種1件かつグレード複数選択時は、その車種以外のグレードを選択解除
				} else if( changedCombo.value.search(/\*/) == -1 && formObj["GRDKC"].value.search(/\*/) >= 0 ){
					var buff = [];
					var grdkcList = formObj["GRDKC"].value.split(/\*/);
					$(grdkcList).each(function(key, val){
						if( changedCombo.value == val.substring(0,7) ){
							buff.push(val);
						}
					});
					// 複数グレードの中に選択した車種のグレードがあれば、そのグレードのみクエリに残す
					if( buff.length > 0 ){
						selectedOptions["GRDKC"] = buff.join("*");
					// まったく別の車種を選択⇒複数選択状態は放棄
					} else {
						formObj["GRDKC"].options.length = 1;
						formObj["GRDKC"].value = "_n";
						formObj["GRDKC"][0].selected = true;
						selectedOptions["GRDKC"] = "_n";
						pnLib.firstParam["GRDKC"] = "_n";
					}
				}
			}
			// FMCC、MCC、GRDC、GRD⇒FMCCが車種と紐付かなくなった時点で解除
			if( formObj["FMCC"] ){
				// 単数FMC
				if( formObj["FMCC"].value.search(/\*/) == -1 && changedCombo.value != formObj["FMCC"].value.substring(0,7) ){
					$(formObj["FMCC"]).remove();
					pnLib.firstParam["FMCC"] = "_n";
					if( formObj["MCC"] ){
						$(formObj["MCC"]).remove();
						pnLib.firstParam["MCC"] = "_n";
					}
					if( formObj["GRDC"] ){
						$(formObj["GRDC"]).remove();
						pnLib.firstParam["GRDC"] = "_n";
					}
					if( formObj["GRD"] ){
						$(formObj["GRD"]).remove();
						pnLib.firstParam["GRD"] = "";
					}
				// 複数FMC
				} else if( formObj["FMCC"].value.search(/\*/) >= 0 ){
					// MCC、GRDC、GRD指定時はFMCCも必ず単数指定なので無条件で解除
					if( formObj["MCC"] ){
						$(formObj["MCC"]).remove();
						pnLib.firstParam["MCC"] = "_n";
					}
					if( formObj["GRDC"] ){
						$(formObj["GRDC"]).remove();
						pnLib.firstParam["GRDC"] = "_n";
					}
					if( formObj["GRD"] ){
						$(formObj["GRD"]).remove();
						pnLib.firstParam["GRD"] = "";
					}
					// CARCと紐付かないFMCCを排除
					var buff = [];
					var fmcList = formObj["FMCC"].value.split(/\*/);
					$(fmcList).each(function(key, val){
						if( changedCombo.value == val.substring(0,7) ){
							buff.push(val);
						}
					});
					if( buff.length > 0 ){
						formObj["FMCC"].value = buff.join("*");
						pnLib.firstParam["FMCC"] = buff.join("*");
					} else {
						$(formObj["FMCC"]).remove();
						pnLib.firstParam["FMCC"] = "_n";
					}
				}
			}
			// 車種コンボを変更した場合はコンボ自体を更新するので、いかなる場合でもグレード括り縛りは解除
			pnLib.firstParam["GRDKC"] = "_n";
		// 地域コンボを変更した場合は、必ず市区町村縛りを完全にクリアする
		} else if( changedCombo.id == "AR" ){
			formObj["CITY"].options.length = 1;
			formObj["CITY"].value = "_n";
			formObj["CITY"][0].selected = true;
			selectedOptions["CITY"] = "_n";
			if( pnLib.firstParam["CITY"]) pnLib.firstParam["CITY"] = "_n";
		}
		// ■ドリルコンボと除外項目以外のパラメータを付与
		var paramStr = "?";
		var drillCombo = ["BRDC", "CARC", "AR", "BT"];
		$(drillCombo).each(function(key, val){
			paramStr += val +"="+ formObj[val].value +"&";
		});
		var exceptions = ["PAGE", "PN", "PTN", "next"];// 除外項目
		$.each(pnLib.firstParam, function(key, val){
			if( drillCombo.myIndexOf(key) != -1 ) return true;// ※continue;
			if( exceptions.myIndexOf(key) != -1 ) return true;// ※continue;
			if( key == "KW" || key == "kwlist") val = encodeURI(val);
			paramStr += key +"="+ val +"&";
		});
		var pluralParams = {};
		// ■ajax
		$.ajax({
			type		: "GET",
			url			: "/usedcar/modules/combo.php"+ paramStr.replace(/&$/, ""),
			dataType	: "json",
			success		: function(res, type){
				// 元々選択されていた各コンボの項目のうち、今回選択した項目を上書き
				selectedOptions[changedCombo.id] = changedCombo.value;
				pnLib.updateCombo(changedCombo.id, res, selectedOptions);
			}
		});
		// ■ドリルコンボを変更可能にする
		pnLib.setPanelDisable("select.drillCombo", false);
	});
	//-----------------------------------------------------
	// ★グレード複数選択画面へのリンク
	//-----------------------------------------------------
	$("a#grade-multi-select").click(function(){
		if( formObj.CARC.value == "" || formObj.CARC.value == "_n" ){
			alert("車名を選択してください。");
			return false;
		}
		var params = pnLib.getSubmitParam(formObj);
		var paramStr = "";
		$.each(params, function(key, val){
			if( key == "STID" || key == "MCC" || key == "BRDC" || key == "GRDC" || key == "GRD" || key == "GRDKC" ) return true;// ※continue;
			paramStr += "&"+ key +"="+ val;
		});
		location.href = "/usedcar/grade_select.php?STID=CS212700"+ paramStr;
		return false;
	});
	//-----------------------------------------------------
	// ★地域複数選択画面へのリンク
	//-----------------------------------------------------
	$("a#area-multi-select").click(function(){
		var params = pnLib.getSubmitParam(formObj);
		var paramStr = "";
		$.each(params, function(key, val){
			if( key == "STID" ) return true;// ※continue;
			paramStr += "&"+ key +"="+ val;
		});
		location.href = "/usedcar/area_select.php?STID=CS210710&BKLIST=1"+ paramStr;
		return false;
	});
	//-----------------------------------------------------
	// ★問合せボタン
	//-----------------------------------------------------
	var openNewWindowOptionMtoM = document.f3["openNewWindowOptionMtoM"].value;
	var openNewWindowOptionMtoF = document.f3["openNewWindowOptionMtoF"].value;
	$("a.toiawase-button-forJS").each(function(idx, btn){
		$(btn).click(function(){
			var optionStr = ( this.className.search("toiawase-button1") != -1 ) ? openNewWindowOptionMtoM : openNewWindowOptionMtoF;
			newwin_winopenfunc(this.href, this.target, optionStr, 1);
			return false;
		});
	});
	//-----------------------------------------------------
	// ★submit
	//-----------------------------------------------------
	$("form#f").submit(function(){
		var params = pnLib.getSubmitParam(formObj);
		var formObj2 = document.f2;
		// 値反転チェック
		if( params.PMIN && params.PMAX && parseInt(params.PMIN) > parseInt(params.PMAX) ){
			alert("価格の上限／下限が反転しています。");
			return false;
		}
		if( params.YMIN && params.YMAX && parseInt(params.YMIN) > parseInt(params.YMAX) ){
			alert("年式の上限／下限が反転しています。");
			return false;
		}
		if( params.SMIN && params.SMAX && parseInt(params.SMIN) > parseInt(params.SMAX) ){
			alert("走行距離の上限／下限が反転しています。");
			return false;
		}
		if( params.HMIN && params.HMAX && parseInt(params.HMIN) > parseInt(params.HMAX) ){
			alert("排気量の上限／下限が反転しています。");
			return false;
		}
		$.each(params, function(key, val){
			if( key == "" || val == "" ) return false;// ※continue;
			$(formObj2).append(
				$(document.createElement("input")).attr({
					type  : "hidden",
					name  : key,
					value : val
				})
			);
		});
		formObj2.submit();
		return false;
	});
	//-----------------------------------------------------
	// ★MPログ出力リンク
	//-----------------------------------------------------
	$("a.mpjump-link").each(function(idx, el){
		$(el).click(function(){
			var logStr = this.className.split(" ")[1].replace("mpjump-val-", "");
			// ■ajax
			$.ajax({
				type	: "POST",
				url		: "/usedcar/apllog.php",
				data	: logStr
			});
			var winObj = window.open(el.href, "_blank");
			winObj.focus();
			return false;
		});
	});
	//-----------------------------------------------------
	// ★検索パネル開閉
	//-----------------------------------------------------
	var alLinkList = $("a.al-link-forJS");
	$("a#panel-toggle").click(function(){
		if( this.className == "a_close" ){
			formObj.PN.value = "1";
			this.className = "a_open";
			this.innerHTML = "閉じる";
			$("div#panel2-3").show();
			$("span#panel-explanation").hide();
		} else {
			formObj.PN.value = "0";
			this.className = "a_close";
			this.innerHTML = "もっと詳しい条件を設定する";
			$("div#panel2-3").hide();
			$("span#panel-explanation").show();
		}
		// 自画面遷移リンクのPNパラメータを書き換える
		$(alLinkList).each(function(){
			this.href = this.href.replace(/PN=[0|1]{1}/, "PN="+formObj.PN.value);
		});
	});
	//-----------------------------------------------------
	// ★クリアボタン
	//-----------------------------------------------------
	$("a#a_clear").click(function(){
		pnLib.allClear(pnLib.firstParam);
		return false;
	});
	//-----------------------------------------------------
	// ★チェックボックス選択禁止処理
	//-----------------------------------------------------
	// 車のタイプ「ハイブリッド車」⇔エンジン種別「ハイブリッド」
	$("input#sp-H").click(function(){
		if( formObj.FUEL.selectedIndex != 0 && formObj.FUEL.selectedIndex != 3 ){
			alert("エンジン種別で「ハイブリッド」以外が選択されています。");
			return false;
		}
	});
	$("select#select-fuel").change(function(){
		if( this.value != "3" && this.value != "" && $("input#sp-H").attr("checked") == true ){
			alert("車のタイプで「ハイブリッド」が選択されています。");
			formObj.FUEL.selectedIndex = 0;
			return false;
		}
	});
	// 「軽自動車」⇔「軽自動車を除く」
	$("input#sp-K").click(function(){
		if( formObj.NOTKEI.checked == true ){
			alert("その他の項目で「軽自動車を除く」が選択されています。");
			return false;
		}
	});
	$(formObj.NOTKEI).click(function(){
		if( $("input#sp-K").attr("checked") == true ){
			alert("車のタイプで「軽自動車」が選択されています。");
			return false;
		}
	});
	// 「商用車・バン」⇔「商用車・バンを除く」
	$("input#sp-S").click(function(){
		if( formObj.NOTBV.checked == true ){
			alert("その他の項目で「商用車・バンを除く」が選択されています。");
			return false;
		}
	});
	$(formObj.NOTBV).click(function(){
		if( $("input#sp-S").attr("checked") == true ){
			alert("車のタイプで「商用車・バン」が選択されています。");
			return false;
		}
	});
	//-----------------------------------------------------
	// ★ヘルプアイコン
	//-----------------------------------------------------
	$("a.help-icon").click(function(){
		var helpType = this.id.replace(/help-icon-/, "");
		helpType = helpType.replace(/\d$/, "");
		if( helpType != "" ){
			newwin_winopenfunc('/help/CS/help_'+ helpType +'.html', '_blank', 'width=620,height=480,scrollbars=yes,location=no,menubar=no,resizable=no');
		}
		return false;
	});
});

