/* 
 * HomePLAZA共通javascript関数ファイル
 */

// お気に入り画面からこの画面を親画面として認識するためのフラグ
var srch_b_exist_flg = 1;

/*
 * チェックボックスのチェックされているもののvalueを配列にして返す関数
 * チェックボックスがすべてチェックされていない場合はすべてチェックと同じ値を返す
 * また、前画面からのチェックが残っている場合は、そのチェックを反映した値を返す
 * 特集ページなど、前画面からのチェック格納オブジェクトが存在しない場合にも対応する
 * （オブジェクトのNULLチェックを行う）
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、チェックボックスなどのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function checkedDetailValues(detailObj, mclObj){
	if(!detailObj && window.document.form2 && window.document.form2.detail){
		detailObj = window.document.form2.detail;
	}
	if(!mclObj && window.document.form1 && window.document.form1.matrix_check_list){
		mclObj = window.document.form1.matrix_check_list;
	}
	return checkedDetailValuesCore(detailObj, mclObj);
}

// チェックボックスのチェックされているもののvalueを配列にして返す関数
function checkedDetailValuesCore(detailObj, mclObj){
	values = new Array();
	var index = 0;
	var boxNum = detailObj.length;
	// まずは純粋にチェックされた値を取得する
	values = checkedDetailValues2(detailObj);
	// チェックボックスが1つだけの場合と複数の場合で処理をわける必要がある
	if(boxNum > 1){
		// １つもチェックされていない場合
		if(!values || values.length < 1) {
			// 20040524 sshimoya add 前からのチェックがあって、1つもチェックされてない場合はチェックなしを返す
			if(mclObj && mclObj.value != ""){
				;
			// 1つもチェックされてない場合、すべてチェックされたものと同じ動きをする
			}else{
				for (j = 0; j < detailObj.length; j++) {
					values[j] = detailObj[j].value;
				}
			}
		}
	}else{
		// 20040524 sshimoya add 前からのチェックがあって、1つもチェックされてない場合はチェックなしを返す
		if(mclObj && mclObj.value != ""){
			if(detailObj.checked == true){
				values[index] = detailObj.value;
			}
		}else{
			values[index] = detailObj.value;
		}
	}
	return values;
}


/*
 * チェックボックスのチェックされているもののvalueを配列にして返す関数
 * 純粋にチェックされているものの値を返す
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、チェックボックスなどのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function checkedDetailValues2(detailObj){
	if(!detailObj && window.document.form2 && window.document.form2.detail){
		detailObj = window.document.form2.detail;
	}
	return checkedDetailValuesCore2(detailObj);
}
// チェックボックスの純粋にチェックされているものの値を返す
function checkedDetailValuesCore2(detailObj){
	values = new Array();
	var index = 0;
	var boxNum = detailObj.length;
	if(boxNum > 1){
    for (i = 0; i < detailObj.length; i++) {
      if (detailObj[i].checked == true) {
				values[index] = detailObj[i].value;
				index++;
      }
    }
	}else{
		if (detailObj.checked == true){
			values[index] = detailObj.value;
		}
	}

	return values;
}
// チェックボックスの純粋にチェックされているものの値とIDを返す
function checkedDetailValuesID(detailObj){
	results = new Array();
	values = new Array();
	ids = new Array();
	var index = 0;
	var boxNum = detailObj.length;
	if(boxNum > 1){
    for (i = 0; i < detailObj.length; i++) {
      if (detailObj[i].checked == true) {
				values[index] = detailObj[i].value;
				ids[index] = detailObj[i].id;
				index++;
      }
    }
	}else{
		if (detailObj.checked == true){
			values[index] = detailObj.value;
		// ### 20060523 sshimoya bugfix
//			ids[index] = detailObj[i].id;
			ids[index] = detailObj.id
		}
	}
	
	results["value"] = values;
	results["id"] = ids;
	return results;
}


/* 
 * 前までの画面でチェックされたものをHidden項目に保持
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function setMatrixCheckedList(mclObj){
	if(!mclObj){ 
		if(window.document.form1 && window.document.form1.matrix_check_list){
			mclObj = window.document.form1.matrix_check_list;
		}else{
			return;
		}
	}
	return setMatrixCheckedListCore(mclObj);
}
// 前までの画面でチェックされたものをHidden項目に保持
function setMatrixCheckedListCore(mclObj){
	var strCurrVal = mclObj.value;
	values = checkedDetailValues2();
	tmpVals = removeAlreadyClicked(values, strCurrVal);

	var strValues = tmpVals.join(",");
	if(strCurrVal != null && strCurrVal != ""){
		if(strValues != null && strValues != ""){
			strCurrVal += "," + strValues;
		}
	}else{
		strCurrVal = strValues;
	}
	mclObj.value = strCurrVal;
//	window.document.form2.matrix_check_list.value = strCurrVal;
}


/* 
 * チェックされているもののリスト配列の中からHidden項目に含まれるものは除いて配列を再構成する関数
 */
function removeAlreadyClicked(values, currStr){
	tmpVals = new Array();
	for(var i = 0; i < values.length; i++){
		var tmpStr = values[i];
		if(currStr.indexOf(tmpStr) == -1){
			tmpVals = arrayPush(tmpVals, tmpStr);
		}
	}

	return tmpVals;
}

/* 
 * 前画面まででチェックされていたチェックボックスをチェックする
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function checkedBoxCheck(chkForm, mclObj, chkboxId){
	if(!chkForm && window.document.form2){
		chkForm = window.document.form2;
	}
	if(!mclObj && window.document.form1 && window.document.form1.matrix_check_list){
		mclObj = window.document.form1.matrix_check_list;
	}
	if(!chkboxId){
		chkboxId = "cbPre";
	}
	checkedBoxCheckCore(chkForm, mclObj, chkboxId);
}
// 前画面まででチェックされていたチェックボックスをチェックする
function checkedBoxCheckCore(chkForm, mclObj, chkboxId){
	// 20040526 sshimoya add null check
	if(chkForm && mclObj){
		var len = chkForm.elements.length;
		//var preCheckValue = window.document.form2.matrix_check_list.value;
		var preCheckValue = mclObj.value;
		for (i = 0; i < len; i++){
			if(chkForm.elements[i].id){
				var idStr = chkForm.elements[i].id;
				// チェックBOXの判定
				if(idStr.indexOf(chkboxId) == 0){
					var obValue = chkForm.elements[i].value;
					// 該当チェックBOXのvalueがhidden項目のmatrix_check_listに含まれるか判定
					if(preCheckValue.indexOf(obValue) >= 0){
						chkForm.elements[i].checked = true;
					}
				}
			}
		}
	}
}

/* 
 * フォームをリセットする関数
 * 同時に、引数のオブジェクトリストの値をすべて空に設定する
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function resetForm(pFormName, pResObjList){
	if(!pResObjList && window.document.form1 && window.document.form1.matrix_check_list){
		pResObjList = new Array();
		pResObjList = arrayPush(pResObjList, window.document.form1.matrix_check_list);
	}
	resetFormCore(pFormName, pResObjList)
}
// フォームをリセットする関数
function resetFormCore(formName, resObjList){
	if(formName){
		formName.reset();
	}
	if(resObjList){
		var resObjSize = resObjList.length;
		for(var i = 0; i < resObjSize; i++){
			if(resObjList[i]){
				resObjList[i].value = "";
			}
		}
	}
}

/* 
 * ページ遷移関数
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function pagejump(pPage, formObj, cmdValue) {
	if(!formObj && window.document.form1){
		formObj = window.document.form1;
	}
	if(!cmdValue){
		cmdValue = "srch2";
	}
	pagejumpCore(pPage, formObj, cmdValue);
}
// ページ遷移関数
function pagejumpCore(page, formObj, cmdValue) {
  formObj.begin.value = (page-1) * formObj.count.value+1;
  formObj.cmd.value = cmdValue;
	setMatrixCheckedList();
  formObj.submit();
}


/* 
 * ソート変更関数
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function changeSortOrder(pSortType, formObj, cmdValue) {
	if(!formObj && window.document.form1){
		formObj = window.document.form1;
	}
	if(!cmdValue){
		cmdValue = "srch2";
	}
	changeSortOrderCore(pSortType, formObj, cmdValue);
}
// ソート変更関数
function changeSortOrderCore(sortType, formObj, cmdValue) {
  formObj.sort.value = sortType;
  formObj.cmd.value = cmdValue;
// ### 20060228 sshimoya delete for ページ番号はchangeSortOrderCoreで設定する start
	formObj.begin.value = "1";
// ### 20060228 sshimoya delete for ページ番号はchangeSortOrderCoreで設定する end
	setMatrixCheckedList();
  formObj.submit();
}


/* 
 * ソート指定セレクトBOXが変化したときに行われる処理
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function changeSortSelect(pSelObj, formObj, cmdValue) {
	if(!formObj && window.document.form1){
		formObj = window.document.form1;
	}
	if(!cmdValue){
		cmdValue = "srch2";
	}
	changeSortSelectCore(pSelObj, formObj, cmdValue);
}
// ソート指定セレクトBOXが変化したときに行われる処理
function changeSortSelectCore(selObj, formObj, cmdValue){
	var selIndex = selObj.selectedIndex;
	var selVal = selObj.options[selIndex].value;
// ### 20060228 sshimoya delete for ページ番号はchangeSortOrderCoreで設定する start
//	formObj.begin.value = "1";
// ### 20060228 sshimoya delete for ページ番号はchangeSortOrderCoreで設定する end
	changeSortOrder(selVal, formObj, cmdValue);
}


/* 
 * windowを開く
 * 
 * Window name 引数を省略すると"_brank"指定となる。
 * 各サイズ引数は、省略すると未指定（親画面と同一サイズ）となる。
 * 各項目引数は省略するとすべて"yes"となる。
 * 指定した場合は値がそのまま代入されるので、"yes"の場合は "1" もしくは "yes"
 * "no"の場合は "0" もしくは "no" を指定すること。
 */
function openWin2(adrs, pWinName, pWidth, pHeight, pToolbar, pLocation, pDirectories, pStatus, pMenubar, pScrollbars, pResizable) {
	var winName = (pWinName) ? pWinName : "_brank";
	var propStr = "left=10,top=10";
	if(pWidth){
		propStr += ",width=" + pWidth;
	}
	if(pHeight){
		propStr += ",height=" + pHeight;
	}
	
	propStr += ",toolbar=" + (pToolbar ? pToolbar : "yes");
	propStr += ",location=" + (pLocation ? pLocation : "yes");
	propStr += ",directories=" + (pDirectories ? pDirectories : "yes");
	propStr += ",status=" + (pStatus ? pStatus : "yes");
	propStr += ",menubar=" + (pMenubar ? pMenubar : "yes");
	propStr += ",scrollbars=" + (pScrollbars ? pScrollbars : "yes");
	propStr += ",resizable=" + (pResizable ? pResizable : "yes");

	w = window.open(adrs, winName, propStr);
	return w;
}


/* 
 * 郵便番号検索windowを開く
 * 
 */
function open_adrs(){
	openWin2("postsearch", "search", "420", "330", "0", "0", "0", "0", "0", "1", "1")
}


/* 
 * 資料請求詳細windowを開く
 * 
 */
function open_win(){
	openWin2("/common/form_info.html", "info", "680", "480", "1", "0", "0", "0", "0", "1", "1");
//	window.open("/common/form_info.html", "info", "width=680,height=480,resizable,scrollbars,toolbar=yes,location=no");
}


/* 
 * 「すべて」をクリックしたときに行われる処理
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、前画面までのチェック物件などのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function chkAllChk(chkAllObj, chksForm) {
		if(!chkAllObj && window.document.allCheck && window.document.form2.allCheck){
			chkAllObj = window.document.form2.allCheck;
		}
		if(!chksForm && window.document.form2){
			chksForm = window.document.form2;
		}
	chkAllChkCore(chkAllObj, chksForm);
}
// 「すべて」をクリックしたときに行われる処理
function chkAllChkCore(chkAllObj, chksForm){
	if(chksForm){
		// 「すべて」にチェックを入れた場合には、detailすべてにチェックを加える
		if(window.document.form2.allCheck.checked){
			var len = chksForm.elements.length;
			for (i = 0; i < len; i++){
				if(chksForm.elements[i].id){
					var idStr = chksForm.elements[i].id;
					// チェックBOXの判定
					if(idStr.indexOf("cbPre") == 0){
						chksForm.elements[i].checked = true;
					}
				}
			}
		}
		// 「すべて」からチェックをはずした場合には何もしない
		else{
			;
		}
	}
}


/*
 * 比較表示ボタンが押されたときに行われる処理
 * チェックボックスのチェック状況を取得して、該当する物件のマトリクスページに遷移する
 * また、前画面からのチェックが残っている場合は、そのチェックを反映した物件を選択する
 * 特集ページなど、前画面からのチェック格納オブジェクトが存在しない場合にも対応する
 * （オブジェクトのNULLチェックを行う）
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、チェックボックスなどのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function compareDisp(detailObj, mclObj){
		if(!detailObj && window.document.form2 && window.document.form2.detail){
			detailObj = window.document.form2.detail;
		}
		if(!mclObj && window.document.form1 && window.document.form1.matrix_check_list){
			mclObj = window.document.form1.matrix_check_list;
		}
		return compareDispCore(detailObj, mclObj);
}
// 比較表示ボタンが押されたときに行われる処理
function compareDispCore(detailObj, mclObj){
	values = checkedDetailValues(detailObj, mclObj);

	// 前までの画面でチェックされたものの格納オブジェクトがパラメータとして渡されている場合は
	// その値を加味する
	if(mclObj && mclObj.value != ""){
		var strHiddenValue = mclObj.value;
		tmpVals = removeAlreadyClicked(values, strHiddenValue);

		hiddenValues = new Array();
		if(strHiddenValue != null && strHiddenValue != ""){
			hiddenValues = strHiddenValue.split(",");
		}

		values = hiddenValues.concat(tmpVals);
	}
	
	var adrs = "/cgi-perl/matrix.cgi?";
	if(window.matrixUrl){
		adrs = window.matrixUrl;
	}
	
	idVals = new Array();
	ukeVals = new Array();
	userVals = new Array();
	for(i = 0; i < values.length; i++){
		tmpValArray = values[i].split("_");
		idVals = arrayPush(idVals, tmpValArray[1]);
		ukeVals = arrayPush(ukeVals, tmpValArray[6]);
		userVals = arrayPush(userVals, tmpValArray[0]);
	}

	adrs += "id=" + idVals.join(",");
	adrs += "&uke=" + ukeVals.join(",");
	adrs += "&user=" + userVals.join(",");
	window.location.href = adrs;

}


/*
 * 資料請求ボタンが押されたときに行われる処理
 * チェックボックスのチェック状況を取得して、該当する物件の資料請求ページを開く
 * また、前画面からのチェックが残っている場合は、そのチェックを反映した物件を選択する
 * 特集ページなど、前画面からのチェック格納オブジェクトが存在しない場合にも対応する
 * （オブジェクトのNULLチェックを行う）
 * また、資料請求ページのURLは、前画面の状態により動的に変化するため、
 * 各画面のjavascriptグローバル変数（変数名=mailFormAdrs）として定義しておく必要があるので注意
 * 
 * 共通化に伴い、既存の関数をAdaptor化して、チェックボックスなどのオブジェクトを
 * 引数として渡し、コアの処理部分はCore関数として、
 * 各個別オブジェクトに依存しないようにした
 * Adaptor化して関数名は残したが、引数はオブジェクトに変更した。
 * 引数を渡さない場合、デフォルトのオブジェクトを扱う。
 * 現行、この関数を呼び出す箇所の処理対象オブジェクトはすべて同じ名前のため、
 * 各呼び出し部分を、引数なしに変更する。
 */
function siryoSeikyu(pDetail, pMailFormUrl, detailObj, mclObj){
		if(!pMailFormUrl && window.mailFormAdrs){
			pMailFormUrl = window.mailFormAdrs;
		}
		if(!detailObj && window.document.form2 && window.document.form2.detail){
			detailObj = window.document.form2.detail;
		}
		if(!mclObj && window.document.form1 && window.document.form1.matrix_check_list){
			mclObj = window.document.form1.matrix_check_list;
		}
		return siryoSeikyuCore(pDetail, pMailFormUrl, detailObj, mclObj);
}
// 資料請求ボタンが押されたときに行われる処理
function siryoSeikyuCore(pDetail, pMailFormUrl, detailObj, mclObj){

	var values = new Array();

	// 引数にDetailが送られてこなかった場合はチェックされた物件のDetailを取得する
	if(!pDetail){
		values = checkedDetailValues(detailObj, mclObj);
//		currValues = checkedDetailValues();
		// 前までの画面でチェックされたものの格納オブジェクトがパラメータとして渡されている場合は
		// その値を加味する
		if(mclObj && mclObj.value != ""){
			var strHiddenValue = mclObj.value;
			tmpVals = removeAlreadyClicked(values, strHiddenValue);

			hiddenValues = new Array();
			if(strHiddenValue != null && strHiddenValue != ""){
				hiddenValues = strHiddenValue.split(",");
			}

			values = hiddenValues.concat(tmpVals);
		}
	}else{
		// 引数にDetailが送られてきた場合は、その物件のみの資料請求を行う
		var escapeDetail = escape(pDetail);
		while(escapeDetail.indexOf("+") >= 0){
			escapeDetail = escapeDetail.replace("+", "%2B");
		}
		values[0] = escapeDetail;
	}
	// 20050228 個別資料請求対応 end

//	var lMailFormAdrs = mailFormAdrs;
	//var adrs = "w_Servlet?cmd=mailform2&type=$!type&tmpl=$!tmpl&area=$!area";
	for(i = 0; i < values.length; i++){
		//adrs += "&detail=" + values[i];
		pMailFormUrl += "&detail=" + values[i];
	}

	openWin2(pMailFormUrl);

}


/*
 * 画面のロード時に、各画面共通で行われる処理をこの関数に記述する
 * 各画面のロード時にコールされる関数（onLoadFuncなど）の中に、この関数を
 * コールする記述を加えておく必要があるので注意
 * この関数は、原則すべての画面ロード時にコールされるので、
 * この関数からコールされる関数は、すべての画面において実行されても
 * エラーが発生しないように注意する必要がある。
 * 特に「オブジェクトが存在しません」エラーに注意
 */
function onLoadFuncCommon(){
	// 以前にチェックされていたチェックBOXにチェックをつける
	checkedBoxCheck();
	// 2006/05/02 saito modify for history start
	// お気に入り登録件数の表示を行う
	if(self['dispFavorBknNum']){
		dispFavorBknNum(window, "favorBknNum");
	}
	// 履歴登録件数の表示を行う
	if(self['dispHistoryBknNum']){
		dispHistoryBknNum(window, "historyBknNum");
	}
	// 2006/05/02 saito modify for history end
}


/* DreamWeaver script 群 start */
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/* DreamWeaver script 群 end */

// 資料請求フォームのリセットボタン押下時に、
// 各入力項目を空白にする関数
function resetReqForm(pReqForm){
	var reqForm = pReqForm;
	if(!pReqForm){
		reqForm = window.document.reqform;
	}
	var exceptList = new Array();
	exceptList.push("set_cookie");
	exceptList.push("optin_flg");
	exceptList.push("ssl_use_flg1");
	exceptList.push("ssl_use_flg2");
	resetFormWhite(reqform, exceptList);
}


// 資料請求フォームのsubmitボタン押下時に行われる処理
// SSLチェックオブジェクトのチェックを見てSSL送信するか否かを判定する
function submitSslCheck(sslChkObj, mailFormForm, pSslUrl, pNoSslUrl){
	if(!mailFormForm && window.document.reqform){
		mailFormForm = window.document.reqform;
	}
	if(!pSslUrl && sslUrl){
		pSslUrl = window.sslUrl;
	}
	if(!pNoSslUrl && noSslUrl){
		pNoSslUrl = window.noSslUrl;
	}
	if(sslChkObj.checked){
		mailFormForm.action = pSslUrl;
	}else{
		mailFormForm.action = pNoSslUrl;
	}
	mailFormForm.submit();
}


/* 
 * マトリクスwindowを開く
 * 
 */
function openMatrixPopup(pUrl){
//	matrixWin = window.open(pUrl, "MatrixPopup", "location=yes,menubar=yes,resizable=yes,status=yes,toolbar=yes,scrollbars=yes,left=10,top=10,width=800,height=500");
	matrixWin = openWin2(pUrl, "MatrixPopup", "800", "500", "1", "1", "0", "1", "1", "1", "1");
	matrixWin.focus();
}

/*
 * 再検索フォームにおいて特定SELECTオブジェクトの値のみを
 * 指定されたINDEX分変更して再検索を行う関数
 * 「500万円予算をUP」リンクなどに対応する。
 * 第1引数	pForm				再検索FORMオブジェクト
 * 第2引数	pChgObj			変更条件SELECTオブジェクト
 * 第3引数	pChgIndex		SELECTオブジェクトのselectedIndexを相対的に変更する値
 * 第4引数	pFlgObj			再検索フラグオブジェクト
 * 
 * 20051012 sshimoya add for particular
 */
function simpleReSrch(pForm, pChgObj, pChgIndex, pFlgObj){
	if(pForm && pChgObj){
		pForm.reset();
		var selIndex = pChgObj.selectedIndex;
		var objVal = pChgObj[selIndex].value;
//		if(objVal != "max" && objVal != "min" && selIndex + pChgIndex >= 0 && selIndex + pChgIndex < pChgObj.length){
		if(selIndex + pChgIndex >= 0 && selIndex + pChgIndex < pChgObj.length){
			pChgObj.options[selIndex + pChgIndex].selected = true;
		}
		if(pFlgObj){
			pFlgObj.value = 1;
		}
		pForm.submit();
	}
}


function goShiborikomi(){
	if(!chkUpperLower(document.formShibori.money2, document.formShibori.money1)){
		alert("下限価格が上限価格を上回っています。");
		return false;
	}
	if(!chkUpperLower(document.formShibori.senyu2, document.formShibori.senyu1)){
		alert("下限専有面積が上限専有面積を上回っています。");
		return false;
	}
	document.formShibori.submit();
}

function chkUpperLower(pUpperObj, pLowerObj){
	var upperSelIndex = pUpperObj.selectedIndex;
	var lowerSelIndex = pLowerObj.selectedIndex;
	var upperVal = pUpperObj[upperSelIndex].value;
	var lowerVal = pLowerObj[lowerSelIndex].value;
	if(upperVal != "max" && lowerVal != "min"){
		if(upperVal - 0 <= lowerVal - 0){
			return false;
		}
	}
	return true;
}

/*
 * 引数にて渡されたエレメント名を持つチェックボックスに対して
 * 「すべてチェック」をクリックした時の処理
 * 第1引数	subChkNm		フォームのエレメント名
 * 第2引数	pId				任意の名称 + "_" + 任意のコード
 * 第3引数	chkFlg			チェック「on」「off」フラグ
 * 
 * 20060404 saito add for particular, area and ensen.
 * author sshimoya
 */
function checkAllSub(subChkNm, pId, chkFlg){

	var subChkArray = document.form1.elements[subChkNm];

//	var flgIdNm = pId + "_flg";
//	var spanIdNm = pId + "_span";
//	var chkFlg = document.getElementById(flgIdNm).value == "0" ? true : false;
	if (!subChkArray.length) {
		var subChk = subChkArray;
		var subChkHead = pId.substr(pId.indexOf("_") + 1);
		if(subChk.value.indexOf(subChkHead) == 0){
			subChk.checked = chkFlg;
		}
	}
	
	for(var i = 0; i < subChkArray.length; i++){
		var subChk = subChkArray[i];
		var subChkHead = pId.substr(pId.indexOf("_") + 1);
		if(subChk.value.indexOf(subChkHead) == 0){
			subChk.checked = chkFlg;
		}
	}
/*
	if(chkFlg){
		document.getElementById(flgIdNm).value = "1";
		document.getElementById(spanIdNm).innerHTML = "チェックをはずす";
	}else{
		document.getElementById(flgIdNm).value = "0";
		document.getElementById(spanIdNm).innerHTML = "すべてチェック";
	}
*/
}
// 2006/05/09 saito add for history start
/*
 * 物件詳細画面のロード時に、各画面共通で行われる処理をこの関数に記述する
 * 第1引数	addVal		物件情報プライマリキー('_'で区切る)
 * 第2引数	formObj		フォームオブジェクト
 * 第3引数	type		物件種別
 */
//function onLoadFuncDetail(addVal, formObj){
function onLoadFuncDetail(addVal, formObj, type){
	// 物件情報を履歴に追加
// 2006/08/18 saito add for primary key check start
//	addHistory(addVal, formObj, "historyBknNum");
	var b = addHistory(addVal, formObj, "historyBknNum");
// 2006/08/18 saito add for primary key check end
	// 履歴情報ログ出力CGIの呼び出し
	//document.getElementById("historyCGIPath").innerHTML = '<img src="/cgi-perl/historylog.cgi" width="1" height="1"/>';
	//document.getElementById("historyCGIPath").innerHTML = '<img src="/cgi-perl/historylog.cgi?type=43" width="1" height="1"/>';
// 2006/08/18 saito modify for primary key check start
	// 物件情報の履歴追加処理に成功時のみ、ログを出力
	if (b) {
	//document.getElementById("historyCGIPath").innerHTML = '<img src="/cgi-perl/historylog.cgi?type=' + type + '" width="1" height="1"/>';
		document.getElementById("historyCGIPath").innerHTML = '<img src="/cgi-perl/historylog.cgi?type=' + type + '" width="1" height="1"/>';
	}
// 2006/08/18 saito modify for primary key check end

// 2006/06/06 saito add for history start
	if (!win_closed(window.opener)) {
		dispHistoryBknNum(window.opener, "historyBknNum");
	}
// 2006/06/06 saito add for history end
}
// 2006/05/09 saito add for history end

// 2006/06/06 saito add for history start
/*
 * 引数winVarで指定した子ウインドウまたは親ウインドウが開いていれば false 閉じていれば true を返す。
 * 第1引数	winVar		親ウインドウオブジェクト
 */
function win_closed(winVar) {
	var ua = navigator.userAgent
	if( !!winVar )
		if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )
			&& ua.indexOf('Win')!=-1 ) 
			return winVar.closed
		else return typeof winVar.document  != 'object'
	else return true
}
// 2006/06/06 saito add for history end

/** 
 * 画像の縦・横固定を調節する関数
 * 
 * 20060822 sshimoya add function
 */
function ajastImg(imgObj){
	// 調節前の画像サイズ変数
	var curWidth = imgObj.width;
	var curHeight = imgObj.height;
	
	// maxWidthとmaxHeightが設定されていない場合は調節しないため
	// max値にそれぞれ調節前の画像サイズを設定する
	var maxWidth = imgObj.getAttribute("maxWidth") ? imgObj.getAttribute("maxWidth") : curWidth;
	var maxHeight = imgObj.getAttribute("maxHeight") ? imgObj.getAttribute("maxHeight") : curHeight;

	// 横幅がMAXを超えている場合MAX幅で横固定にする
	if(curWidth > maxWidth){
		imgObj.width = maxWidth;
		// 縦幅変数値を横固定後の値に更新
		curHeight = imgObj.height;
		// 縦幅属性を削除
		imgObj.removeAttribute("height");
	}
	
	// 縦幅がMAXを超えている場合MAX幅で縦固定にする
	if(curHeight > maxHeight){
		imgObj.height = maxHeight;
		imgObj.removeAttribute("width");
	}
	
	return imgObj;
	
}


/**
 * タブ分け画像を表すクラス
 * 
 * コンストラクタの引数
 * 1 : (※必須) pImgObjArray 画像オブジェクトの配列
 * 2 : pSelColor             選択されているタブの背景色
 * 3 : pNoSelColor           選択されていないタブの背景色
 * 4 : pImgId                表示する画像タグのID値
 * 5 : pTabsTbodyName        タブを表示するテーブルのtbodyタグのname値
 * 6 : pTabName              タブの1つを表示するtdタグのkinde属性値
 * 
 * 必須引数はpImgObjArrayで、残りの属性は指定なし時には
 * 詳細画面間取り画像(0607renewal ver.)の設定値をデフォルト設定とする
 * 別にコンストラクタで指定しなくても、インスタンス作成後に個別で
 * 設定しても init メソッドで設定してもよい。
 */
function TabImages(pImgObjArray, pSelColor, pNoSelColor, pImgId, pTabsTbodyName, pTabName){
	// 画像表示に必要な設定メンバ変数群
	this.imgObjArray = pImgObjArray;
	this.selectedColor = pSelColor && pSelColor != "" ? pSelColor : "#D1EFF5";
	this.noSelectedColor = pNoSelColor && pNoSelColor != "" ? pNoSelColor : "transparent";
	this.imgId = pImgId && pImgId != "" ? pImgId : "madoriImg";
	this.tabsTbodyName = pTabsTbodyName && pTabsTbodyName != "" ? pTabsTbodyName : "tabHeaders";
	this.tabName = pTabName && pTabName != "" ? pTabName : "tabHead";
	
	// 現在表示している画像のINDEX(初期値:-1 は何も表示していないことを表す)
	this.curDispIndex = -1;
	
	/**
	 * 初期化メソッド
	 * 
	 * 画像表示必要なメンバ変数を設定するメソッド
	 * 引数はコンストラクタの 2 ～ 5 
	 * 別にコンストラクタで実行できる初期化だが一応メソッド化
	 */
	function TabImages_init(pSelColor, pNoSelColor, pImgId, pTabsTbodyName, pTabName){
		if(pSelColor && pSelColor != "")this.selectedColor = pSelColor;
		if(pNoSelColor && pNoSelColor != "")this.noSelectedColor = pNoSelColor;
		if(pImgId && pImgId != "")this.imgId = pImgId;
		if(pTabsTbodyName && pTabsTbodyName != "")this.tabsTbodyName = pTabsTbodyName;
		if(pTabName && pTabName != "")this.tabName = pTabName;
	}
	TabImages.prototype.init = TabImages_init;
	
	/**
	 * 画像表示メソッド
	 * 
	 * 引数
	 * 1 : (※必須) pIndex 表示する画像のINDEX
	 */
	function TabImages_dispTabImage(pIndex){
	
		if(pIndex >= 0 && $(this.imgId) && this.imgObjArray && this.imgObjArray.length > pIndex){
			// 画像を表示
			$(this.imgId).setAttribute("src", this.imgObjArray[pIndex].getAttribute("src"));
			$(this.imgId).setAttribute("baseUrl", this.imgObjArray[pIndex].getAttribute("baseUrl"));
	
			// 以下タブの背景色を変更する処理
			var tdObjs = $(this.tabsTbodyName).getElementsByTagName("td");
			var tabHeadObjs = new Array();
	
			// タブの背景色をすべてtaransparentに(初期化)
			for(i = 0; tdObjs && i < tdObjs.length; i++){
				if(tdObjs[i].getAttributeNode("kind") && 
				  tdObjs[i].getAttributeNode("kind").nodeValue == this.tabName 
				){
					tdObjs[i].style.backgroundColor = this.noSelectedColor;
					arrayPush(tabHeadObjs, tdObjs[i]);
				}
			}
		
			// タブの背景色を変更
			tabHeadObjs[pIndex].style.backgroundColor = this.selectedColor;
			
			// 現在の表示画像INDEXを設定
			this.curDispIndex = pIndex;
		}
	}
	TabImages.prototype.dispTabImage = TabImages_dispTabImage;
	
	return this;
}

// 2006/09/01 saito add for renewal0607 start start
function removeAllChild(obj) {
	if (!obj) {
		return null;
	}
	for(var i = 0; i < obj.childNodes.length; i++){
		obj.removeChild(obj.childNodes[i]);
	}
	return obj;
}
// 2006/09/01 saito add for renewal0607 end


// 2006/11/28 saito add for similar history of mansion start

/*
 * 新築マンション詳細画面は複数ページが存在するため、
 * 同一物件内でのページ遷移のたびにログが出力されないよう、
 * 履歴物件情報を格納したクッキーに物件情報が存在する限り、
 * ログ出力しないようにする。
 * 
 * 第1引数	addVal		物件情報プライマリキー('_'で区切る)
 * 第2引数	formObj		フォームオブジェクト
 * 第3引数	type		物件種別
 */
function onLoadFuncMansionDetail(addVal, formObj, type){
	if (checkAddHistory(addVal, d_cookieDiv, d_historyCookieMax) != 2) {
		onLoadFuncDetail(addVal, formObj, type)
	}
}
// 2006/11/28 saito add for similar history of mansion end

