Ajax.Responders.register(
{
    onCreate : displayLoading,
    onComplete : hideLoading
});

//----------------------------------------------------
// 検索ボックス内のHTMLをサーバから非同期に取得し
// 表示する
// テスト段階では、同時に検索処理も行い検索結果を表示する
// 本稼動時には、負荷の関係で同時に検索処理行うアクションを
// 絞り込む必要あり
//
function getHTML( category ) {
	
	var url = 'whole_search.php';
	var param = 'mode=1' + '&category=' + category;
	var sc = getForm();

	param += buildParam( sc );	

	var myAjax = new Ajax.Updater( 'search_box', 
									url,
									{ method: 'get', parameters: param });
	excuteSearch( category, 0);
	
	return false;
		
}

// -----------------------------------------------------
// 検索処理
// 指定されている検索条件で検索し
// 結果HTMLをサーバから非同期に取得し表示する
// @param	integer	page	表示するページ番号
//
function excuteSearch( category, page ) {
	var url = 'whole_search.php';
	var sc = getForm();
	var param = 'mode=1';
	
	param += buildParam( sc );		// フォームパラメータ生成
	param += '&current=' + page;	// カレントページ設定
	
	if( category == 'order_cnt') {
		param = param.replace( 'order=default', 'order=cnt');
	}
	if( category == 'order_default') {
		param = param.replace( 'order=cnt', 'order=default');
	}
	
	var myAjax = new Ajax.Updater( 'result',
									url,
									{ method: 'get', parameters: param + '&search=1',
									  onFailure : function() { alert("An error occurred"); } });
	return false;
									
}

// -------------------------------------------------------
// パラメータ生成
// あたえられた配列をパラメータにする
// @param	mixed	sc	連想配列
//
function buildParam( sc ) {
	var scArr = sc;
	var param = "";

	for( i=0; i < scArr.length ;i++) {
		param += '&' + scArr[i].name + '=' + scArr[i].value;
	}

	return param;
}

// -------------------------------------------------------
// フォームの値取得
// フォーム内の値を総なめして取得しています
// エレメント'submit'は、不必要なので削除しています
// エレメント'area[]'は、maltipleオプションのリストボックスなので
// ほかの処理とは別に要素の中の値も抽出する処理があります
//
function getForm() {
	var scform = document.search_condition;
	var scList = new Array();
	var i = 0;
	var k = 0;
	var n = 0;
	
	for( i=0; i < scform.length; i++ ) {
		// radio button
		if( scform[i].type == 'radio' && scform[i].checked == false) {
			continue;
		// list box with maltiple
		} else if( scform[i].name == 'area[]') {
			for( n ; n < scform[i].length ; n++) {
				if( scform[i].options[n].selected == true) {
					scList[k] = { "name":scform[i].name, "value":scform[i].options[n].value };
					k++;
				}
			}
		// other
		} else if( scform[i].type != 'submit') {
			scList[k] = { "name":scform[i].name,"value":scform[i].value};
			k++;
		}
	}
	
	return scList;
}

function displayLoading()
{
        Element.show("loading");
}

function hideLoading ()
{
        Element.hide("loading");
}

function ChangeList(number){
	if (document.search_condition.area.options[number-1].selected) {
		document.search_condition.area.options[number-1].selected = false;
	} else {
		document.search_condition.area.options[number-1].selected = true;
	}
}