document.querySelectorAll('.ultra-view .wpv-filter-form').forEach(element=>
element.addEventListener('submit', function (){
location.href=current_search_target;
return false;
}));
document.querySelectorAll(".ultra-view [data-range-type=\"min\"]").forEach(elem=> {
elem.addEventListener("change", doctor_property_min_selector_changed);
if(elem.selectedIndex > 0){
elem.dispatchEvent(new Event('change'));
}});
document.querySelectorAll(".ultra-view [data-range-type=\"max\"]").forEach(elem=> {
elem.addEventListener("change", doctor_property_max_selector_changed);
if(elem.selectedIndex > 0){
elem.dispatchEvent(new Event('change'));
}});
let current_search_target=location.href;
onAny('.ultra-view > form', 'change', (form, event)=> {
let redirect_url=form.querySelector("[name=ultra-view-target]").value + '{{prop-type}}-in-{{location}}-and-{{sublocation}}{{bklocations}}{{phuketloc}}{{pattayaloc}}-to-{{status}}-with-{{features[]}}-{{bedrooms_min}}-{{price_min}}-{{price_max}}-{{min_plot_area}}-{{max_plot_area}}-{{min_property_size}}-{{max_property_size}}.{{bkbts}}.{{bkmrt}}.{{bkairport}}.{{construction-status}}/';
let redirect_fields={
'status': 'buy_rent',
'prop-type': 'offers',
'location': 'all-cities',
'features[]': 'any-features',
'bedrooms_min': '0',
'price_min': '0',
'price_max': '100000000000',
'min_plot_area': '0',
'max_plot_area': '1000000',
'min_property_size': '0',
'max_property_size': '1000000',
'bkbts': 'all',
'bkmrt': 'all',
'bkairport': 'all',
'construction-status': 'all'
};
switch (form.querySelector("[name=location]").value){
case 'bangkok':
redirect_fields['bklocations']='all-areas';
break;
case 'phuket':
redirect_fields['phuketloc']='all-areas';
break;
case 'pattaya':
redirect_fields['pattayaloc']='all-areas';
break;
default :
redirect_fields['sublocation']='all-areas';
}
for (let field in redirect_fields){
let element=form.querySelector('[name="' + field + '"]');
let value=false;
if(element&&field.endsWith('[]')){
let values=[];
for (let option of element.options){
if(option.selected){
values.push(option.value);
}}
value=values.join(',');
}else{
value=element ? element.value:false;
}
if(!value||typeof value==='undefined'||value==='0'||value===0 ||
value==='null'||value===null||value===""||value.length===0){
value=redirect_fields[field];
}
value=value.toString().replace(/,/g, '-and-');
redirect_url=redirect_url.replace("{{" + field + "}}", value);
}
redirect_url=redirect_url.replace("{{sublocation}}", '');
redirect_url=redirect_url.replace("{{bklocations}}", '');
redirect_url=redirect_url.replace("{{phuketloc}}", '');
redirect_url=redirect_url.replace("{{pattayaloc}}", '');
current_search_target=drproperty_data.wpml_home_url + redirect_url;
event.preventDefault();
event.stopPropagation();
forAny('.ultra-view-link', element=> {
element.href=current_search_target;
}, form);
let prefetch=document.createElement('link');
prefetch.setAttribute('href', current_search_target);
prefetch.setAttribute('rel', 'prefetch');
document.head.appendChild(prefetch);
});
let locationSelectors=document.querySelectorAll('.ultra-view .wpv-filter-form select[name=location]');
locationSelectors.forEach(select=> {
select.addEventListener('change', doctor_property_location_selector_changed);
select.dispatchEvent(new Event('change'));
});
function doctor_property_location_selector_changed(event, data){
let value=this.value;
value=value.replace('-de', '');
value=value.replace('-zh-hans', '');
value=value.replace('-fr', '');
value=value.replace('-th', '');
let parent=this.closest('[data-location]');
if(parent){
parent.setAttribute('data-location', value);
}
document.body.setAttribute('data-property-location', value)
}
function doctor_property_min_selector_changed(){
let value=Number(this.value);
let max_options=this.parentNode.parentNode.querySelectorAll("[data-range-type=\"max\"] option");
max_options.forEach(option=> {
if(option.value!==''&&value!==0&&Number(option.value) <=value){
option.setAttribute("disabled", "disabled");
option.classList.add('drproperty-hidden');
}else{
option.removeAttribute("disabled");
option.classList.remove('drproperty-hidden');
}});
}
function doctor_property_max_selector_changed(){
let value=Number(this.value);
let min_options=this.parentNode.parentNode.querySelectorAll("[data-range-type=\"min\"] option");
min_options.forEach(option=> {
if(option.value!==''&&value!==0&&Number(option.value) >=value){
option.setAttribute("disabled", "disabled");
option.classList.add('drproperty-hidden');
}else{
option.removeAttribute("disabled");
option.classList.remove('drproperty-hidden');
}});
};