﻿ps_search_address={
	SearchHome:{
		el:{ searchHomeList:null },
		bindValue:function(jqa){
			var shUL=this.el.searchHomeList;
			var v=jqa.parameters['sht'];
			if(v && v!==undefined && v!='')
			{
				$.each($('li>a', shUL), function(i,o){
					$(o).addClass('selected');
				});
				$('a#'+v, shUL).removeClass('selected').click();
			}else{
				$.each($('li>a', shUL), function(i,o){
					$(o).removeClass('selected');
				});
			}
		},
		init:function(){
			if(this.el.searchHomeList==null) this.el.searchHomeList=$('ul#host-list-main');
		}
	},
	SearchLocation:{
		getData:function(){
			var chkList=this.el.chkLocationList;
			var vArr=[];
			$.each(chkList, function(i,o){
				var o=$(this);
				if(this.checked) vArr.push(o.val());
			});
			var d={
				st:'SearchLocation',
				sl:vArr.join(',')
			};
			return d;
		},
		el:{
			chkLocationList:null
		},
		bindValue:function(jqa, isExternal){
			var chkList=this.el.chkLocationList;
			var v=jqa.parameters['sl'];
			if(v&&v!==undefined&&v.length>0){
				$.each(chkList, function(i,o){
					var o=$(this);
					$.each(v.split(','), function(vI, vO){
						if(vO==o.val()) o.attr('checked', 'checked');
					});
				});
				var cnt=0;
				$.each(v, function(){ cnt++; });
				if(cnt>1 && !isExternal) $('div.advance-button').click();
			}
		},
		init:function(){
			var _this=this;
			if(this.el.chkLocationList==null) this.el.chkLocationList=$('form#form-search-location>ul.location-check>li>input:checkbox[name=region]');
			var chkList=this.el.chkLocationList;
			chkList.click(function(){
				_this.getData()
				$.address.value('?'+decodeURIComponent($.param(_this.getData())));
			});
		}
	},
	SearchAdvance:{
		getData:function(){
			var el=this.el;
			var d={st:'SearchAdvance'};
			var tArr=[];
			$.each(el.chkHouseType, function(i,o){
				var oEl=$(o);
				if(o.checked)
				{
					var id=oEl.attr('id');
					$.extend(d, eval('({'+id+':true})'));
				}
			});
			if(el.ddlZone.val()!='') $.extend(d, eval('({'+el.ddlZone.attr('name')+':'+el.ddlZone.val()+'})'));
			if(el.ddlBrand.val()!='') $.extend(d, eval('({'+el.ddlBrand.attr('name')+':'+el.ddlBrand.val()+'})'));
			if(el.ddlBdgtFrom.val()!='') $.extend(d, eval('({'+el.ddlBdgtFrom.attr('name')+':'+el.ddlBdgtFrom.val()+'})'));
			if(el.ddlBdgtTo.val()!='') $.extend(d, eval('({'+el.ddlBdgtTo.attr('name')+':'+el.ddlBdgtTo.val()+'})'));
			return d;
		},
		el:{
			form:null,
			chkHouseType:null,
			ddlZone:null, ddlBrand:null,
			ddlBdgtFrom:null, ddlBdgtTo:null
		},
		setAddress:function(data){
			$.address.value('?'+decodeURIComponent($.param(data)));
		},
		bindValue:function(jqa, isExternal){
			var _this=this;
			var el=this.el;
			var cnt=0;
			$.each(jqa.parameters, function(i,o){
				$.each(el.chkHouseType, function(ei,eo){
					var eoEl=$(eo);
					if(i==eoEl.attr('id')) eoEl.attr('checked', 'checked');
				});
				if(i==el.ddlZone.attr('name')) el.ddlZone.val(o);
				if(i==el.ddlBdgtFrom.attr('name')) el.ddlBdgtFrom.val(o);
				if(i==el.ddlBdgtTo.attr('name')) el.ddlBdgtTo.val(o);
				if(i==el.ddlBrand.attr('name')) el.ddlBrand.val(o);
				cnt++;
			});
			
			if(cnt>1 && !isExternal) $('div.advance-button').click();
		},
		init:function(){
			var _this=this;
			var el=this.el;
			if(el.form==null) el.from=$('form#form-search-advance');
			if(el.chkHouseType==null) el.chkHouseType=$('input[name=HouseType]', el.form);
			if(el.ddlZone==null) el.ddlZone=$('select[name=ZoneId]', el.form);
			if(el.ddlBrand==null) el.ddlBrand=$('select[name=BrandId]', el.form);
			if(el.ddlBdgtFrom==null) el.ddlBdgtFrom=$('select[name=BudgetFrom]', el.form);
			if(el.ddlBdgtTo==null) el.ddlBdgtTo=$('select[name=BudgetTo]', el.form);
			
			el.chkHouseType.click(function(){
				_this.setAddress(_this.getData());
			});
			el.ddlZone.change(function(){
				_this.setAddress(_this.getData());
			});
			el.ddlBrand.change(function(){
				_this.setAddress(_this.getData());
			});
			el.ddlBdgtFrom.change(function(){
				_this.setAddress(_this.getData());
			});
			el.ddlBdgtTo.change(function(){
				_this.setAddress(_this.getData());
			});
		}
	},
	SearchQuick:{
		el:{ input:null },
		getData:function(){
			var el=this.el;
			var d={st:'SearchQuick'};
			var elInput=el.input;
			var v=elInput.val();
			if(v.length>=3)
				$.extend(d, eval('({'+elInput.attr('name')+':\''+elInput.val()+'\'})'));
			return d;
		},
		setAddress:function(data){
			$.address.value('?'+decodeURIComponent($.param(data)));
		},
		bindValue:function(jqa, isExternal){
			var _this=this;
			var elInput=this.el.input;
			var v=jqa.parameters[elInput.attr('name')];
			if(v&&v!==undefined&&v.length>0){
				elInput.val(v);
				if(!isExternal)
					$('div.advance-button').click();
			}
		},
		init:function(){
			var _this=this;
			var el=this.el;
			el.input=$('form#form-search-quick>input[name=keyword]');
			el.input.focus(function(){
				_this.setAddress(_this.getData());
			});
			
			el.input.keyup(function(){
				_this.setAddress(_this.getData());
			});
		}
	},
	checkValue:function(jqa, isExternal){
		var st=jqa.parameters['st'];
		psse=psSearchEngine;

		psse.getCurrentSearchHash();
		psse.initSearchHash();
		psse.resetSearchForm();
		if(st=='SearchHome'){
			this.SearchHome.bindValue(jqa);
		}
		else if(st=='SearchLocation'){
			this.SearchLocation.bindValue(jqa, isExternal);
			if(isExternal)
			{
				var d=psse.SearchLocation.collectData();
				psse.loadSearchCount(psse.SearchLocation.searchCountUrl, d);
			}
		}
		else if(st=='SearchAdvance'){
			this.SearchAdvance.bindValue(jqa, isExternal);
			if(isExternal)
			{
				var d=psse.SearchAdvance.collectData();
				psse.loadSearchCount(psse.SearchAdvance.searchCountUrl, d);
			}
		}
		else if(st=='SearchQuick'){
			this.SearchQuick.bindValue(jqa, isExternal);
			if(isExternal)
			{
				var d=psse.SearchQuick.collectData();
				psse.loadSearchCount(psse.SearchQuick.searchCountUrl, d);
			}
		}
	},
	init:function(){
		var _this=this;

		this.SearchHome.init();
		this.SearchLocation.init();
		this.SearchAdvance.init();
		this.SearchQuick.init();
		
		var firstLoad=true;
		
		$.address
		.change(function(jqa){
			if(!firstLoad){
				AIIBT._trackPageview();
				/*
				var path=($.address.baseURL()+$.address.value().replace(/^\//,'')).replace(AIIBT.getCurrentDomain(), '');
				if (typeof pageTracker !== undefined && typeof pageTracker._trackPageview == 'function') {
                    pageTracker._trackPageview(path);
                }
                */
			}
		})
		.externalChange(function(jqa){
			// on click next or back
			_this.checkValue(jqa, !firstLoad);
			firstLoad=false;
		});
	}
};
$(function(){
	ps_search_address.init();
});