
var LIST_PAGE = "./index.php";

// ソートタイプ
var SORT_TYPE_ASC	= "0";				// 昇順
var SORT_TYPE_DESC	= "1";				// 降順

var FilterTitle		= "抽出フィルタ";	// 抽出フィルタの表題
var FindTitle		= "検索条件";		// 検索条件の表題

//==============================================================================
//	ソート指定で再表示
//------------------------------------------------------------------------------
//	引    数：	ソートキー
//==============================================================================
function cfSorting( pSortKey ){

	// 既に設定済みのソートキーと同じ場合
	if(	document.frmConditions.hidSortKeys.value == pSortKey ){

		// ソートタイプに昇順と設定済みの場合
		if(document.frmConditions.hidSortType.value == SORT_TYPE_ASC){

			// 降順に変更
			document.frmConditions.hidSortType.value = SORT_TYPE_DESC;
		}else{

			// 昇順に変更
			document.frmConditions.hidSortType.value = SORT_TYPE_ASC;
		} 

	}else{

		// ソートキーを設定する
		document.frmConditions.hidSortKeys.value = pSortKey;

		// 昇順に変更
		document.frmConditions.hidSortType.value = SORT_TYPE_ASC;
	}

	// 再表示
	cfSubmit();
}

//==============================================================================
//	ソート指定をクリアし再表示
//==============================================================================
function cfResetSorting(){

	document.frmConditions.hidSortKeys.value = "";
	document.frmConditions.hidSortType.value = "";

	// 再表示
	cfSubmit();
}

//==============================================================================
//	フィルタ追加し再表示
//------------------------------------------------------------------------------
//	引    数：	フィルタ列
//				フィルタ設定値
//				フィルタ条件 (list_maker.phpのフィルタ定数参照)
//==============================================================================
function cfFiltering(){

	if( ! _FilteringConditionCheck(false) ) return;
	if( ! _FindConditionCheck(true) ) return;

	cfSubmit();
}

//==============================================================================
//	フィルタ条件をリセットし再表示する
//==============================================================================
function cfResetFiltering(){

	var _FieldNum = document.frmConditions["hidFilterCol[]"].length;

	for(i=0; i<_FieldNum; i++){

		document.frmConditions["selFilterValue[]"][i].value = "(BLANK)";
		document.frmConditions["selFilterType[]"][i].value = document.frmConditions.hidFilterDefaultType.value;
	}

	cfSubmit();
}

//------------------------------------------------------------------------------
//	抽出フィルタの入力をチェックする
//------------------------------------------------------------------------------
//	引    数：	全項目未入力の許可 (true=許可 false=不許可)
//	戻 り 値：	チェック結果 (true=OK false=NG)
//------------------------------------------------------------------------------
function _FilteringConditionCheck( pBlankAll ){

	// 1つ目の抽出フィルタ項目が存在しない場合、脱出
	if( typeof(document.frmConditions["hidFilterCol[]"]) == "undefined" ) return true;

	var _FieldNum = document.frmConditions["hidFilterCol[]"].length;

	var _Buff = "";
	var _Blank = "";
	for(i=0; i<_FieldNum; i++){

		_Buff += document.frmConditions["selFilterValue[]"][i].value;
		_Blank += "(BLANK)";
	}

	// 全項目の入力がない場合
	if(!pBlankAll && _Buff == _Blank){

		alert(FilterTitle + "を設定して下さい。");
		document.frmConditions["selFilterValue[]"][0].focus();
		return false;
	}

	return true;
}

//==============================================================================
//	検索条件をチェックし再表示する
//==============================================================================
function cfFind(){

	if( ! _FindConditionCheck(false) ) return;
	if( ! _FilteringConditionCheck(true) ) return;

	cfSubmit();
}

//==============================================================================
//	検索条件をリセットし再表示する
//==============================================================================
function cfResetFind(){

	var _FieldNum = document.frmConditions["selFindCol[]"].length;

	for(i=0; i<_FieldNum; i++){

		document.frmConditions["selFindCol[]"][i].value = "";
		document.frmConditions["txtFindValue[]"][i].value = "";
		document.frmConditions["selFindType[]"][i].value = document.frmConditions.hidFindDefaultType.value;
	}

	cfSubmit();
}

//------------------------------------------------------------------------------
//	検索条件の入力をチェックする
//------------------------------------------------------------------------------
//	引    数：	全項目未入力の許可 (true=許可 false=不許可)
//	戻 り 値：	チェック結果 (true=OK false=NG)
//------------------------------------------------------------------------------
function _FindConditionCheck( pBlankAll ){

	// 1つ目の検索項目が存在しない場合、脱出
	if( typeof(document.frmConditions["selFindCol[]"]) == "undefined" ) return true;

	var _FieldNum = document.frmConditions["selFindCol[]"].length;

	var _Buff = "";
	for(i=0; i<_FieldNum; i++){

		_Buff += document.frmConditions["selFindCol[]"][i].value;
		_Buff += document.frmConditions["txtFindValue[]"][i].value;
	}

	// 全項目の入力がない場合
	if(!pBlankAll && _Buff == ""){

		alert(FindTitle + "を設定して下さい。");
		document.frmConditions["selFindCol[]"][0].focus();
		return false;
	}
	
	for(i=0; i<_FieldNum; i++){

		_Col = document.frmConditions["selFindCol[]"][i].value;
		_Value = document.frmConditions["txtFindValue[]"][i].value;
		_Type = document.frmConditions["selFindType[]"][i].value;

		if(_Col + _Value != ""){

			if(_Col == ""){

				alert("検索する列を入力して下さい。");
				document.frmConditions["selFindCol[]"][i].focus();
				return false;
			}

			if(_Value == ""){

				alert("検索する値を入力して下さい。");
				document.frmConditions["txtFindValue[]"][i].focus();
				return false;
			}

			if(_Type == ""){

				alert("検索方法を入力して下さい。");
				document.frmConditions["selFindType[]"][i].focus();
				return false;
			}
		}
	}

	return true;
}

//==============================================================================
//	各種条件を送信する
//==============================================================================
function cfSubmit(){

	document.frmConditions.submit();
}
