var __extends=(this&&this.__extends)||(function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||({__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;})||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p];};return extendStatics(d,b);};return function(d,b){if(typeof b!=="function"&&b!==null) throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d;} d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());};})();var VCMSTripFiltersWidget=(function(_super){__extends(VCMSTripFiltersWidget,_super);function VCMSTripFiltersWidget(apiLink,apiModuleName,data,target){var _this=_super.call(this,apiLink,apiModuleName,data,target)||this;_this.apiLink=apiLink;_this.apiModuleName=apiModuleName;_this.data=data;_this.target=target;_this.hasSkeleton=false;_this.container=$('#filters');_this.baseHash='';_this.btnClear=$('',{'class':'btn-clear-selected fa fa-times-circle','text':''});_this.allowDropdownClose=true;_this.$spinner=$(target).find('.skeleton');_this.hasSkeleton=_this.$spinner.length>0;if(!_this.hasSkeleton){_this.$spinner=$(target).find('.triplist-pending-info');} return _this;} VCMSTripFiltersWidget.prototype.getContainer=function(){if(!this.container){return $('#filters');} else{return this.container;}};VCMSTripFiltersWidget.prototype.getFiltersElements=function(){return this.getContainer().find('.filter');};VCMSTripFiltersWidget.prototype.getBaseFilterOptions=function(){return{minimumResultsForSearch:40,choicesInSingleLine:true,selectOnBlur:false,width:"100%",dropdownAutoWidth:true,title:true,escapeMarkup:function(m){return m;},closeOnSelect:false,};};VCMSTripFiltersWidget.prototype.getSelectFromFilter=function(_elem){return $(_elem).find('select.standard-select');};VCMSTripFiltersWidget.prototype.getInputFromFilter=function(_elem){return $(_elem).find('input.standard-input');};VCMSTripFiltersWidget.prototype.disableFiltersForm=function(){var _this=this;this.getFiltersElements().each(function(index,item){var $item=$(item);var f;if($item.hasClass('hotel-filter')){f=_this.getInputFromFilter(item);f.select2('close');} else if($item.find('.depdfilter').length||$item.hasClass('duration-filter')){$item.find('input').qtip('hide');} else{f=_this.getSelectFromFilter(item);f.select2('close');}});this.getContainer().addClass('disabled-form').hide();this.$spinner.show();};VCMSTripFiltersWidget.prototype.enableFiltersForm=function(){this.getContainer().removeClass('disabled-form').show();this.$spinner.hide();};VCMSTripFiltersWidget.prototype.getSelect2FromFilter=function(_elem){return $(_elem).find('.select2-container');};VCMSTripFiltersWidget.prototype.getHashObjectFromFilters=function(){var _this=this;var ret=this.getHashObjectFromHash();var filterSetList={};this.getFiltersElements().each(function(index,_filterContainer){var $item=_this.getSelectFromFilter(_filterContainer);if($(_filterContainer).hasClass('hotel-filter')||$(_filterContainer).hasClass('duration-filter')||$(_filterContainer).hasClass('calendar-filter')||$(_filterContainer).hasClass('slider-filter')||$(_filterContainer).hasClass('checkbox-filter')){$item=_this.getInputFromFilter(_filterContainer);} var name=$item.prop('id'),val=$item.val();if($(_filterContainer).hasClass('slider-filter')){var slider=$item.data("ionRangeSlider");val=slider.options.toMdswsVal(val);} if($(_filterContainer).hasClass('checkbox-filter')){if(!$item.is(':checked')){val=null;}} if(!!val){if(typeof filterSetList[name]==='undefined'){delete ret[name];} ret[name]=_this.appendFilterVal(ret[name],val);filterSetList[name]=true;} else if(typeof ret[name]!=='undefined'&&typeof filterSetList[name]==='undefined'){delete ret[name];}});return ret;};VCMSTripFiltersWidget.prototype.appendFilterVal=function(existingVal,val){if(typeof existingVal!=='undefined'){if(_.isArray(existingVal)){return existingVal.concat((_.isArray(val)?val:[val]));} else{return existingVal+','+val;}} return val;};VCMSTripFiltersWidget.prototype.addFilterEvents=function(_filterContainer){var _this=this;var $item;if($(_filterContainer).hasClass('duration-filter')||$(_filterContainer).hasClass('calendar-filter')||$(_filterContainer).hasClass('hotel-filter')||$(_filterContainer).hasClass('checkbox-filter')){$item=this.getInputFromFilter(_filterContainer);} else{$item=this.getSelectFromFilter(_filterContainer);} $item.on('change',function(){_this.selectOnChange($item);});};VCMSTripFiltersWidget.prototype.selectOnChange=function($elem){var filtersHash;this.lastFilter=$elem.prop('id');if(this.getEncodeHashObject()==''){history.pushState('',document.title,window.location.pathname+window.location.search);filtersHash=window.location.pathname+window.location.search;} else{history.pushState('',document.title,this.getEncodeHashObject());filtersHash=this.getEncodeHashObject();} sessionStorage.setItem('filters_searcher_hash',filtersHash);this.baseHash=this.getHashObjectFromHash();this.setContext(this.baseHash);$(window).trigger('update');if($elem.hasClass('duration-filter')){this.getContainer().attr('data-duration',$elem.val());} if($elem.hasClass('depdfilter')){this.getContainer().attr('data-depd',$elem.val());}};VCMSTripFiltersWidget.prototype.initSlider=function(_filterContainer,_cancelClick){var _this=this;if(_cancelClick===void 0){_cancelClick=false;} _filterContainer=$(_filterContainer);var $item=this.getInputFromFilter(_filterContainer);var id=$item.prop('id');var config={onFinish:function(){_this.selectOnChange(_filterContainer);},fromMdswsVal:function(_val){return _val;},toMdswsVal:function(_val){if(this.max===(_val*1)){return null;} return _val;},};if(_filterContainer.hasClass('time-filter')){config.prettify=function(_val){var ret=_val/3600+':00';if(ret.length===4){ret='0'+ret;} if(ret==='24:00'){return'23:59';} return ret;};config.fromMdswsVal=function(_val){_val=_val.split(':');_val[0]=_val[0].substr(0,2)*3600;if(_val[1]==='2359'){_val[1]='2400';} _val[1]=_val[1].substr(0,2)*3600;return _val;};config.toMdswsVal=function(_val){if(!_val||_val===''||_val.indexOf(':')===false){return'';} else{_val=_val.split(':');if(this.min===(_val[0]*1)&&this.max===(_val[1]*1)){return null;} _val[0]=(_val[0]/3600)+'00';_val[1]=(_val[1]/3600)+'00';if(_val[0].length===3){_val[0]='0'+_val[0];} if(_val[1].length===3){_val[1]='0'+_val[1];} if(_val[1]==='2400'){_val[1]='2359';} return _val.join(':');}};} _filterContainer.find('input').ionRangeSlider(config);if(this.baseHash[id]){var updateConfig={};var val=config.fromMdswsVal(this.baseHash[id]);if(Array.isArray(val)){updateConfig.from=val[0];updateConfig.to=val[1];} else{updateConfig.from=val;} var slider=_filterContainer.find('input').data("ionRangeSlider");slider.update(updateConfig);}};VCMSTripFiltersWidget.prototype.initSelect=function(_filterContainer,_cancelClick){var _this=this;if(_cancelClick===void 0){_cancelClick=false;} var $item=this.getSelectFromFilter(_filterContainer),id=$item.prop('id');if(this.baseHash[id]!==void 0){if(!_cancelClick&&$item.hasClass('destination-select')){var countriesToExpand={};var regionsToExpand={};for(var _i=0,_a=this.baseHash[id];_i<_a.length;_i++){var val=_a[_i];val=val.replace(/<\/?[^>]+(>|$)|"/g,"");var countryRegion=val.split('_');if(countryRegion.length>1){countriesToExpand[countryRegion[0]]=1;} var regionCity=val.split('|');if(regionCity.length>1){regionsToExpand[regionCity[0]]=1;var $region=$item.find('option[value="'+regionCity[0]+'"]');if($region.length>0){$('').insertAfter($region);}}} for(var i in countriesToExpand){var $country=$item.find('option[value="'+i+':"]');$country.data('expanded',true);var $nextOpt=$country.next();while($nextOpt.length>0&&$nextOpt.val().slice(-1)!==':'){if($nextOpt.val().indexOf('|')===-1){$nextOpt.data('visible',true);} $nextOpt=$nextOpt.next();}} $item.val(this.baseHash[id]);var regionsString='';for(var i in regionsToExpand){regionsString+=i+',';} if(regionsString!=''){$(_filterContainer).addClass('input-container-disabled');this.ajax('getCities',{id:regionsString.slice(0,-1),multiRq:true},function(data,error){$(_filterContainer).removeClass('input-container-disabled');for(var region in data.cities){var $opt=$item.find('option[value="'+region+'"]');$opt.data('expanded',true).data('ajax','ready');for(var _i=0,_a=data.cities[region];_i<_a.length;_i++){var city=_a[_i];var fullCityId=region+'|'+city.id;var $selOpt=$item.find('option[value="'+fullCityId+'"]:selected');var selected=($selOpt.length>0);$opt=$('').data('visible',true).insertAfter($opt);if(selected){$selOpt.remove();}}}},false);}} else{$item.val(this.baseHash[id]);}} if($item.hasClass('js-attribute-select')){$item.on("select2-selecting",function(e){var groupId=$(e.currentTarget).find('option[value='+e.val+']').data('group');if(e.val===groupId){for(var _i=0,_a=e.target.childNodes;_i<_a.length;_i++){var childNode=_a[_i];if(childNode.nodeName==='OPTION'&&childNode.selected===true&&$(childNode).data('group')===groupId&&$(childNode).val()!==groupId){childNode.selected=false;}}} else if(groupId){for(var _b=0,_c=e.target.childNodes;_b<_c.length;_b++){var childNode=_c[_b];if(childNode.nodeName==='OPTION'&&childNode.selected===true&&childNode.value==groupId){childNode.selected=false;}}}});} if($item.hasClass('category-select')){$item.select2($.extend(true,this.getBaseFilterOptions(),{closeOnSelect:true,choicesInSingleLine:true,formatResult:function(object){var text='';if(object.id%10!==0){text+=''+''+''+''+' ';} for(var i=1;i<=6;i++){if(object.id/(i*10)>=1){text=''+text;} else{if(object.id%10!==0&&i===6){continue;} text+='';}} return text+''+object.text+'';},}));$item.on("select2-selecting",function(e){$item.select2("val",e.id);});this.addFilterEvents(_filterContainer);} else if($item.hasClass('destination-select')){$item.select2($.extend(true,this.getBaseFilterOptions(),{formatResult:function(object){if(object.id.indexOf('|')!==-1||!_this.data['destinationCityEnabled']&&object.id.slice(-1)!==':'){return object.text;} var expandClass=$(object.element[0]).data('expanded')?'fa-angle-up':'fa-angle-down';return object.text+'';},formatResultCssClass:function(object,query){if(object.id.slice(-1)!==':'){var isCity=(object.id.indexOf('|')!==-1);return(isCity?'indent-element-2':'indent-element')+' checkboxed-element '+(isCity?'js-city':'js-region')+ (query.term&&query.term!=''||$(object.element[0]).data('visible')?'':' hide');} else{return'checkboxed-element js-country';}},dropdownCssClass:'filter-multiselect',})).data('select2').dropdown.on('mouseup touchend','li.checkboxed-element',this.destinationFilterExpandCollapse.bind(this));$item.on("select2-selecting",function(e){if(e.val.split('_').length===2){var countryId=e.val.split('_')[0]+':';var regionCity=e.val.split('|');var mainRegion=(regionCity.length==1);var regionId=regionCity[0];for(var _i=0,_a=e.target.childNodes;_i<_a.length;_i++){var childNode=_a[_i];if(childNode.nodeName==='OPTION'&&childNode.selected===true&&(childNode.value===countryId||regionId!=''&&!mainRegion&&childNode.value===regionId||regionId!=''&&mainRegion&&childNode.value.split('|')[0]===regionId&&childNode.value.split('|')[1]!=='')){childNode.selected=false;}}} else{for(var _b=0,_c=e.target.childNodes;_b<_c.length;_b++){var childNode=_c[_b];if(childNode.nodeName==='OPTION'&&childNode.selected===true&&childNode.value.split('_').length===2&&childNode.value.split('_')[0]===e.val.replace(':','')){childNode.selected=false;}}}});this.createMultipleSelectionHandlers(_filterContainer);} else if($item.hasClass('dist-beach-select')){$item.select2($.extend(true,this.getBaseFilterOptions(),{formatResult:function(object){return translations.upTo+' '+object.text+' '+translations.fromABeach;},dropdownCssClass:'filter-multiselect',}));this.addFilterEvents(_filterContainer);} else{$item.select2($.extend(true,this.getBaseFilterOptions(),{formatResultCssClass:function(object){if(object.id.slice(-1)!==':'){return'checkboxed-element';}},dropdownCssClass:'filter-multiselect',}));if($(_filterContainer).hasClass('duration-filter')||$(_filterContainer).hasClass('calendar-filter')){this.addFilterEvents(_filterContainer);} else{this.createMultipleSelectionHandlers(_filterContainer);}}};VCMSTripFiltersWidget.prototype.destinationFilterExpandCollapse=function(e){var $target=$(e.target);if($target.hasClass('checkboxed-element')){return;} var $liElem=$target.closest('li.checkboxed-element');var $expandElem=$liElem.find('.js-filter-expand');if($expandElem.length==0){return;} var $optElem=$($liElem.data('select2-data').element[0]);var isExpanding=$expandElem.hasClass('fa-angle-down');$expandElem.addClass(isExpanding?'fa-angle-up':'fa-angle-down').removeClass(isExpanding?'fa-angle-down':'fa-angle-up');if($liElem.hasClass('js-country')){$optElem.data('expanded',isExpanding);var $opt=$liElem.next();while($opt.hasClass('js-region')||$opt.hasClass('js-city')){if(isExpanding&&$opt.hasClass('js-city')){$opt=$opt.next();continue;} var $subOptElem=$($opt.data('select2-data').element[0]);if(isExpanding){$opt.removeClass('hide');} else{$opt.addClass('hide');$opt.find('.js-filter-expand').addClass('fa-angle-down').removeClass('fa-angle-up');$subOptElem.data('expanded',false);} $subOptElem.data('visible',isExpanding);$opt=$opt.next();}} else{if(isExpanding&&!$optElem.data('ajax')){var $spinner_1=$('