/*!
 * EstateSearch 3nsk JS
 *
 * Copyright (c) 2009 3Films Co.,Ltd.
 *
 *	@param string f3nsk_base_url
 *	@param boolean f3nsk_first_reload
 */

function pageload(hash) {
	if(hash) {
		// restore ajax loaded state
		ajaxSearch(null, hash);
	} else {
		// start page
		if( f3nsk_first_reload ) {
			ajaxSearch(null, hash);
		} else {
			f3nsk_first_reload = 1;
		}
	}
}

function PreLoad(obj,val) {
	var d = document;
	var img = obj;
	d.img = new Image();
	d.img.src = val;
}

/*
function task_cookie()
{
	if( !$.cookie('test') ) {
		var qs = $('#search_form').serializeArray();
		//alert('eq=' + $.cookie('test'));
		$.cookie('test', qs);
		//alert(qs);
	} else {
		var data = $.cookie('test');
		alert(data);
	}
	//$.cookie('cookiename','data',{ expires: 7 });//書き込み{保存days}
	//document.write($.cookie('cookiename'));//読み出し
}
*/


/* --------------------------------------------------------- */
// Utility - Display
/* --------------------------------------------------------- */
function add_count(obj_resp, prefix)
{
	$.each(obj_resp,
		function(key, val) {
			var elm = $('#'+prefix+key);
			if(0 == val) {
				// 値が入っている場合は無効にしない
				if(false == $('input', elm).attr('checked')) {
					$('input', elm).attr('disabled', 'disabled');
				}
//				$('input', elm).attr('disabled', 'disabled');
				elm.css('color', '#FF9999');//#F3A6A9
			} else {
				$('input', elm).removeAttr('disabled');
				elm.css('color', '');
			}
			elm.append('<span class="cnt">('+val+')<\/span>');
		}
	);
}

/* --------------------------------------------------------- */
// Utility - Validate
/* --------------------------------------------------------- */
function validate_range(input_min, input_max, item_name)
{
	var min = parseInt($(input_min).val());
	var max = parseInt($(input_max).val());
	if( (min != 0 && max != 0) && (min > max) ) {
		alert("[" + item_name + "]\n" + "正しくない範囲指定です。\n指定し直して下さい。");
		return false;
	}
	return true;
}

function validate_at_least(input_elm, item_name)
{
	var value = $(input_elm).fieldValue();
	var chk = false;
	if( value.length > 0 ) {
		$.each(
			value,
			function(key, val) {
				if('1' == val) {
					chk = true;
					return;
				}
			}
		);
		if( !chk ) {
			alert(item_name+'の選択は最低１つ必要です。');
			return false;
		}
	}
	return true;
}


/* --------------------------------------------------------- */
// Bind Events
/* --------------------------------------------------------- */
$(function() {
	/* Toggle Color to table-cell */
	$.historyInit(pageload);
	//task_cookie();
	
	//PreLoad('img_loading', f3nsk_base_url + 'img/estate/ajax-loader.gif');
	
	/* アコーディオン */
	$('h3#head_area_rails').toggle(
		function() {
			$('span', this).text('▼');
			$('#block_area_rails').slideToggle('normal');
		},
		function() {
			$('span', this).text('▽');
			$('#block_area_rails').slideToggle('normal');
		}
	);
	$('h3#head_area_mid').toggle(
		function() {
			$('span', this).text('▼');
			$('#block_area_mid').slideToggle('normal');
		},
		function() {
			$('span', this).text('▽');
			$('#block_area_mid').slideToggle('normal');
		}
	);

	$('h3#head_basic').toggle(
		function() {
			$('span', this).text('▼');
			$('#block_basic').slideToggle('normal');
		},
		function() {
			$('span', this).text('▽');
			$('#block_basic').slideToggle('normal');
		}
	);
	$('h3#head_conditions').toggle(
		function() {
			$('span', this).text('▼');
			$('#block_conditions').slideToggle('slow');
		},
		function() {
			$('span', this).text('▽');
			$('#block_conditions').slideToggle('slow');
		}
	);
	
	/* Action for SELECT */
	$('select').change(
		function() {
			if( !validate_range('#rent_min', '#rent_max', '家賃') ) return false;
			if( !validate_range('#object_area_min', '#object_area_max', '占有面積') ) return false;
			ajaxSearch(null);
		}
	);
	/* Action for CHECKBOX or RADIO */
	/* changeはNG -> clickでcheckedを参照する $("#checkbox")[0].checked */
	$('input').click(
		function() {
			if( 'reset' != $(this).attr('type') ) {
				if( !validate_at_least('#box_ken_mid input', '地域') ) return false;
				if( !validate_at_least('#box_ensen_eki input', '沿線') ) return false;
				ajaxSearch(null);
			}
		}
	);
	
	$('#btn_reset_search_item').click(
		function() {
			$('#search_form').resetForm();
			ajaxSearch(null);
			return false;
		}
	);
	
	// ReBind
	clickEvent();
});

/* --------------------------------------------------------- */
// ReBind Event Parts
/* --------------------------------------------------------- */
function clickEvent()
{
	/* 仮 */
	$("div.box_estate_img img").lazyload(
		{
			/*container: $("#container"),*/
			threshold: 10,
			failurelimit: 10,
			placeholder: "/img/estate/ajax_small.gif",
			/*event: "click",*/
			effect: "fadeIn"
		}
	);
	
	/*var bk_color;
	$('table.item_list tbody tr').hover(
		function() {
			bk_color = $(this).css('background-color');
			$(this).css('background-color', '#ffeeee');
			//$(this).after('<tr class="info"><td colspan="9">test<\/td><\/tr>');
		},
		function() {
			$(this).css('background-color', bk_color);
			//$('tr.info').remove();
		}
	);*/
	
	/* Sort */
	/*
	$('#trigger_sort_rent').click(
		function () {
			var tmp = $('#sort_rent');
			$('span.sort').remove();
			if( 'desc' == tmp.attr('value') ) {
				tmp.val('asc');
				//tmp.prepend('<span class="sort">↑</span>');
			} else {
				tmp.val('desc');
				//tmp.prepend('<span class="sort">↓</span>');
			}
			ajaxSearch(null);
			return false;
		}
	);
	$('#trigger_sort_walk_to_station').click(
		function () {
			var tmp = $('#sort_walk_to_station');
			$('span.sort').remove();
			if( 'desc' == tmp.attr('value') ) {
				tmp.val('asc');
				//tmp.prepend('<span class="sort">↑</span>');
			} else {
				tmp.val('desc');
				//tmp.prepend('<span class="sort">↓</span>');
			}
			ajaxSearch(null);
			return false;
		}
	);
	*/
	
	/* Pager */
	$('a.pager').click(
		function () {
			
			var tmp_url = $(this).attr('href');
			if( tmp_url ) {
				var tmp = tmp_url.split('\/');
				var hash = tmp.reverse();
				/*if(hash[0] != "undefined")*/ $.historyLoad(hash[0]);
			}
			
			//var hash = $(this).text();
			//$.historyLoad(hash);
			
			//ajaxSearch($(this).attr("href"));
    		return false;
		}
	);
	
}

/* --------------------------------------------------------- */
// Ajax - Search
/* --------------------------------------------------------- */
function ajaxSearch(target_url, page)
{
	/*if( typeof ccc == "undefined" ) {
		ccc = 0 + 115;
	}
	ccc = Number(ccc);*/
	
	/*$("#dialog").dialog(
		{
			width: 240,
			draggable: false,
			resizable: false
		}
	);*/
	
	$("#box_loading").show();
	
	/*$('container_search').block({
		message: '<h1 style="font-size: 12pt;top: 0;">検索中 </h1>',
		css: {
			border: '3px solid #a00'
		},
		overlayCSS: {
			backgroundColor:'#eee',
		}
	});*/
	
	var Success = function (response) {
		
		if(response != "false") {
//			$('container_search').unblock();
//			$('div.container_table').fadeOut(
//			'normal',
//				function () {
					/* 物件データテーブル */
					$('div#container_table').empty().append(response.list_html);
					//$('#test').empty().append(response.hoka);
					
					/* 検索結果数 */
					$("#search_total_num").empty().append(response.results+' ');
					$("#search_offset_num").empty().append(response.results_offset+' ');
					
/*					tmp_cnt = response.results;
					if( tmp_cnt >= ccc) {
						ani = +1;
					} else {
						ani = -1;
					}
*/

//$("#dialog").show();
//$("#dialog").animate(
//	{/*width: "toggle",*/ opacity: "toggle"},
/*	{duration: 3000, easing: "linear",
		complete: function()
		{
			ccc = tmp_cnt;
			$("#dialog").hide();
		},
		step: function(s){
				if( ccc != tmp_cnt ) ccc = ccc + ani;
			$("#dialog").text(ccc)
		}
	}
);*/

					/* 検索項目 - カウント付加 */
					/* CountsObject */
					var dat = response.counts;//response.statics;	// statics
					$('span.cnt').remove();
					
					add_count(dat.rent_options, '');
					/*$.each(dat.rooms,
						function(key, val) {
							var tmp_cnt = response.counts.rooms[key];
							if(0 == tmp_cnt) {
								$('#'+key+' input').attr('disabled', 'disabled');
							} else {
								$('#'+key+' input').removeAttr('disabled');
							}
							$('#'+key).append(' <span class="cnt">('+response.counts.rooms[key]+')<\/span>');
						}
					);*/
					add_count(dat.rooms, '');
					add_count(dat.types, '');
					add_count(dat.walk_to_station, 'wtos');
					add_count(dat.ages, 'ages');
					
					if( dat.conditions ) add_count(dat.conditions, 'c_');
					if( dat.ensen_eki )  add_count(dat.ensen_eki, 'ensen_eki');
					if( dat.ken_mid )    add_count(dat.ken_mid, 'ken_mid');
					
					clickEvent();
					$('div#container_table').fadeIn(
						'fast',
						function () {
							$("#box_loading").hide();
						}
					);
//				}
//			);
		} else {
			alert("失敗");
		}
    };
    /* エラーハンドラ xml == XMLHttpRequest */
	var Error = function (xml, status, e) {
		alert("通信エラー：\r\nデータの遅延により正しく通信が出来ませんでした。\r\nお手数ですが、もう一度検索条件をご指定下さい。");
		/*alert("失敗");
		alert(xml.responseText);*/
		/*$('div#container_table').empty().append(xml.responseText);*/
	};
	
	if(target_url != null) {
		/* for Pager */
		var url = target_url;
	} else {
		var url = f3nsk_base_url + 'estate/reload/';
		if(page) {
			url += page;
		}
	}
	
	/* Post Request */
    var opts = {
		'timeout':  40000,
		'success': Success,
		'error': Error,
		'url': url,
		'type': 'post',
		'dataType': 'json'
	};
	
	$('#search_form').ajaxSubmit(opts);
	$('div#container_table').fadeOut('fast');
}

