﻿
(function(){if(typeof BeApart==='undefined'){BeApart={};}
if(typeof BeApart.Search==='undefined'){BeApart.Search={};}
if(typeof BeApart.Search.SearchEngine==='undefined'){BeApart.Search.SearchEngine={};}
String.prototype.padLeft=function(strChar,intLength){var str=this+'';while(str.length!=intLength){str=strChar+str;}
return str;};var getUtcDateFromString=function(string){var tab=string.split('-');if(tab.length==3&&tab[0].length==4&&tab[1].length==2&&tab[2].length==2){return new Date(Date.UTC(tab[0],tab[1]-1,tab[2]));}
return new Date();};Cuke.apply(BeApart.Search.SearchEngine,{$districts:null,isPageResult:false,curPageUrl:"",wrapper:null,fromCalendar:null,toCalendar:null,cache:{},init:function(id,cities,isPageResult,curPageUrl){var self=this;this.wrapper=$j('#'+id);this.isPageResult=isPageResult;this.curPageUrl=curPageUrl;this.fromCalendar=$j($j('.CukeCalendarBeApartSearch')[0]).CukeCalendar();this.toCalendar=$j($j('.CukeCalendarBeApartSearch')[1]).CukeCalendar();this.cache[""]=this.getSelectedSearchInfo();var districtsSelector=$j('.districts .districts-selector',this.wrapper);var searchButton=$j('.search-button',this.wrapper);districtsSelector.change(function(){var s=$j(this);Cuke.SyncDic.Val('DistrictSelected',$j('option:selected',s).attr('value'));});Cuke.SyncDic.Bind('DistrictSelected',function(value){$j('option:selected',districtsSelector).removeAttr('selected');$j('option[value='+value+']',districtsSelector).attr('selected','selected');districtsSelector.css('background-color','#00F6FF');setTimeout(function(){districtsSelector.css('background-color','#FFFFFF');setTimeout(function(){districtsSelector.css('background-color','#00F6FF');setTimeout(function(){districtsSelector.css('background-color','#FFFFFF');},1000);},100);},200);});districtsSelector.mouseout(function(){Cuke.SyncDic.Val('DistrictHighlighted',0);});$j('option',districtsSelector).mouseover(function(){Cuke.SyncDic.Val('DistrictHighlighted',$j(this).attr('value'));});$j(window).bind('hashchange',function(event){if(isPageResult){var url=$j.bbq.getState("search");if(!url){url="";}
var searchInfo=self.cache[url];if(searchInfo){var curInfo=self.getSelectedSearchInfo();if(curInfo.From.getTime()!=searchInfo.From.getTime()||curInfo.To.getTime()!=searchInfo.To.getTime()||curInfo.NbPers!=searchInfo.NbPers){self.updateForm(searchInfo);self.putInSession();}}
else{self.cache[url]=self.getSelectedSearchInfo();}}});var setLinkButton=function(){if(!isPageResult){var resultPage=cities[self.getCityName()];if(resultPage){searchButton.attr("href",resultPage);}}
else{searchButton.attr("href",curPageUrl);}};setLinkButton();$j('.city-selector',this.wrapper).change(function(){setLinkButton();});searchButton.click(function(){self.ensureDateValid();var errorMess=self.getErrorMessage();if(errorMess!=""){Cuke.Window.alert(errorMess,null,{size:[350,100]});}
else{$j.ajax({type:"POST",contentType:"application/json; charset=utf-8",url:Cuke.rootUrl+"BeApart/Basic/Service/SearchService.asmx/ResetFilter",data:JSON.stringify({cityName:self.getCityName()}),dataType:"json",success:function(resp){if(resp.d.Result===0){self.putInSession(function(){if(self.isPageResult){var from=self.fromCalendar.selected[0];var to=self.toCalendar.selected[0];$j.bbq.pushState({search:from.getUTCFullYear().toString()+"-"+(from.getUTCMonth()+1).toString().padLeft('0',2)+"-"+from.getUTCDate().toString().padLeft('0',2)+"_"+
to.getUTCFullYear().toString()+"-"+(to.getUTCMonth()+1).toString().padLeft('0',2)+"-"+to.getUTCDate().toString().padLeft('0',2)+"_"+
self.getNbPers(),filter:0,page:1});}
else{var url=searchButton.attr("href");if(districtsSelector.length>0&&districtsSelector.val()!="0"){url+="filter=district-"+districtsSelector.val();}
window.location.href=url;}});}
else{alert(resp.d.ErrorText);}}});}
return false;});},putInSession:function(onSuccedCallBack){var self=this;$j.ajax({type:"POST",contentType:"application/json; charset=utf-8",url:Cuke.rootUrl+"BeApart/Basic/Service/SearchService.asmx/PutInSession",data:JSON.stringify({searchInfo:self.getSelectedSearchInfo()}),dataType:"json",success:function(resp){if(resp.d.Result===0){if(typeof onSuccedCallBack=="function"){onSuccedCallBack();}}}});},updateForm:function(searchInfo){this.fromCalendar.selectDate(searchInfo.From);this.toCalendar.selectDate(searchInfo.To);$j(".city-selector option[value='"+searchInfo.CityName+"']",this.wrapper).attr("selected","selected");$j(".pers-selector option[value='"+searchInfo.NbPers+"']",this.wrapper).attr("selected","selected");},getSelectedSearchInfo:function(){return{From:this.fromCalendar.selected[0],To:this.toCalendar.selected[0],NbPers:this.getNbPers(),CityName:this.getCityName()};},getNbPers:function(){var v=$j(".pers-selector",this.wrapper).val();return v!="0"?parseInt(v,10):0;},getCityName:function(){var selector=$j(".city-selector",this.wrapper);var name;if(selector.length===0){name=$j("input:hidden[name=cityName]",this.wrapper).val();}
else{name=selector.val();}
return name!="0"?name:"";},getErrorMessage:function(){var ensureBreak=function(s){if(s.length>0){s+="<br />";}
return s;}
var errorMsg="";if(this.getCityName()==""){errorMsg=Cuke.getString("BeApart.SearchSelectCity");}
if(this.getNbPers()===0){errorMsg=ensureBreak(errorMsg);errorMsg+=Cuke.getString("BeApart.SearchSelectPersonn");}
var from=this.fromCalendar.selected[0];var to=this.toCalendar.selected[0];if(from>=to){errorMsg=ensureBreak(errorMsg);errorMsg+=Cuke.getString("BeApart.SearchSelectDates");}
return errorMsg;},ensureDateValid:function(){function doEnsureDateValid(selected,idx){if(selected.selected[0]==null){var htmlCal=$j($j('.DatePickerBeApartSearch.SelectMonthYear')[idx]);var day=parseInt($j('#seDays',htmlCal).attr('value'));var monthYear=$j('#seMonth',htmlCal).attr('value').split('/');var month=parseInt(monthYear[0]);var year=monthYear[1];var lastDay=(new Date(Date.UTC(year,month+1,0,0,0,0,0))).getUTCDate();if(lastDay<day){selected.selectDate(year,month,lastDay);var d=new Date(Date.UTC(year,month,lastDay,0,0,0,0));selected.ensureVisible(d);}}}
var from=this.fromCalendar;var to=this.toCalendar;doEnsureDateValid(from,0);doEnsureDateValid(to,1);}});})();
