/**
 * ERA site - searchResult
 * 
 * @author can i
 * @require jQuery 1.3.2+
 * @require jQuery UI 1.7.1+
 * @require JSDeferred 0.2.2+
 * @require /common/js/common.js
 * @version 1.0.0
 */
jQuery.era.searchResult = {};

/**
 * 住所を変更する
 */
jQuery.era.searchResult.changeAddress = function() {
	var conf = {
		type: null,
		backup: {},
		xhr: null,
		prefUrl: $('#sso_parts_address').val(),
		cityUrl: $('#sso_parts_address_cityList').val(),
		prefLimit: 5,
		cityLimit: 101
	};

	// ボタンのイベント
	$('#chAddressBtn').click( function() {
		backup(); 			// バックアップをとる
		// 沿線・駅検索のパラメータを削除
		$.era.searchResult.param.remove('areas');
		$.era.searchResult.param.remove('rails');
		$.era.searchResult.param.remove('stations');
		$.era.searchResult.param.remove('zenkoku');
		get(conf.prefUrl); // 都道府県選択画面取得
		return false;
	});
	// 都道府県選択画面のイベント
	function addPrefEvent(pop) {
		// 閉じるボタン用
		pop.find('.close').click( function() {
			close(); 		// 画面閉じる
			revert();		// 条件を戻す
			clearBackup(); 	// バックアップを消す
			return false;
		}).end()
		// 市区町村選択ボタン用
		.find('.next').click(function() {
			var resultSize = $('#addressWin .areaBox input:checkbox:enabled').length;
			if (resultSize == 0){
				$.era.message.show('confirm', $.era.message.error.noResultList());
				return false;
			}
			
			var size = $('#addressWin .areaBox :checked:enabled').length;
			if (size >= conf.prefLimit) {
				$.era.message.show('confirm',
						$.era.message.error.maxnum('都道府県', conf.prefLimit));
				return false;
			} else if (size < 1) {
				$.era.message.show('confirm',
						$.era.message.error.required('都道府県'));
				return false;
			}
			close(); 			// 画面閉じる
			get(conf.cityUrl); 	// 次画面取得
			return false;
		}).end()
		// 都道府県チェックボックス用
		.find(':checkbox').click(function() {
			// 条件変更
			($(this).attr('checked'))?
				$.era.searchResult.param.addVal('prefs', $(this).val()):
				$.era.searchResult.param.removeVal('prefs', $(this).val());

			// 件数取得
			var size = $(':checked[name=prefs]:enabled').length;
			$.era.searchResult.param.resCheck('prefs',size);// hiddnとチェック数を合わせる
			if(size >= conf.prefLimit){
				var limit = 4;
				$.era.message.show('confirm', '選択できる都道府県は最大'+(limit)+'個までです。');
				this.checked = false;
				$.era.searchResult.param.removeVal('prefs', $(this).val());
			}else if(size > 0){
				$.era.getCount('#prefCount', $.era.searchResult.param.get());
			} else { $.era.countClear('#prefCount'); }
		});
	};

	// 市区町村選択画面のイベント
	function addCitiesEvent(pop) {
		// 閉じるボタン用
		pop.find('.close').click(function() {
			close();
			revert();
			clearBackup();
			return false;
		}).end()
		// 都道府県選択ボタン用
		.find('.prev').click( function() {
			close();
			$.era.searchResult.param.remove('cities');
			$.era.searchResult.param.remove('zenkoku');
			get(conf.prefUrl);
			return false;
		}).end()
		// 検索ボタン用
		.find('.search').click(function() {
			var resultSize = $('#addressWin .areaBox input:checkbox:enabled:not(.title)').length;
			if (resultSize == 0){
				$.era.message.show('confirm', $.era.message.error.noResultList());
				return false;
			}

			var size = $('#addressWin .areaBox :checked:enabled:not(.title)').length;
			if (size > conf.cityLimit) {
				$.era.message.show('confirm',
						$.era.message.error.maxnum('市区町村',conf.cityLimit));
				return false;
			} else if (size < 1) {
				$.era.message.show('confirm',
						$.era.message.error.required('市区町村'));
				return false;
			}
			$.era.searchResult.param.resCheck('cities',size);// 再チェック
			close();
			clearBackup();
			$.era.searchResult.search.get();
			return false;
		}).end()
		// 市区町村用まとめてチェックのvalidate
		.find(':checkbox.title').click(function() {
			var checkList = $(this).parent().next();
	    	var preCnt = $(':checked[name=cities]').length;
			var incCnt = checkList.find(':checkbox[name=cities]:enabled').length -
						checkList.find(':checked[name=cities]').length;
			if(preCnt + incCnt >= conf.cityLimit){
				var limit = 100;
				 $.era.message.show('confirm', '選択できる市区町村は最大'+limit+'個までです。');
				 this.checked = false;
			}else {
				var checked = $(this).attr('checked');
				checkList.find(':checkbox:enabled').each(function(){
					$(this).attr('checked', checked);
					(checked)?
						$.era.searchResult.param.addVal('cities', $(this).val()):
						$.era.searchResult.param.removeVal('cities', $(this).val());
				});
			}
			if($.era.searchResult.param.size('cities') > 0){
				$.era.getCount('#cityCount', $.era.searchResult.param.get());
			} else { $.era.countClear('#cityCount'); }
		}).end()
		// 市区町村チェックボックス用
		.find(':checkbox:not(.title)').click( function() {
			// 条件変更
			($(this).attr('checked'))?
				$.era.searchResult.param.addVal('cities', $(this).val()):
				$.era.searchResult.param.removeVal('cities', $(this).val());
			// 件数取得
			var size = $.era.searchResult.param.size('cities');
			if(size >= conf.cityLimit){
				var limit = 100;
				$.era.message.show('confirm', '選択できる市区町村は最大'+limit+'個までです。');
				this.checked = false;
				$.era.searchResult.param.removeVal('cities', $(this).val());
			} else if(size > 0){
				$.era.getCount('#cityCount', $.era.searchResult.param.get());
			} else { $.era.countClear('#cityCount'); }
		});
	};
	// ポップアップウィンドウの取得
	function get(url) {
		if (!url) { return; }

		$.era.overlay.show();
		$.era.message.show('load');

		conf.xhr = $.era.cancelRequest(conf.xhr);
		conf.xhr = $.ajax( {
			url :url,
			type :'POST',
			data :$.era.searchResult.param.get(),
			success : function(response) {
				if (response) {
					$('#addressWin').html(response);
					$.era.message.hide();
					open();
				} else {
					$.era.overlay.hide();
					$.era.message.show('confirm', 'エラーが発生しました。');
					revert();
					clearBackup();
				}
			},
			error : function() {
				$.era.overlay.hide();
				$.era.message.show('confirm', 'エラーが発生しました。');
				revert();
				clearBackup();
			}
		});
	};
	// ポップアップウィンドウの表示
	function open() {
		var pop = $('#addressWin');

		if (pop.find(':hidden[name=winType]').val() == 'city') {
			addCitiesEvent(pop);
		} else { addPrefEvent(pop); }

		pop.setCenterPos().show();
		overlayClose();
	};
	// ポップアップウィンドウを閉じる
	function close() {
		$('#addressWin').find('.areaBox').scrollTop(0).end().hide().find('.close').unbind('click').end().find(
				'.next').unbind('click').end().find('.search').unbind('click')
				.end().find('.prev').unbind('click').end().find(':checkbox').unbind('click');
		$.era.overlay.hide();
		$('#p2miniPop').hide().find('.close').unbind('click').end().find('.btn').unbind('click');
		$($.era.overlay.conf.target).unbind('click');

	};
	// バックアップ
	function backup() {
		conf.backup.prefs = $.era.searchResult.param.getVal('prefs');
		conf.backup.cities = $.era.searchResult.param.getVal('cities');
		conf.backup.areas = $.era.searchResult.param.getVal('areas');
		conf.backup.rails = $.era.searchResult.param.getVal('rails');
		conf.backup.stations = $.era.searchResult.param.getVal('stations');
		conf.backup.zenkoku = $.era.searchResult.param.getVal('zenkoku');
	};
	// バックアップの差し戻し
	function revert() {
		$.era.searchResult.param.setVal('prefs', conf.backup.prefs);
		$.era.searchResult.param.setVal('cities', conf.backup.cities);
		$.era.searchResult.param.setVal('areas', conf.backup.areas);
		$.era.searchResult.param.setVal('rails', conf.backup.rails);
		$.era.searchResult.param.setVal('stations', conf.backup.stations);
		$.era.searchResult.param.setVal('zenkoku', conf.backup.zenkoku);
	};
	// バックアップのクリア
	function clearBackup() {
		conf.backup = {};
	};
	//オーバレイ押下でも閉じる機能追加
	function overlayClose(){
		$($.era.overlay.conf.target).bind('click',function() {
			close();
			revert();
			clearBackup(); // バックアップを消す
			return false;
		});
	};
};

/**
 * 沿線・駅を変更する
 */
jQuery.era.searchResult.changeLineSt = function() {
	var conf = {
		type :null,
		backup : {},
		xhr :null,
		areaUrl :$('#sso_parts_station').val(),
		railUrl :$('#sso_parts_railList').val(),
		stationUrl :$('#sso_parts_station_stationList').val(),
		railLimit :6,
		stationLimit :101
	};
	// ボタンのイベント
	$('#chLineStBtn').click( function() {
		backup();
		// 住所検索のパラメータを削除
		$.era.searchResult.param.remove('prefs');
		$.era.searchResult.param.remove('cities');
		$.era.searchResult.param.remove('zenkoku');
		get(conf.areaUrl);
		return false;
	});
	// エリア選択画面のイベント
	function addAreaEvent() {
		// 閉じるボタン用
		$('#railWin').find('.close').click(function() {
			close();
			revert();
			clearBackup();
			return false;
		}).end()
		// エリアアンカー用
		.find('a.areas').click(function() {
			$.era.searchResult.param.remove($(this).attr('class'));
			$.era.searchResult.param.addVal($(this).attr('class'), $(this).attr('val'));
			close();
			get(conf.railUrl);
			return false;
		});
	};
	// 路線選択画面のイベント
	function addRailEvent() {
		// 閉じるボタン用
		$('#railWin').find('.close').click( function() {
			close();
			revert();
			clearBackup();
			return false;
		}).end()
		// エリア選択ボタン用
		.find('.prev').click( function() {
//			var resultSize = $('#railWin .areaBox :input:checkbox:enabled:not(.title)').length;
//			if (resultSize == 0){
//				$.era.message.show('confirm', $.era.message.error.noResultList());
//				return false;
//			}
			close();
			$.era.searchResult.param.remove('rails');
			$.era.searchResult.param.remove('zenkoku');
			get(conf.areaUrl);
			return false;
		}).end()
		// 検索ボタン用
		.find('.search').click(function() {
			var resultSize = $('#railWin .areaBox :input:checkbox:enabled:not(.title)').length;
			if (resultSize == 0){
				$.era.message.show('confirm', $.era.message.error.noResultList());
				return false;
			}
			var size = $('#railWin .areaBox :checked:enabled').length;
			if (size >= conf.railLimit) {
				$.era.message.show('confirm',
						$.era.message.error.maxnum('沿線',conf.railLimit));
				return false;
			} else if (size < 1) {
				$.era.message.show('confirm',
						$.era.message.error.required('沿線'));
				return false;
			}
			$.era.searchResult.param.resCheck('rails',size);// 再チェック
			close();
			clearBackup();
			$.era.searchResult.param.remove('zenkoku');
			$.era.searchResult.param.remove('stations');
			$.era.searchResult.search.get();
			return false;
		}).end()
		// 駅選択ボタン用
		.find('.next').click(function() {
			var resultSize = $('#railWin .areaBox :input:checkbox:enabled:not(.title)').length;
			if (resultSize == 0){
				$.era.message.show('confirm', $.era.message.error.noResultList());
				return false;
			}
			var size = $('#railWin .areaBox :checked:enabled').length;
			if (size >= conf.railLimit) {
				$.era.message.show('confirm',
						$.era.message.error.maxnum('沿線',conf.railLimit));
				return false;
			} else if (size < 1) {
				$.era.message.show('confirm',
						$.era.message.error.required('沿線'));
				return false;
			}
			$.era.searchResult.param.resCheck('rails',size);// 再チェック
			close();
			get(conf.stationUrl);
			return false;
		}).end()
		// 路線チェックボックス用
		.find(':checkbox').click( function(){
			// 条件変更
			($(this).attr('checked'))?
				$.era.searchResult.param.addVal('rails', $(this).val()):
				$.era.searchResult.param.removeVal('rails', $(this).val());
			
			// 件数取得
			//var size = $.era.searchResult.param.size('rails');
			var size = $('#railWin .areaBox :checked:enabled').length;
			$.era.searchResult.param.resCheck('rails',size);// 再チェック
			if(size >= conf.railLimit){
				var limit = 5;
				$.era.message.show('confirm', '選択できる沿線は最大'+limit+'個までです。');
				this.checked = false;
				$.era.searchResult.param.removeVal('rails', $(this).val());
			}else if(size > 0){
				$.era.getCount('#railCount', $.era.searchResult.param.get());
			} else { $.era.countClear('#railCount'); }
		});
	};
	// 駅選択画面のイベント
	function addStationEvent() {
		// 閉じるボタン用
		$('#railWin').find('.close').click( function() {
			close();
			revert();
			clearBackup();
		}).end()
		// 路線選択ボタン用
		.find('.prev').click( function() {
//			var size = $('#railWin .areaBox input:checkbox:enabled:not(.title)').length;
//			if (size == 0){
//				$.era.message.show('confirm', $.era.message.error.noResultList());
//				return false;
//			}
			close();
			$.era.searchResult.param.remove('stations');
			$.era.searchResult.param.remove('zenkoku');
			get(conf.railUrl);
			return false;
		}).end()
		// 検索ボタン用
		.find('.search').click(function() {
			var resultSize = $('#railWin .areaBox input:checkbox:enabled:not(.title)').length;
			if (resultSize == 0){
				$.era.message.show('confirm', $.era.message.error.noResultList());
				return false;
			}
			var size = $('#railWin .areaBox :checked:enabled:not(.title)').length;
			if (size >= conf.stationLimit) {
				$.era.message.show('confirm',
						$.era.message.error.maxnum('駅',conf.stationLimit));
				return false;
			}
			if (size < 1) {
				$.era.message.show('confirm',
						$.era.message.error.required('駅'));
				return false;
			}
			$.era.searchResult.param.resCheck('stations',size);// 再チェック
			close();
			clearBackup();
			$.era.searchResult.search.get();
			return false;
		}).end()
		// 路線ボタン用まとめてチェックのvalidate
		.find(':checkbox.title').click(function() {
			var checkList = $(this).parent().next();
	    	var preCnt = $(':checked[name=stations]').length;
			var incCnt = checkList.find(':checkbox[name=stations]:enabled').length -
						checkList.find(':checked[name=stations]').length;
			if(preCnt + incCnt >= conf.stationLimit){
				var limit = 100;
				 $.era.message.show('confirm', '選択できる駅は最大'+limit+'個までです。');
				 this.checked = false;
			}else {
				var checked = $(this).attr('checked');
				checkList.find(':checkbox:enabled').each(function(){
					$(this).attr('checked', checked);
					(checked)?
						$.era.searchResult.param.addVal('stations', $(this).val()):
						$.era.searchResult.param.removeVal('stations', $(this).val());
				});
			}
			// 件数取得
			if($.era.searchResult.param.size('stations') > 0){
				$.era.getCount('#stationCount', $.era.searchResult.param.get());
			} else { $.era.countClear('#stationCount'); }
		}).end()
		// 駅チェックボックス用
		.find(':checkbox:not(.title)').click(function() {
			// 条件変更
			($(this).attr('checked'))?
				$.era.searchResult.param.addVal('stations', $(this).val()):
				$.era.searchResult.param.removeVal('stations', $(this).val());

			// 件数取得
			var size = $.era.searchResult.param.size('stations');
			if(size >= conf.stationLimit){
				var limit = 100;
				$.era.message.show('confirm', '選択できる駅は最大'+limit+'個までです。');
				this.checked = false;
				$.era.searchResult.param.removeVal('stations', $(this).val());
			}else if(size > 0){
				$.era.getCount('#stationCount', $.era.searchResult.param.get());
			} else { $.era.countClear('#stationCount'); }
		});
	};
	// ポップアップウィンドウの取得
	function get(url) {
		if (!url) { return; }

		$.era.overlay.show();
		$.era.message.show('load');

		conf.xhr = $.era.cancelRequest(conf.xhr);
		conf.xhr = $.ajax( {
			url :url,
			type :'POST',
			data :$.era.searchResult.param.get(),
			success : function(response) {
				if (response) {
					$('#railWin').html(response);
					$.era.message.hide();
					open();
				} else {
					$.era.overlay.hide();
					$.era.message.show('confirm', 'エラーが発生しました。');
					revert();
					clearBackup();
				}
			},
			error : function() {
				$.era.overlay.hide();
				$.era.message.show('confirm', 'エラーが発生しました。');
				revert();
				clearBackup();
			}
		});
	};
	// ポップアップウィンドウの表示
	function open() {
		var pop = $('#railWin');
		conf.type = pop.find(':hidden[name=winType]').val();
		// エリアコードをhiddenにセットする.
		pop.find(':hidden[name=areas]').each(function(){
			$.era.searchResult.param.addVal('areas', $(this).val(), false);
		});

		// 各ポップアップ用のイベント登録
		if (conf.type == 'station'){ addStationEvent(); }
		else if (conf.type == 'line'){ addRailEvent(); }
		else{ addAreaEvent(); }

		pop.setCenterPos().show();
		overlayClose();
	};
	// ポップアップウィンドウを閉じる
	function close() {
		$('#railWin').find('.areaBox').scrollTop(0).end().hide().find('.close').unbind('click').end().find('.next')
				.unbind('click').end().find('.search').unbind('click').end()
				.find('.prev').unbind('click').end().find(':checkbox').unbind('click');
		$.era.overlay.hide();
		$('#p2miniPop').hide().find('.close').unbind('click').end().find('.btn').unbind('click');
		$($.era.overlay.conf.target).unbind('click');
	};
	// バックアップ
	function backup() {
		conf.backup.areas = $.era.searchResult.param.getVal('areas');
		conf.backup.rails = $.era.searchResult.param.getVal('rails');
		conf.backup.stations = $.era.searchResult.param.getVal('stations');
		conf.backup.prefs = $.era.searchResult.param.getVal('prefs');
		conf.backup.cities = $.era.searchResult.param.getVal('cities');
		conf.backup.zenkoku = $.era.searchResult.param.getVal('zenkoku');
	};
	// バックアップの差し戻し
	function revert() {
		$.era.searchResult.param.setVal('areas', conf.backup.areas);
		$.era.searchResult.param.setVal('rails', conf.backup.rails);
		$.era.searchResult.param.setVal('stations', conf.backup.stations);
		$.era.searchResult.param.setVal('prefs', conf.backup.prefs);
		$.era.searchResult.param.setVal('cities', conf.backup.cities);
		$.era.searchResult.param.setVal('zenkoku', conf.backup.zenkoku);
	};
	// バックアップのクリア
	function clearBackup() {
		conf.backup = {};
	};
	//オーバレイ押下でも閉じる機能追加
	function overlayClose(){
		$($.era.overlay.conf.target).bind('click',function() {
			close();
			revert();
			clearBackup(); // バックアップを消す
			return false;
		});
	};
};

/**
 * 物件種別
 */
jQuery.era.searchResult.changeMode = function() {
	$('#mode ul p[class!=coBtn04]').hover(
		function() {
			$(this).addClass('coBtn03');
			return false;
		},
		function() {
			$(this).removeClass('coBtn03');
			return false;
		}
	).click( function() {
		// 条件変更
		if ($(this).hasClass('coBtn02')) {
			$(this).attr('class', 'coBtn01');
			$.era.searchResult.param.removeVal('mode', $(this).attr('val'));
		} else {
			$(this).addClass('coBtn02');
			$.era.searchResult.param.addVal('mode', $(this).attr('val'), true);
		}
		$.era.searchResult.search.get(); // 検索
		return false;
	});
};

/**
 * 賃料（プルダウン）
 */
jQuery.era.searchResult.changePrice = function(){
	var conf = {
		minValue: 0,
		maxValue: 2147483647
	};
	// 価格（下限値）
	$('#price').find('select[name=priceMin]').change(function(){
		$(this).blur();
		var val = $(this).val();
		$('#s_priceMin').val(val);
		if(Number(val) > Number($('#s_priceMax').val())){
			$('#price select[name=priceMax]').val(conf.maxValue);
			$('#s_priceMax').val(conf.maxValue);
		}
		$.era.searchResult.search.get();
	}).end()
	// 価格（上限値）
	.find('select[name=priceMax]').change(function(){
		$(this).blur();
		var val = $(this).val();
		$('#s_priceMax').val(val);
		if(Number(val) < Number($('#s_priceMin').val())){
			$('#price select[name=priceMin]').val(conf.minValue);
			$('#s_priceMin').val(conf.minValue);
		}
		$.era.searchResult.search.get();
	});
};

/**
 * 賃料（スライダー）
 */
jQuery.era.searchResult.changePriceSlider = function(paramMap, type) {
	var conf = {
		target :'#price .ui-slider',
		minTarget :'#price span.minValue',
		maxTarget :'#price span.maxValue',
		minValue :0,
		minPos :0,
		hiddenMin :'#s_priceMin',
		hiddenMax :'#s_priceMax',
		paramMap : []
	};
	conf.paramMap = paramMap;
	conf.maxValue = conf.maxPos = paramMap.length-1;

	var values = getParam();
	// ui.slider
	$(conf.target).slider( {
		min :conf.minValue,
		max :conf.maxValue,
		range :true,
		values : [ values.minPos, values.maxPos ],
		stop :stop,
		slide :(type=='business')? slideBusiness: slide
	});
	// stop のコールバック関数
	function stop(event, ui) {
		var min = $(conf.target).slider('values', 0);
		var max = $(conf.target).slider('values', 1);

		// 変更がある場合は検索する
		var values = getParam();
		if (values.minPos != min || values.maxPos != max) {
			min = (min != conf.maxPos)? min: conf.minPos;
			max = (max != conf.minPos)? max: conf.maxPos;
			setParam(min, max); // 値をセット
			$.era.searchResult.search.get(); // 検索
		}
	};
	// slide のコールバック関数
	function slide(event, ui) {
		var min = $(conf.target).slider('values', 0);
		var max = $(conf.target).slider('values', 1);

		$(conf.minTarget).html(
				(min == conf.minValue) ? '下限なし' :
					(min == conf.maxValue) ? '下限なし' :
						(convertToParam(min) / 10000).toFixed(1) + '万');
		$(conf.maxTarget).html(
				(max == conf.maxValue) ? '上限なし' :
					(max == conf.minValue) ? '上限なし' :
						(convertToParam(max) / 10000).toFixed(1) + '万');
	};
	// slide のコールバック関数(business専用)
	function slideBusiness(event, ui) {
		var min = $(conf.target).slider('values', 0);
		var max = $(conf.target).slider('values', 1);
		$(conf.minTarget).html(
				(min == conf.minValue) ? '下限なし' :
					(min == conf.maxValue) ? '下限なし' :
						addComma(convertToParam(min) / 10000) + '万');
		$(conf.maxTarget).html(
				(max == conf.maxValue) ? '上限なし' :
					(max == conf.minValue) ? '上限なし' :
						addComma(convertToParam(max) / 10000) + '万');
	};
	// パラメータのセット
	function setParam(min, max) {
		$(conf.hiddenMin).val(convertToParam(min));
		$(conf.hiddenMax).val(convertToParam(max));
	};
	// パラメータの取得
	function getParam() {
		var min = convertToValue($(conf.hiddenMin).val());
		var max = convertToValue($(conf.hiddenMax).val());

		return {
			minPos :min || conf.minPos,
			maxPos :max || conf.maxPos
		};
	};
	// スライダー値→パラメータ値に変換
	function convertToParam(val) {
		return conf.paramMap[val] || '';
	};
	// パラメータ値→スライダー値に変換
	function convertToValue(val) {
		var idx = $.inArray(val, conf.paramMap);
		return (idx >= 0) ? idx : '';
	};
	
	// 3桁以上ある場合にカンマを追加
    function addComma(value) {
		var opt = "";
		value = escape(value).split('').reverse();
		for(i = 0; i < value.length; i++) {
			if(i % 3 == 0 && i != 0) {
            	opt = value[i] + ',' + opt ;
        	} else {
            	opt = value[i] + opt;
        	}
    	}
		return opt;
	};
	
};

/**
 * 契約条件
 */
jQuery.era.searchResult.changeCond = function() {
	$('#cond p[class!=coBtn04]').hover(
		function() {
			$(this).addClass('coBtn03');
			return false;
		},
		function() {
			$(this).removeClass('coBtn03');
			return false;
		}
	).click( function() {
		// 条件変更
		if ($(this).hasClass('coBtn02')) {
			$(this).attr('class', 'coBtn01');
			$.era.searchResult.param.removeVal('cond', $(this).attr('val'));
		} else {
			$(this).addClass('coBtn02');
			$.era.searchResult.param.addVal('cond', $(this).attr('val'), true);
		}
		$.era.searchResult.search.get(); // 検索
		return false;
	});
};

/**
 * 面積（プルダウン）
 */
jQuery.era.searchResult.changeArea = function(){
	var conf = {
		minValue: 0,
		maxValue: 99999999
	};
	// 面積（下限値）
	$('#area').find('select[name=areaMin]').change(function(){
		$(this).blur();
		var val = $(this).val();
		$('#s_areaMin').val(val);
		if(Number(val) > Number($('#s_areaMax').val())){
			$('#area select[name=areaMax]').val(conf.maxValue);
			$('#s_areaMax').val(conf.maxValue);
		}
		$.era.searchResult.search.get(); // 検索
	}).end()
	// 面積（上限値）
	.find('select[name=areaMax]').change(function(){
		$(this).blur();
		var val = $(this).val();
		$('#s_areaMax').val(val);
		if(Number(val) < Number($('#s_areaMin').val())){
			$('#area select[name=areaMin]').val(conf.minValue);
			$('#s_areaMin').val(conf.minValue);
		}
		$.era.searchResult.search.get(); // 検索
	});
};

/**
 * 面積（スライダー）
 */
jQuery.era.searchResult.changeAreaSlider = function(paramMap) {
	var conf = {
		target :'#area .ui-slider',
		minTarget :'#area span.minValue',
		maxTarget :'#area span.maxValue',
		minValue :0,
		minPos :0,
		hiddenMin :'#s_areaMin',
		hiddenMax :'#s_areaMax',
		paramMap : []
	};
	conf.paramMap = paramMap;
	conf.maxValue = conf.maxPos = paramMap.length-1;

	var values = getParam();
	// ui.slider
	$(conf.target).slider( {
		min :conf.minValue,
		max :conf.maxValue,
		range :true,
		values : [ values.minPos, values.maxPos ],
		stop :stop,
		slide :slide
	});
	// stop のコールバック関数
	function stop(event, ui) {
		var min = $(conf.target).slider('values', 0);
		var max = $(conf.target).slider('values', 1);

		// 変更がある場合は検索する
		var values = getParam();
		if (values.minPos != min || values.maxPos != max) {
			min = (min != conf.maxPos)? min: conf.minPos;
			max = (max != conf.minPos)? max: conf.maxPos;
			setParam(min, max); // 値をセット
			$.era.searchResult.search.get(); // 検索
		}
	};
	// slide のコールバック関数
	function slide(event, ui) {
		var min = $(conf.target).slider('values', 0);
		var max = $(conf.target).slider('values', 1);

		$(conf.minTarget).html(
				(min == conf.minValue) ? '下限なし' :
					(min == conf.maxValue) ? '下限なし' :
						convertToParam(min) + 'm2');
		$(conf.maxTarget).html(
				(max == conf.maxValue) ? '上限なし' :
					(max == conf.minValue) ? '上限なし' :
						convertToParam(max) + 'm2');
	};
	// パラメータのセット
	function setParam(min, max) {
		$(conf.hiddenMin).val(convertToParam(min));
		$(conf.hiddenMax).val(convertToParam(max));
	};
	// パラメータの取得
	function getParam() {
		var min = convertToValue($(conf.hiddenMin).val());
		var max = convertToValue($(conf.hiddenMax).val());

		return {
			minPos :min || conf.minPos,
			maxPos :max || conf.maxPos
		};
	};
	// スライダー値→パラメータ値に変換
	function convertToParam(val) {
		return conf.paramMap[val] || '';
	};
	// パラメータ値→スライダー値に変換
	function convertToValue(val) {
		var idx = $.inArray(val, conf.paramMap);
		return (idx >= 0) ? idx : '';
	};
};

/**
 * 駅徒歩（スライダー）
 */
jQuery.era.searchResult.changeWalkSlider = function(paramMap) {
	var conf = {
		target :'#walk .ui-slider',
		maxTarget :'#walk span.maxValue',
		minValue :0, minPos :0,
		maxValue: 0, maxPos: 0,
		hidden :'#s_walk',
		paramMap : []
	};
	conf.paramMap = paramMap;
	conf.maxValue = conf.maxPos = paramMap.length-1;

	var value = getParam();
	// ui.slider
	$(conf.target).slider( {
		min :conf.minValue,
		max :conf.maxValue,
		range: 'min',
		value :value,
		slide :slide,
		stop :stop
	});
	slide(null, { value :value });

	// slide のコールバック関数
	function slide(event, ui) {
		var val = ui.value / conf.maxValue * 100;
		$(conf.target + ' .ui-slider-range.ui-widget-header').css('width',
				val + '%');
		var viewMax = convertToParam(ui.value);
		$(conf.maxTarget).html(
				(ui.value == conf.maxValue) ? '指定なし' : '徒歩' + viewMax + '分以内');
	};
	// stop のコールバック関数
	function stop(event, ui) {
		var val = ui.value;
		// 変更がある場合は検索する
		var value = getParam();
		if (value != val) {
			setParam(val); // 値をセット
			$.era.searchResult.search.get(); // 検索
		}
	};
	// パラメータのセット
	function setParam(val) {
		$(conf.hidden).val(convertToParam(val));
	};
	// パラメータの取得
	function getParam() {
		return convertToValue($(conf.hidden).val());
	};
	// スライダー値→パラメータ値に変換
	function convertToParam(val) {
		return conf.paramMap[val] || '';
	};
	// パラメータ値→スライダー値に変換
	function convertToValue(val) {
		var idx = $.inArray(val, conf.paramMap);
		return (idx >= 0) ? idx : conf.maxValue;
	};
};

/**
 * 築年数（ラベル）
 */
jQuery.era.searchResult.changeAge = function() {
	$('#age .coBtnArea p[class!=coBtn04]').hover(
		function() {
			$(this).addClass('coBtn03');
			return false;
		},
		function() {
			$(this).removeClass('coBtn03');
			return false;
		}
	).click( function() {
		// 条件変更
		if ($(this).hasClass('coBtn02')) {
			$(this).attr('class', 'coBtn01');
			$.era.searchResult.param.removeVal('newflg', $(this).attr('val'));
		} else {
			$(this).addClass('coBtn02');
			$.era.searchResult.param.remove('newflg');
			$.era.searchResult.param.addVal('newflg', $(this).attr('val'));
		}
		$.era.searchResult.search.get(); // 検索
		return false;
	});
};

/**
 * 築年数（スライダー）
 */
jQuery.era.searchResult.changeAgeSlider = function(paramMap) {
	var conf = {
		target :'#age .ui-slider',
		minTarget :'#age span.minValue',
		maxTarget :'#age span.maxValue',
		minValue :0, minPos :0,
		maxValue: 0, maxPos: 0,
		hidden :'#s_age',
		paramMap : []
	};
	conf.paramMap = paramMap;
	conf.maxValue = conf.maxPos = paramMap.length-1;

	var value = getParam();
	// ui.slider
	$(conf.target).slider( {
		min :conf.minValue,
		max :conf.maxValue,
		range: 'min',
		value :value,
		slide :slide,
		stop :stop
	});
	slide(null, { value :value });
	// slide のコールバック関数
	function slide(event, ui) {
		var val = ui.value / conf.maxValue * 100;
		$(conf.target + ' .ui-slider-range.ui-widget-header').css('width',
				val + '%');

		var viewMax = convertToParam(ui.value);
		$(conf.maxTarget).html(
				(ui.value == conf.maxValue) ? '指定なし' :
						(ui.value == conf.minValue)? '新築': '築' + viewMax + '年以内');
	};
	// stop のコールバック関数
	function stop(event, ui) {
		var val = ui.value;

		// 変更がある場合は検索する
		var value = getParam();
		if (value != val) {
			setParam(val); // 値をセット
			$.era.searchResult.search.get(); // 検索
		}
	};
	// パラメータのセット
	function setParam(val) {
		$(conf.hidden).val(convertToParam(val));
	};
	// パラメータの取得
	function getParam() {
		return convertToValue($(conf.hidden).val());
	};
	// スライダー値→パラメータ値に変換
	function convertToParam(val) {
		return conf.paramMap[val] || '';
	};
	// パラメータ値→スライダー値に変換
	function convertToValue(val) {
		var idx = $.inArray(val, conf.paramMap);
		return (idx >= 0) ? idx : conf.maxValue;
	};
};

/**
 * 間取り
 */
jQuery.era.searchResult.changeLayout = function() {
	$('#layout ul p[class!=coBtn04]').hover(
		function() {
			$(this).addClass('coBtn03');
			return false;
		},
		function() {
			$(this).removeClass('coBtn03');
			return false;
		}
	).click( function() {
		// 条件変更
		if ($(this).hasClass('coBtn02')) {
			$(this).attr('class', 'coBtn01');
			$.era.searchResult.param.removeVal('layout', $(this).attr('val'));
		} else {
			$(this).addClass('coBtn02');
			$.era.searchResult.param.addVal('layout', $(this).attr('val'), true);
		}
		$.era.searchResult.search.get(); // 検索
		return false;
	});
};

/**
 * 画像有無
 */
jQuery.era.searchResult.changePicture = function() {
	$('#picture ul p[class!=coBtn04]').hover(
		function() {
			$(this).addClass('coBtn03');
			return false;
		},
		function() {
			$(this).removeClass('coBtn03');
			return false;
		}
	).click( function() {
		// 条件変更
		if ($(this).hasClass('coBtn02')) {
			$(this).attr('class', 'coBtn01');
			$.era.searchResult.param.removeVal('picture', $(this).attr('val'));
		} else {
			$(this).addClass('coBtn02');
			$.era.searchResult.param.addVal('picture', $(this).attr('val'), true);
		}
		$.era.searchResult.search.get(); // 検索
		return false;
	});
};

/**
 * こだわり条件
 */
jQuery.era.searchResult.changeEtcCond = function() {
	$('#etcCond ul p[class!=coBtn04b]').hover( function() {
		$(this).addClass('coBtn03b');
		return false;
	}, function() {
		$(this).removeClass('coBtn03b');
		return false;
	}).click( function() {
		var val = $(this).attr('val');
		if ($(this).hasClass('coBtn02b')) {
			$(this).attr('class', 'coBtn01b');
			$('#' + name + val).attr('checked', false); // こだわり条件ポップアップのチェックをはずす
			$.era.searchResult.param.removeVal($(this).attr('name'), val);
		} else {
			$(this).addClass('coBtn02b');
			$('#' + name + val).attr('checked', true); // こだわり条件ポップアップをチェックする
			$.era.searchResult.param.addVal($(this).attr('name'), val, true);
		}
		$.era.searchResult.search.get(); // 検索
		return false;
	});
};

/**
 * こだわり条件ポップアップ
 */
jQuery.era.searchResult.etcCondWindow = function(paramNames) {
	var conf = {
		xhr :null,
		backup : {},
		paramNames : []
	};
	if(!paramNames){ return; }

	conf.paramNames = paramNames;

	$('#etcCondWinBtn').click( function() {
		$.era.overlay.show();
		$.era.message.show('load');
		backup();
		get();
		return false;
	});
	// ポップアップの取得
	function get() {
		conf.xhr = $.era.cancelRequest(conf.xhr);
		conf.xhr = $.ajax( {
			url :$('#sso_parts_search_kodawari').val(),
			type :'POST',
			data :$.era.searchResult.param.get(),
			success : function(response) {
				if (response) {
					$('#kodawariWin').html(response);
					addWinEvent();
					$.era.message.hide();
					open();
				} else {
					$.era.overlay.hide();
					$.era.message.show('confirm', 'エラーが発生しました。');
					revert();
					clearBackup();
				}
			},
			error : function() {
				$.era.overlay.hide();
				$.era.message.show('confirm', 'エラーが発生しました。');
				revert();
				clearBackup();
			}
		});
	};
	// ポップアップの表示
	function open() {
		var pop = $('#kodawariWin');
		pop.setCenterPos().show();
		overlayClose();
	};
	// ポップアップを閉じる
	function close() {
		$('#kodawariWin').hide();
		$.era.message.hide();
		$.era.overlay.hide();

		// イベント解除
		$('#kodawariWin').find('.close img').unbind('click').end()
			.find('.search img').unbind('click').end()
			.find(':checkbox').unbind('click');
		$($.era.overlay.conf.target).unbind('click');
	};
	// こだわり条件ポップアップのイベント
	function addWinEvent(){
		// close ボタン
		$('#kodawariWin')
			.find('.close').click( function() {
				close();
				revert();
				clearBackup(); // バックアップを消す
				return false;
			}).end()
			// 検索 ボタン
			.find('.search').click( function() {
				if($('#kodawariWin :hidden[name=isSearch]').val()=='false'){
						$.era.message.show('confirm', $.era.message.error.noResultList());
						return false;
				}
				close();
				clearBackup(); // バックアップを消す
				$.era.searchResult.search.get();
				return false;
			}).end()
			// 各チェックボックス
			.find(':checkbox').click(function() {
				if($(this).attr('checked')){
					$.era.searchResult.param.addVal($(this).attr('name'), $(this).val(), true);
				} else {
					$.era.searchResult.param.removeVal($(this).attr('name'), $(this).val());
				}
				$.era.getCount('#kodawariCount', $.era.searchResult.param.get());
			});
	};
	// 条件をバックアップ
	function backup() {
		$.each(conf.paramNames, function(){
			conf.backup[this] = $.era.searchResult.param.getVal(this);
		});
	};
	// 選択条件をもとに戻す
	function revert() {
		$.each(conf.paramNames, function(){
			$.era.searchResult.param.setVal(this, conf.backup[this]);
		});
	};
	// バックアップのクリア
	function clearBackup() {
		conf.backup = {};
	};
	//オーバレイ押下でも閉じる機能追加
	function overlayClose(){
		$($.era.overlay.conf.target).bind('click',function() {
			close();
			revert();
			clearBackup(); // バックアップを消す
			return false;
		});
	};
};

/**
 * フリーワード
 */
jQuery.era.searchResult.changeKeyword = function() {
	$('#keyword ul p[class!=coBtn04b]').hover( function() {
		$(this).addClass('coBtn03b');
		return false;
	}, function() {
		$(this).removeClass('coBtn03b');
		return false;
	}).click( function() {
		if ($(this).hasClass('coBtn02b')) {
			$(this).attr('class', 'coBtn01b');

			// テキストボックスの文言を削除する
			var input = $('#keyword input.searchForm');
			var inputVal = input.val().split(' ') || [];
			var text = $.era.searchResult.unescape($(this).html().replace(/<span>.*|<SPAN>.*/, ''));
			var inputVal = $.grep(inputVal, function(value) {
				return (value != text);
			});
			input.val($.isArray(inputVal) ? inputVal.join(' ') : inputVal);
			input.data('search', true);
		} else {
			$(this).addClass('coBtn02b');

			// テキストボックスに文言を詰める
			var input = $('#keyword input.searchForm');
			var inputVal = input.val();
			var text = $.era.searchResult.unescape($(this).html().replace(/<span>.*|<SPAN>.*/, ''));
			input.val((inputVal) ? inputVal + ' ' + text : text);
		}
		// 検索ボタンを押したことにする
		$('#keyword .searchFormBtn img').trigger('click');
		return false;
	});
};

/**
 * アンエスケープ
 */
jQuery.era.searchResult.unescape = function(str) {
	str = str.replace(/&amp;/g, "&");
	str = str.replace(/&quot;/g,"\"");
	str = str.replace(/&#034;/g,"\"");
	str = str.replace(/&#039;/g,"'");
	str = str.replace(/&lt;/g,"<");
	str = str.replace(/&gt;/g,">");
	return str;
}

/**
 * フリーワード（検索ボタン）
 */
jQuery.era.searchResult.editKeyword = function() {
	$('#keyword .searchFormBtn img').click( function() {
		var form = $('#keyword input.searchForm');
		var val = form.val();
		
		if (!val && !form.data('search')) { // 検索条件の入力がなくてもフリー検索実行
			$('#s_keyword').val('');
			$.era.searchResult.search.get();
			return false;
		}
		// パース
		var keys = val.replace(/　/g, ' '); // 全角スペース→半角スペースに。
		keys = keys.replace(/\s+/, ' ');
		$('#s_keyword').val(keys);

		if (keys.length > 0 || form.data('search')) {
			$.era.searchResult.search.get();
		} else {
			$('#keyword input.searchForm').val(''); // 条件をクリア
		}
		return false;
	});
};

/**
 * 選択市区町村の開閉
 */
jQuery.era.searchResult.toggleChooseCities = function(){
	$('#cities_moreBtn ,#cities_compactBtn').live("click", function(){
		console.log("aaa");
		$.era.searchResult.lazyLoad.destroy();
		$('#cities_more').toggle();
		$('#cities_compact').toggle();
		$.era.searchResult.lazyLoad.load();
		return false;
	});
};

/**
 * 選択駅の開閉
 */
jQuery.era.searchResult.toggleChooseStations = function(){
	$('#stations_moreBtn ,#stations_compactBtn').live("click", function(){
		$.era.searchResult.lazyLoad.destroy();
		$('#stations_more').toggle();
		$('#stations_compact').toggle();
		$.era.searchResult.lazyLoad.load();
		return false;
	});
};

/**
 * URL選択
 */
jQuery.era.searchResult.selectUrl = function() {
	// url の選択
	$('#panelUrlForm').focus( function() {
		this.select();
	});
};

/**
 * ウィンドウサイズが変わったら、ポップアップ表示場所を変更
 */
jQuery.era.searchResult.popupResize = function() {
	$(window).resize(function(){
		var target = $('.p2popup:visible:first');	// 検索条件ポップアップ
		var target2 = $('#p2miniPop:visible:first');	// ミニポップアップ
		var win = $(window);
		if(target){
			target.css({
				left :(win.width() - target.width()) / 2 + win.scrollLeft(),
				top :(win.height() - target.height()) / 2 + win.scrollTop()
			})
		}
		if(target2){
			target2.css({
				left :(win.width() - target2.width()) / 2 + win.scrollLeft(),
				top :(win.height() - target2.height()) / 2 + win.scrollTop()
			})
		}
		return false;
		});
};

/**
 * 選択した条件をクリア
 */
jQuery.era.searchResult.clearCond = function() {
	$('#clearCond ,#clearCondBottom').live("click", function(){
		$(window).scrollTop(0); // ページTOPへ
		$.era.searchResult.param.clear(); // 条件をクリア
		$.era.searchResult.search.get() // 検索
		return false;
	});
};

/**
 * 保存条件で検索
 */
jQuery.era.searchResult.searchSavedCondition = function() {
	$('#searchSavedCond ,#searchSavedCondBottom').live("click", function() {
		$.era.searchSavedCondition();
		return false;
	});
};

/**
 * この条件を保存
 */
jQuery.era.searchResult.saveCond = function() {
	var conf = { xhr: null };
	$('#saveCond , #saveCondBottom').click( function() {
		var val = $('#panelUrl').val();

		conf.xhr = $.era.cancelRequest(conf.xhr);
		conf.xhr = $.ajax( {
			type :'POST',
			url :$('#sso_parts_cookie_searchConditionSet').val(),
			data : {
				'SAStruts.method' :'searchConditionSet',
				'value' :encodeURI(val)
			},
			success : function(responce) {
				$.era.message.show('confirm', responce);
			},
			error : function(responce) {
				//ボタンを連続で押すなどしてエラーの場合は0となる
				if(responce.status != 0){
					$.era.message.show('confirm', 'エラーが発生しました。');
				}
			}
		});

		return false;
	});
};

/**
 * お気に入り物件に追加(賃貸)
 */
jQuery.era.searchResult.saveFavoriteRent = function() {
	var conf = { xhr: null };
	$('#p2checkBtn .saveFavorite, #p2checkBtn02 .saveFavorite').click(function() {
		var tmp = $.era.checkboxVal('#p2objectList .waku :checked');
		if (tmp.length <= 0) {
			$.era.message.show('confirm', '物件が選択されていません。');
			return false;
		}
		$('#d_article').val(tmp);

		// 非同期で登録
		if (tmp.length > 0) {
			conf.xhr = $.era.cancelRequest(conf.xhr);
			conf.xhr = $.ajax( {
				url :$('#sso_parts_cookie_favorite_rent').val() + tmp.join(','),
				success : function(responce) {
					$.era.message.show('confirm', responce);
					$.isArray(tmp)?
						$.each(tmp, function() {changeImg(this)}):
						changeImg(tmp);
				},
				error : function() {
					$.era.message.show('confirm', 'エラーが発生しました。');
				}
			});
		}
		return false;
	});
	// お気に入り追加後の画像差し替え
	function changeImg(id) {
		if(!$('#favorite_' + id).hasClass('favotite_checked')){
			$('#favorite_' + id).append('<img width="100" height="15" alt="お気に入り登録済み" src="' + $('#sso_era_url').val() + 'images/p2_object_list_fav_icon.gif"/>');
			$('#favorite_' + id).addClass('favotite_checked');
		}
	};
};

/**
 * お気に入り物件に追加(売買)
 */
jQuery.era.searchResult.saveFavoriteBuy = function() {
	var conf = { xhr: null };
	$('#p2checkBtn .saveFavorite, #p2checkBtn02 .saveFavorite').click(function() {
		var tmp = $.era.checkboxVal('#p2objectList .waku :checked');

		if (tmp.length <= 0) {
			$.era.message.show('confirm', '物件が選択されていません。');
			return false;
		}
		$('#d_article').val(tmp);

		// 非同期で登録
		if (tmp.length > 0) {
			conf.xhr = $.era.cancelRequest(conf.xhr);
			conf.xhr = $.ajax( {
				url :$('#sso_parts_cookie_favorite_buy').val() + tmp.join(','),
				success : function(responce) {
					$.era.message.show('confirm', responce);
					$.isArray(tmp)?
						$.each(tmp, function() {changeImg(this)}):
						changeImg(tmp);
				},
				error : function() {
					$.era.message.show('confirm', 'エラーが発生しました。');
				}
			});
		}
		return false;
	});
	// お気に入り追加後の画像差し替え
	function changeImg(id) {
		if(!$('#favorite_' + id).hasClass('favotite_checked')){
			$('#favorite_' + id).append('<img width="100" height="15" alt="お気に入り登録済み" src="' + $('#sso_era_url').val() + 'images/p2_object_list_fav_icon.gif"/>');
			$('#favorite_' + id).addClass('favotite_checked');
		}
	};
};

/**
 * お問い合わせ
 */
jQuery.era.searchResult.goInquiry = function() {
	var limit = 41;
	$('#p2checkBtn .goInquiry, #p2checkBtn02 .goInquiry').live("click", function() {
		var tmp = $.era.checkboxVal('#p2objectList .waku :checked');
		if (tmp.length >= limit) {
			$.era.message.show('confirm',
					$.era.message.error.maxnum('物件', limit));
			return false;
		} else if(tmp.length <= 0){
			$.era.message.show('confirm', '物件が選択されていません。');
			return false;
		}
		$('#d_article').val(tmp);
		$.era.submitForm('#listform', $('#inquiryUrl').attr('path'));
		return false;
	});
};

/**
 * 詳細を表示
 */
jQuery.era.searchResult.goDetail = function() {
	var limit = 41;
	$('#p2checkBtn .goDetail, #p2checkBtn02 .goDetail').live("click", function(){
		var tmp = jQuery.era.checkboxVal('#p2objectList .waku :checked');
		if (tmp.length >= limit) {
			$.era.message.show('confirm',
					$.era.message.error.maxnum('物件', limit));
			return false;
		} else if(tmp.length <= 0){
			$.era.message.show('confirm', '物件が選択されていません。');
			return false;
		}
		$('#d_article').val(tmp);

		// URL 作成
		var url = $('#sso_article').val() + tmp.join(',');
		window.open(url);	// 別ウィンドウで詳細画面表示
		return false;
	});
};

/**
 * 物件チェック
 */
jQuery.era.searchResult.check = function() {
	$('#p2objectList .waku')
		.find('.clickable').click( function(e) {
				e.stopPropagation();
				if(e.target.type == 'checkbox'){
					$(e.target).closest('.cell04')
						.css('background-color', (e.target.checked)?'#78b4cc': '#FFFFFF');
				}
			}).end()
		.hover(
			function(){
				$(this).find('.objectListTbl').find('.cell04').css('background-color', '#c2dce8');
			},
			function(){
				var checked = $(this).find(':checkbox').attr('checked');
				$(this).find('.cell04').css('background-color', (checked)?'#78b4cc': '#FFFFFF');
			}
		).end()
		.find('.cell04').click( function() {
			var checked = ($(this).find(':checked').length)? false: true;
			$(this).find(':checkbox').attr('checked', checked).end()
				.css('background-color', (checked)?'#78b4cc': '#FFFFFF');
			return false;
		});
};

/**
 * 全物件チェック
 */
jQuery.era.searchResult.checkAll = function() {
	var conf = { checked :false };
	$('#p2checkBtn .checkAll, #p2checkBtn02 .checkAll').click( function() {
		var checked = (conf.checked)? false: true;
		$('#p2objectList .waku').find(':checkbox').attr('checked', checked).end()
			.find('.cell04').css('background-color', (checked)?'#78b4cc': '#FFFFFF');
		conf.checked = checked;
		return false;
	});
};

/**
 * 画像ポップアップ
 */
jQuery.era.searchResult.popThumb = function() {
	$('#img_popup')
		.html('<img src="' + $('#sso_era_url').val() + 'images/loadingAnimation.gif">')
		.mouseout(function(e){
			var elm = $(this).data('pop-target');
			if(!elm){ return false;}
			var offset = $(elm).offset();
			if(offset.left > e.pageX || offset.left + $(elm).width() < e.pageX
					|| offset.top > e.pageY || offset.top + $(elm).height() < e.pageY){
				$(this).hide().data('pop-target', null)
					.html('<img src="' + $('#sso_era_url').val() + 'images/loadingAnimation.gif">');
				if($.era.browser.isIE6() && !$.era.message.is()){ $('select').css('visibility', 'visible'); }
			}
		})
		.data('pop-target', null);

	$('#p2objectList li.img img').hover( function() {
		if(this.name != this.src){ return; }
		
		var pop = $('#img_popup');
		// ポップアップが表示されている場合は何もしない
		if(pop.data('pop-target')){ return false; }
		//ローディング画像表示
		pop.html('<img src="' + $('#sso_era_url').val() + 'images/loadingAnimation.gif">');

		if($.era.browser.isIE6()){ $('select').css('visibility', 'hidden'); }
		pop.setCenterPos().show().data('pop-target', this);

		// for mmgate
		var src = $(this).attr('src').match(/.*\?/) + '_ft=400x400';
		// 遅延ロード
		var img = new Image();
		img.src = src;
		$(img).addClass('article');
		if(img.complete){
			pop.html(img).setCenterPos();
		} else {
			img.onload = function(){
				pop.html(img).setCenterPos();
			};
		}
		return false;
	}, function(e) {
		var pop = $('#img_popup');
		var offset = pop.offset();
		if(offset.left > e.pageX || offset.left + pop.width() < e.pageX
				|| offset.top > e.pageY || offset.top + pop.height() < e.pageY){
			pop.hide().data('pop-target', null)
				.html('<img src=" ' + $('#sso_era_url').val() + 'images/loadingAnimation.gif">');
			if($.era.browser.isIE6() && !$.era.message.is()){ $('select').css('visibility', 'visible'); }
		}
		return false;
	});
};

/**
 * 表示件数
 */
jQuery.era.searchResult.changeViewCnt = function() {
	$('#p2LeftContent .viewForm01').one('change', function() {
		$(this).blur();
		$('#p2LeftContent .viewForm01').val($(this).val());
		$('#s_limit').val($(this).val());
		$(window).scrollTop(0); // ページTOPへ
		$.era.searchResult.search.get('list'); // 検索
		return false;
	});
};

/**
 * 並び順
 */
jQuery.era.searchResult.changeSort = function() {
	$('#p2LeftContent .viewForm02').one('change', function() {
		$(this).blur();
		$('document.body').focus();
		$('#p2LeftContent .viewForm02').val($(this).val());
		$('#s_sort').val($(this).val());
		$(window).scrollTop(0);
		$.era.searchResult.search.get('list');
		return false;
	});
};

/**
 * 物件画像
 */
jQuery.era.searchResult.changeImg = function() {
	$('#p2LeftContent .viewForm03').one('change', function() {
		$(this).blur();
		$('document.body').focus();
		$('#p2LeftContent .viewForm03').val($(this).val());
		$('#s_view').val($(this).val());
		$(window).scrollTop(0);
		$.era.searchResult.search.get('list');
		return false;
	});
};

/**
 * 検索
 */
jQuery.era.searchResult.search = {
	conf : {
		xhr : {
			menu :null,
			list :null,
			recommend :null,
			seoLink :null,
			count :null,
			type : ''
		}
	},
	setType : function(type) {
		this.conf.type = type;
	},
	get : function(type) {
		/*@cc_on _d=document;eval('var document=_d')@*/
		var cond = $.era.searchResult.param.get();

		// 前処理
		this.beforeSearch();
		// 検索処理
		if (type == 'list') {
			$.post($('#sso_parts_search_listArea').val(), cond)
				.next($.scope(this, function(data) {
					if (data) {
						// list 箇所更新・イベント張りなおし
						//$('#searchList').html(data);
						document.getElementById("searchList").innerHTML = data;
						//$.era.searchResult.addListEvents(this.conf.type);
						// 後処理
						this.afterSearch();
						document.title = $('.inChassis03 .searchTtl01').html() + '｜ERA不動産Online'; // タイトルを変更する
					}
				}))
				.error( function() {
					$.era.overlay.hide();
					$.era.message.show('confirm', 'エラーが発生しました。');
					$.era.searchResult.lazyLoad.load();
			});
		} else {
			parallel( {
				menu :$.post($('#sso_parts_search_leftSearchNavi').val(), cond),
				list :$.post($('#sso_parts_search_listArea').val(), cond)
			}).next($.scope(this, function(values) {
				if (values.menu && values.list) {
					// menu 箇所更新・イベント張りなおし
					//$('#leftnavi').html(values.menu);
					// list 箇所更新・イベント張りなおし
					//$('#searchList').html(values.list);
					document.getElementById("searchList").innerHTML = values.list;
					//$.era.searchResult.addListEvents(this.conf.type);
					// 後処理
					this.afterSearch();
					document.getElementById("leftnavi").innerHTML = values.menu;
					$.era.searchResult.addMenuEvents(this.conf.type);
					document.title = $('.inChassis03 .searchTtl01').html() + '｜ERA不動産Online'; // タイトルを変更する
				}
			})).error( function(){
				$.era.overlay.hide();
				$.era.message.show('confirm', 'エラーが発生しました。');
				$.era.searchResult.lazyLoad.load();
			});
		}
	},
	beforeSearch : function() {
		$.era.overlay.show(); // オーバーレイ出す。
		$.era.message.show('load'); // メッセージ出す。
		$('#img_popup').hide();	// ポップアップを無条件で消す
		$.era.searchResult.lazyLoad.destroy(); // 遅延ロードを停止
	},
	getRecommendResult : function() {
		// 前回リクエストのキャンセル
		this.conf.xhr.recommend = $.era.cancelRequest(this.conf.xhr.recommend);
		this.conf.xhr.recommend = $.post(
				$('#sso_parts_search_konnaCondition').val(),
			$.era.searchResult.param.get(),
			function(responce) {
				$('#p2conditionSearch').html(responce);
			}
		);
	},
	getSeoLinkResult : function(){
		// 前回リクエストのキャンセル
		this.conf.xhr.seoLink = $.era.cancelRequest(this.conf.xhr.seoLink);
		this.conf.xhr.seoLink = $.post(
				$('#sso_parts_search_seolink').val(),
			$.era.searchResult.param.get(),
			function(responce) {
				$('#f5areaTopSeoLink').html(responce);
			}
		);
	},
	afterSearch : function() {		
		$.era.message.hide(); // メッセージ消す
		$.era.overlay.hide(); // オーバーレイ消す
		$.era.searchResult.addListEvents2(this.conf.type); //イベントの貼りなおし
		$.era.searchResult.lazyLoad.load();	// 画像遅延ロード
		this.getRecommendResult(); // こんな条件でも検索リンク遅延ロード
		this.getSeoLinkResult(); // SEOリンク遅延ロード
		$.era.searchResult.popThumb();
	}
};

/**
 * 遅延ロード
 */
jQuery.era.searchResult.lazyLoad = {
	load: function(){
		$.era.lazyLoad.load('#p2objectList .img > img', {
			noImg :$('#sso_era_url').val() + 'images/p2_no_image01.gif'
		});
	},
	destroy: function(){
		$.era.lazyLoad.destroy();
	}
};

/**
 * 各イベント登録（メニュー箇所）
 */
jQuery.era.searchResult.addMenuEvents = function(type) {
	// 賃貸：住居
	this.renthouse = function() {
		$.era.searchResult.changeMode();
		$.era.searchResult.changePriceSlider(
			[ '0', '30000', '35000', '40000', '45000', '50000', '55000',
				'60000', '65000', '70000', '75000', '80000', '85000', '90000',
				'95000', '100000', '110000', '120000', '130000', '140000',
				'150000', '160000', '170000', '180000', '190000', '200000',
				'300000', '500000', '1000000', '2147483647' ]
		);
		$.era.searchResult.changeCond();
		$.era.searchResult.changeAreaSlider(
			['0', '10', '15', '20', '25', '30', '35', '40', '50', '60',
			'70', '80', '90', '100', '110', '120', '99999999']
		);
		$.era.searchResult.changeWalkSlider(
			[ '1', '5', '7', '10', '15', '99' ]
		);
		$.era.searchResult.changeAgeSlider(
			[ '1', '3', '5', '10', '15', '20', '99' ]
		);
		$.era.searchResult.changeLayout();
		$.era.searchResult.changePicture();
		$.era.searchResult.changeEtcCond();
		$.era.searchResult.etcCondWindow(
			['position', 'room', 'kitchen', 'bath', 'aircon',
			 'storing', 'network', 'security', 'equip']
		);
		$.era.searchResult.changeKeyword();
		$.era.searchResult.editKeyword();
	};
	// 賃貸：駐車場
	this.parking = function(){
		$.era.searchResult.changeMode();
		$.era.searchResult.changePriceSlider(
			[ '0', '3000', '5000', '8000', '10000', '15000', '20000',　'25000',
			  '30000', '40000', '50000', '60000', '70000', '80000',	'100000', '2147483647' ]
		);
		$.era.searchResult.changeCond();
		$.era.searchResult.changeWalkSlider(
				[ '1', '5', '7', '10', '15', '99' ]
			);
		$.era.searchResult.changePicture();
		$.era.searchResult.changeKeyword();
		$.era.searchResult.editKeyword();
	};
	// 賃貸：事業用
	this.business = function(){
		$.era.searchResult.changeMode();
		$.era.searchResult.changePriceSlider(
			[ '0', '100000', '150000', '200000', '250000', '300000',
			  '350000',　'400000', '500000', '1000000', '2000000', '3000000',
			  '5000000', '8000000',　'10000000', '2147483647' ]
		, type);
		$.era.searchResult.changeCond();
		$.era.searchResult.changeAreaSlider(
			['0', '10', '15', '20', '25', '30', '35', '40', '50', '60',	'70', '80', '90',
			 '100', '110', '120', '99999999']
		);
		$.era.searchResult.changeWalkSlider(
			[ '1', '5', '7', '10', '15', '99' ]
		);
		$.era.searchResult.changeAgeSlider(
			[ '1', '3', '5', '10', '15', '20', '99' ]
		);
		$.era.searchResult.changePicture();
		$.era.searchResult.changeEtcCond();
		$.era.searchResult.etcCondWindow(['position', 'room', 'equip']);
		$.era.searchResult.changeKeyword();
		$.era.searchResult.editKeyword();
	};
	// 売買：住居
	this.residence = function(){
		$.era.searchResult.changeMode();
		$.era.searchResult.changePrice();
		$.era.searchResult.changeArea();
		$.era.searchResult.changeWalkSlider(
			[ '1', '5', '7', '10', '15', '20', '99' ]
		);
		$.era.searchResult.changeAge();
		$.era.searchResult.changeAgeSlider(
			[ '1', '3', '5', '10', '15', '20', '99' ]
		);
		$.era.searchResult.changeLayout();
		$.era.searchResult.changePicture();
		$.era.searchResult.changeEtcCond();
		$.era.searchResult.etcCondWindow(
			['position', 'building', 'room', 'security', 'equip']
		);
		$.era.searchResult.changeKeyword();
		$.era.searchResult.editKeyword();

	};
	// 売買：土地
	this.land = function(){
		$.era.searchResult.changeMode();
		$.era.searchResult.changePrice();
		$.era.searchResult.changeArea();
		$.era.searchResult.changeWalkSlider(
			[ '1', '5', '7', '10', '15', '99' ]
		);
		$.era.searchResult.changePicture();
		$.era.searchResult.changeEtcCond();
		$.era.searchResult.etcCondWindow(
			['position', 'land', 'prezent', 'equip']
		);
		$.era.searchResult.changeKeyword();
		$.era.searchResult.editKeyword();
	};

	if(this[type]){ this[type](); }
};

/**
 * 各イベント登録（リスト箇所）
 */
jQuery.era.searchResult.addListEvents = function(type) {
	$.era.searchResult.toggleChooseCities();
	$.era.searchResult.toggleChooseStations();
	$.era.searchResult.selectUrl();
	$.era.searchResult.clearCond();
	$.era.searchResult.popupResize();
	$.era.searchResult.searchSavedCondition();
	$.era.searchResult.saveCond();
	$.era.searchResult.check();
	$.era.searchResult.popThumb();
	$.era.searchResult.changeViewCnt();
	$.era.searchResult.changeSort();
	$.era.searchResult.changeImg();
	$.era.searchResult.goInquiry();
	(type == 'residence' || type == 'land')?
		$.era.searchResult.saveFavoriteBuy():
		$.era.searchResult.saveFavoriteRent();
	$.era.searchResult.goDetail();
	$.era.searchResult.checkAll();
};

/**
 * 各イベント再登録イベント
 */
jQuery.era.searchResult.addListEvents2 = function(type) {
	$.era.searchResult.selectUrl();
	$.era.searchResult.saveCond();
	$.era.searchResult.check();
	$.era.searchResult.changeViewCnt();
	$.era.searchResult.changeSort();
	$.era.searchResult.changeImg();
	(type == 'residence' || type == 'land')?
		$.era.searchResult.saveFavoriteBuy():
		$.era.searchResult.saveFavoriteRent();
	$.era.searchResult.checkAll();
};

/**
 * パラメータへのI/O
 */
jQuery.era.searchResult.param = {
	form: '#searchCond',

	get: function(){
		return $(this.form).serialize();
	},
	getVal: function(name){
		return $(this.form).find('[name='+name+']');
	},
	setVal: function(name, values){
		this.remove(name);
		$(this.form).append(values);
	},
	addVal: function(name, val, delFlg){
		// hiddenがある場合は無視
		if($(this.form).find(':hidden[name='+name+'][value='+val+']').length > 0){ return; }
		(delFlg)?
			$(this.form).append('<input type="hidden" name="'+name+'" value="'+val+'" class="del" />'):
			$(this.form).append('<input type="hidden" name="'+name+'" value="'+val+'" />');
	},
	removeVal: function(name, val){
		$(this.form).find(':hidden[name='+name+'][value='+val+']').remove();
	},
	remove: function(name){
		$(this.form).find(':hidden[name='+name+']').remove();
	},
	clear: function(){
		$(this.form).find('.del').remove();
		$(this.form).find('.notdel').val('');
	},
	size: function(name){
		return $(this.form).find('[name='+name+']').length;
	},
	resCheck: function(name,size){
		if($(this.form).find(':hidden[name='+name+']').length != size){
			$(this.form).find(':hidden[name='+name+']').remove();
			$('.p2popup:visible:first').find(':checked[name='+name+']:enabled').each(function(){
						var checkList = $(this);
						$.era.searchResult.param.addVal(name, checkList.val());
			});
		}
	}
};


/* dom ready */
$(function(){
	/*
	 * JSDeferred 初期化 http://coderepos.org/share/wiki/JSDeferred
	 * http://gihyo.jp/assets/files/event/2007/wdpress-tm2007/data/WDB-TechMTG-01-amano/cy/index.html
	 */
	Deferred.define();
});
