| Current Path : /home/helpink/www/components/com_jbusinessdirectory/assets/js/ |
| Current File : /home/helpink/www/components/com_jbusinessdirectory/assets/js/jbd-app.js |
/*! jbd-app.min.js file */
class JBDConstants {}
JBDConstants.ITEM_TYPE_BUSINESS = 1, JBDConstants.ITEM_TYPE_OFFER = 2, JBDConstants.ITEM_TYPE_EVENT = 3, JBDConstants.ITEM_TYPE_REQUEST_QUOTE = 4, JBDConstants.MAP_TYPE_GOOGLE = 1, JBDConstants.MAP_TYPE_BING = 2, JBDConstants.MAP_TYPE_OSM = 3, JBDConstants.IS_ADMIN = 0, JBDConstants.IS_FRONT = 1, JBDConstants.AJAX_RESPONSE_SUCCESS = 1, JBDConstants.AJAX_RESPONSE_ERROR = 0, JBDConstants.QUOTE_MESSAGES_POLLING_INTERVAL = 5e3;
class JBDUtils {
setProperties(properties) {
let tmp = "";
properties.langaugeCode && (tmp = properties.langaugeCode + "/"), properties.url = properties.site_url, properties.isProfile == JBDConstants.IS_ADMIN && (properties.url = properties.admin_url), this.properties = properties, this.properties.month_names = this.properties.month_names.split(",")
}
getProperty(property) {
if (void 0 === this.properties);
else if (void 0 !== this.properties[property]) return this.properties[property];
return null
}
setProperty(property, value) {
return this.properties[property] = value, !0
}
getAjaxUrl(task, controller, frontController = "") {
let url = "";
if (void 0 === controller || 0 === controller.length) return url;
if (void 0 === task || 0 === task.length) return url;
let cntrl = controller;
jbdUtils.getProperty("isProfile") === JBDConstants.IS_FRONT && frontController.length > 0 && (cntrl = frontController);
let baseUrl = jbdUtils.getProperty("url");
return "undefined" !== baseUrl && baseUrl.includes("?") ? baseUrl += "&" : baseUrl += "?", url += baseUrl + "task=" + cntrl + "." + task
}
getDateWithFormat(date) {
let format = this.getProperty("dateFormat"),
delimiter = "-";
format.indexOf("/") > -1 ? delimiter = "/" : format.indexOf("\\") > -1 && (delimiter = "\\");
let tmp = format.split(delimiter),
newDate = "";
for (let i = 0; i < 3; i++) "d" === tmp[i] ? newDate += ("0" + date.getDate()).slice(-2) : "m" === tmp[i] ? newDate += ("0" + (date.getMonth() + 1)).slice(-2) : "y" !== tmp[i] && "Y" !== tmp[i] || (newDate += date.getFullYear()), i < 2 && (newDate += delimiter);
return newDate
}
sleep(milliseconds) {
let start = (new Date).getTime();
for (let i = 0; i < 1e7 && !((new Date).getTime() - start > milliseconds); i++);
}
registerStatAction(itemId, itemType, statType) {
let urlWebsiteCount = jbdUtils.getAjaxUrl("increaseCountAjax", "statistics");
jQuery.ajax({
type: "GET",
data: {
item_id: itemId,
item_type: itemType,
stat_type: statType
},
url: urlWebsiteCount,
success: function() {}
})
}
increaseShareClicks(itemId, itemType) {
let urlShareCount = jbdUtils.getAjaxUrl("increaseShareCountAjax", "companies");
jQuery.ajax({
type: "GET",
data: {
itemId: itemId,
itemType: itemType
},
url: urlShareCount,
success: function() {}
})
}
addCoordinatesToUrl(position) {
let latitude = position.coords.latitude,
longitude = position.coords.longitude,
newURLString = window.location.href;
newURLString += -1 == newURLString.indexOf("?") ? "?" : "&", newURLString += "geo-latitude=" + latitude, newURLString += -1 == newURLString.indexOf("?") ? "?" : "&", newURLString += "geo-longitude=" + longitude, window.location.href = newURLString
}
getCookie(name) {
for (var cookieArr = document.cookie.split(";"), i = 0; i < cookieArr.length; i++) {
var cookiePair = cookieArr[i].split("=");
if (name == cookiePair[0].trim()) return decodeURIComponent(cookiePair[1])
}
}
setCookie(c_name, value, exdays) {
var expires = "";
if (exdays) {
var date = new Date;
date.setTime(date.getTime() + 24 * exdays * 60 * 60 * 1e3), expires = "; expires=" + date.toUTCString()
}
document.cookie = c_name + "=" + (value || "") + expires + "; path=/"
}
renderRadioButtons() {
jQuery(".radio.btn-group label").addClass("btn"), jQuery(".btn-group label:not(.active)").click(function() {
let label = jQuery(this),
input = jQuery("#" + label.attr("for"));
input.prop("checked") || (label.closest(".btn-group").find("label").removeClass("active btn-success btn-danger btn-primary"), "" == input.val() ? label.addClass("active btn-primary") : 0 == input.val() ? label.addClass("active btn-danger") : label.addClass("active btn-success"), input.prop("checked", !0))
}), jQuery(".btn-group input[checked=checked]").each(function() {
"" == jQuery(this).val() ? jQuery("label[for=" + jQuery(this).attr("id") + "]").addClass("active btn-primary") : 0 == jQuery(this).val() ? jQuery("label[for=" + jQuery(this).attr("id") + "]").addClass("active btn-danger") : jQuery("label[for=" + jQuery(this).attr("id") + "]").addClass("active btn-success")
})
}
initializeAdminAutocomplete(preventSubmit, componentForm) {
let element = document.getElementById("route");
JBDMapHelper.initAutocomplete(element, function(place) {
jbdUtils.fillInAddress(place, componentForm)
}, preventSubmit, !0, null, componentForm)
}
addAdminMapClickAction() {
"undefined" != typeof jbdAdminMapInstance && jbdAdminMapInstance.addMapListener("click", function(location) {
jbdAdminMapInstance.clearMarkers(), jbdAdminMapInstance.addMarker(location, function() {
document.getElementById("latitude").value = location.latitude, document.getElementById("longitude").value = location.longitude
})
})
}
fillInAddress(place, component_form) {
let city = null,
county = null;
jQuery("#address-container").show(), jQuery("#sec-address-container").show(), void 0 === component_form && (component_form = jbdUtils.getComponentForm());
for (let component in component_form) {
document.getElementById(component);
"undefined" != typeof maybeObject && (document.getElementById(component).value = "", document.getElementById(component).disabled = !1)
}
for (let j in place) {
let att = j;
if (component_form[att]) {
let val = place[j];
if (jQuery("#" + att).val(val), "administrative_area_level_1" == att && (county = val), "locality" == att && (city = val), "route" == att && place.street_number && !jQuery("#street_number").length) {
let addr = place.street_number + " " + val;
jQuery("#" + att).val(addr)
}
"country" == att && (jQuery("#country option").filter(function() {
return jQuery(this).text() === val
}).attr("selected", !0), jbdUtils.getProperty("limit_cities_regions"))
}
}
jbdUtils.updateChosenSelect("#country")
}
getComponentForm() {
return {
street_number: "short_name",
route: "long_name",
locality: "long_name",
administrative_area_level_1: "long_name",
country: "long_name",
postal_code: "short_name",
administrative_area_level_2: "long_name",
latitude: "long",
longitude: "long",
area_id: "short_name"
}
}
validateAppSettingsForm(validateNonVisible, validateRichText, formName) {
formName = formName || "item-form";
let validationResult = !1;
return jQuery("#" + formName).validationEngine("attach", {
validateNonVisibleFields: validateNonVisible
}), (validationResult = jQuery("#" + formName).validationEngine("validate")) || jbdUtils.showSettingsValidationError(formName), validationResult
}
validateCmpForm(validateNonVisible, validateRichText, task = null, customRuleHook) {
void 0 !== customRuleHook && customRuleHook(), validateRichText && jbdUtils.validateRichTextEditors(), jbdUtils.validateMultiSelects(), jbdUtils.validateSingleSelects();
let isError = jQuery("#item-form").validationEngine("validate", {
validateNonVisibleFields: validateNonVisible
});
return isError && ("apply" == task && (jQuery(".button-save").addClass("loader"), jQuery(".button-save, .button-close , .button-cancel").attr("disabled", !0)), "save" == task && (jQuery(".button-close").addClass("loader"), jQuery(".button-save, .button-close , .button-cancel").attr("disabled", !0))), !isError
}
showValidationError(formName) {
formName = formName || "item-form", jQuery("#validation-error").show(500), setTimeout(function() {
jQuery("#validation-error").hide(700)
}, 7e3), 1 == jbdUtils.getProperty("edit_form_mode") && setTimeout(function() {
for (let i = 1; i <= 6; i++)
if (jQuery("#edit-tab" + i + " div.formError").length) {
jbdTabs.openTab(i);
break
} setTimeout(function() {
jQuery("#" + formName).validationEngine("updatePromptsPosition")
}, 500)
}, 1500)
}
showSettingsValidationError(formName) {
formName = formName || "item-form", jQuery("#validation-error").show(500), setTimeout(function() {
jQuery("#validation-error").hide(700)
}, 5e3);
let numItems = jQuery("#tab_general_id").children("dt.tabs").length;
0 == numItems && (numItems = jQuery("#tab_general_id").children().children("li").length), 0 == numItems && (numItems = jQuery("#tab_general_id").children("joomla-tab-element").length), setTimeout(function() {
for (let i = 1; i <= numItems; i++)
if (jQuery(".panel_" + i + "_content div.formError").length) {
jbdUtils.openSettingsTab(i);
break
} setTimeout(function() {
jQuery("#" + formName).validationEngine("updatePromptsPosition")
}, 700)
}, 1500)
}
checkUserByUsername(selectorId) {
let username = jQuery("#" + selectorId).val(),
url = jbdUtils.getAjaxUrl("checkUserByUsernameAjax", "businessuser");
username && jQuery.ajax({
url: url,
dataType: "json",
data: {
username: username
},
success: function(data) {
jQuery("#" + selectorId).siblings(".usernameWarning").html(data.message)
}
})
}
checkUserByEmail(selectorId) {
let email = jQuery("#" + selectorId).val(),
url = jbdUtils.getAjaxUrl("checkUserByEmailAjax", "businessuser");
email && jQuery.ajax({
url: url,
dataType: "json",
data: {
email: email
},
success: function(data) {
jQuery("#" + selectorId).siblings(".emailWarning").html(data.message)
}
})
}
calendarFormat(dateFormat) {
switch (dateFormat) {
case "Y-m-d":
return "yyyy-mm-dd";
case "m/d/Y":
return "mm/dd/yyyy";
case "d-m-Y":
default:
return "dd-mm-yyyy"
}
}
openSettingsTab(tab) {
jQuery("#adminForm").validationEngine("detach"), jQuery("#adminForm").validationEngine("validate") && (document.getElementById("tab-panel_" + tab) ? document.getElementById("tab-panel_" + tab).click() : jQuery('button[aria-controls="panel_' + tab + '"]').length ? jQuery('button[aria-controls="panel_' + tab + '"]').click() : jQuery(".panel_" + tab).click())
}
validateTabs(validateNonVisible, validateRichText, task = null) {
let validationResult = !1;
if (jbdUtils.getProperty("isMultilingual")) {
let tabgroup = jQuery(".tab-" + jbdUtils.getProperty("defaultLang"));
0 == tabgroup.length && (tabgroup = jQuery("button[aria-controls='tab-" + jbdUtils.getProperty("defaultLang") + "']")), tabgroup.each(function() {})
}
return validateRichText && this.validateRichTextEditors(), jbdUtils.validateMultiSelects(), jQuery("#item-form").validationEngine("attach", {
validateNonVisibleFields: validateNonVisible
}), (validationResult = jQuery("#item-form").validationEngine("validate")) ? ("apply" == task && (jQuery(".button-save").addClass("loader"), jQuery(".button-save , .button-close , .button-cancel").attr("disabled", !0)), "save" == task && (jQuery(".button-close").addClass("loader"), jQuery(".button-save , .button-close, .button-cancel").attr("disabled", !0))) : this.showValidationError(), validationResult
}
validateRichTextEditors() {
let lang = "";
if (jbdUtils.getProperty("isMultilingual")) {
let tabgroup = jQuery(".tab-" + jbdUtils.getProperty("defaultLang"));
0 == tabgroup.length && (tabgroup = jQuery("button[aria-controls='tab-" + jbdUtils.getProperty("defaultLang") + "']")), lang += "_" + jbdUtils.getProperty("langTab"), tabgroup.each(function() {})
}
let richTextEditorClass = ".js-editor-tinymce";
0 == jQuery(richTextEditorClass).length && jQuery(".wf-editor-container").length > 0 && (richTextEditorClass = ".wf-editor-container"), jQuery(richTextEditorClass).each(function() {
let textarea = jQuery(this).find("textarea");
tinyMCE.triggerSave(), textarea.attr("id") == "description" + lang && (jQuery.trim(textarea.val()).length > 0 ? jQuery(this).hasClass("validate[required]") && jQuery(this).removeClass("validate[required]") : jQuery(this).hasClass("validate[required]") || jQuery(this).addClass("validate[required]"))
})
}
showItem(link) {
window.open(link, "_blank").focus()
}
readMore() {
jQuery("#general-info").removeClass("collapsed"), jQuery(".read-more").hide()
}
applyReadMore() {
jQuery(".read-more").each(function() {
let content = jQuery(this).html();
if (content.length > 70) {
let html = content.substr(0, 70) + '<span class="moreellipses">... </span><span class="morecontent"><span>' + content.substr(70, content.length - 70) + '</span> <a href="javascript:void(0)" class="morelink" >Show more</a></span>';
jQuery(this).html(html)
}
}), jQuery(".morelink").click(function() {
return jQuery(this).hasClass("less") ? (jQuery(this).removeClass("less"), jQuery(this).html("Show more")) : (jQuery(this).addClass("less"), jQuery(this).html("Show less")), jQuery(this).parent().prev().toggle(), jQuery(this).prev().toggle(), !1
})
}
calculateLength() {
let obj = jQuery("#description");
if (obj.val()) {
let max = parseInt(obj.attr("maxlength"));
obj.val().length > max && obj.val(obj.val().substr(0, obj.attr("maxlength"))), jQuery("#descriptionCounter").val(max - obj.val().length)
}
}
calculateLengthShort() {
let obj = jQuery("#short_description");
if (obj.val()) {
let max = parseInt(obj.attr("maxlength"));
obj.val().length > max && obj.val(obj.val().substr(0, obj.attr("maxlength"))), jQuery(".js-short-description").val(max - obj.val().length)
}
}
calculateLengthSlogan() {
let obj = jQuery("#slogan");
if (obj.val()) {
let max = parseInt(obj.attr("maxlength"));
obj.val().length > max && obj.val(obj.val().substr(0, obj.attr("maxlength"))), jQuery(".js-slogan").val(max - obj.val().length)
}
}
validateMultiSelects() {
let chosenSelector = ".chzn-container-multi";
jQuery(chosenSelector).length || (chosenSelector = ".chosen-container-multi"), jQuery(chosenSelector).each(function() {
let id = jQuery(this).attr("id");
if (void 0 !== id) {
let selectId = id.substr(0, id.lastIndexOf("_"));
if (jQuery("#" + selectId).hasClass("validate[required]") || jQuery("#" + id).hasClass("validate[required]")) {
let values = jQuery("#" + selectId).chosen().val();
void 0 === values || null == values || 0 == values.length ? (jQuery("#" + id).hasClass("validate[required]") || jQuery("#" + id).addClass("validate[required]"), jQuery("#" + selectId).removeClass("validate[required]")) : (jQuery("#" + id).removeClass("validate[required]"), jQuery("#" + selectId).addClass("validate[required]"))
}
}
})
}
validateSingleSelects() {
let chosenSelector = ".chzn-container-single";
jQuery(chosenSelector).length || (chosenSelector = ".chosen-container-single"), jQuery(chosenSelector).each(function() {
let id = jQuery(this).attr("id");
if (void 0 !== id) {
let selectId = id.substr(0, id.lastIndexOf("_"));
if (jQuery("#" + selectId).hasClass("validate[required]") || jQuery("#" + id).hasClass("validate[required]")) {
let values = jQuery("#" + selectId).chosen().val();
void 0 === values || null == values || 0 == values.length ? (jQuery("#" + id).hasClass("validate[required]") || jQuery("#" + id).addClass("validate[required]"), jQuery("#" + selectId).removeClass("validate[required]")) : (jQuery("#" + id).removeClass("validate[required]"), jQuery("#" + selectId).addClass("validate[required]"))
}
}
})
}
saveForm(formId = "item-form") {
let isError = !0;
jQuery("#" + formId).validationEngine("detach"), isError = jQuery("#" + formId).validationEngine("validate"), jQuery("#" + formId).validationEngine("attach"), isError && (jQuery("#" + formId + " button").each(function() {
jQuery(this).attr("disabled", "disabled")
}), jQuery("#" + formId + " .jbd-commit").addClass("loader"), document.getElementById(formId).submit())
}
showLoginNotice() {
jQuery("#login-notice").jbdModal()
}
showMap(display) {
jQuery("#map-link").hasClass("active") ? (jQuery("#companies-map-container").hide(), jQuery("#map-link").removeClass("active")) : (jQuery("#companies-map-container").show(), jQuery("#map-link").addClass("active"), mapInstance.initialize(), mapInstance.mapInitialized = !0)
}
hideMap() {
jQuery("#company-map-holder").hide()
}
initializeSearchAutocomplete(token, preventSubmit, limitedCountries) {
let element = document.getElementsByClassName("zipcode-" + token)[0];
jQuery(document).ready(function() {
JBDMapHelper.initAutocomplete(element, function(place) {
jQuery("#geo-latitude").val(place.latitude), jQuery("#geo-longitude").val(place.longitude), jQuery("#regionSearch").val(place.administrative_area_level_1), jQuery("#citySearch").val(place.locality), jQuery("#location-detected").val("1"), "function" == typeof changeFormActionURL && changeFormActionURL()
}, preventSubmit, !1, limitedCountries)
})
}
saveSelectedCategory(categorySet, categId) {
let catId;
catId = jQuery("#search-filter input[type='checkbox']:checked").attr("id"), categorySet && (catId = categId), jQuery("#adminForm #categoryId").val(catId), jQuery("#adminForm input[name=limitstart]").val(0)
}
chooseCategory(categoryId) {
"chk" == categoryId.toString().substring(0, 3) && (categoryId = categoryId.substring(3)), categoryId = categoryId.toString().replace(";", ""), jQuery("#adminForm #categoryId").val(categoryId), jQuery("#adminForm input[name=limitstart]").val(0), jbdUtils.initializeGetItemsAjax()
}
removeSearchRule(type) {
"province" == type && jQuery("#adminForm #province-search").val(""), "type" == type && jQuery("#adminForm #type-search").val(""), "zipcode" == type && (jQuery("#adminForm #zipcode").val(""), jQuery("#adminForm #radius").val(""), jQuery("#adminForm #geo-latitude").val(""), jQuery("#adminForm #geo-longitude").val("")), "location" == type && (jQuery("#adminForm #geo-latitude").val(""), jQuery("#adminForm #geo-longitude").val("")), "age" == type && jQuery("#adminForm #age").val(""), "start-time" == type && jQuery("#adminForm #start_time").val(""), "end-time" == type && jQuery("#adminForm #end_time").val(""), "country" == type && jQuery("#adminForm #country-search").val(""), "region" == type && jQuery("#adminForm #region-search").val(""), "city" == type && jQuery("#adminForm #city-search").val(""), "keyword" == type && (jQuery("#adminForm #searchkeyword").val(""), jQuery("#adminForm #resetSearch").val("1")), "startDate" == type && jQuery("#adminForm #startDate").val(""), "endDate" == type && jQuery("#adminForm #endDate").val(""), "minprice" == type && jQuery("#adminForm #minprice-search").val(""), "maxprice" == type && jQuery("#adminForm #maxprice-search").val(""), "quoteRequestCompany" == type && jQuery("#adminForm #selectedParams").val(""), jQuery("#adminForm #resetSearch").val("1"), jQuery("#adminForm").submit()
}
removeAttrCond(attributeId, value) {
jQuery("input[name=attribute_" + attributeId + "]").remove(), jQuery("#attribute_" + attributeId).val(""), this.removeFilterRule("attribute_" + attributeId, value), jQuery("#adminForm").submit()
}
addFilterRule(type, id, text) {
let filter = jQuery("#adminForm #selectedParams").val(),
param = "";
if (filter.length > 0) {
let start = filter.indexOf(type),
end = filter.indexOf(";", start); - 1 != start && (param = filter.slice(start, end), filter = filter.slice(0, start) + filter.slice(end + 1), jQuery("#selectedParams").val(filter))
}
let val = type + "=" + id + ";";
jQuery("#adminForm #selectedParams").val().length > 0 ? jQuery("#adminForm #selectedParams").val(jQuery("#adminForm #selectedParams").val() + val) : jQuery("#adminForm #selectedParams").val(val), jQuery("#filter_active").val("1"), jQuery("#adminForm input[name=limitstart]").val(0), jbdUtils.initializeGetItemsAjax()
}
addFilterItem(type, id, text) {
let ul = jQuery("#selected-criteria"),
li = document.createElement("li");
li.innerHTML = '<a class="filter-type-elem" onClick="jbdUtils.removeFilterRule(\'' + type + "'," + id + ')">' + text + '+ <i class="la la-times"></i></a>', ul.append(li)
}
removeFilterRule(type, id, categorySet, categId) {
let val = type + "=" + id + ";",
filter = jQuery("#selectedParams").val();
if (filter.length > 0) {
let start = filter.indexOf(type),
end = filter.indexOf(";", start);
if (-1 != start) {
let param = filter.slice(start, end).toString();
if ("" !== (filter = filter.slice(0, start) + filter.slice(end + 1))) {
let values = (param = param.replace(type + "=", "")).split(",");
for (var i = 0; i < values.length; i++) parseInt(values[i]) == id && values.splice(i, 1);
filter += param = type + "=" + values.join() + ";"
}
jQuery("#selectedParams").val(filter)
}
}
jQuery("#selectedParams").val(filter.replace(val, "")), jQuery("#filter_active").val("1"), "city" == type && jQuery("#adminForm #city-search").val(""), "region" == type && jQuery("#adminForm #region-search").val(""), "country" == type && jQuery("#adminForm #country-search").val(""), "type" == type && jQuery("#adminForm #type-search").val(""), jbdUtils.initializeGetItemsAjax()
}
resetFilters(resetCategories, isCompany = !1) {
jQuery("#selectedParams").val(""), resetCategories ? jQuery("#categories-filter").val("") : isCompany ? jbdListings.saveSelectedCategory() : this.saveSelectedCategory(), jQuery("#adminForm #categoryId").val(""), jQuery("#adminForm #searchkeyword").val(""), jQuery("#adminForm #zipcode").val(""), jQuery("#adminForm #city-search").val(""), jQuery("#adminForm #region-search").val(""), jQuery("#adminForm #province-search").val(""), jQuery("#adminForm #age").val(""), jQuery("#adminForm #start_time").val(""), jQuery("#adminForm #end_time").val(""), jQuery("#adminForm #minprice-search").val(""), jQuery("#adminForm #maxprice-search").val(""), jQuery("#adminForm #country-search").val(""), jQuery("#adminForm #type-search").val(""), jQuery("#adminForm #province-search").val(""), jQuery("#adminForm #radius").val(""), jQuery("#adminForm #startDate").val(""), jQuery("#adminForm #endDate").val(""), jQuery("#adminForm #filter-by-fav").val(""), jQuery("input[id*='attribute_']").val(""), jQuery("input[name*='attribute_']").remove(), jQuery("#adminForm #geo-latitude").val(""), jQuery("#adminForm #geo-longitude").val(""), jQuery("#adminForm #resetSearch").val("1"), jbdUtils.initializeGetItemsAjax()
}
checkMoreFilterRule(val) {
jQuery("input[name=" + val + "]:checked").length > 0 ? jbdUtils.addMoreFilter(val) : jbdUtils.removeMoreFilter(val)
}
addMoreFilter(val) {
val += ";", jQuery("#moreParams").val().length > 0 ? jQuery("#moreParams").val(jQuery("#moreParams").val() + val) : jQuery("#moreParams").val(val), jQuery("#adminForm input[name=limitstart]").val(0)
}
removeMoreFilter(val) {
val += ";";
let str = jQuery("#adminForm #moreParams").val();
jQuery("#adminForm #moreParams").val(str.replace(val, ""))
}
resetMoreFilter() {
jQuery("#adminForm #moreParams").val(""), jQuery("#adminForm").submit()
}
addFilterRuleCategory(catId) {
catId += ";", jQuery("#categories-filter").val(catId), jQuery("#filter_active").val("1"), jQuery("#adminForm input[name=limitstart]").val(0), jbdUtils.chooseCategory(catId)
}
removeFilterRuleCategory(catId) {
let categoryId = catId + ";",
str = jQuery("#categories-filter").val();
jQuery("#categories-filter").val(str.replace(categoryId, "")), jQuery("#categorySearch").val(""), jQuery("input[name='categorySearch']").each(function() {
jQuery(this).val("")
}), jQuery("#filter_active").val("1");
let checked = jQuery("#filterCategoryItems input[type='checkbox']:checked");
if (checked.length > 0) checked.each(function() {
let id = jQuery(this).attr("id");
if (id != catId) return jbdUtils.chooseCategory(id), !1
});
else if (0 == checked.length) {
let categoryIds = jQuery("#categories-filter").val(),
start = (categoryId = categoryIds.slice(0, categoryIds.length - 1)).lastIndexOf(";") + 1; - 1 == start && (start = 0), categoryId = categoryId.slice(start, categoryId.length), jbdUtils.chooseCategory(categoryId)
}
}
changeFormActionURL(doSubmit = !0) {
let country = jbdUtils.getCookie("default-country"),
enforceURL = jQuery("#enforce-url").val(),
urlFormActionRetriever = jbdUtils.getAjaxUrl("getSearchFormActionAjax", "search");
1 != enforceURL ? jQuery.ajax({
type: "GET",
url: urlFormActionRetriever,
data: {
category: jQuery("#admin-form #categorySearch").val(),
country: country,
city: jQuery("#admin-form #city-search").val(),
region: jQuery("#admin-form #region-search").val()
},
dataType: "json",
success: function(data) {
data && (jQuery("#adminForm").attr("action", data.data.url), doSubmit && jQuery("#adminForm").submit())
}
}) : jQuery("#adminForm").submit()
}
initializeGetItemsAjax() {
let form = jQuery("#adminForm"),
actionUrl = jbdUtils.getProperty("initialize_get_items_url");
if (0 == jbdUtils.getProperty("search_results_loading")) return void jQuery("#adminForm").submit();
jQuery("#jbd-results-list-container").html(""), jQuery("#jbd-results-grid-container").html(""), jQuery("#list-view-container").addClass("loading"), jQuery("#jbd-grid-view").addClass("loading"), document.getElementById("search-filters-react") && ReactDOM.unmountComponentAtNode(document.querySelector("#search-filters-react")), jQuery("#adminForm #start").val(0);
let filterItemType = jbdUtils.getProperty("filter_item_type");
jQuery.ajax({
url: actionUrl,
type: "GET",
data: form.serialize(),
cache: !1,
success: function(result) {
jQuery("#total-results").val(result.data.total_results), jQuery(".pag-total-result").text(result.data.total_results), jbdUtils.loadMoreItems();
let e = React.createElement;
ReactDOM.render(e(SearchFilter, {
searchFilterType: jbdUtils.getProperty("ajax_search_filter_type"),
showSearchFilterParams: !0,
itemType: filterItemType
}), document.querySelector("#search-filters-react"))
}
})
}
loadMoreItems() {
let enable_ratings = jbdUtils.getProperty("enable_ratings"),
url = jbdUtils.getProperty("get_items_url"),
show_search_map = jbdUtils.getProperty("show_search_map"),
start = jQuery("#start").val();
void 0 == start && (start = 0);
let list_layout = jQuery("#list_layout").val(),
grid_layout = jQuery("#grid_layout").val(),
count = jQuery(".pag-to-result").html(),
total_results = jQuery("#total-results").val(),
resetLocations = !1,
orderBy = jQuery("#orderBy").val();
start = parseInt(start), list_layout = parseInt(list_layout), grid_layout = parseInt(grid_layout), count = parseInt(count), 0 == start && (resetLocations = !0), jQuery(".load-more-js").addClass("loader dark"), jQuery.ajax({
type: "GET",
url: url,
data: {
start: start,
list_layout: list_layout,
grid_layout: grid_layout,
reload: 1,
total_results: total_results,
orderBy: orderBy
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#list-view-container").removeClass("loading"), jQuery("#jbd-grid-view").removeClass("loading");
let $listHtml = jQuery(data.data.listitems).filter("#jbd-results-list-container").html(),
$gridHtml = jQuery(data.data.griditems).find("#jbd-results-grid-container").html();
$listHtml || ($listHtml = jQuery(data.data.listitems).find("#jbd-results-list-container").html()), jQuery("#jbd-results-list-container").append($listHtml), jQuery("#jbd-results-grid-container").append($gridHtml), 1 == show_search_map && data.data.locations && mapInstance && mapInstance.setLocations(data.data.locations, resetLocations), jQuery("#start").val(data.data.items_count), jQuery(".pag-to-result").html(data.data.items_count), data.data.show_more ? jQuery("#load-more-btn").show() : jQuery("#load-more-btn").hide(), 1 == enable_ratings && (jbdListings.renderListAverageRating(), jbdListings.renderGridReviewRating()), jQuery(".list-style-7").length && renderListGallery(), jQuery(".load-more-js").removeClass("loader dark")
}
})
}
showMoreParams(div, lessButton) {
div = "#" + div;
let less = "#" + lessButton;
jQuery(div).removeAttr("style"), jQuery(less).css("display", "none")
}
showLessParams(div, moreButton) {
div = "#" + div;
let more = "#" + moreButton;
jQuery(div).css("display", "none"), jQuery(more).removeAttr("style")
}
initSlider(params) {
let sliderId = "#slider",
sliderContentId = "#slider-content";
void 0 !== params.sliderId && (sliderId += "-" + params.sliderId, sliderContentId += "-" + params.sliderId), void 0 !== params.override_id && (sliderId = params.sliderId);
let autoplay = !1;
void 0 !== params.autoplay && (autoplay = params.autoplay);
let autoplaySpeed = 0;
void 0 !== params.autoplaySpeed && (autoplaySpeed = params.autoplaySpeed);
let nrVisibleItems = 0;
void 0 !== params.nrVisibleItems && (nrVisibleItems = parseInt(params.nrVisibleItems));
let nrVisibleItems1024 = 3;
nrVisibleItems1024 > nrVisibleItems && (nrVisibleItems1024 = nrVisibleItems);
let nrVisibleItems600 = 2;
nrVisibleItems600 > nrVisibleItems && (nrVisibleItems600 = nrVisibleItems);
let nrItemsToScrool = 0;
void 0 !== params.nrItemsToScrool && (nrItemsToScrool = parseInt(params.nrItemsToScrool));
let rtl = !1;
void 0 !== params.rtl && (rtl = params.rtl);
let infinite = !0;
void 0 !== params.infinite && (infinite = params.infinite);
let centerMode = !1;
void 0 !== params.centerMode && (centerMode = params.centerMode);
let variableWidth = !1;
void 0 !== params.variableWidth && (variableWidth = params.variableWidth), jQuery(sliderId + "-loader").hide(), jQuery(sliderId).slick({
dots: !1,
prevArrow: '<a class="controller-prev" href="javascript:;"><span><i class="la la-angle-left"></i></span></a>',
nextArrow: '<a class="controller-next" href="javascript:;"><span><i class="la la-angle-right"></i></span></a>',
customPaging: function(slider, i) {
return '<a class="controller-dot" href="javascript:;"><span><i class="la la-circle"></i></span></a>'
},
autoplay: autoplay,
autoplaySpeed: autoplaySpeed,
speed: 300,
slidesToShow: nrVisibleItems,
slidesToScroll: nrItemsToScrool,
infinite: infinite,
centerMode: centerMode,
variableWidth: variableWidth,
rtl: rtl,
responsive: [{
breakpoint: 1024,
settings: {
slidesToShow: nrVisibleItems1024,
slidesToScroll: nrVisibleItems1024,
infinite: infinite,
dots: !1
}
}, {
breakpoint: 600,
settings: {
slidesToShow: nrVisibleItems600,
slidesToScroll: nrVisibleItems600
}
}, {
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}]
})
}
showAddBookmark(requiresLogin, itemId, itemType) {
requiresLogin ? jbdUtils.showLoginNotice() : this.showBookmarkDialog(itemId, itemType)
}
showBookmarkDialog(itemId, itemType) {
let url = jbdUtils.getAjaxUrl("getBookmarkAjax", "bookmark", "bookmark");
jQuery.ajax({
type: "GET",
data: {
user_id: jQuery("#update-bookmark #user_id").val(),
item_id: itemId,
item_type: itemType
},
url: url,
cache: !1,
success: function(response) {
response.data.bookmark && response.data.bookmark.id > 0 ? (jQuery("#update-bookmark #item_id").val(itemId), jQuery("#update-bookmark #item_type").val(itemType), jQuery("#update-bookmark #note").val(response.data.bookmark.note), jQuery("#update-bookmark").jbdModal()) : (jQuery("#add-bookmark #item_id").val(itemId), jQuery("#add-bookmark #item_type").val(itemType), jQuery("#add-bookmark #note").val(""), jQuery("#add-bookmark").jbdModal())
}
})
}
addBookmark() {
let url = jbdUtils.getAjaxUrl("addBookmarkAjax", "bookmark", "bookmark");
jQuery.ajax({
type: "GET",
data: {
item_id: jQuery("#add-bookmark #item_id").val(),
item_type: jQuery("#add-bookmark #item_type").val(),
note: jQuery("#add-bookmark #note").val()
},
url: url,
cache: !1,
success: function(response) {
let itemId = jQuery("#add-bookmark #item_id").val();
jQuery("#bookmark-" + itemId + " i").toggleClass("la la-heart"), jQuery("#bookmark-" + itemId + " i").toggleClass("la la-heart-o"), jbdUtils.showMessage(response.data.response_message)
}
})
}
showUpdateBookmarkDialog(requiresLogin, itemId, itemType) {
requiresLogin ? jbdUtils.showLoginNotice() : this.showBookmarkDialog(itemId, itemType)
}
updateBookmark() {
let url = jbdUtils.getAjaxUrl("updateBookmarkAjax", "bookmark", "bookmark");
jQuery.ajax({
type: "GET",
data: {
user_id: jQuery("#update-bookmark #user_id").val(),
item_id: jQuery("#update-bookmark #item_id").val(),
item_type: jQuery("#update-bookmark #item_type").val(),
note: jQuery("#update-bookmark #note").val()
},
url: url,
cache: !1,
success: function(response) {
jbdUtils.showMessage(response.data.response_message)
}
})
}
removeBookmark(type) {
let url = jbdUtils.getAjaxUrl("removeBookmarkAjax", "bookmark", "bookmark");
jQuery.ajax({
type: "GET",
data: {
user_id: jQuery("#update-bookmark #user_id").val(),
item_id: jQuery("#update-bookmark #item_id").val(),
item_type: jQuery("#update-bookmark #item_type").val()
},
url: url,
cache: !1,
success: function(response) {
let itemId = jQuery("#update-bookmark #item_id").val();
jQuery("#bookmark-" + itemId + " i").toggleClass("la la-heart"), jQuery("#bookmark-" + itemId + " i").toggleClass("la la-heart-o"), jbdUtils.showMessage(response.data.response_message)
}
})
}
showMessage(message) {
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("LNG_MESSAGE") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a></div><div class="jmodal-body"><p>' + message + '<p></div><div class="jmodal-footer"><div class="btn-group" role="group" aria-label=""><button type="button" class="jmodal-btn jmodal-btn-outline" onclick="jQuery.jbdModal.close()">' + Joomla.JText._("LNG_CLOSE") + "</button></div></div></div></div>";
jQuery(html).appendTo("body").jbdModal()
}
basename(path) {
return path.split("/").reverse()[0]
}
addDirAnnouncement() {
jQuery("#id").val(0), jQuery("#adminForm #task").val("managecompanyannouncement.add"), jQuery("#adminForm").submit()
}
deleteDirAnnouncement(id) {
jQuery("#id").val(id), confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_ANNOUNCEMENT_CONFIRM_DELETE")) && (jQuery("#id").val(id), jQuery("#adminForm #task").val("managecompanyannouncements.deleteAnnouncement"), jQuery("#adminForm").submit())
}
addDirPriceList() {
jQuery("#id").val(0), jQuery("#adminForm #task").val("managecompanypricelist.add"), jQuery("#adminForm").submit()
}
deleteDirPriceList(id) {
jQuery("#id").val(id), confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_PRICE_LIST_CONFIRM_DELETE")) && (jQuery("#id").val(id), jQuery("#adminForm #task").val("managecompanypricelists.deletePriceList"), jQuery("#adminForm").submit())
}
addPaymentProcessor() {
jQuery("#id").val(0), jQuery("#adminForm #task").val("managepaymentprocessor.add"), jQuery("#adminForm").submit()
}
deletePaymentProcessor(processorId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_PAYMENT_PROCESSOR_CONFIRM_DELETE")) && (jQuery("#id").val(processorId), jQuery("#adminForm #task").val("managepaymentprocessors.delete"), jQuery("#adminForm").submit())
}
listItemTaskAjax(cid, itemId, task) {
let iState = jQuery("#" + itemId).prop("checked"),
cidArray = [];
cidArray[0] = jQuery("#" + cid).val();
let url = jbdUtils.getProperty("url") + "&task=" + task;
jQuery.ajax({
type: "GET",
url: url,
data: {
cid: cidArray,
id: cidArray[0],
itemId: itemId,
ajax: !0,
status: iState
},
dataType: "json",
success: function(data) {
if (data.error) jQuery("#" + itemId).prop("checked", !iState);
else {
if (!Array.isArray(data.cid)) {
let cida = [data.cid];
data.cid = cida
}
if ("categories.unpublish" == task)
for (let i = 0; i < data.cid.length; i++) {
jQuery("#jtoggle-state-" + data.cid[i]).prop("checked", !1);
let res = document.getElementById("jtoggle-state-" + data.cid[i]).getAttribute("onclick").replace("unpublish", "publish");
document.getElementById("jtoggle-state-" + data.cid[i]).setAttribute("onclick", res)
} else if ("categories.publish" == task)
for (let i = 0; i < data.cid.length; i++) {
jQuery("#jtoggle-state-" + data.cid[i]).prop("checked", !0);
let res = document.getElementById("jtoggle-state-" + data.cid[i]).getAttribute("onclick").replace("publish", "unpublish");
document.getElementById("jtoggle-state-" + data.cid[i]).setAttribute("onclick", res)
}
for (let i = 0; i < data.cid.length; i++) document.getElementById("jtoggle-state-" + data.cid[i]) && document.getElementById("jtoggle-approval-" + data.cid[i]) ? jQuery("#jtoggle-state-" + data.cid[i]).prop("checked") && jQuery("#jtoggle-approval-" + data.cid[i]).prop("checked") ? (jQuery("#item-status-" + data.cid[i]).removeClass("bg-danger"), jQuery("#item-status-" + data.cid[i]).addClass("bg-success")) : (jQuery("#item-status-" + data.cid[i]).addClass("bg-danger"), jQuery("#item-status-" + data.cid[i]).removeClass("bg-success")) : document.getElementById("jtoggle-state-" + data.cid[i]) ? jQuery("#jtoggle-state-" + data.cid[i]).prop("checked") ? (jQuery("#item-status-" + data.cid[i]).removeClass("bg-danger"), jQuery("#item-status-" + data.cid[i]).addClass("bg-success")) : (jQuery("#item-status-" + data.cid[i]).addClass("bg-danger"), jQuery("#item-status-" + data.cid[i]).removeClass("bg-success")) : document.getElementById("jtoggle-approval-" + data.cid[i]) && (jQuery("#jtoggle-approval-" + data.cid[i]).prop("checked") ? (jQuery("#item-status-" + data.cid[i]).removeClass("bg-danger"), jQuery("#item-status-" + data.cid[i]).addClass("bg-success")) : (jQuery("#item-status-" + data.cid[i]).addClass("bg-danger"), jQuery("#item-status-" + data.cid[i]).removeClass("bg-success")))
}
}
})
}
isBlank(str) {
return !str || /^\s*$/.test(str)
}
checkAll(elementId) {
jQuery("#" + elementId + " option").prop("selected", !0), jbdUtils.updateChosenSelect("#" + elementId + " option")
}
uncheckAll(elementId) {
jQuery("#" + elementId + " option").prop("selected", !1), jbdUtils.updateChosenSelect("#" + elementId + " option")
}
uncheckAllCategories(mainCategoryId = "main_subcategory", subCategoriesId = "categories") {
let mainCatElement = "#" + mainCategoryId;
jQuery(mainCatElement).empty(), jbdUtils.updateChosenSelect(mainCatElement + " option");
let subCatElement = "#" + subCategoriesId;
jQuery(subCatElement + " option").attr("selected", !1), jbdUtils.updateChosenSelect(subCatElement)
}
truncate(text, id, limit) {
let truncatedText;
return id.length > 10 && (id = id.slice(15, id.length)), text.length <= limit ? text : text.length > limit ? (truncatedText = text.slice(0, limit) + "<span>...</span>", truncatedText += '<a href="javascript:void(0)" onClick=\'jbdUtils.showFullText("' + id + '")\' class="more" id="more' + id + '">' + Joomla.JText._("LNG_READ_MORE") + "</a>", truncatedText += '<span style="display:none;" id="more-text">' + text.slice(limit, text.length) + "</span>") : void 0
}
printItem(url, params = null) {
let width = "1050",
height = "700",
timeout = 2e3;
null != params && (void 0 !== params.width && (width = params.width), void 0 !== params.height && (height = params.height), void 0 !== params.timeout && (timeout = params.timeout));
let winref = window.open(url, "windowName", "width=" + width + ",height=" + height);
winref.window.focus(), setTimeout(function() {
winref.window.print()
}, timeout)
}
showFullText(id) {
jQuery("#more" + id).next().show(), jQuery("#more" + id).prev().remove(), jQuery("#more" + id).remove()
}
changeOrder(orderField) {
jQuery("#orderBy").val(orderField), jQuery("#adminForm").submit()
}
setFilterDates(type, val) {
jQuery("#" + type).val(val), jQuery("#adminForm").submit()
}
changeRadius(radius) {
jQuery("#radius").val(radius), jQuery("#adminForm").submit()
}
compareVersions(installed, required) {
let a = installed.split("."),
b = required.split(".");
for (let i = 0; i < a.length; ++i) a[i] = Number(a[i]);
for (let i = 0; i < b.length; ++i) b[i] = Number(b[i]);
return 2 == a.length && (a[2] = 0), a[0] > b[0] || !(a[0] < b[0]) && (a[1] > b[1] || !(a[1] < b[1]) && (a[2] > b[2] || !(a[2] < b[2])))
}
deleteOfferSellingOption(index) {
jQuery(".selling-option-fields").length > 1 ? jQuery("#" + index).remove() : jQuery("#customOptionsContent #" + index).find(":input").each(function() {
jQuery(this).val("")
})
}
deleteProcessorOption(id) {
if (jQuery(".processor-fields").length > 1) jQuery("#processor_field_" + id).remove();
else {
var nameInput = jQuery("#processor_field_" + id + " #column_name").find("input");
nameInput.val(""), nameInput.attr("type", "text"), nameInput.attr("placeholder", Joomla.JText._("LNG_COLUMN_NAME")), jQuery("#processor_field_" + id + " .hasTooltip").empty();
var valueInput = jQuery("#processor_field_" + id + " #column_value").find("input");
valueInput.val(""), valueInput.attr("placeholder", Joomla.JText._("LNG_COLUMN_VALUE")), jQuery("#processor_field_" + id + " #delete_processor_field_" + id).empty()
}
}
addOfferSellingOption() {
jQuery("#customOptionsContent div.selling-option-fields:last");
var lastElementId = jQuery("#customOptionsContent div.selling-option-fields:last").attr("id"),
newIdex = lastElementId.split("-")[1] + 1,
deleteButton = "";
deleteButton += '<div id="delete_offer_selling_option">\n <a href="javascript:void(0)" class="btn btn-xs btn-danger btn-panel" onclick="jbdUtils.deleteOfferSellingOption(\'options-' + newIdex + '\')">\n <i class="la la-trash"></i>\n </a>\n </div>', jQuery("#" + lastElementId).clone().prop("id", "options-" + newIdex).insertAfter("#" + lastElementId), jQuery("#options-" + newIdex).find(":input").each(function() {
"hidden" != this.type && jQuery(this).val("")
}), jQuery("#options-" + newIdex + " .deleteButton").html(deleteButton)
}
addProcessorOption(id) {
var newId = (id = parseInt(id)) + 1,
deleteButton = "";
deleteButton += '<a href="javascript:void(0)" class="btn btn-xs btn-danger btn-panel" onclick="jbdUtils.deleteProcessorOption(' + newId + ')">', deleteButton += '<i class="la la-trash"></i>', deleteButton += "</a>";
var fields = jQuery(".processor-fields"),
lastId = jQuery(fields[fields.length - 1]).attr("id").slice(-1);
jQuery("#processor_field_" + lastId).clone().prop("id", "processor_field_" + newId).insertAfter("#processor_field_" + lastId), jQuery("#processor_field_" + newId).addClass("new-field");
var newNameField = jQuery("#processor_field_" + newId + " #column_name").find("input");
newNameField.attr("id", "column_name_" + newId), newNameField.attr("type", "text"), newNameField.val(""), newNameField.attr("placeholder", Joomla.JText._("LNG_COLUMN_NAME")), jQuery("#processor_field_" + newId + " .hasTooltip").remove(), jQuery("#processor_field_" + newId + " #column_name_" + lastId).find("button").attr("id", "column_name_" + newId + "_img");
var newValueField = jQuery("#processor_field_" + newId + " #column_value").find("input");
newValueField.attr("id", "column_value_" + newId), newValueField.attr("placeholder", Joomla.JText._("LNG_COLUMN_VALUE")), newValueField.val(""), jQuery("#processor_field_" + newId + " #column_value_" + lastId).find("button").attr("id", "column_value_" + newId + "_img"), jQuery("#processor_field_" + newId + " #delete_processor_field_" + lastId).prop("id", "delete_processor_field_" + newId), jQuery("#add_processor_field").find("a").attr("onclick", "jbdUtils.addProcessorOption('" + newId + "')"), jQuery("#delete_processor_field_" + newId).html(deleteButton), jQuery("#add_processor_field" + parseInt(id)).remove()
}
resizeIframe(iframe) {
iframe.height = iframe.contentWindow.document.body.scrollHeight + "px"
}
addProcessorFieldsHTML() {
let container = jQuery("#payment_processor_fields"),
url = jbdUtils.getAjaxUrl("getPaymentProcessorFields", "paymentprocessor", "managepaymentprocessor"),
processorType = jQuery("#type").find("option:selected").val();
if (void 0 === processorType || 0 == processorType.length) return !1;
container.empty(), jQuery.ajax({
type: "GET",
data: {
processor_type: processorType
},
url: url,
cache: !1,
success: function(data) {
1 == data.status && container.append(data.data)
}
})
}
updateChosenSelect(item) {
jQuery(item).trigger("liszt:updated"), jQuery(item).trigger("chosen:updated")
}
renderReviewAverageRating(averageRating) {
jQuery(".rating-average-review").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".rating-average-review").rating("update", averageRating)
}
updateVideoAttributes(categoryId, videoId) {
let attributesUrl = jbdUtils.getAjaxUrl("getAttributesAjax", "video", "managevideo");
jQuery.ajax({
type: "GET",
url: attributesUrl,
data: {
categoryId: categoryId,
videoId: videoId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#customFieldsContent").html(data), jQuery(".chosen-select").chosen({
width: "95%",
disable_search_threshold: 5,
search_contains: !0,
placeholder_text_single: Joomla.JText._("LNG_SELECT_OPTION"),
placeholder_text_multiple: Joomla.JText._("LNG_SELECT_OPTION")
})
}
})
}
toggleFilter() {
jQuery("#search-filter").toggleClass("open"), jQuery("#search-filter").slideToggle(500), jQuery("#search-filter").height() < 10 ? (jQuery(".filter-switch").html(Joomla.JText._("LNG_HIDE_FILTER")), jQuery("#search-filter").parents(".col-lg-3").removeClass("mobile-sticky")) : (jQuery(".filter-switch").html(Joomla.JText._("LNG_SHOW_FILTER")), jQuery("#search-filter").parents(".col-lg-3").addClass("mobile-sticky"))
}
toggleHorizontalFilter() {
jQuery("#search-filter-horizontal").toggleClass("open"), jQuery("#search-filter-horizontal").slideToggle(500), jQuery("#search-filter-horizontal").height() < 10 ? jQuery(".filter-switch").html(Joomla.JText._("LNG_HIDE_FILTER")) : jQuery(".filter-switch").html(Joomla.JText._("LNG_SHOW_FILTER"))
}
registerSessionJoinAction(sessionId, userId, requiresLogin, canJoin) {
requiresLogin ? jbdUtils.showLoginNotice() : canJoin ? this.joinSessionUser(sessionId, userId) : jQuery("#register-notice").jbdModal()
}
joinSessionUser(sessionId, userId) {
let urlSessionRegister = jbdUtils.getAjaxUrl("joinSessionUserAjax", "conferencesessions");
jQuery.ajax({
type: "GET",
data: {
session_id: sessionId,
user_id: userId
},
url: urlSessionRegister,
success: function() {}
})
}
registerSessionUser(sessionId, userId) {
let urlSessionRegister = jbdUtils.getAjaxUrl("registerSessionUserAjax", "conferencesessions");
jQuery.ajax({
type: "GET",
data: {
session_id: sessionId,
user_id: userId
},
url: urlSessionRegister,
success: function() {
jbdUtils.showMessage("You have been successfully registered to this session."), window.setTimeout(function() {
location.reload()
}, 1500)
}
})
}
unregisterSessionUser(sessionId, userId, isAdmin = null) {
void 0 !== isAdmin && null !== isAdmin || (isAdmin = !1);
let urlSessionUnregister = jbdUtils.getAjaxUrl("unregisterSessionUserAjax", "conferencesessions");
jQuery.ajax({
type: "GET",
data: {
session_id: sessionId,
user_id: userId
},
url: urlSessionUnregister,
success: function() {
isAdmin ? jQuery(".registered-user-" + sessionId + userId).toggleClass("d-none") : (jbdUtils.showMessage("You have been successfully unregistered from this session."), window.setTimeout(function() {
location.reload()
}, 1500))
}
})
}
updateUserSession(sessionId, overlapId, userId) {
let urlSessionUpdate = jbdUtils.getAjaxUrl("updateUserSessionAjax", "conferencesessions");
jQuery.ajax({
type: "GET",
data: {
session_id: sessionId,
overlapId: overlapId,
user_id: userId
},
url: urlSessionUpdate,
success: function() {
jbdUtils.showMessage("You have been successfully registered to the new session."), window.setTimeout(function() {
location.reload()
}, 1500)
}
})
}
showSessionRegisterDialog(requiresLogin, sessionId) {
requiresLogin ? jbdUtils.showLoginNotice() : jQuery("#register-session-" + sessionId).jbdModal()
}
showSessionUnregisterDialog(sessionId) {
jQuery("#unregister-session-" + sessionId).jbdModal()
}
showRegisteredUsersDialog(sessionId) {
jQuery("#registered-users-dialog-" + sessionId).jbdModal()
}
showSessionUpdateDialog(sessionId) {
jQuery("#session-update-dialog-" + sessionId).jbdModal()
}
renderContactFormSteps() {
jQuery("#company-contact .jbd-btn-next").on("click", function() {
jQuery("#company-contact .form-step-2 , #company-contact .btn-step-2").css("display", "block"), jQuery("#company-contact .form-step-1 , #company-contact .btn-step-1").css("display", "none")
}), jQuery("#company-contact .jbd-btn-back , #company-contact .close-btn").on("click", function() {
jQuery("#company-contact .form-step-2 , #company-contact .btn-step-2").css("display", "none"), jQuery("#company-contact .form-step-1 , #company-contact .btn-step-1").css("display", "block")
}), jQuery("#company-contact #description").on("input", function() {
jQuery("#company-contact #description").val().length > 0 ? jQuery("#company-contact .jbd-btn-next").attr("disabled", !1) : jQuery("#company-contact .jbd-btn-next").attr("disabled", !0)
})
}
renderClaimFormSteps() {
jQuery("#company-claim .jbd-btn-next").on("click", function() {
jQuery("#company-claim .form-step-2 , #company-claim .btn-step-2").css("display", "block"), jQuery("#company-claim .form-step-1 , #company-claim .btn-step-1").css("display", "none")
}), jQuery("#company-claim .jbd-btn-back , #company-claim .close-btn").on("click", function() {
jQuery("#company-claim .form-step-2 , #company-claim .btn-step-2").css("display", "none"), jQuery("#company-claim .form-step-1 , #company-claim .btn-step-1").css("display", "block")
})
}
removeUserRegistration(sessionId, userId) {
confirm("Are you sure you want to remove this registered user?") && jbdUtils.unregisterSessionUser(sessionId, userId, !0)
}
updateCitiesByRegion(callback) {
var regionIds = jQuery("#administrative_area_level_1").val(),
dataSelected = [];
if (jQuery("#locality").find("option:selected").each(function() {
dataSelected.push(jQuery(this).val())
}), null == regionIds) return jQuery("#locality").empty(), void jbdUtils.updateChosenSelect("#locality");
let url = jbdUtils.getAjaxUrl("getCitiesByRegionsAjax", "managecities");
jQuery.ajax({
type: "GET",
url: url,
data: {
regionParam: regionIds
},
dataType: "json",
success: function(data) {
var selectedVar;
jQuery("#locality").empty(), jQuery("#locality").append('<option value="">' + Joomla.JText._("LNG_SELECT_CITY") + "</option>"), jQuery.each(data, function(i, val) {
selectedVar = "", "-1" != jQuery.inArray(val.name, dataSelected) && dataSelected.length > 0 && (selectedVar = "selected"), jQuery("#locality").append("<option " + selectedVar + ' value="' + val.name + '">' + val.name + "</option>")
}), void 0 !== callback && callback()
}
})
}
updateRegionsByCountry(callback) {
var countryId = jQuery("#country").val(),
dataSelected = [];
if (jQuery("#administrative_area_level_1").find("option:selected").each(function() {
dataSelected.push(jQuery(this).val())
}), null == countryId) return jQuery("#administrative_area_level_1").empty(), void jbdUtils.updateChosenSelect("#administrative_area_level_1");
jQuery.ajax({
type: "GET",
url: jbdUtils.getAjaxUrl("getRegionsByCountryAjax", "manageregions"),
data: {
countryId: countryId
},
dataType: "json",
success: function(data) {
var selectedVar;
jQuery("#administrative_area_level_1").empty(), jQuery("#administrative_area_level_1").append('<option value="">' + Joomla.JText._("LNG_SELECT_REGION") + "</option>"), jQuery.each(data, function(i, val) {
selectedVar = "", "-1" != jQuery.inArray(val.name, dataSelected) && dataSelected.length > 0 && (selectedVar = "selected"), jQuery("#administrative_area_level_1").append("<option " + selectedVar + ' value="' + val.name + '">' + val.name + "</option>")
}), jQuery("#administrative_area_level_1").val().length > 0 ? jbdUtils.updateCitiesByRegion() : jbdUtils.updateCitiesByRegion(function() {
jQuery("#locality").empty(), jQuery("#locality").append('<option value="">' + Joomla.JText._("LNG_SELECT_CITY") + "</option>")
}), void 0 !== callback && callback()
}
})
}
getEditorStats(editor) {
var body = tinyMCE.get(editor).getBody(),
text = tinyMCE.trim(body.innerText || body.textContent);
return {
chars: text.length,
words: text.split(/[\w\u2019\'-]+/).length
}
}
convertMetric(value, index) {
return value = parseFloat(value), value = (value *= index).toFixed(2)
}
toggleOnlyLocal() {
1 == jQuery("#only-local").val() ? jQuery("#only-local").val(0) : jQuery("#only-local").val(1), jQuery(".toggle-dir-btn input").attr("disabled", "disabled"), setTimeout(function() {
jQuery("#adminForm").submit()
}, 700)
}
moveMap() {}
initializeQuilEditor(editorId) {
var icons = Quill.import("ui/icons");
icons.undo = '<svg viewbox="0 0 18 18">\n <polygon class="ql-fill ql-stroke" points="6 10 4 12 2 10 6 10"></polygon>\n <path class="ql-stroke" d="M8.09,13.91A4.6,4.6,0,0,0,9,14,5,5,0,1,0,4,9"></path>\n </svg>', icons.redo = '<svg viewbox="0 0 18 18">\n <polygon class="ql-fill ql-stroke" points="12 10 14 12 16 10 12 10"></polygon>\n <path class="ql-stroke" d="M9.91,13.91A4.6,4.6,0,0,1,9,14a5,5,0,1,1,5-5"></path>\n </svg>';
var quill = new Quill(editorId, {
modules: {
history: {
delay: 1e3,
maxStack: 100,
userOnly: !1
},
toolbar: {
container: [
["bold", "italic", "underline"],
[{
list: "ordered"
}, {
list: "bullet"
}],
["link"],
["undo", "redo"]
],
handlers: {
undo: function(value) {
quill.history.undo()
},
redo: function(value) {
quill.history.redo()
}
}
}
},
theme: "snow"
})
}
decodeHtml(html) {
return jQuery("<div>").html(html).text()
}
}
jQuery.fn.center = function() {
return this.css("left", (jQuery(window).width() - this.width()) / 2 + jQuery(window).scrollLeft() + "px"), this
};
let JBDItemList = function() {
this.element = null, this.status = !0, this.delete = !0, this.statusSelector = null, this.enabled = 1, this.disabled = 0, this.statusCallback = function() {}, this.deleteCallback = function() {}, this.deleteMsg = "Are you sure you want to delete this?", this.construct = function(element, params) {
this.element = element, void 0 !== params && (void 0 !== params.status && (this.status = params.status), void 0 !== params.delete && (this.delete = params.delete), void 0 !== params.statusSelector && (this.statusSelector = params.statusSelector), void 0 !== params.statusCallback && (this.statusCallback = params.statusCallback), void 0 !== params.deleteCallback && (this.deleteCallback = params.deleteCallback), void 0 !== params.enabled && (this.enabled = params.enabled), void 0 !== params.disabled && (this.disabled = params.disabled), void 0 !== params.deleteMsg && (this.deleteMsg = params.deleteMsg)), this.init()
}, this.init = function() {
var self = this;
this.element.find(".jbd-item-list").find(".jbd-item").each(function() {
var actionDiv = jQuery(this).find(".jbd-item-actions"),
id = self.getId(this);
if (self.status) {
var statusValue = self.getStatusValue(id),
statusBtn = self.getStatusButton(statusValue);
actionDiv.find(".jbd-item-status").length || (actionDiv.append(statusBtn), actionDiv.find(".jbd-item-status").click(function() {
self.changeStatus(this, id)
}))
}
if (self.delete) {
var deleteBtn = self.getDeleteButton();
actionDiv.find(".jbd-item-delete").length || (actionDiv.append(deleteBtn), actionDiv.find(".jbd-item-delete").click(function() {
self.deleteItem(id)
}))
}
})
}, this.changeStatus = function(element, id) {
var oldClass = "la-check-circle",
newClass = "la-ban",
oldVal = this.getStatusValue(id);
oldVal == this.disabled && (oldClass = "la-ban", newClass = "la-check-circle"), jQuery(element).find(".la").removeClass(oldClass).addClass(newClass), this.statusCallback(id, oldVal)
}, this.getStatusButton = function(val) {
var html = "";
return html += '<a href="javascript:void(0)" class="jbd-item-status">', val == this.enabled ? html += ' <i class="la la-check-circle"></i>' : html += ' <i class="la la-ban"></i>', html += "</a>"
}, this.deleteItem = function(id) {
if (!confirm(this.deleteMsg)) return !1;
jQuery("#jbd-item-" + id).remove(), this.deleteCallback(id)
}, this.getDeleteButton = function() {
var html = "";
return html += '<a href="javascript:void(0)" class="jbd-item-delete">', html += ' <i class="la la-trash"></i>', html += "</a>"
}, this.getId = function(element) {
return jQuery(element).closest(".jbd-item").attr("id").substr(9)
}, this.getStatusValue = function(id) {
return (this.statusSelector.indexOf("#") > -1 ? jQuery(this.statusSelector + id) : jQuery("#" + this.statusSelector + id)).val()
}
};
jQuery.fn.jbdList = function(options) {
(new JBDItemList).construct(this, options)
}, String.prototype.replaceAll = function(search, replacement) {
return this.split(search).join(replacement)
};
let jbdUtils = new JBDUtils;
class JBDMapAbstract {
constructor(locations, params, mapType) {
this.locations = locations, this.params = params, this.mapType = void 0 !== mapType ? mapType : parseInt(jbdUtils.getProperty("mapType")), this.params.is_admin = void 0 !== this.params.is_admin && this.params.is_admin;
let map_zoom = jbdUtils.getProperty("mapDefaultZoom");
if (void 0 !== this.params && null != this.params) {
let mapDivId = "company-map";
void 0 !== this.params.map_div && (mapDivId = this.params.map_div);
let mapId = "";
void 0 !== this.params.tmapId && (mapId = this.params.tmapId), this.mapDiv = mapDivId + "" + mapId, void 0 !== this.params.map_zoom && (map_zoom = this.params.map_zoom);
let map_width = "100%",
map_height = "450px";
void 0 !== this.params.map_width && (map_width = this.params.map_width), void 0 !== this.params.map_height && (map_height = this.params.map_height), this.mapWidth = map_width, this.mapHeight = map_height
}
this.zoom = parseInt(map_zoom), this.mapInitialized = !1
}
setMapWidth(width) {
this.mapWidth = width
}
setMapHeight(height) {
this.mapHeight = height
}
hasMap() {
return void 0 === this.params.no_map
}
getMap() {
return this.map
}
getMapId() {
return void 0 !== this.params.tmapId ? this.params.tmapId : null
}
getInstance() {
return this
}
setLocations(locations, resetLocations) {
resetLocations && (this.locations = null), this.locations ? this.locations = this.locations.concat(locations) : this.locations = locations, this.mapInitialized = !1, this.initialize()
}
}
class JBDMapHelper {
static loadMapScript(locations, params, mapType) {
let mapObject = null;
if ("undefined" != typeof jbd_map_gdpr && !jbd_map_gdpr) return JBDMapHelper.openMapGDPRModal(locations, params, mapType), !1;
switch (void 0 === mapType && (mapType = jbdUtils.getProperty("mapType")), mapType = parseInt(mapType)) {
case JBDConstants.MAP_TYPE_GOOGLE:
void 0 !== JBDGoogleMap && (mapObject = new JBDGoogleMap(locations, params, mapType));
break;
case JBDConstants.MAP_TYPE_BING:
void 0 !== JBDBingMap && (mapObject = new JBDBingMap(locations, params, mapType));
break;
case JBDConstants.MAP_TYPE_OSM:
void 0 !== JBDOpenMap && (mapObject = new JBDOpenMap(locations, params, mapType));
break;
default:
void 0 !== JBDGoogleMap && (mapObject = new JBDGoogleMap(locations, params, mapType))
}
return void 0 === JBDMapHelper.map_instances && (JBDMapHelper.map_instances = []), mapObject.initialize(), JBDMapHelper.map_instances[mapObject.getMapId()] = mapObject, mapObject
}
static getMapClass(mapType) {
let mapClass;
switch (void 0 === mapType && (mapType = jbdUtils.getProperty("mapType")), mapType = parseInt(mapType)) {
case JBDConstants.MAP_TYPE_GOOGLE:
mapClass = JBDGoogleMap;
break;
case JBDConstants.MAP_TYPE_BING:
mapClass = JBDBingMap;
break;
case JBDConstants.MAP_TYPE_OSM:
mapClass = JBDOpenMap;
break;
default:
mapClass = JBDGoogleMap
}
return mapClass
}
static openMapGDPRModal(locations, params, mapType) {
let script = document.createElement("script"),
lang = jbdUtils.getProperty("defaultLang"),
key = "&key=" + jbdUtils.getProperty("google_map_key");
script.src = "https://maps.googleapis.com/maps/api/js?language=" + lang + key + "&libraries=geometry&libraries=places";
let modal = jQuery("#map-gdpr-modal");
modal.jbdModal(), modal.on("hidden.bs.modal", function() {
return !1
}), jQuery("#gdpr-deny-btn").on("click", event => (jQuery.jbdModal.close(), !1)), jQuery("#gdpr-accept-btn").on("click", event => {
document.head.appendChild(script), JBDMapHelper.acceptMapGDPR(locations, params, mapType)
})
}
static acceptMapGDPR(locations, params, mapType) {
let urlAcceptMapGdpr = jbdUtils.getAjaxUrl("acceptMapGDPRAjax", "companies");
jQuery.ajax({
type: "GET",
url: urlAcceptMapGdpr,
dataType: "json",
success: () => {
jbd_map_gdpr = !0, jQuery.jbdModal.close(), location.reload()
}
})
}
static initAutocomplete(element, action, preventSubmit, focus_view, limitedCountries, componentForm) {
let mapClass = JBDMapHelper.getMapClass();
void 0 === componentForm && (componentForm = jbdUtils.getComponentForm()), mapClass.initAutocomplete(element, action, preventSubmit, focus_view, limitedCountries, componentForm)
}
static reverseGeocoding(location, action) {
if (jbdUtils.getProperty("mapType") == JBDConstants.MAP_TYPE_BING) return !1;
JBDMapHelper.getMapClass().reverseGeocoding(location, action)
}
static getMapInstance(mapId) {
return void 0 !== JBDMapHelper.map_instances && void 0 !== JBDMapHelper.map_instances[mapId] && (mapInstance = JBDMapHelper.map_instances[mapId]), mapInstance
}
}
class JBDBingMap extends JBDMapAbstract {
constructor(locations, params, mapType) {
super(locations, params, mapType), this.bounds = {
maxLat: -999,
minLng: 999,
minLat: 999,
maxLng: -999
}, void 0 !== this.params && null != this.params && void 0 !== this.params.key && (this.key = this.params.key)
}
checkifMapLoaded() {
var flag = !1;
"function" == typeof Microsoft.Maps.Location && "object" == typeof Microsoft.Maps.Location.prototype && (flag = !0), 0 == flag ? window.setTimeout(this.checkifMapLoaded.bind(this), 500) : this.initializeMap()
}
initialize() {
this.checkifMapLoaded()
}
initializeMap() {
if (null != this.params && void 0 === this.params.no_map) {
var mapdiv = document.getElementById(this.mapDiv);
mapdiv.style.width = this.mapWidth, mapdiv.style.height = this.mapHeight, this.map = new Microsoft.Maps.Map("#" + this.mapDiv, {
credentials: this.key,
center: new Microsoft.Maps.Location(this.params.map_latitude, this.params.map_longitude),
mapTypeId: Microsoft.Maps.MapTypeId.ROAD,
zoom: this.zoom
}), null != this.eventParams && this.addMapListener(this.eventParams.event, this.eventParams.action), this.locations && this.locations.length > 0 && this.setMarkers(this.locations);
var self = this;
if (1 != jbdUtils.getProperty("enable_map_clustering") || this.params.is_admin || Microsoft.Maps.loadModule("Microsoft.Maps.Clustering", function() {
var clusterLayer = new Microsoft.Maps.ClusterLayer(self.markers);
self.map.layers.insert(clusterLayer)
}), 1 == jbdUtils.getProperty("map_enable_auto_locate") && this.bounds.maxLat > -999) {
var box = new Microsoft.Maps.LocationRect.fromEdges(this.bounds.maxLat, this.bounds.minLng, this.bounds.minLat, this.bounds.maxLng);
0 != box.height && this.map.setView({
bounds: box,
zoom: this.map.getZoom()
})
}
}
}
setMarkers(locations) {
for (var self = this, lastMarker = null, i = 0; i < locations.length; i++) {
var item = locations[i];
if (0 == item.length || "undefined" === item) continue;
var marker = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(item.latitude, item.longitude), 54);
this.bounds.maxLat = this.bounds.maxLat < parseFloat(item.latitude) ? parseFloat(item.latitude) : this.bounds.maxLat, this.bounds.minLat = this.bounds.minLat > parseFloat(item.latitude) ? parseFloat(item.latitude) : this.bounds.minLat, this.bounds.maxLng = this.bounds.maxLng < parseFloat(item.longitude) ? parseFloat(item.longitude) : this.bounds.maxLng, this.bounds.minLng = this.bounds.minLng > parseFloat(item.longitude) ? parseFloat(item.longitude) : this.bounds.minLng;
let markerImage = "";
1 == jbdUtils.getProperty("enable_map_clustering") && this.params.is_admin || ("0" != item.marker ? markerImage = item.marker : jbdUtils.getProperty("mapMarker") && jbdUtils.getProperty("mapMarker").length && (markerImage = jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("mapMarker"))), "" !== markerImage && marker.setOptions({
icon: markerImage
});
var center = this.map.getCenter();
this.infobox = new Microsoft.Maps.Infobox(center, {
maxWidth: 263,
maxHeight: 645,
visible: !1
}), marker.metadata = {
description: "description"
}, marker.metadata.description = item.content;
var zIndex = 0;
void 0 !== item.zIndex && (zIndex = item.zIndex), marker.metadata.zIndex = zIndex;
var markerFunction = function(e) {
e.target.metadata.description.length > 0 && self.infobox.setOptions({
location: e.target.getLocation(),
description: e.target.metadata.description,
visible: !0
}), self.moveToLocation(e.target.getLocation())
};
1 == this.params.isLayout && (markerFunction = function(e) {
var target = "#company" + e.target.metadata.zIndex;
jQuery([document.documentElement, document.body]).animate({
scrollTop: jQuery(target).offset().top - 150
}, 1e3), setTimeout(function() {
jQuery(target).fadeOut(1e3).fadeIn(500)
}, 1e3)
}), Microsoft.Maps.Events.addHandler(marker, "mousedown", markerFunction), this.infobox.setMap(this.map), void 0 !== this.markers ? this.markers.push(marker) : this.markers = Array(marker), 1 == jbdUtils.getProperty("enable_map_clustering") && this.params.is_admin || this.map.entities.push(marker), void 0 !== item.in_range && (lastMarker = marker)
}
if (1 == this.params.has_location && "" != this.params.latitude && 0 != this.params.latitude) {
var myLatLng = {
latitude: this.params.latitude,
longitude: this.params.longitude
};
this.addMarker(myLatLng), lastMarker = this.markers.pop();
let locationMarker = jbdUtils.getProperty("location_map_marker") ? jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("location_map_marker") : "https://maps.google.com/mapfiles/kml/shapes/library_maps.png";
lastMarker.setOptions({
icon: locationMarker
})
}
this.params.radius > 0 && ((void 0 === this.params.longitude && void 0 === this.params.latitude || "" == this.params.longitude) && (this.params.longitude = this.params.map_longitude, this.params.latitude = this.params.map_latitude), Microsoft.Maps.loadModule("Microsoft.Maps.SpatialMath", function() {
if (void 0 !== self.params.map_longitude && void 0 !== self.params.map_latitude && (1 == self.params.has_location || null != lastMarker)) {
var center = lastMarker.getLocation(),
circle = new Microsoft.Maps.Polygon(center, center, center);
circle.metadata = {
center: center
}, self.setCircle(center, circle, self.params.radius)
}
}))
}
setCircle(center, circle, radius) {
var locs = Microsoft.Maps.SpatialMath.getRegularPolygon(circle.metadata.center, radius, 36, Microsoft.Maps.SpatialMath.DistanceUnits.Miles);
circle.setLocations(locs), this.map.entities.push(circle)
}
moveToLocation(location) {
this.map.setView({
center: new Microsoft.Maps.Location(location.latitude, location.longitude)
})
}
addMarker(location, callback) {
var marker = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(location.latitude, location.longitude));
this.map.entities.push(marker), this.markers.push(marker), void 0 !== callback && callback()
}
clearMarkers() {
for (var i = this.map.entities.getLength() - 1; i >= 0; i--) {
this.map.entities.get(i) instanceof Microsoft.Maps.Pushpin && this.map.entities.removeAt(i)
}
this.markers = []
}
addMapListener(event, action) {
Microsoft.Maps.Events.addHandler(this.map, event, function(e) {
if ("map" === e.targetType) {
var point = new Microsoft.Maps.Point(e.getX(), e.getY()),
location = e.target.tryPixelToLocation(point);
action(location)
}
}), this.eventParams = null
}
static triggerAutocomplete(element, action, preventSubmit, focus_view, limitedCountries) {
var flag = !1;
"function" == typeof Microsoft.Maps.Location && "object" == typeof Microsoft.Maps.Location.prototype && "function" == typeof Microsoft.Maps.loadModule && "object" == typeof Microsoft.Maps.loadModule.prototype && (flag = !0), 0 == flag ? window.setTimeout(this.triggerAutocomplete.bind(this, element, action, preventSubmit, focus_view, limitedCountries), 500) : JBDBingMap.loadInitAutocomplete(element, action, preventSubmit, focus_view, limitedCountries)
}
static initAutocomplete(element, action, preventSubmit, focus_view, limitedCountries) {
JBDBingMap.triggerAutocomplete(element, action, preventSubmit, focus_view, limitedCountries)
}
static loadInitAutocomplete(element, action, preventSubmit, focus_view, limitedCountries) {
void 0 === focus_view && (focus_view = !1), Microsoft.Maps.loadModule("Microsoft.Maps.AutoSuggest", function() {
var elementId = jQuery(element).attr("id"),
parentId = jQuery(element).parent().attr("id"),
manager = new Microsoft.Maps.AutosuggestManager({
maxResults: 5
});
if ("undefined" == typeof mapInstance && "undefined" == typeof jbdAdminMapInstance) {
jQuery("#" + parentId).append('<div style="display:none" id="bing-fake-autocomplete"></div>');
new Microsoft.Maps.Map(document.getElementById("bing-fake-autocomplete"))
}
manager.attachAutosuggest("#" + elementId, "#" + parentId, function(result) {
focus_view && "undefined" != typeof jbdAdminMapInstance && jbdAdminMapInstance.autocompleteFocus(result), action(JBDBingMap.formatSuggestionResponse(result)), jQuery("#as_container").css("visibility", "hidden")
})
})
}
autocompleteFocus(result) {
this.clearMarkers(), this.addMarker(result.location), this.map.setView({
bounds: result.bestView
})
}
focusLocation(params) {
let loc = {};
loc.latitude = params.latitude, loc.longitude = params.longitude, this.map.setView({
center: new Microsoft.Maps.Location(params.latitude, params.longitude)
}), void 0 !== params.clearMarkers && params.clearMarkers || this.clearMarkers(), (void 0 === params.addMarker || params.addMarker) && this.addMarker(loc)
}
static formatSuggestionResponse(place) {
var suggestionResult = [];
let config = JSON.parse(jbdUtils.getProperty("autocomplete_config"));
for (let att in config.bing)
if (config.bing.hasOwnProperty(att))
for (let i = 0; i < config.bing[att].length; i++) {
let alternative = config.bing[att][i];
if (void 0 !== place.address[alternative]) {
suggestionResult[att] = place.address[alternative];
break
}
}
return suggestionResult.latitude = place.location.latitude, suggestionResult.longitude = place.location.longitude, suggestionResult
}
}
class JBDGoogleMap extends JBDMapAbstract {
constructor(locations, params, mapType) {
super(locations, params, mapType)
}
initialize() {
if (!this.mapInitialized && null != this.params && void 0 === this.params.no_map) {
var center = 0;
void 0 !== this.params.map_longitude && void 0 !== this.params.map_latitude && (center = new google.maps.LatLng(this.params.map_latitude, this.params.map_longitude));
var mapOptions = {
zoom: this.zoom,
scrollwheel: !1,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: center
};
1 == this.params.disableDefaultUI && (mapOptions.disableDefaultUI = !0), mapOptions.styles = [{
featureType: "all",
elementType: "labels.text",
stylers: [{
color: "#878787"
}]
}, {
featureType: "all",
elementType: "labels.text.stroke",
stylers: [{
visibility: "off"
}]
}, {
featureType: "landscape",
elementType: "all",
stylers: [{
color: "#f9f5ed"
}]
}, {
featureType: "road.highway",
elementType: "all",
stylers: [{
color: "#f5f5f5"
}]
}, {
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{
color: "#c9c9c9"
}]
}, {
featureType: "water",
elementType: "all",
stylers: [{
color: "#aee0f4"
}]
}, {
featureType: "administrative",
elementType: "geometry",
stylers: [{
visibility: "off"
}]
}, {
featureType: "poi",
stylers: [{
visibility: "off"
}]
}, {
featureType: "road",
elementType: "labels.icon",
stylers: [{
visibility: "off"
}]
}, {
featureType: "transit",
stylers: [{
visibility: "off"
}]
}];
var mapdiv = document.getElementById(this.mapDiv);
if (mapdiv.style.width = this.mapWidth, mapdiv.style.height = this.mapHeight, this.map = new google.maps.Map(mapdiv, mapOptions), this.locations && this.locations.length > 0 && this.setMarkers(this.locations), 1 == this.params.panorama && this.locations.length > 0) {
var company = this.locations[0],
myLatLng = new google.maps.LatLng(company.latitude, company.longitude);
this.panorama = this.map.getStreetView(), this.panorama.setPosition(myLatLng), this.panorama.setPov({
heading: 265,
pitch: 0
})
}
}
}
setMarkers(locations) {
var bounds = new google.maps.LatLngBounds,
markers = [],
self = this,
lastMarker = null,
pinImage = null;
let width = 32,
height = 37,
markerSize = jbdUtils.getProperty("marker_size");
null != markerSize && 0 != markerSize.length && (width = markerSize.width, height = markerSize.height);
for (var i = 0; i < locations.length; i++) {
var item = locations[i];
if (0 != item.length && "undefined" !== item) {
void 0 !== item.marker && "0" != item.marker ? pinImage = {
url: item.marker,
scaledSize: new google.maps.Size(width, height),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(16, 32)
} : jbdUtils.getProperty("mapMarker") && jbdUtils.getProperty("mapMarker").length && (pinImage = {
url: jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("mapMarker"),
scaledSize: new google.maps.Size(width, height),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(16, 32)
});
var myLatLng = new google.maps.LatLng(item.latitude, item.longitude);
markers.length;
var zIndex = 0;
void 0 !== item.zIndex && (zIndex = item.zIndex);
var marker = new google.maps.Marker({
position: myLatLng,
map: this.map,
icon: pinImage,
animation: google.maps.Animation.DROP,
title: item.title,
zIndex: zIndex
});
if (void 0 !== item.in_range && (lastMarker = marker), markers.push(marker), void 0 !== this.markers ? this.markers.push(marker) : this.markers = Array(marker), 1 == this.params.isLayout) google.maps.event.addListener(marker, "click", function() {
var target = "#company" + this.getZIndex();
jQuery([document.documentElement, document.body]).animate({
scrollTop: jQuery(target).offset().top - 150
}, 1e3), setTimeout(function() {
jQuery(target).fadeOut(1e3).fadeIn(500)
}, 1e3)
});
else {
var contentBody = item.content,
infowindow = new google.maps.InfoWindow({
content: contentBody,
maxWidth: 210
});
google.maps.event.addListener(marker, "click", function(contentBody) {
return function() {
infowindow.setContent(contentBody), infowindow.open(this.map, this)
}
}(contentBody))
}
if (item.activity_radius)(circle = new google.maps.Circle({
map: this.map,
radius: 1600 * item.activity_radius,
strokeColor: "#006CD9",
strokeOpacity: .7,
strokeWeight: 2,
fillColor: "#006CD9",
fillOpacity: .15
})).bindTo("center", marker, "position");
bounds.extend(myLatLng)
}
}
if ("undefined" !== this.params.markerButton && jQuery(".show-marker").click(function() {
var id = jQuery(this).closest(".grid-item-holder").attr("id").match(/\d/g);
for (id = id.join(""), i = 0; i < markers.length; i++) markers[i].getZIndex() == id && (self.map.setZoom(12), self.map.setCenter(markers[i].getPosition()))
}), 1 == jbdUtils.getProperty("enable_map_clustering") && !this.params.is_admin) {
let mcOptions = {
imagePath: this.params.imagePath + "mapcluster/m"
};
new MarkerClusterer(this.map, markers, mcOptions)
}
if (1 == this.params.has_location && "" != this.params.latitude && 0 != this.params.latitude) {
pinImage = {
url: jbdUtils.getProperty("location_map_marker") ? jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("location_map_marker") : "https://maps.google.com/mapfiles/kml/shapes/library_maps.png",
scaledSize: new google.maps.Size(width, height),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(16, 32)
}, myLatLng = new google.maps.LatLng(this.params.latitude, this.params.longitude), lastMarker = marker = new google.maps.Marker({
position: myLatLng,
map: this.map,
icon: pinImage
})
}
if (this.params.radius > 0 && ((void 0 === this.params.longitude && void 0 === this.params.latitude || "" == this.params.longitude) && (this.params.longitude = this.params.map_longitude, this.params.latitude = this.params.map_latitude), void 0 !== this.params.longitude && void 0 !== this.params.latitude && "" !== this.params.longitude)) {
this.map.setCenter(new google.maps.LatLng(this.params.latitude, this.params.longitude));
var circle = new google.maps.Circle({
map: this.map,
radius: 1600 * this.params.radius,
strokeColor: "#006CD9",
strokeOpacity: .7,
strokeWeight: 2,
fillColor: "#006CD9",
fillOpacity: .15
});
1 != this.params.has_location && null == lastMarker || circle.bindTo("center", lastMarker, "position")
}
bounds.extend(myLatLng), 1 != jbdUtils.getProperty("map_enable_auto_locate") || void 0 !== this.params.map_enable_auto_locate && 1 != this.params.map_enable_auto_locate || this.map.fitBounds(bounds);
var listener = google.maps.event.addListener(this.map, "idle", function() {
self.map.getZoom() > 16 && self.map.setZoom(16), google.maps.event.removeListener(listener)
})
}
toggleBounce(marker) {
null !== marker.getAnimation() ? marker.setAnimation(null) : marker.setAnimation(google.maps.Animation.BOUNCE)
}
toggleStreetView() {
0 == this.panorama.getVisible() ? this.panorama.setVisible(!0) : this.panorama.setVisible(!1)
}
moveToLocation(location) {
var center = new google.maps.LatLng(location.latitude, location.longitude);
this.map.panTo(center)
}
addMarker(location, callback) {
var loc = new google.maps.LatLng(location.latitude, location.longitude),
marker = new google.maps.Marker({
position: loc,
map: this.map
});
this.markers.push(marker), void 0 !== callback && callback()
}
clearMarkers() {
for (var i = 0; i < this.markers.length; i++) this.markers[i].setMap(null);
this.markers = []
}
addMapListener(event, action) {
google.maps.event.addListener(this.map, event, function(e) {
var location = {};
location.latitude = e.latLng.lat(), location.longitude = e.latLng.lng(), action(location)
})
}
static initAutocomplete(element, action, preventSubmit, focus_view, limitedCountries, componentForm) {
var place, autocomplete;
autocomplete = void 0 !== limitedCountries && null !== limitedCountries ? new google.maps.places.Autocomplete(element, {
types: ["geocode"],
componentRestrictions: {
country: limitedCountries
}
}) : new google.maps.places.Autocomplete(element, {
types: ["geocode"]
}), google.maps.event.addListener(autocomplete, "place_changed", function() {
place = autocomplete.getPlace(), action(JBDGoogleMap.formatSuggestionResponse(place, componentForm)), focus_view && "undefined" != typeof jbdAdminMapInstance && jbdAdminMapInstance.autocompleteFocus(place)
}), preventSubmit && google.maps.event.addDomListener(element, "keydown", function(e) {
13 == e.keyCode && jQuery(".pac-container:visible").length && e.preventDefault()
})
}
autocompleteFocus(place) {
this.map.setCenter(place.geometry.location), place.geometry.viewport && this.map.fitBounds(place.geometry.viewport);
let loc = {};
loc.latitude = place.geometry.location.lat(), loc.longitude = place.geometry.location.lng(), this.clearMarkers(), this.addMarker(loc)
}
focusLocation(params) {
var loc = new google.maps.LatLng(params.latitude, params.longitude),
marker = new google.maps.Marker({
position: loc,
map: this.map
});
this.map.setCenter(marker.getPosition()), void 0 !== params.clearMarkers && params.clearMarkers || this.clearMarkers(), (void 0 === params.addMarker || params.addMarker) && this.addMarker(loc)
}
static reverseGeocoding(location, action) {
var country, geocoder = new google.maps.Geocoder,
latlng = new google.maps.LatLng(location.latitude, location.longitude);
geocoder.geocode({
latLng: latlng
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK && results[1]) {
for (var i = 0; i < results[0].address_components.length; i++)
for (var b = 0; b < results[0].address_components[i].types.length; b++)
if ("country" === results[0].address_components[i].types[b]) {
country = results[0].address_components[i];
break
} action(country.short_name)
}
})
}
static formatSuggestionResponse(place, component_form) {
var suggestionResult = [];
let config = JSON.parse(jbdUtils.getProperty("autocomplete_config")),
addressComponents = [];
for (let i = 0; i < place.address_components.length; i++) addressComponents[place.address_components[i].types[0]] = place.address_components[i];
for (let component in addressComponents)
if (addressComponents.hasOwnProperty(component))
for (let att in config.google)
for (let i = 0; i < config.google[att].length; i++) {
let alternative = config.google[att][i];
if (void 0 !== addressComponents[alternative]) {
suggestionResult[att] = addressComponents[alternative].long_name;
break
}
}
return suggestionResult.latitude = place.geometry.location.lat(), suggestionResult.longitude = place.geometry.location.lng(), suggestionResult
}
}
class JBDOpenMap extends JBDMapAbstract {
constructor(locations, params, mapType) {
super(locations, params, mapType), this.infoboxTemplate = "<div style='overflow:hidden;'>{content}</div>", this.bounds = {
maxLat: -999,
minLng: 999,
minLat: 999,
maxLng: -999
}
}
initialize() {
if (!this.mapInitialized && null != this.params && void 0 === this.params.no_map) {
var parent = jQuery("#" + this.mapDiv).parent();
jQuery("#" + this.mapDiv).remove(), parent.append('<div id="' + this.mapDiv + '" style="width:' + this.mapWidth + ";height:" + this.mapHeight + ';z-index:1"></div>'), this.map = L.map(this.mapDiv, {
dragging: !L.Browser.mobile,
fullscreenControl: !0
}).setView([this.params.map_latitude, this.params.map_longitude], this.zoom), L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(this.map), this.locations && this.locations.length > 0 && this.setMarkers(this.locations)
}
}
setMarkers(locations) {
var markerClusters;
1 != jbdUtils.getProperty("enable_map_clustering") || this.params.is_admin || (markerClusters = L.markerClusterGroup());
var lastMarker = null;
let iconSize = [32, 32],
markerSize = jbdUtils.getProperty("marker_size");
if (0 != markerSize.length && (iconSize = [markerSize.width, markerSize.height]), locations.length > 0) {
for (var i = 0; i < locations.length; i++) {
var item = locations[i];
if (0 != item.length && "undefined" !== item) {
var markerImage;
this.bounds.maxLat = this.bounds.maxLat < parseFloat(item.latitude) ? parseFloat(item.latitude) : this.bounds.maxLat, this.bounds.minLat = this.bounds.minLat > parseFloat(item.latitude) ? parseFloat(item.latitude) : this.bounds.minLat, this.bounds.maxLng = this.bounds.maxLng < parseFloat(item.longitude) ? parseFloat(item.longitude) : this.bounds.maxLng, this.bounds.minLng = this.bounds.minLng > parseFloat(item.longitude) ? parseFloat(item.longitude) : this.bounds.minLng, (1 != jbdUtils.getProperty("enable_map_clustering") || 1 == locations.length || jbdUtils.getProperty("mapMarker")) && ("0" != item.marker ? markerImage = item.marker : jbdUtils.getProperty("mapMarker") && jbdUtils.getProperty("mapMarker").length && (markerImage = jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("mapMarker")));
var zIndex = 0;
void 0 !== item.zIndex && (zIndex = item.zIndex);
var popup = this.infoboxTemplate.replace("{content}", item.content),
marker = L.marker([item.latitude, item.longitude]);
if (marker.zIndex = zIndex, 1 != this.params.isLayout) marker.bindPopup(popup);
else {
var markersLayer = L.featureGroup().addTo(this.map);
markersLayer.on("click", function(event) {
var target = "#company" + event.layer.zIndex;
jQuery([document.documentElement, document.body]).animate({
scrollTop: jQuery(target).offset().top - 150
}, 1e3), setTimeout(function() {
jQuery(target).fadeOut(1e3).fadeIn(500)
}, 1e3)
}), marker.addTo(markersLayer)
}
if ("undefined" !== this.params.markerButton) {
var self = this;
jQuery(".show-marker").click(function() {
var id = jQuery(this).closest(".grid-item-holder").attr("id").match(/\d/g);
id = id.join("");
for (var i = 0; i < self.markers.length; i++) self.markers[i].zIndex == id && self.map.setView([self.markers[i].getLatLng().lat, self.markers[i].getLatLng().lng], 16)
})
}
if (1 == jbdUtils.getProperty("enable_map_clustering") && 1 != locations.length || marker.addTo(this.map), "" !== markerImage && void 0 !== markerImage) {
var icon = L.icon({
iconUrl: markerImage,
iconSize: iconSize
});
marker.setIcon(icon)
}
markerImage = "", 1 != jbdUtils.getProperty("enable_map_clustering") || this.params.is_admin || markerClusters.addLayer(marker), void 0 !== this.markers ? this.markers.push(marker) : this.markers = Array(marker), void 0 !== item.in_range && (lastMarker = marker), item.activity_radius && L.circle([item.latitude, item.longitude], 1600 * item.activity_radius).addTo(this.map)
}
}
1 != jbdUtils.getProperty("enable_map_clustering") || this.params.is_admin || this.map.addLayer(markerClusters)
}
if (1 == this.params.has_location && "" != this.params.latitude && 0 != this.params.latitude) {
var myLatLng = {
latitude: this.params.latitude,
longitude: this.params.longitude
};
this.addMarker(myLatLng), lastMarker = this.markers.pop();
let locationMarker = jbdUtils.getProperty("location_map_marker") ? jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("location_map_marker") : "https://maps.google.com/mapfiles/kml/shapes/library_maps.png";
var tmpIcon = L.icon({
iconUrl: locationMarker,
iconSize: iconSize
});
lastMarker.setIcon(tmpIcon)
}
if (this.params.radius > 0 && ((void 0 === this.params.longitude && void 0 === this.params.latitude || "" == this.params.longitude) && (this.params.longitude = this.params.map_longitude, this.params.latitude = this.params.map_latitude), 1 == this.params.has_location || null != lastMarker)) {
var center = lastMarker.getLatLng();
L.circle([center.lat, center.lng], 1600 * this.params.radius).addTo(this.map)
}
this.map.invalidateSize(!1), 1 == jbdUtils.getProperty("map_enable_auto_locate") && this.map.fitBounds([
[this.bounds.maxLat, this.bounds.maxLng],
[this.bounds.minLat, this.bounds.minLng]
])
}
moveToLocation(location) {
this.map.setView([location.latitude, location.longitude])
}
addMarker(location, callback) {
var marker = L.marker([location.latitude, location.longitude]);
(1 != jbdUtils.getProperty("enable_map_clustering") || this.locations.length <= 1) && marker.addTo(this.map), void 0 !== this.markers ? this.markers.push(marker) : this.markers = Array(marker), void 0 !== callback && callback()
}
clearMarkers() {
for (var i = 0; i < this.markers.length; i++) this.map.removeLayer(this.markers[i])
}
addMapListener(event, action) {
this.map.on(event, function(e) {
var location = {};
location.latitude = e.latlng.lat, location.longitude = e.latlng.lng, action(location)
})
}
static initAutocomplete(element, action, preventSubmit, focus_view, limitedCountries) {
null == limitedCountries && (limitedCountries = []), jQuery(element).keyup(function(e) {
var key = event.keyCode || event.charCode;
if (38 != key && 40 != key) {
var query = jQuery(element).val(),
countyLimit = "";
limitedCountries.length > 0 && (countyLimit = "&countrycodes=" + limitedCountries.join());
var res, url = "https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&q=" + query + countyLimit;
jQuery(element).autocomplete({
source: function(request, response) {
jQuery.ajax({
type: "GET",
url: url,
dataType: "json",
success: function(data) {
response(jQuery.map(data, function(item) {
return {
label: item.display_name,
value: item.place_id
}
})), res = data
}
})
},
select: function(event, ui) {
for (var i in event.preventDefault(), jQuery(element).val(ui.item.label), res) res.hasOwnProperty(i) && res[i].place_id == ui.item.value && (focus_view && "undefined" != typeof jbdAdminMapInstance && jbdAdminMapInstance.autocompleteFocus(res[i].lat, res[i].lon), action(JBDOpenMap.formatSuggestionResponse(res[i])))
}
})
}
})
}
autocompleteFocus(lat, long) {
this.clearMarkers();
let loc = {};
loc.latitude = lat, loc.longitude = long, this.addMarker(loc), this.moveToLocation(loc)
}
focusLocation(params) {
let loc = {};
loc.latitude = params.latitude, loc.longitude = params.longitude, this.moveToLocation(loc), void 0 !== params.clearMarkers && params.clearMarkers || this.clearMarkers(), (void 0 === params.addMarker || params.addMarker) && this.addMarker(loc)
}
static reverseGeocoding(location, action) {
let response, lon = location.longitude,
url = "https://nominatim.openstreetmap.org/reverse.php?format=json&lat=" + location.latitude + "&lon=" + lon;
jQuery.ajax({
type: "GET",
url: url,
dataType: "json",
success: data => {
response = JBDOpenMap.formatSuggestionResponse(data), action(response.country_code)
}
})
}
static formatSuggestionResponse(place) {
let suggestionResult = [],
config = JSON.parse(jbdUtils.getProperty("autocomplete_config"));
for (let att in config.openstreet)
if (config.openstreet.hasOwnProperty(att))
for (let i = 0; i < config.openstreet[att].length; i++) {
let alternative = config.openstreet[att][i];
if (void 0 !== place.address[alternative]) {
suggestionResult[att] = place.address[alternative];
break
}
}
return suggestionResult.latitude = place.lat, suggestionResult.longitude = place.lon, suggestionResult
}
}
class JBDListings {
constructor() {
this.issetCategory = !1, this.todayDate = new Date, this.maxDate = new Date, this.maxDate.setMonth(this.todayDate.getMonth() + 6), this.availableHoursCallType = "site"
}
setLocationUrl(eurl, eurlf, durl, durlf) {
this.editUrl = eurl, this.editUrlFront = eurlf, this.deleteUrl = durl, this.deleteUrlFront = durlf
}
extendPeriod(packageId) {
jbdUtils.getProperty("isProfile") != JBDConstants.IS_ADMIN ? jQuery("#item-form #task").val("managecompanies.extendPeriod") : (jQuery("#extend_package_id").val(packageId), jQuery("#item-form #task").val("company.extendPeriod")), jQuery("#extend_package_id").val(packageId), jQuery("#item-form").submit()
}
checkAllActivityCities() {
this.uncheckAllActivityCities(), jQuery(".cities_ids-select option").each(function() {
"" != jQuery(this).val() && activityCitiesList.add(jQuery(this))
}), jQuery("#activity_cities option").each(function() {
jQuery(this).attr("selected", "selected")
})
}
uncheckAllActivityCities() {
jQuery("#activity_cities option").each(function() {
jQuery(this).removeAttr("selected")
}), activityCitiesList.remove()
}
editLocation(locationId, identifier) {
let baseUrl = this.editUrl;
jbdUtils.getProperty("isProfile") == JBDConstants.IS_FRONT && (baseUrl = this.editUrlFront), baseUrl = baseUrl + "&locationId=" + locationId + "&identifier=" + identifier, jQuery("#location-frame").attr("src", baseUrl);
jQuery("#location-dialog").jbdModal({
modalClass: "jbd-modal jbd-location"
})
}
deleteLocation(locationId) {
if (!confirm(Joomla.JText._("LNG_DELETE_LOCATION_CONF"))) return;
let baseUrl = this.deleteUrl;
jbdUtils.getProperty("isProfile") == JBDConstants.IS_FRONT && (baseUrl = this.deleteUrlFront);
let postData = "&locationId=" + locationId;
jQuery.post(baseUrl, postData, this.processDeleteLocationResult)
}
processDeleteLocationResult(response) {
jQuery(response).find("answer").each(function() {
if ("1" == jQuery(this).attr("error")) jQuery("#location-box-" + jQuery(this).attr("locationId")).remove();
else {
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("LNG_LOCATION_DELETE_FAILED") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div></div></div>';
jQuery(html).appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close()
}, 2e3)
}
})
}
addNewContact(index) {
let newIndex = parseInt(index) + 1;
jQuery("#contact-form-box1").clone().prop("id", "contact-form-box" + newIndex).appendTo("#contact_details"), jQuery("#contact-form-box" + newIndex).find("h3").text(Joomla.JText._("LNG_CONTACT") + " " + newIndex), jQuery("#contact-form-box" + newIndex + " input").each(function() {
jQuery(this).val("")
}), jQuery("#contact-form-box" + newIndex + " .remove-contact").attr("href", "javascript:jbdListings.removeContact('" + newIndex + "')").show(), jQuery("#add_contact").attr("onclick", "jbdListings.addNewContact('" + newIndex + "')")
}
removeContact(index) {
index < 2 || (index = parseInt(index), jQuery("#contact-form-box" + index).remove())
}
addNewTestimonial(index) {
let newIndex = parseInt(index) + 1;
jQuery("#testimonial-form-box1").clone().prop("id", "testimonial-form-box" + newIndex).appendTo("#testimonial_details"), jQuery("#testimonial-form-box" + newIndex).find("h3").text(Joomla.JText._("LNG_TESTIMONIAL") + " " + newIndex), jQuery("#testimonial-form-box" + newIndex + " input").each(function() {
jQuery(this).val("")
}), jQuery("#testimonial-form-box" + newIndex + " textarea").each(function() {
jQuery(this).html("")
}), jQuery("#testimonial-form-box" + newIndex + " textarea").val(""), jQuery("#testimonial-form-box" + newIndex + " .remove-testimonial").attr("href", "javascript:removeTestimonial('" + newIndex + "')").show(), jQuery("#add_testimonial").attr("onclick", "jbdListings.addNewTestimonial('" + newIndex + "')")
}
removeTestimonial(index) {
index < 2 || (index = parseInt(index), jQuery("#testimonial-form-box" + index).remove())
}
addNewService(index, ServiceFolder, ServiceFolderPath) {
let newIndex = parseInt(index) + 1;
jQuery("#service-form-box1").clone().prop("id", "service-form-box" + newIndex).appendTo("#service_details"), jQuery("#service-form-box" + newIndex).find("h5").text(Joomla.JText._("LNG_ITEM") + " " + newIndex), jQuery("#service-form-box" + newIndex + " input").each(function() {
jQuery(this).val("")
}), jQuery("#service-form-box" + newIndex + " textarea").each(function() {
jQuery(this).html("")
}), jQuery("#service-form-box" + newIndex + " textarea").val(""), jQuery("#service-form-box" + newIndex + " .input-imageLocation").prop("id", "service-imageLocation" + newIndex), jQuery("#service-form-box" + newIndex + " .input-imageLocationSize").prop("id", "service-imageUploader" + newIndex), jQuery("#service-form-box" + newIndex + " .services").prop("id", "service-picture-preview" + newIndex), jQuery("#member-picture-preview" + newIndex).html('<i class="la la-image"></i>'), jQuery("#service-form-box" + newIndex + " #imageSelection2").find("a").prop("href", 'javascript:uploadInstance.removeImage("service-", ' + newIndex + ")"), jQuery("#service-form-box" + newIndex + " #imageSelection2").find("label").prop("for", "service-imageUploader" + newIndex), jQuery("#service-form-box" + newIndex + " #imageSelection1").find("#service-imageUploader1").prop("id", "service-imageUploader" + newIndex), jQuery("#service-form-box" + newIndex).find("#service-imageLocation1").prop("id", "service-imageLocation" + newIndex), jQuery("#service-form-box" + newIndex + " .remove-service").attr("href", "javascript:jbdListings.removeService('" + newIndex + "')").show(), jQuery("#add_service").attr("onclick", "jbdListings.addNewService('" + newIndex + "','" + ServiceFolder + "','" + ServiceFolderPath + "')"), JBDUploadHelper.getUploadInstance().imageUploader(ServiceFolder, ServiceFolderPath, "service-", newIndex)
}
removeService(index) {
index < 2 || (index = parseInt(index), jQuery("#service-form-box" + index).remove())
}
disableWorkPeriod(day, mandatory, multiple) {
let status;
void 0 === multiple && (multiple = !0);
let button, checked = jQuery("#work_status_check_" + day).is(":checked"),
dayRow = jQuery("#js_workhours_" + day);
multiple && (dayRow = jQuery("#break_period_" + day)), checked ? (status = 1, jQuery("#work_start_hour_" + day).prop("readonly", !1), mandatory && (jQuery("#work_start_hour_" + day).addClass("validate[required]"), jQuery("#work_end_hour_" + day).addClass("validate[required]")), jQuery("#work_end_hour_" + day).prop("readonly", !1), (button = dayRow.find(".js_action_buttons").find("a")).text(Joomla.JText._("LNG_ADD_BREAK")), button.attr("onclick", "jbdListings.addBreak(" + day + ", " + multiple + ")"), button.attr("disabled", !1), button.addClass("btn-success"), button.removeClass("btn-outline-danger")) : (status = 0, jQuery("#work_start_hour_" + day).prop("readonly", !0), mandatory && (jQuery("#work_start_hour_" + day).removeClass("validate[required]"), jQuery("#work_end_hour_" + day).removeClass("validate[required]")), jQuery("#work_end_hour_" + day).prop("readonly", !0), (button = dayRow.find(".js_action_buttons").find("a")).attr("disabled", !0), button.text(Joomla.JText._("LNG_CLOSED")), button.attr("onclick", ""), button.removeClass("btn-success"), button.addClass("btn-outline-danger"), jQuery("#break_hours_day_" + day).empty(), jQuery("#break_periods_count_" + day).val(0)), jQuery("#work_status_" + day).val(status)
}
addBreak(day, multiple) {
let newId = parseInt(jQuery("#break_periods_count_" + day).val()) + 1,
button = jQuery("#js_workhours_" + day).find(".js_action_buttons").find("a");
if (void 0 !== button.attr("disabled")) return !1;
let html = "";
html += '<div class="row align-items-center" id="break_hour_period_' + day + "_" + newId + '">', html += '<div class="col-1 p-1"></div>', html += '<div class="col-4"><input type="text" name="break_start_hour[]" class="form-control p-1 text-center timepicker" value="01:00 PM" /></div>', html += '<div class="col-4"><input type="text" name="break_end_hour[]" class="form-control p-1 text-center timepicker" value="02:00 PM" /></div>', multiple ? html += '<div class="col-2"><a href="javascript:void(0)" class="btn btn-sm btn-danger btn-panel" onclick="jbdListings.deleteBreak(' + day + ", " + newId + ')">' : (html += '<div class="col-2"><a href="javascript:void(0)" class="btn btn-sm btn-danger btn-panel" onclick="jbdListings.deleteCompanyBreak(' + day + ", " + newId + ')">', button.attr("disabled", !0)), html += '<i class="la la-trash"></i>', html += "</a></div>", html += '<input type="hidden" name="break_ids[]" id="break_ids" value="" />', html += "</div>", jQuery("#break_hours_day_" + day).append(html), jQuery("#break_periods_count_" + day).val(newId), multiple || (jQuery("#break_period_" + day).find(".break-button").attr("disabled", !0), jQuery("#break_period_" + day).find(".break-button").attr("onclick", "")), jQuery(".timepicker").timepicker({
timeFormat: jbdUtils.getProperty("timeFormat"),
minTime: "6:00am"
})
}
deleteCompanyBreak(day, id) {
jQuery("#break_hour_period_" + day + "_" + id).remove(), jQuery("#js_workhours_" + day).find(".js_action_buttons").find("a").attr("disabled", !1), jQuery("#break_period_" + day).find(".break-button").removeAttr("disabled");
let count = jQuery("#break_periods_count_" + day).val();
count > 0 && count--, jQuery("#break_periods_count_" + day).val(count), jQuery("#break_period_" + day).find(".break-button").attr("onclick", "jbdListings.addBreak(" + day + ", false)")
}
deleteBreak(day, id) {
jQuery("#break_hour_period_" + day + "_" + id).empty();
let newCount = parseInt(jQuery("#break_periods_count_" + day).val()) - 1;
jQuery("#break_periods_count_" + day).val(newCount)
}
disableTrailPeriod(date) {
jQuery("#trail_status_" + date).val();
let button = jQuery(".js_trailhours_" + date).find(".js_action_buttons").find("a");
jQuery("#trail_status_checkbox_" + date).is(":checked") ? (jQuery("#trail_status_" + date).val(1), jQuery(".js_trail_row_" + date).find(".js_trail_hours").attr("disabled", !1), button.text(Joomla.JText._("LNG_ADD_BREAK")), button.attr("onclick", 'jbdListings.addTrailBreak("' + date + '")'), button.attr("disabled", !1), button.addClass("btn-success"), button.removeClass("btn-outline-danger")) : (jQuery("#trail_status_" + date).val(0), jQuery(".js_trail_row_" + date).find(".js_trail_hours").attr("disabled", !0), button.attr("disabled", !0), button.text(Joomla.JText._("LNG_CLOSED")), button.attr("onclick", ""), button.removeClass("btn-success"), button.addClass("btn-outline-danger"))
}
addTrailBreak(date) {
let button = jQuery(".js_trailhours_" + date).find(".js_action_buttons").find("a");
if (void 0 !== button.attr("disabled")) return !1;
button.attr("disabled", !0), jQuery("#trail_breaks_status_" + date).val(1), jQuery("#trail_break_hours_" + date).show(), jQuery(".timepicker").timepicker({
timeFormat: jbdUtils.getProperty("timeFormat"),
minTime: "6:00am"
})
}
deleteTrailBreak(date) {
let button = jQuery(".js_trailhours_" + date).find(".js_action_buttons").find("a");
jQuery("#trail_breaks_status_" + date).val(0), jQuery("#trail_break_hours_" + date).hide(), button.attr("disabled", !1)
}
updateAttributes(categoryId, companyId) {
let attributesUrl = jbdUtils.getAjaxUrl("getAttributesAjax", "company", "managecompany"),
packageId = 0;
1 == jbdUtils.getProperty("enable_packages") && ((packageId = jQuery("#filter_package_select").val()) || (packageId = jQuery("#filter_package").val())), jQuery.ajax({
type: "GET",
url: attributesUrl,
data: {
categoryId: categoryId,
companyId: companyId,
packageId: packageId
},
dataType: "json",
cache: !1,
success: function(data) {
null !== data && "undefined" !== data ? jQuery("#custom-attributes-section").show() : jQuery("#custom-attributes-section").hide(), jQuery("#customFieldsContent").html(data), jQuery(".chosen-select").chosen({
width: "95%",
disable_search_threshold: 5,
search_contains: !0,
placeholder_text_single: Joomla.JText._("LNG_SELECT_OPTION"),
placeholder_text_multiple: Joomla.JText._("LNG_SELECT_OPTION")
})
}
})
}
displaySubcategories(id, level, maxLevel) {
let categoryId = jQuery("#" + id).val();
categoryId || (categoryId = 0);
for (let i = level + 1; i <= maxLevel; i++) jQuery("#company_categories-level-" + i).html("");
jQuery("#company_categories-level-" + (level + 1)).html("<div style='width:20px;margin: 0 auto;'><img align='center' src='" + jbdUtils.getProperty("imageRepo") + "/assets/images/loading.gif' /></div>");
let postParameters = "";
postParameters += "&categoryId=" + categoryId;
let postData = "";
postData = jbdUtils.getProperty("isProfile") == JBDConstants.IS_ADMIN ? "&option=com_jbusinessdirectory&task=company.getSubcategories" + postParameters : "&option=com_jbusinessdirectory&task=managecompany.getSubcategories" + postParameters, jQuery.post(jbdUtils.baseUrl, postData, this.processDisplaySubcategoriesResponse)
}
processDisplaySubcategoriesResponse(response) {
let self = this;
jQuery(response).find("answer").each(function() {
if ("1" == jQuery(this).attr("error")) jQuery("#frm_error_msg_facility").className = "text_error", jQuery("#frm_error_msg_facility").html(jQuery(this).attr("errorMessage")), jQuery("#frm_error_msg_facility").show();
else if ("0" == jQuery(this).attr("error")) {
jQuery("#subcategories").html(jQuery(this).attr("content_categories")), self.removeSelectedCategories(), jQuery("#company_categories-level-" + jQuery(this).attr("category-level")).html("");
let level = 1 + parseInt(jQuery(this).attr("category-level"));
jQuery("#company_categories-level-" + level).html(""), "1" != jQuery(this).attr("isLastLevel") && jQuery("#company_categories-level-" + jQuery(this).attr("category-level")).html(jQuery(this).attr("content_select_categories"))
}
})
}
removeSelectedCategories() {
jQuery("#mainSubcategory > option").each(function() {
jQuery("#subcategories option[value=" + jQuery(this).val() + "]").remove()
})
}
hideDisapprovalBox() {
jQuery("#disapprovalBox").hide()
}
showDisapprovalBox() {
jQuery("#disapprovalBox").show()
}
addVacation(id) {
let newId = (id = parseInt(id)) + 1,
deleteButton = "";
deleteButton += "<br/>", deleteButton += '<a href="javascript:void(0)" class="btn btn-sm btn-danger btn-panel mb-1" onclick="jbdListings.deleteVacation(' + newId + ')">', deleteButton += '<i class="la la-trash"></i>', deleteButton += "</a>", jQuery("#vacation_0").clone().prop("id", "vacation_" + newId).insertAfter("#vacation_" + id), jQuery("#vacation_" + newId + " #start_calendar_0").find("input").attr("id", "start_date_" + newId), jQuery("#vacation_" + newId + " #start_calendar_0").find("input").val(""), jQuery("#vacation_" + newId + " #start_calendar_0").find("button").attr("id", "start_date_" + newId + "_img"), jQuery("#vacation_" + newId + " #end_calendar_0").find("input").attr("id", "end_date_" + newId), jQuery("#vacation_" + newId + " #end_calendar_0").find("input").val(""), jQuery("#vacation_" + newId + " #end_calendar_0").find("button").attr("id", "end_date_" + newId + "_img"), jQuery("#vacation_" + newId + " #delete_vacation_0").prop("id", "delete_vacation_" + newId), jQuery("#add_vacation").find("a").attr("onclick", "jbdListings.addVacation('" + newId + "')"), jQuery("#delete_vacation_" + newId).html(deleteButton), this.initCalendar(newId), jQuery("#add_vacation_" + parseInt(id)).remove()
}
deleteVacation(id) {
jQuery("#vacation_" + id).empty()
}
updateServices() {
let companyId = jQuery("#company_id").find(":selected").val(),
urlGetServices = jbdUtils.getAjaxUrl("getServicesAjax", "companyserviceprovider", "managecompanyserviceprovider");
jQuery.ajax({
type: "GET",
url: urlGetServices,
data: {
companyId: companyId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#services").html(data), jbdUtils.updateChosenSelect("#services")
}
})
}
initCalendar(id) {
Calendar._DN = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], Calendar._SDN = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], Calendar._FD = 0, Calendar._MN = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], Calendar._SMN = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], Calendar._TT = {
INFO: "About the Calendar",
ABOUT: "DHTML Date/Time Selector\n(c) dynarch.com 2002-2005 / Author: Mihai Bazon\nFor latest version visit: http://www.dynarch.com/projects/calendar/\nDistributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details.\n\nDate selection:\n- Use the « and » buttons to select year\n- Use the < and > buttons to select month\n- Hold mouse button on any of the buttons above for faster selection.",
ABOUT_TIME: "\n\nTime selection:\n- Click on any of the time parts to increase it\n- or Shift-click to decrease it\n- or click and drag for faster selection.",
PREV_YEAR: "Select to move to the previous year. Select and hold for a list of years.",
PREV_MONTH: "Select to move to the previous month. Select and hold for a list of the months.",
GO_TODAY: "Go to today",
NEXT_MONTH: "Select to move to the next month. Select and hold for a list of the months.",
SEL_DATE: "Select a date.",
DRAG_TO_MOVE: "Drag to move.",
PART_TODAY: " Today ",
DAY_FIRST: "Display %s first",
WEEKEND: "0,6",
CLOSE: "Close",
TODAY: "Today",
TIME_PART: "(Shift-)Select or Drag to change the value.",
DEF_DATE_FORMAT: "%Y-%m-%d",
TT_DATE_FORMAT: "%a, %b %e",
WK: "wk",
TIME: "Time:"
}, Calendar.setup({
inputField: "start_date_" + id,
ifFormat: "%d-%m-%Y",
button: "start_date_" + id + "_img",
align: "Tl",
singleClick: !0,
firstDay: 0,
defaultDate: new Date
}), Calendar.setup({
inputField: "end_date_" + id,
ifFormat: "%d-%m-%Y",
button: "end_date_" + id + "_img",
align: "Tl",
singleClick: !0,
firstDay: 0,
defaultDate: new Date
})
}
updateProviders() {
let serviceId = jQuery("#service_id").find(":selected").val(),
urlGetProviders = jbdUtils.getAjaxUrl("getProvidersAjax", "companyservicereservation");
jQuery("#time-text").empty(), jQuery("#date-text").empty(), jQuery.ajax({
type: "GET",
url: urlGetProviders,
data: {
serviceId: serviceId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#provider_id").html(data)
}
})
}
selectHourAdmin(time) {
jQuery("#time").val(time), jQuery("#time-text").html(time)
}
showAppointmentDialog() {
jQuery("#event-appointment").jbdModal(), jQuery(".timepicker").timepicker({
timeFormat: jbdUtils.getProperty("timeFormat"),
minTime: "6:00am"
})
}
makeAppointment(eventId, eventStartDate, eventEndDate) {
this.showAppointmentDialog(), jQuery("#eventId-appoint").val(eventId), this.listAvailableDates(eventStartDate, eventEndDate)
}
listAvailableDates(eventStartDate, eventEndDate) {
let dStart, dEnd;
dStart = 0 === eventStartDate.length || null == eventStartDate || "0000-00-00" === eventStartDate ? new Date : new Date(eventStartDate), 0 === eventEndDate.length || null == eventEndDate || "0000-00-00" === eventEndDate ? (dEnd = new Date).setDate(dStart.getDate() + 20) : dEnd = new Date(eventEndDate);
let dNow = new Date;
dNow > dStart && dNow < dEnd && (dStart = dNow);
let select = document.getElementById("date-appoint"),
i = 0;
for (; dStart <= dEnd && i <= 20;) {
let opt = document.createElement("option");
opt.value = dStart.toDateString(), opt.innerHTML = dStart.toDateString(), select.appendChild(opt), dStart.setDate(dStart.getDate() + 1), i++
}
}
selectService(id) {
serviceId = id, providerId = 0, wizard.steps("next")
}
selectProvider(id, type) {
providerId = id, providerType = type, providerName = jQuery("#provider-" + id).text(), serviceName = jQuery(".selected-service").text(), jQuery("#morning").empty(), jQuery("#afternoon").empty(), jQuery("#evening").empty(), wizard.steps("next")
}
selectHour(hour) {
selectedHour = hour, wizard.steps("finish")
}
renderProviders() {
let urlGetProviders = jbdUtils.getAjaxUrl("getServiceProvidersAjax", "companyservicereservation", "managecompanyservicereservation");
jQuery.ajax({
type: "GET",
url: urlGetProviders,
data: {
serviceId: serviceId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#providers-content").html(data)
}
})
}
createProviderCalendarAdmin() {
let providerId = jQuery("#provider_id").find(":selected").val(),
providerType = jQuery("#provider_type").val(),
urlGetDays = jbdUtils.getAjaxUrl("getVacationDaysAjax", "companyservicereservation", "managecompanyservicereservation");
2 == providerType && (urlGetDays = jbdUtils.getAjaxUrl("getWorkingDaysAjax", "companyservicereservation", "managecompanyservicereservation"));
let $bookingDate = jQuery("#item-form #date").val();
this.availableHoursCallType = "admin", this.createProviderCalendar(providerId, providerType, $bookingDate)
}
createProviderCalendarFront() {
jQuery(".selected-provider-service").text(serviceName), jQuery(".selected-provider").text(providerName), this.availableHoursCallType = "site", this.createProviderCalendar(providerId, providerType, null)
}
createProviderCalendar(providerId, providerType, seldate) {
let urlGetDays = jbdUtils.getAjaxUrl("getVacationDaysAjax", "companyservicereservation", "managecompanyservicereservation");
2 == providerType && (urlGetDays = jbdUtils.getAjaxUrl("getWorkingDaysAjax", "companyservicereservation", "managecompanyservicereservation"));
let self = this,
hourCall = self.getAvailableHoursFront;
"admin" == self.availableHoursCallType && (hourCall = self.getAvailableHoursAdmin), jQuery.ajax({
type: "GET",
url: urlGetDays,
data: {
providerId: providerId
},
dataType: "json",
cache: !1,
success: function(data) {
var startDate = self.todayDate;
if (data && data.length > 0 && 2 == providerType) {
let parts = data.at(-1).split("-");
startDate = new Date(parts[2], parts[1] - 1, parts[0]), datepicker.minDate = startDate
}
if (jQuery("#datepicker").datepicker("destroy"), jQuery("#datepicker").datepicker({
beforeShowDay: function(date) {
let string = jQuery.datepicker.formatDate("dd-mm-yy", date);
return 2 == providerType ? [-1 != data.indexOf(string)] : [-1 == data.indexOf(string)]
},
onSelect: hourCall,
minDate: startDate
}), seldate) {
var parts = seldate.split("-"),
sDate = new Date(parts[0], parts[1] - 1, parts[2]);
jQuery("#datepicker").datepicker("setDate", sDate)
}
let todayString = jQuery.datepicker.formatDate("dd-mm-yy", startDate);
(-1 == data.indexOf(todayString) && 1 == providerType || -1 != data.indexOf(todayString) && 2 == providerType) && ("admin" == self.availableHoursCallType ? self.getAvailableHoursAdmin(seldate) : self.getAvailableHoursFront(startDate))
}
})
}
getAvailableHoursAdmin(date) {
let serviceId = jQuery("#service_id").find(":selected").val(),
providerId = jQuery("#provider_id").find(":selected").val(),
providerType = jQuery("#provider_type").find(":selected").val();
jQuery("#date").val(date), jQuery("#date-text").html(date), jbdListings.getAvailableHours(date, serviceId, providerId, providerType)
}
getAvailableHoursFront(date) {
jbdListings.getAvailableHours(date, serviceId, providerId, providerType)
}
getAvailableHours(date, serviceId, providerId, providerType) {
let urlGetHours = jbdUtils.getAjaxUrl("getAvailableHoursAjax", "companyservicereservation", "managecompanyservicereservation"),
hoursD = new Date(date),
hoursDate = jQuery.datepicker.formatDate("dd-mm-yy", hoursD),
self = this;
jQuery.ajax({
type: "GET",
url: urlGetHours,
data: {
serviceId: serviceId,
providerId: providerId,
providerType: providerType,
type: this.availableHoursCallType,
date: hoursDate
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#morning").empty(), jQuery("#afternoon").empty(), jQuery("#evening").empty(), jQuery("#morning").append(data.morning), jQuery("#afternoon").append(data.afternoon), jQuery("#evening").append(data.evening), "site" == self.availableHoursCallType ? selectedDate = hoursDate : jQuery("#date").val(hoursDate)
}
})
}
initTabs(tabId) {
jQuery("#tabs").tabs(), jQuery("#dir-tab-2").click(function() {
loadDetailsViewMap()
}), jQuery(".dir-tabs-options").click(function() {
jQuery(".dir-tabs-options").each(function() {
jQuery(this).removeClass("ui-state-active")
}), jQuery(this).addClass("ui-state-active")
}), jQuery("#dir-tab-" + tabId).click()
}
showCompanyMap() {
jQuery("#company-map-holder").show(), loadDetailsViewMap()
}
showDetails(identifier) {
let ids = ["company-details", "company-announcements", "company-gallery", "company-videos", "company-sounds", "company-offers", "company-offers-price-list", "company-products", "company-related", "company-services", "company-associated", "company-events", "events-associated", "company-testimonials", "company-price-list", "company-projects", "company-memberships", "listing-articles", "company-team", "company-reviews", "company-contact-details"],
pos = ids.indexOf(identifier);
jQuery(".company-menu a").each(function() {
jQuery(this).removeClass("active")
}), this.returnToProjects();
let linkIdentifier = identifier.substring(identifier.indexOf("-") + 1, identifier.length);
jQuery("#" + linkIdentifier + "-link").addClass("active");
for (let i = 0; i < pos; i++) jQuery("#" + ids[i]).slideUp();
for (let i = pos; i < ids.length; i++) jQuery("#" + ids[i]).slideDown()
}
showTabContent(identifier) {
let ids = ["company-details", "company-gmap", "company-testimonials", "company-services", "company-price-list", "company-projects", "company-offers-price-list", "company-announcements", "company-products", "company-team", "company-reviews"];
jQuery(".company-menu a").each(function() {
jQuery(this).removeClass("active")
});
let linkIdentifier = identifier.substring(identifier.indexOf("-") + 1, identifier.length);
jQuery("#" + linkIdentifier + "-link").addClass("active"), jQuery("#" + identifier).show();
for (let i = 0; i < ids.length; i++) ids[i] !== identifier && jQuery("#" + ids[i]).hide();
"company-projects" === identifier && this.returnToProjects(), "company-gmap" === identifier && loadDetailsViewMap(), "company-products" === identifier && this.goBack(), "company-offers" === identifier && jQuery(".offers-container").removeAttr("style")
}
renderUserAverageRating(averageRating, companyId, showNotice) {
let self = this;
jQuery(".user-rating-avg").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
starCaptions: {
.5: Joomla.JText._("LNG_BAD"),
1: Joomla.JText._("LNG_BAD"),
1.5: Joomla.JText._("LNG_POOR"),
2: Joomla.JText._("LNG_POOR"),
2.5: Joomla.JText._("LNG_REGULAR"),
3: Joomla.JText._("LNG_REGULAR"),
3.5: Joomla.JText._("LNG_GOOD"),
4: Joomla.JText._("LNG_GOOD"),
4.5: Joomla.JText._("LNG_GORGEOUS"),
5: Joomla.JText._("LNG_GORGEOUS")
},
size: "sm",
showCaption: !1,
starCaptionClasses: {
.5: "badge badge-danger",
1: "badge badge-danger",
1.5: "badge badge-warning",
2: "badge badge-warning",
2.5: "badge badge-info",
3: "badge badge-info",
3.5: "badge badge-primary",
4: "badge badge-primary",
4.5: "badge badge-success",
5: "badge badge-success"
},
clearCaption: Joomla.JText._("LNG_NOT_RATED_YET"),
clearCaptionClass: "badge badge-default",
hoverEnabled: !1,
hoverChangeCaption: !1,
hoverChangeStars: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".user-rating-avg").on("rating:change", function(event, value, caption) {
1 == showNotice ? (jQuery(this).rating("update", jQuery(this).attr("title")), jbdUtils.showLoginNotice()) : self.updateCompanyRate(companyId, value)
}), jQuery(".user-rating-avg").on("rating:clear", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
}), jQuery(".user-rating-avg").on("rating:reset", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
})
}
showReviewForm(requiresLogin) {
requiresLogin ? jbdUtils.showLoginNotice() : (jQuery("#add-review").slideDown(500), jQuery("html, body").animate({
scrollTop: jQuery("#add-review").offset().top + jQuery("#add-review").height() / 2
}, 1e3))
}
renderRatingCriteria(calculate_review_criterias, companyId) {
let self = this;
jQuery(".rating-criteria").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
starCaptions: {
.5: Joomla.JText._("LNG_BAD"),
1: Joomla.JText._("LNG_BAD"),
1.5: Joomla.JText._("LNG_POOR"),
2: Joomla.JText._("LNG_POOR"),
2.5: Joomla.JText._("LNG_REGULAR"),
3: Joomla.JText._("LNG_REGULAR"),
3.5: Joomla.JText._("LNG_GOOD"),
4: Joomla.JText._("LNG_GOOD"),
4.5: Joomla.JText._("LNG_GORGEOUS"),
5: Joomla.JText._("LNG_GORGEOUS")
},
size: "sm",
showCaption: !0,
starCaptionClasses: {
.5: "badge badge-danger",
1: "badge badge-danger",
1.5: "badge badge-warning",
2: "badge badge-warning",
2.5: "badge badge-info",
3: "badge badge-info",
3.5: "badge badge-primary",
4: "badge badge-primary",
4.5: "badge badge-success",
5: "badge badge-success"
},
clearCaption: Joomla.JText._("LNG_NOT_RATED_YET"),
clearCaptionClass: "badge badge-default",
hoverEnabled: !0,
hoverChangeCaption: !0,
hoverChangeStars: !0,
rtl: !1
}), jQuery(".rating-criteria").on("rating:change", function(event, value, caption) {
if (jQuery(this).parent().parent().parent().children("input").val(value), 1 == calculate_review_criterias) {
let total = 0,
count = 0;
jQuery(".review-criterias").each(function() {
count++, total += parseFloat(jQuery(this).val())
}), isNaN(total) || (value = 1 * total / count)
}
self.updateCompanyRate(companyId, value)
}), jQuery(".rating-criteria").on("rating:clear", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
}), jQuery(".rating-criteria").on("rating:reset", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
})
}
renderRatingQuestions() {
jQuery(".rating-question").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
hoverEnabled: !0,
hoverChangeCaption: !1,
hoverChangeStars: !0,
rtl: !1,
displayOnly: !1
}), jQuery(".rating-question").on("rating:change", function(event, value, caption) {
jQuery(this).parent().parent().parent().children("input").val(value)
}), jQuery(".rating-question").on("rating:clear", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
}), jQuery(".rating-question").on("rating:reset", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
})
}
showReviewQuestions(reviewId) {
let self = this;
jQuery("#show-questions" + reviewId).text(Joomla.JText._("LNG_HIDE_REVIEW_QUESTIONS")), jQuery("#show-questions" + reviewId).attr("onclick", 'hideReviewQuestions("' + reviewId + '")'), jQuery("#review-questions" + reviewId).slideDown(500), jQuery("#review-questions" + reviewId).children(".review-question-answer").each(function() {
jQuery(this).hasClass("star-rating") ? self.showStarRating(jQuery(this).attr("id")) : jQuery(this).html(jbdUtils.truncate(jQuery(this).text(), jQuery(this).attr("id"), 100))
})
}
hideReviewQuestions(reviewId) {
jQuery("#show-questions" + reviewId).text(Joomla.JText._("LNG_SHOW_REVIEW_QUESTIONS")), jQuery("#show-questions" + reviewId).attr("onclick", 'jbdListings.showReviewQuestions("' + reviewId + '")'), jQuery("#review-questions" + reviewId).slideUp(500)
}
showStarRating(answerId) {
let id = answerId.slice(15, answerId.length);
jQuery("#" + answerId).empty(), jQuery("#" + answerId).rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery("#" + answerId).rating("update", jQuery("#star-rating-score" + id).val())
}
editAnswer(answerId, answerType) {
let data, score, answerDiv = jQuery("#question-answer" + answerId),
answer = answerDiv.text(),
self = this;
if (0 == answerType) jbdUtils.showFullText(answerId), answer = answerDiv.text(), data = '<textarea style="width:100%;" name="answer-' + answerId + '" id="answer-' + answerId + '" onblur="jbdListings.saveAnswer(\'' + answerId + "', '" + answerType + "')\" >" + answer + "</textarea>";
else if (1 == answerType) {
let yes = answer == Joomla.JText._("LNG_YES") ? 'checked="checked"' : "",
no = answer == Joomla.JText._("LNG_NO") ? 'checked="checked"' : "";
data = '<input type="radio" id="answer-' + answerId + '" value="1" onclick="jbdListings.saveAnswer(\'' + answerId + "', '" + answerType + '\')" name="answer-' + answerId + '"' + yes + ">" + Joomla.JText._("LNG_YES") + "</input>", data += ' <input type="radio" id="answer-' + answerId + '" value="0" onclick="jbdListings.saveAnswer(\'' + answerId + "', '" + answerType + '\')" name="answer-' + answerId + '"' + no + ">" + Joomla.JText._("LNG_NO") + "</input>"
} else 2 == answerType && (data = '<div class="rating-answer"></div>', score = parseFloat(answer));
jQuery("#question-answer" + answerId).attr("class", ""), answerDiv.html(data), 2 == answerType && (jQuery(".rating-answer").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
hoverEnabled: !0,
hoverChangeCaption: !1,
hoverChangeStars: !0,
rtl: !1,
displayOnly: !1
}), jQuery(".rating-answer").on("rating:change", function(event, value, caption) {
jQuery(this).parent().parent().parent().children("input").val(value), document.getElementById("star-rating-score" + answerId).value = value, self.saveAnswer(answerId, answerType)
}), jQuery(".rating-answer").on("rating:clear", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
}), jQuery(".rating-answer").on("rating:reset", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
}))
}
saveAnswer(answerId, answerType) {
let data, self = this;
0 == answerType ? data = jQuery("#answer-" + answerId).val() : 1 == answerType ? data = jQuery("input[name='answer-" + answerId + "']:checked").val() : 2 == answerType && (data = jQuery("#star-rating-score" + answerId).val());
let urlSaveAnswerAjax = jbdUtils.getAjaxUrl("saveAnswerAjax", "companies");
jQuery.ajax({
type: "GET",
url: urlSaveAnswerAjax,
data: {
answer: data,
answerId: answerId
},
dataType: "json",
cache: !1,
success: function() {
jQuery("#question-answer" + answerId).empty(), 1 == answerType && (0 == data ? data = Joomla.JText._("LNG_NO") : 1 == data && (data = Joomla.JText._("LNG_YES"))), 2 != answerType ? jQuery("#question-answer" + answerId).text(data) : self.showStarRating("question-answer" + answerId)
}
}), 2 != answerType ? jQuery("#question-answer" + answerId).attr("class", "answer question-answer") : jQuery("#question-answer" + answerId).attr("class", "answer star-rating")
}
magnifyImages(htmlClass) {
const galleries = document.getElementsByClassName(htmlClass);
galleries.length && Array.from(galleries).forEach(gallery => {
lightGallery(gallery, {
selector: "li a",
plugins: [lgZoom, lgThumbnail, lgRotate, lgShare],
speed: 500,
addClass: "gallery-review-lightbox",
download: !0,
counter: !0,
enableDrag: !0,
enableTouch: !0,
getCaptionFromTitleOrAlt: !0,
thumbnail: !0,
animateThumb: !0,
showThumbByDefault: !0,
thumbWidth: 100,
thumbHeight: 80,
galleryId: "review-gallery",
loop: !0,
hideScrollbar: !0,
closable: !0,
escKey: !0,
keyPress: !0,
appendSubHtmlTo: ".lg-sub-html"
})
})
}
renderAverageRating(averageRating) {
jQuery(".user-rating-avg").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".user-rating-avg").rating("update", averageRating)
}
renderReviewRating() {
jQuery(".rating-review").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".rating-review").each(function() {
jQuery(this).rating("update", this.title)
})
}
showTab(tabId) {
jQuery("#tabId").val(tabId), jQuery("#tabsForm").submit()
}
claimCompany(requiresLogin) {
requiresLogin ? jbdUtils.showLoginNotice() : (jQuery(".error_msg").each(function() {
jQuery(this).hide()
}), this.showClaimDialog())
}
showClaimDialog() {
jQuery("#company-claim").jbdModal()
}
showDirTab(tab) {
jQuery(".dir-tab").each(function() {
jQuery(this).hide()
}), jQuery(tab).show(), jQuery(".track-business-details").each(function() {
jQuery(this).parent().removeClass("active")
});
let number = tab.substr(tab.indexOf("-") + 1, tab.length);
jQuery("#dir-tab-" + number).parent().addClass("active"), this.returnToProjects()
}
updateCompanyOwner(companyId, userId) {
jQuery('<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">Please wait...</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div></div></div>').appendTo("body").jbdModal(), jQuery("#company-claim button").each(function() {
jQuery(this).attr("disabled", "disabled")
});
document.reportAbuse;
let postParameters = "";
postParameters += "&companyId=" + companyId;
let postData = "&controller=companies&task=companies.updateCompanyOwner" + (postParameters += "&userId=" + userId);
jQuery.post(jbdUtils.baseUrl, postData, this.processUpdateCompanyOwner)
}
processUpdateCompanyOwner(response) {
jQuery(response).find("answer").each(function() {
let message = "";
1 == jQuery(this).attr("result") ? (message = Joomla.JText._("LNG_CLAIM_SUCCESSFULLY"), jQuery("#claim-container").hide()) : message = Joomla.JText._("LNG_ERROR_CLAIMING_COMPANY"), jQuery('<span class="loading-message">' + message + "</span>").appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close()
}, 2e3)
})
}
showReportAbuse() {
jQuery("#reportAbuseEmail").jbdModal()
}
renderGridReviewRating() {
jQuery(".rating-review").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".rating-review").each(function() {
jQuery(this).rating("update", this.title)
})
}
showQuoteCompanyForm(companyId) {
jQuery("#company-quote #companyId").val(companyId), jQuery("#company-quote").jbdModal()
}
showQuoteCompany(companyId, showData) {
0 == showData ? jbdUtils.showLoginNotice() : (jQuery(".error_msg").each(function() {
jQuery(this).hide()
}), this.showQuoteCompanyForm(companyId))
}
showContactCompanyList(companyId, showData, companyName, companyLogo, companyCover, rating) {
let logo = companyLogo ? jbdUtils.getProperty("imageBaseUrl") + companyLogo : jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("no_image"),
cover = companyCover ? jbdUtils.getProperty("imageBaseUrl") + companyCover : jbdUtils.getProperty("imageBaseUrl") + jbdUtils.getProperty("no_image");
0 == showData ? jbdUtils.showLoginNotice() : (jQuery(".error_msg").each(function() {
jQuery(this).hide()
}), jQuery("#company-contact #companyId").val(companyId), jQuery("#company-contact .item-header-title").html(companyName), jQuery("#company-contact .item-header-photo img").attr("src", logo), jQuery("#company-contact .jmodal-header-background").css("background-image", "url(" + cover + ")"), 1 == jbdUtils.getProperty("enable_ratings") && (jQuery("#company-contact .rating-average-review").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery("#company-contact .rating-average-review").rating("update", rating)), this.showContactCompany())
}
requestQuoteCompany() {
let baseurl = jbdUtils.getAjaxUrl("requestQuoteCompanyAjax", "companies");
if (!jQuery("#quoteCompanyFrm").validationEngine("validate")) return;
jQuery("#company-quote button").each(function() {
jQuery(this).attr("disabled", "disabled")
}), jQuery(".quote-submit-button").addClass("loader");
let postData = "";
postData += "&firstName=" + jQuery("#company-quote #firstName-quote").val(), postData += "&lastName=" + jQuery("#company-quote #lastName-quote").val(), postData += "&email=" + jQuery("#company-quote #email-quote").val(), postData += "&phone=" + jQuery("#company-quote #phone-quote").val(), postData += "&description=" + jQuery("#company-quote #description-quote").val(), postData += "&companyId=" + jQuery("#company-quote #companyId").val(), postData += "&category=" + jQuery("#company-quote #category").val(), postData += "&g-recaptcha-response=" + jQuery("#company-quote .g-recaptcha-response").val(), jQuery("#quoteCompanyFrm .jbd-commit").addClass("loader"), jQuery.post(baseurl, postData, this.processQuoteCompanyResult)
}
initializeListingsSearch() {}
contactCompanyList() {
if (!jQuery("#contactCompanyFrm").validationEngine("validate")) return;
jQuery("#contactCompanyFrm button").each(function() {
jQuery(this).attr("disabled", "disabled")
}), jQuery(".contact-submit-button").addClass("loader");
let postData = "";
postData += "&firstName=" + jQuery("#company-contact #firstName").val(), postData += "&lastName=" + jQuery("#company-contact #lastName").val(), postData += "&email=" + jQuery("#company-contact #email").val(), postData += "&phone=" + jQuery("#company-contact #phone").val(), postData += "&description=" + jQuery("#company-contact #description").val(), postData += "&companyId=" + jQuery("#company-contact #companyId").val(), postData += "&g-recaptcha-response=" + jQuery("#captcha-div-contact .g-recaptcha-response").val(), jQuery.post(contactListUrl, postData, this.processContactCompanyResult)
}
contactBusinessListing() {
if (!jQuery("#contactListingFrm").validationEngine("validate")) return;
let postData = "";
postData += "&firstName=" + jQuery("#listing-contact #firstName").val(), postData += "&email=" + jQuery("#listing-contact #email").val(), postData += "&phone=" + jQuery("#listing-contact #phone").val(), postData += "&description=" + jQuery("#listing-contact #description").val(), postData += "&companyId=" + jQuery("#listing-contact #companyId").val(), postData += "&g-recaptcha-response=" + jQuery("#captcha-div-contact .g-recaptcha-response").val(), jQuery.post(contactListUrl, postData, this.processContactCompanyResult)
}
showContactCompany() {
jQuery("#company-contact").jbdModal()
}
contactCompany(showData) {
0 == showData ? jbdUtils.showLoginNotice() : (jQuery(".error_msg").each(function() {
jQuery(this).hide()
}), this.showContactCompany())
}
joinCompany($companyId, multipleListings) {
let baseUrl = jbdUtils.getAjaxUrl("joinCompany", "companies"),
selectedValues = jQuery("#userAssociatedCompanies").val(),
companyIds = "";
multipleListings && Array.isArray(selectedValues) && (companyIds = selectedValues.join()), jQuery(".associated-buttons button").each(function() {
jQuery(this).attr("disabled", "disabled")
}), jQuery(".jbd-commit-associated").addClass("loader"), jQuery.ajax({
type: "GET",
url: baseUrl,
cache: !1,
data: {
companyIds: companyIds,
multipleListings: multipleListings,
mainCompanyId: $companyId
},
dataType: "json",
success: function(data) {
if ("1" == data.error) {
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("COM_JBUSINESS_ERROR") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div> <div class="jmodal-body"><p>' + data.message + "</p></div> </div></div>";
jQuery(html).appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close(), location.reload(!0)
}, 1200)
} else {
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("COM_JBUSINESS_DIRECTORY_COMPANY_REGISTERED") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div></div></div>';
jQuery(html).appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close(), location.reload(!0)
}, 1200)
}
}
})
}
showCompanyListDialog($companyId, multipleListings, nrJoined) {
multipleListings || nrJoined > 0 ? jQuery("#company-list").jbdModal() : jbdListings.joinCompany($companyId, multipleListings)
}
joinListing(nrJoined, $companyId, userId, multipleListings) {
0 == userId ? jbdUtils.showLoginNotice() : this.showCompanyListDialog($companyId, multipleListings, nrJoined)
}
processContactCompanyResult(response) {
jQuery("#quoteCompanyFrm .jbd-commit").removeClass("loader"), jQuery("#quoteCompanyFrm button").each(function() {
jQuery(this).removeAttr("disabled")
}), jQuery(response).find("answer").each(function() {
if ("1" == jQuery(this).attr("error")) {
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("COM_JBUSINESS_ERROR") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div> <div class="jmodal-body"><p>' + jQuery(this).attr("errorMessage") + "</p></div> </div></div>";
jQuery(html).appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close()
}, 2e3)
} else {
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("COM_JBUSINESS_DIRECTORY_COMPANY_CONTACTED") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div></div></div>';
jQuery(html).appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close()
}, 2e3), void 0 !== jQuery(this).attr("redirect_url") && "" != jQuery(this).attr("redirect_url") && (window.location.href = jQuery(this).attr("redirect_url"))
}
}), jQuery("#contactListingFrm").each(function() {
this.reset()
})
}
renderListAverageRating() {
jQuery(".rating-average").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".rating-average").each(function() {
jQuery(this).rating("update", this.title)
})
}
setCategoryStatus(status, categoryId) {
this.issetCategory = status, this.cat_id = categoryId
}
saveSelectedCategory() {
let catId;
catId = jQuery("#filterCategoryItems input[type='checkbox']:checked").attr("id"), this.issetCategory && (catId = this.cat_id), jQuery("#adminForm #categoryId").val(catId), jQuery("#adminForm input[name=limitstart]").val(0)
}
showList() {
jQuery("#jbd-results-list-container").show(), jQuery("#jbd-grid-view").hide(), jQuery("#grid-view-link").removeClass("active"), jQuery("#list-view-link").addClass("active")
}
showGrid() {
jQuery("#jbd-results-list-container").hide(), jQuery("#jbd-grid-view").show(), jQuery(window).resize(), jQuery("#grid-view-link").addClass("active"), jQuery("#list-view-link").removeClass("active")
}
removeFilterRule(type, id) {
let param = "",
filter = jQuery("#selectedParams").val();
if (filter.length > 0) {
let start = filter.indexOf(type),
end = filter.indexOf(";", start);
if (-1 != start) {
param = filter.slice(start, end), filter = filter.slice(0, start) + filter.slice(end + 1);
let values = (param = param.replace(type + "=", "")).split(",");
for (var i = 0; i < values.length; i++) values[i] == id && values.splice(i, 1);
values.length > 0 && (filter += param = type + "=" + values.join() + ";"), jQuery("#selectedParams").val(filter)
}
}
jQuery("#filter_active").val("1"), "city" == type && jQuery("#adminForm #city-search").val(""), "region" == type && jQuery("#adminForm #region-search").val(""), "country" == type && jQuery("#adminForm #country-search").val(""), "type" == type && jQuery("#adminForm #type-search").val(""), "city" == type && jQuery("#adminForm #city-search").val(""), "region" == type && jQuery("#adminForm #region-search").val(""), "country" == type && jQuery("#adminForm #country-search").val(""), "type" == type && jQuery("#adminForm #type-search").val(""), "province" == type && jQuery("#adminForm #province-search").val(""), jbdUtils.initializeGetItemsAjax()
}
setRadius(radius) {
jQuery("#adminForm > #radius").val(radius), jQuery("#adminForm input[name=limitstart]").val(0), jbdUtils.initializeGetItemsAjax()
}
filterByFavorites(requiresLogin) {
requiresLogin ? jbdUtils.showLoginNotice() : (jQuery("#adminForm #filter-by-fav").val("1"), jQuery("#adminForm").submit())
}
collapseSearchFilter() {
let headers = ["H1", "H2", "H3", "H4", "H5", "H6"];
jQuery(".accordionCollapse").click(function(e) {
let target = e.target,
name = target.nodeName.toUpperCase();
if (jQuery.inArray(name, headers) > -1) {
let subItem = jQuery(target).next(),
depth = jQuery(subItem).parents().length,
allAtDepth = jQuery(".accordion li, .accordion div").filter(function() {
if (jQuery(this).parents().length >= depth && this !== subItem.get(0)) return !0
});
jQuery(allAtDepth).slideUp("fast"), subItem.slideToggle("fast", function() {
jQuery(".accordionCollapse :visible:last").css("border-radius", "0 0 10px 10px")
}), jQuery(target).css({
"border-bottom-right-radius": "0",
"border-bottom-left-radius": "0"
})
}
})
}
deleteDirListing(id) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_COMPANIES_CONFIRM_DELETE")) && (jQuery("#cid").val(id), jQuery("#adminForm #task").val("managecompanies.delete"), jQuery("#adminForm").submit())
}
deleteMessage(id) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_COMPANY_MESSAGE_CONFIRM_DELETE")) && (jQuery("#id").val(id), jQuery("#adminForm #task").val("managemessages.delete"), jQuery("#adminForm").submit())
}
addService() {
jQuery("#id").val(0), jQuery("#adminForm #task").val("managecompanyservice.add"), jQuery("#adminForm").submit()
}
deleteService(serviceId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_COMPANY_SERVICE_CONFIRM_DELETE")) && (jQuery("#id").val(serviceId), jQuery("#adminForm #task").val("managecompanyservices.delete"), jQuery("#adminForm").submit())
}
duplicateService(serviceId) {
jQuery("#id").val(serviceId), jQuery("#adminForm #task").val("managecompanyservice.duplicate"), jQuery("#adminForm").submit()
}
selectServiceProviders() {
jQuery("#adminForm").submit()
}
addServiceProvider() {
jQuery("#adminForm #id").val(0), jQuery("#adminForm #task").val("managecompanyserviceprovider.add"), jQuery("#adminForm").submit()
}
deleteServiceProvider(serviceId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_COMPANY_SERVICE_PROVIDER_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(serviceId), jQuery("#adminForm #task").val("managecompanyserviceproviders.delete"), jQuery("#adminForm").submit())
}
selectReservation() {
jQuery("#adminForm").submit()
}
deleteReservation(bookingId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_SERVICE_RESERVATION_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(bookingId), jQuery("#adminForm #task").val("managecompanyservicereservations.delete"), jQuery("#adminForm").submit())
}
editProject(projectId) {
jQuery("#adminForm #id").val(projectId), jQuery("#adminForm #task").val("managecompanyproject.edit"), jQuery("#adminForm").submit()
}
addProject() {
jQuery("#adminForm #id").val(0), jQuery("#adminForm #task").val("managecompanyproject.add"), jQuery("#adminForm").submit()
}
deleteProject(projectId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_PROJECT_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(projectId), jQuery("#adminForm #task").val("managecompanyprojects.delete"), jQuery("#adminForm").submit())
}
showProjectDetail(project) {
let self = this,
baseUrl = jbdUtils.getAjaxUrl("getProjectDetailsAjax", "companies");
jQuery.ajax({
type: "GET",
url: baseUrl,
data: {
projectId: project
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#project-name").html(data.name), jQuery("#project-name-link").html(data.breadCrumbsName), jQuery("#project-description").html(data.description), jQuery("#project-tagline").html(data.tagline), jQuery("#project-gallery").html(data.projectGalleryImages), 0 === data.nrPhotos ? jQuery("#project-image-container").css("display", "none") : jQuery("#project-image-container").css("display", "");
const projectsStyle = jbdUtils.getProperty("projects_style");
if (3 != projectsStyle && (jQuery("#company-projects-container").hide(500), jQuery("#project-details").show(500), jQuery("#project-gallery-loader").hide()), 1 == projectsStyle) {
const galleryContainer = "#project-gallery .swiper-container",
galleryWrapper = "#project-gallery .swiper-wrapper";
setTimeout(() => {
self.initSwiperSlider(galleryContainer, {
slidesPerView: 1
}), self.initLightGallery(galleryWrapper)
}, 200)
} else if (2 == projectsStyle) jQuery("#project-gallery-loader").show(), setTimeout(() => {
self.initSwiperSlider("#project-gallery .swiper-container", {
slidesPerView: 3,
spaceBetween: 10,
navigation: !0,
pagination: {
clickable: !0
}
}), self.initLightGallery("#project-gallery .swiper-wrapper"), jQuery("#project-gallery-loader").hide()
}, 100);
else if (3 == projectsStyle) {
jQuery("#popup-gallery-full #project-gallery").html(data.projectGalleryImages), self.showGalleryPopup()
}
}
})
}
initSwiperSlider(selector, options = {}) {
const swiperContainer = jQuery(selector);
if (swiperContainer.length && "undefined" != typeof Swiper) {
const finalOptions = {
...{
loop: !1,
pagination: {
el: ".swiper-pagination",
clickable: !0
},
navigation: {
nextEl: ".swiper-button-next.custom-arrow",
prevEl: ".swiper-button-prev.custom-arrow"
},
observer: !0,
observeParents: !0
},
...options
};
finalOptions.navigation && finalOptions.navigation.nextEl && !swiperContainer.find(finalOptions.navigation.nextEl).length && swiperContainer.append('<div class="' + finalOptions.navigation.nextEl.substring(1).replace(/\./g, " ") + '"></div>'), finalOptions.navigation && finalOptions.navigation.prevEl && !swiperContainer.find(finalOptions.navigation.prevEl).length && swiperContainer.append('<div class="' + finalOptions.navigation.prevEl.substring(1).replace(/\./g, " ") + '"></div>'), finalOptions.pagination && finalOptions.pagination.el && !swiperContainer.find(finalOptions.pagination.el).length && swiperContainer.append('<div class="' + finalOptions.pagination.el.substring(1) + '"></div>'), swiperContainer[0].swiper && swiperContainer[0].swiper.destroy(!0, !0), new Swiper(swiperContainer[0], finalOptions)
} else swiperContainer.length
}
initLightGallery(selector, options = {}) {
const galleryContainer = jQuery(selector);
if (galleryContainer.length && "undefined" != typeof lightGallery) {
const existingInstance = window.lgData && window.lgData[galleryContainer.attr("lg-uid")];
if (existingInstance) try {
existingInstance.destroy()
} catch (e) {}
const defaultOptions = {
selector: "a",
plugins: "undefined" != typeof lgZoom && "undefined" != typeof lgThumbnail ? [lgZoom, lgThumbnail] : [],
speed: 500,
download: !0,
counter: !0,
thumbnail: !0
};
"undefined" != typeof lgShare && defaultOptions.plugins.push(lgShare), "undefined" != typeof lgRotate && defaultOptions.plugins.push(lgRotate);
const finalOptions = {
...defaultOptions,
...options
};
lightGallery(galleryContainer[0], finalOptions)
} else galleryContainer.length
}
showGalleryPopup() {
const popup = jQuery("#popup-gallery-full");
if (!popup.length) return;
popup.show(), jQuery("body").addClass("fixed");
this.initSwiperSlider("#popup-gallery-full #project-gallery .swiper-container", {
slidesPerView: 1
}), this.initLightGallery("#popup-gallery-full #project-gallery .swiper-wrapper")
}
returnToProjects() {
jQuery("#project-details").hide(500), jQuery("#company-projects-container").show(500), jQuery("#project-gallery-loader").show(), jQuery("#project-gallery").removeClass("swiper-initialized")
}
updateCompanyRate(companyId, rateScore) {
let postParameters = "",
ratingId = this.getRatingId(companyId);
void 0 === ratingId && (ratingId = 0), postParameters += "&companyId=" + companyId, postParameters += "&rating=" + rateScore;
let postData = "&task=companies.updateRating" + (postParameters += "&ratingId=" + ratingId);
jQuery.post(jbdUtils.baseUrl, postData, this.processRateResult)
}
processRateResult(response) {
let self = this;
jQuery(response).find("answer").each(function() {
jQuery("#rateNumber" + jQuery(this).attr("id")).html(jQuery(this).attr("nrRatings")), jQuery("#rateNumber" + jQuery(this).attr("id")).parent().show(), jQuery(".user-rating-avg").rating("update", jQuery(this).attr("averageRating")), self.saveCookieRating(jQuery(this).attr("id"), jQuery(this).attr("ratingId"))
})
}
getRatingId(companyId) {
let ratings = jbdUtils.getCookie("companyRatingIds");
if (void 0 === ratings) return;
let ratingsIds = ratings.split("#");
for (let i = 0; i < ratingsIds.length; i++) {
let temp = ratingsIds[i].split(",");
if (temp[0] == companyId) return temp[1]
}
}
saveCookieRating(companyId, reviewId) {
let ratings = jbdUtils.getCookie("companyRatingIds");
void 0 == ratings && (ratings = companyId + "," + reviewId + "#");
let ratingsIds = ratings.split("#"),
found = !1;
for (let i = 0; i < ratingsIds.length; i++) {
ratingsIds[i].split(",")[0] == companyId && (found = !0)
}
found || (ratings = ratings + companyId + "," + reviewId + "#"), jbdUtils.setCookie("companyRatingIds", ratings, 60)
}
saveCookieLastViewed(companyId) {
let viewedListings = jbdUtils.getCookie("jbdViewedListings");
if (viewedListings) {
let listingIds = viewedListings.split(","),
found = !1;
for (let i = 0; i < listingIds.length; i++)
if (listingIds[i] == companyId) {
found = !0;
break
} found || (viewedListings = viewedListings + "," + companyId)
} else viewedListings = companyId;
jbdUtils.setCookie("jbdViewedListings", viewedListings, 60)
}
showProductCategories(parentId) {
jQuery(".categories-level-1").hide(500), jQuery(".categories-level-" + parentId).show(500);
let parent = jQuery("#parent-category-" + parentId + " .post-title").text();
parent = parent + " - " + Joomla.JText._("LNG_SUBCATEGORIES"), jQuery("#sub-categories").html('<a href="javascript:void(0);" onclick="this.showProductCategories(' + parentId + ')">' + parent + "</a>»"), jQuery("#category-products").empty(), jQuery("#product-details").empty(), jQuery("#product-details-content").empty(), jQuery("#product-list-content").empty()
}
goBack() {
jQuery(".grid4").hide(500), jQuery(".categories-level-1").show(500), jQuery("#sub-categories").empty(), jQuery("#category-products").empty(), jQuery("#product-details").empty(), jQuery("#product-details-content").empty(), jQuery("#product-list-content").empty()
}
showProducts(catId, companyId) {
jQuery(".categories-level-1").hide(500), jQuery(".grid4").hide(500), jQuery("#product-list-content").html('<p id="remove-image-loading" class="text-center"><span class="icon-refresh icon-refresh-animate"></span> Loading...</p>').load(jbdUtils.getProperty("url") + "&view=companyproducts #grid-content", {
categoryId: catId,
companyId: companyId
}, function() {
let categoryName = jQuery("#product-category h1").text();
jQuery("#category-products").html('<a href="javascript:void(0);" onclick="jbdListings.goBackToProducts(' + catId + ", " + companyId + ')">' + categoryName + "</a>»")
}), jQuery("#company-products-title").text(Joomla.JText._("LNG_PRODUCTS")), jQuery("#product-list-content").attr("style", "display: block;"), jQuery("#category-products").empty(), jQuery("#product-details").empty(), jQuery("#product-details-content").empty()
}
showQuoteCompanyProduct(companyId) {
var path_part1 = jQuery("#all-categories-path").text(),
path_part2 = jQuery("#sub-categories").text(),
path_part3 = jQuery("#category-products").text(),
path_part4 = jQuery("#product-details").text(),
path = path_part1;
"" != path_part2 && (path += " -> " + path_part2, "" != path_part3 && (path += " -> " + path_part3, "" != path_part4 && (path += " -> " + path_part4))), jQuery("#company-quote-product #path").val(path), jQuery("#company-quote-product #companyId").val(companyId), jQuery("#company-quote-product").jbdModal()
}
requestQuoteCompanyProduct(baseurl) {
if (jQuery("#quoteCompanyProductFrm").validationEngine("validate")) {
var postData = "";
postData += "&firstName=" + jQuery("#company-quote-product #firstName-quote").val(), postData += "&lastName=" + jQuery("#company-quote-product #lastName-quote").val(), postData += "&email=" + jQuery("#company-quote-product #email-quote").val(), postData += "&description=" + jQuery("#company-quote-product #description-quote").val(), postData += "&companyId=" + jQuery("#company-quote-product #companyId").val();
var productId = jQuery("#company-quote-product #productId").val();
postData += "" != productId ? "&productId=" + productId : "&productId=0";
var productAlias = jQuery("#company-quote-product #productAlias").val();
postData += "" != productAlias ? "&productAlias=" + productAlias : "&productAlias=0";
var productSubject = jQuery("#company-quote-product #productSubject").val();
postData += "" != productSubject ? "&productSubject=" + productSubject : "&productSubject=0", postData += "&path=" + jQuery("#company-quote-product #path").val(), postData += "&recaptcha_response_field=" + jQuery("#company-quote-product #recaptcha_response_field").val(), postData += "&g-recaptcha-response=" + jQuery("#company-quote-product #g-recaptcha-response-1").val(), jQuery.post(baseurl, postData, this.processContactCompanyResult)
}
}
processQuoteCompanyResult(response) {
jQuery(response).find("answer").each(function() {
jQuery(".quote-submit-button").removeClass("loader");
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("LNG_MESSAGE") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div> <div class="jmodal-body"><p>' + jQuery(this).attr("errorMessage") + "</p></div> </div></div>";
jQuery(html).appendTo("body").jbdModal(), setTimeout(function() {
jQuery.jbdModal.close()
}, 4e3)
})
}
goBackToCategories(catId) {
jQuery("#product-list-content").empty(), jQuery("#subcategory-" + catId).closest(".grid4").show(500), jQuery("#company-products-title").text(Joomla.JText._("LNG_PRODUCT_CATEGORIES"))
}
showProductDetails(productId, catId, companyId, productAlias, productSubject) {
jQuery("#product-list-content").hide(500), jQuery("#product-details-content").html('<p id="remove-image-loading" class="text-center"><span class="icon-refresh icon-refresh-animate"></span> Loading...</p>').load(jbdUtils.getProperty("url") + "&view=companyproducts #product-details", {
productId: productId,
categoryId: catId
}, function() {
let productName = jQuery("#product-name h2").text();
jQuery("#product-details").html('<a style="color:black;">' + productName + "</a>"), jQuery("#company-quote-product #productId").val(productId), jQuery("#company-quote-product #productAlias").val(productAlias), jQuery("#company-quote-product #productSubject").val(productSubject), jQuery("#product-quote-request").html(), jQuery("#product-quote-request").html('<a href="javascript:void(0);" class="btn btn-primary" style="float: right" onclick="jbdListings.showQuoteCompanyProduct(' + companyId + ')">' + Joomla.JText._("LNG_QUOTE") + "</a>")
}), jQuery("#company-products-title").text(Joomla.JText._("LNG_PRODUCT_DETAILS")), jQuery("#product-details-content").show(500)
}
goBackToProducts(catId, companyId) {
jQuery("#product-details-content").hide(500), jQuery("#product-details-content").empty(), this.showProducts(catId, companyId), jQuery("#product-list-content").show(500), jQuery("#product-list-content").attr("style", "display: block;")
}
addNewMember(index, memberFolder, memberFolderPath) {
var newMemId = parseInt(index) + 1;
jQuery("#member-form-box1").clone().prop("id", "member-form-box" + newMemId).appendTo("#member_details"), jQuery("#member-form-box" + newMemId).find("h3").text(Joomla.JText._("LNG_MEMBER") + " " + newMemId), jQuery("#member-form-box" + newMemId + " input").each(function() {
jQuery(this).val("")
}), jQuery("#member-form-box" + newMemId + " textarea").each(function() {
jQuery(this).html("")
}), jQuery("#member-form-box" + newMemId + " textarea").val(""), jQuery("#member-form-box" + newMemId + " .input-imageLocation").prop("id", "member-imageLocation" + newMemId), jQuery("#member-form-box" + newMemId + " .input-imageLocationSize").prop("id", "member-imageUploader" + newMemId);
var options = jQuery("#member-form-box1 #member_type_1").clone();
jQuery("#member-form-box" + newMemId + " #member_type1_chosen").remove(), jQuery("#member-form-box" + newMemId + " #member_type_select").append(options), jQuery("#member-form-box" + newMemId + " #member_type1").removeAttr("onchange"), jQuery(".chosen-select").chosen({
disable_search_threshold: 5,
search_contains: !1
}), jQuery("#member-form-box" + newMemId + " .services").prop("id", "member-picture-preview" + newMemId), jQuery("#member-picture-preview" + newMemId).html(""), jQuery("#member-form-box" + newMemId + " #memberImageSection").find("a").prop("href", 'javascript:uploadInstance.removeImage("member-",' + newMemId + ")"), jQuery("#member-form-box" + newMemId + " .remove-member").attr("href", "javascript:jbdListings.removeMember('" + newMemId + "')").show(), jQuery("#add_member").attr("onclick", "jbdListings.addNewMember('" + newMemId + "','" + memberFolder + "','" + memberFolderPath + "' )"), uploadInstance.imageUploader(memberFolder, memberFolderPath, "member-", newMemId)
}
removeMember(index) {
index < 2 || (index = parseInt(index), jQuery("#member-form-box" + index).remove())
}
sendEditorInvitation() {
let invitationUrl = jbdUtils.getAjaxUrl("sendEditorInvitationAjax", "managecompany"),
email = jQuery("#editor-email").val(),
companyId = jQuery("#company_id").val();
jQuery("#invitation-btn").addClass("loader"), jQuery.ajax({
type: "GET",
url: invitationUrl,
data: {
companyId: companyId,
email: email
},
dataType: "json",
cache: !1,
success: function(response) {
jbdUtils.showMessage(response.data.message), jQuery("#invitation-btn").removeClass("loader")
}
})
}
openFormReply(messageId) {
jQuery("#message-" + messageId).addClass("show-reply-form"), jQuery("#message-" + messageId).removeClass("show-replies")
}
cancelReply(messageId) {
jQuery("#message-" + messageId).removeClass("show-reply-form"), jQuery("#message-" + messageId).removeClass("show-replies")
}
sendReply(messageId) {
let sendReplyUrl = jbdUtils.getAjaxUrl("sendMessageReply", "managemessages"),
replyContent = jQuery("#message-reply-" + messageId).val();
0 != replyContent.length && (jQuery("#message-send-" + messageId).addClass("loader"), jQuery.ajax({
type: "GET",
url: sendReplyUrl,
data: {
message_id: messageId,
content: replyContent
},
dataType: "json",
cache: !1,
success: function(response) {
jbdUtils.showMessage(response.message), jQuery("#message-send-" + messageId).removeClass("loader"), jQuery("#message-reply-" + messageId).val(""), jbdListings.addReplyMessage(messageId, response.data), jbdListings.showReplies(messageId)
}
}))
}
addReplyMessage(messageId, data) {
var content = '<div class="message-reply"><div class="reply-name">{name}</div><div class="jtable-body-row-data-allias">{date}</div><div class="reply-content">{content}</div></div>';
content = (content = (content = content.replace("{name}", data.user)).replace("{content}", data.content)).replace("{date}", data.date), jQuery("#message-" + messageId + " .message-replies").append(content)
}
showReplies(messageId) {
jQuery("#message-" + messageId).removeClass("show-reply-form"), jQuery("#message-" + messageId).addClass("show-replies"), jQuery("#message-" + messageId + " .message-replies").scrollTop(jQuery("#message-" + messageId + " .message-replies")[0].scrollHeight)
}
closeMessage(messageId) {
jQuery("#message-" + messageId).removeClass("show-reply-form"), jQuery("#message-" + messageId).removeClass("show-replies")
}
changeMessageStatus(messageId) {
let sendReplyUrl = jbdUtils.getAjaxUrl("changeMessageStatus", "managemessages");
jQuery.ajax({
type: "GET",
url: sendReplyUrl,
data: {
id: messageId
},
dataType: "json",
cache: !1,
success: function(response) {
jQuery("#message-" + messageId).toggleClass("unread-message")
}
})
}
readMessage(messageId) {
let sendReplyUrl = jbdUtils.getAjaxUrl("readMessageAjax", "managemessages");
jQuery.ajax({
type: "GET",
url: sendReplyUrl,
data: {
id: messageId
},
dataType: "json",
cache: !1,
success: function(response) {
jQuery("#message-" + messageId).removeClass("unread-message"), jQuery("#message-" + messageId + " .new-message").hide()
}
})
}
}
let jbdListings = new JBDListings;
class JBDOffers {
saveDates() {
let start_time = jQuery("#publish_start_time").val(),
end_time = jQuery("#publish_end_time").val();
"" == start_time && jQuery("#start_time").attr("value", ""), "" == end_time && jQuery("#end_time").attr("value", "")
}
updateAttributes(categoryId, offerId) {
let attributesUrl = jbdUtils.getAjaxUrl("getAttributesAjax", "offer", "managecompanyoffer");
jQuery.ajax({
type: "GET",
url: attributesUrl,
data: {
categoryId: categoryId,
offerId: offerId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#customFieldsContent").html(data), jQuery(".chosen-select").chosen({
width: "95%",
disable_search_threshold: 5,
search_contains: !0,
placeholder_text_single: Joomla.JText._("LNG_SELECT_OPTION"),
placeholder_text_multiple: Joomla.JText._("LNG_SELECT_OPTION")
})
}
})
}
updateSellingOptionsAjax(categoryId, offerId) {
let attributesUrl = jbdUtils.getAjaxUrl("getSellingOptionsAjax", "offer", "managecompanyoffer");
jQuery.ajax({
type: "GET",
url: attributesUrl,
data: {
categoryId: categoryId,
offerId: offerId
},
dataType: "json",
cache: !1,
success: function(data) {
null == data ? (jQuery("#defaultQuantity").show(), jQuery("#noAttributesExplain").show(), jQuery("#customOptionsContent").hide()) : (jQuery("#customOptionsContent").show(), jQuery("#noAttributesExplain").hide(), jQuery("#defaultQuantity").hide()), jQuery("#customOptionsContent").html(data)
}
})
}
updateQuantity(currentValue, offerId, $mainCatId) {
let url = jbdUtils.getAjaxUrl("updateQuantityAjax", "offer", "offer"),
attrVal = {},
newValue = jQuery(".jbtn-order-info").find(":input").first().val(),
oldVal = jQuery("#firstValue").val();
jQuery(".jbtn-order-info").find(":input").each(function() {
"select-one" == this.type && "quantity" != this.name ? attrVal[this.id] = jQuery(this).val() : "select-one" == this.type && "quantity" == this.name && jQuery("#quantity option").each(function() {
"0" != jQuery(this).val() && jQuery(this).hide()
})
}), jQuery.ajax({
type: "GET",
url: url,
data: {
selectedValues: attrVal,
offerId: offerId,
mainCatId: $mainCatId,
oldVal: oldVal,
newValue: newValue
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery(".jbtn-order-info").html(""), jQuery(".jbtn-order-info").html(data)
}
}), jbdOffers.checkAddToCartStatus()
}
showPriceBase(div, link) {
jQuery("#" + link).css("display", "none"), jQuery("#" + div).removeAttr("style")
}
lessPriceBase(div, link) {
jQuery("#" + div).css("display", "none"), jQuery("#" + link).removeAttr("style")
}
loadAddress(limit) {
let companyId = jQuery("select#companyId option:selected").val();
if ("" == companyId) return void alert(Joomla.JText._("LNG_MISSING_OFFER_COMPANY"));
let offerUrl = jbdUtils.getAjaxUrl("getListingAddressAjax", "offer", "managecompanyoffer");
jQuery.ajax({
type: "GET",
url: offerUrl,
data: {
companyId: companyId
},
dataType: "json",
cache: !1,
success: function(data) {
null == data ? alert(Joomla.JText._("LNG_MISSING_DELETED_COMPANY")) : (jQuery("#route").val(data.address), jQuery("#street_number").val(data.street_number), jQuery("#area_id").val(data.area), jQuery("#administrative_area_level_2").val(data.province), jQuery("#postal_code").val(data.postalCode), jQuery("#latitude").val(data.latitude), jQuery("#longitude").val(data.longitude), jQuery("#country").val(data.countryId), limit ? updateRegions(function() {
jQuery("#administrative_area_level_1").val(data.county), updateCities(function() {
jQuery("#locality").val(data.city)
})
}) : (jQuery("#administrative_area_level_1").val(data.county), jQuery("#locality").val(data.city)), "undefined" != typeof jbdAdminMapInstance && jbdAdminMapInstance.focusLocation({
latitude: data.latitude,
longitude: data.longitude
}))
}
})
}
checkAddToCartStatus() {
let enableStatus = !0;
jQuery(".jbtn-order-info").find(":input").each(function() {
"select-one" == this.type && ("" != jQuery(this).val() && "0" != jQuery(this).val() || (enableStatus = !1))
}), 1 == enableStatus ? (jQuery("#addToCartButton").removeAttr("style"), jQuery(".jbtn-order-btn").removeAttr("style")) : (jQuery("#addToCartButton").attr("style", "pointer-events:none"), jQuery(".jbtn-order-btn").attr("style", "background-color:lightgray"));
let count = 0;
jQuery(".jbtn-order-info").find(":input").each(function() {
"select-one" == this.type && 0 == count && (jQuery("#firstValue").val(jQuery(this).val()), count = 1)
});
var totalprice = jQuery("#offer-stock-price").attr("unitprice") * jQuery("#quantity").val();
jQuery("#total-price").html(totalprice)
}
resetCartAndAdd(offerId) {
let resetCartUrl = jbdUtils.getAjaxUrl("emptyCartAjax", "cart");
jQuery.ajax({
type: "GET",
url: resetCartUrl,
dataType: "json",
cache: !1,
success: function(data) {
jbdOffers.addToCart(offerId)
}
})
}
addToCart(offerId, qnt = 0) {
let values = {},
quantity = jQuery("#quantity").val();
qnt && (quantity = qnt, values.quantity = qnt), jQuery(".jbtn-order-info").find(":input").each(function() {
"select-one" == this.type && (values[this.id] = jQuery(this).val())
});
let urlAddToCart = jbdUtils.getAjaxUrl("addToCartAjax", "cart");
if (0 == quantity) return void alert(Joomla.JText._("LNG_PLEASE_SELECT_QUANTITY"));
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + Joomla.JText._("LNG_ADDING_PRODUCT_TO_SHOPPING_CART") + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div></div></div>';
jQuery(html).appendTo("body").jbdModal(), jQuery.ajax({
type: "GET",
url: urlAddToCart,
data: {
offerId: offerId,
selectedData: values
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery.jbdModal.close();
let count = 0;
jbdOffers.checkAddToCartStatus(), !0 === data ? (jQuery("#cart-dialog").jbdModal(), jQuery(".jbtn-order-info").find(":input").each(function() {
"select-one" == this.type && 0 == count && ("quantity" == this.name ? jQuery(this).val("0") : (jQuery(this).val(""), jQuery(this).trigger("change")), count = 1)
})) : jQuery("#cart-error").jbdModal()
}
})
}
renderOfferRatingCriteria(imagePath) {
jQuery(".rating-criteria").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
starCaptions: {
.5: Joomla.JText._("LNG_BAD"),
1: Joomla.JText._("LNG_BAD"),
1.5: Joomla.JText._("LNG_POOR"),
2: Joomla.JText._("LNG_POOR"),
2.5: Joomla.JText._("LNG_REGULAR"),
3: Joomla.JText._("LNG_REGULAR"),
3.5: Joomla.JText._("LNG_GOOD"),
4: Joomla.JText._("LNG_GOOD"),
4.5: Joomla.JText._("LNG_GORGEOUS"),
5: Joomla.JText._("LNG_GORGEOUS")
},
size: "sm",
showCaption: !0,
starCaptionClasses: {
.5: "badge badge-danger",
1: "badge badge-danger",
1.5: "badge badge-warning",
2: "badge badge-warning",
2.5: "badge badge-info",
3: "badge badge-info",
3.5: "badge badge-primary",
4: "badge badge-primary",
4.5: "badge badge-success",
5: "badge badge-success"
},
clearCaption: Joomla.JText._("LNG_NOT_RATED_YET"),
clearCaptionClass: "badge badge-default",
hoverEnabled: !0,
hoverChangeCaption: !0,
hoverChangeStars: !0,
rtl: !1
}), jQuery(".rating-criteria").on("rating:change", function(event, value, caption) {
jQuery(this).parent().parent().parent().children("input").val(value)
}), jQuery(".rating-criteria").on("rating:clear", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
}), jQuery(".rating-criteria").on("rating:reset", function(event) {
jQuery(this).parent().parent().parent().children("input").val(0)
})
}
renderOfferReviews() {
jQuery(".rating-review").rating({
min: 0,
max: 5,
step: .5,
stars: 5,
size: "sm",
showCaption: !1,
rtl: !1,
displayOnly: !0
}), jQuery(".rating-review").each(function() {
jQuery(this).rating("update", this.title)
})
}
showList() {
jQuery("#list-view-container").show(), jQuery("#jbd-grid-view").hide(), jQuery("#grid-view-link").removeClass("active"), jQuery("#list-view-link").addClass("active")
}
showGrid() {
jQuery("#list-view-container").hide(), jQuery("#jbd-grid-view").show(), jQuery("#grid-view-link").addClass("active"), jQuery("#list-view-link").removeClass("active")
}
editOffer(offerId) {
jQuery("#id").val(offerId), jQuery("#adminForm #task").val("managecompanyoffer.edit"), jQuery("#adminForm").submit()
}
addOffer() {
jQuery("#id").val(0), jQuery("#adminForm #task").val("managecompanyoffer.add"), jQuery("#adminForm").submit()
}
deleteOffer(offerId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_OFFERS_CONFIRM_DELETE")) && (jQuery("#id").val(offerId), jQuery("#adminForm #task").val("managecompanyoffers.delete"), jQuery("#adminForm").submit())
}
deleteOrder(orderId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_OFFER_ORDER_CONFIRM_DELETE")) && (jQuery("#id").val(orderId), jQuery("#adminForm #task").val("managecompanyofferorders.delete"), jQuery("#adminForm").submit())
}
deleteCoupon(couponId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_COUPONS_CONFIRM_DELETE", !0)) && (jQuery("#id").val(couponId), jQuery("#adminForm #task").val("managecompanyoffercoupons.delete"), jQuery("#adminForm").submit())
}
deleteOfferMessage(id) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_OFFER_MESSAGE_CONFIRM_DELETE")) && (jQuery("#id").val(id), jQuery("#adminForm #task").val("manageoffermessages.delete"), jQuery("#adminForm").submit())
}
displayOfferSelling(show) {
0 == show && jQuery("#offerSellingOptions").hide(), 1 == show && jQuery("#offerSellingOptions").show()
}
displayStockPrice(showHide = 0) {
0 == showHide && jQuery(".stock-price").hide(), 1 == showHide && jQuery(".stock-price").show()
}
removeFromCart(offerId) {
let url = jbdUtils.getAjaxUrl("removeOfferFromCartAjax", "cart");
jQuery.ajax({
type: "GET",
url: url,
data: {
offerId: offerId
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == JBDConstants.AJAX_RESPONSE_SUCCESS ? location.reload() : alert(data.message)
}
})
}
showReportOfferAbuse() {
jQuery("#reportOfferAbuseEmail").jbdModal()
}
}
let jbdOffers = new JBDOffers;
class JBDEvents {
showSaveDialog(task) {
jQuery("#adminForm #task").val(task), jQuery("#edit-event-dialog").jbdModal()
}
repeatNone() {
jQuery("#repeat-options").hide()
}
repeatDaily() {
jQuery("#repeat-options").show(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").hide()
}
repeatWeekly() {
jQuery("").hide(), jQuery("#repeat-options").show(), jQuery("#week-days-group").show(), jQuery("#monthly-repeat").hide()
}
repeatMonthly() {
jQuery("#repeat-options").show(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").show()
}
repeatYearly() {
jQuery("#repeat-options").show(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").hide()
}
endsOnOccurances() {
jQuery("#rend_date").prop("disabled", !0), jQuery("#occurrences").prop("disabled", !1)
}
endsOnDate() {
jQuery("#rend_date").prop("disabled", !1), jQuery("#occurrences").prop("disabled", !0)
}
editCurrentEvent() {
jQuery("#edit_mode").val(1), Joomla.submitform(jQuery("#task").val(), document.getElementById("item-form")), jQuery.jbdModal.close()
}
editAllFollowignEvents() {
jQuery("#edit_mode").val(2), Joomla.submitform(jQuery("#task").val(), document.getElementById("item-form")), jQuery.jbdModal.close()
}
editAllSeriesEvents() {
jQuery("#edit_mode").val(3), Joomla.submitform(jQuery("#task").val(), document.getElementById("item-form")), jQuery.jbdModal.close()
}
saveDates() {
let start_time = jQuery("#start_time").val(),
end_time = jQuery("#end_time").val(),
doors_open_time = jQuery("#doors_open_time").val(),
booking_open_time = jQuery("#booking_open_time").val(),
booking_close_time = jQuery("#booking_close_time").val();
"" == start_time && jQuery("#start_time").attr("value", ""), "" == end_time && jQuery("#end_time").attr("value", ""), "" == doors_open_time && jQuery("#doors_open_time").attr("value", ""), "" == booking_open_time && jQuery("#booking_open_time").attr("value", ""), "" == booking_close_time && jQuery("#booking_close_time").attr("value", "")
}
updateAttributes(categoryId, eventId) {
let attributesUrl = jbdUtils.getAjaxUrl("getAttributesAjax", "event", "managecompanyevent");
jQuery.ajax({
type: "GET",
url: attributesUrl,
data: {
categoryId: categoryId,
eventId: eventId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#customFieldsContent").html(data), jQuery(".chosen-select").chosen({
width: "95%",
disable_search_threshold: 5,
search_contains: !0,
placeholder_text_single: Joomla.JText._("LNG_SELECT_OPTION"),
placeholder_text_multiple: Joomla.JText._("LNG_SELECT_OPTION")
})
}
})
}
loadAddress(limit) {
let companyId = jQuery("select#company_id option:selected").val();
if ("" == companyId) return void alert(Joomla.JText._("LNG_MISSING_EVENT_COMPANY"));
let eventUrl = jbdUtils.getAjaxUrl("getListingAddressAjax", "event", "managecompanyevent");
jQuery.ajax({
type: "GET",
url: eventUrl,
data: {
companyId: companyId
},
dataType: "json",
cache: !1,
success: function(data) {
null == data ? alert(Joomla.JText._("LNG_MISSING_DELETED_COMPANY")) : (jQuery("#route").val(data.address), jQuery("#street_number").val(data.street_number), jQuery("#area_id").val(data.area), jQuery("#administrative_area_level_2").val(data.province), jQuery("#postal_code").val(data.postalCode), jQuery("#latitude").val(data.latitude), jQuery("#longitude").val(data.longitude), jQuery("#country").val(data.countryId), limit ? updateRegions(function() {
jQuery("#administrative_area_level_1").val(data.county), updateCities(function() {
jQuery("#locality").val(data.city)
})
}) : (jQuery("#administrative_area_level_1").val(data.county), jQuery("#locality").val(data.city)), "undefined" != typeof jbdAdminMapInstance && jbdAdminMapInstance.focusLocation({
latitude: data.latitude,
longitude: data.longitude
}))
}
})
}
showCompanyListDialog() {
jQuery("#company-list").jbdModal()
}
joinEvent(userId) {
0 == userId ? jbdUtils.showLoginNotice() : jbdEvents.showCompanyListDialog()
}
associateCompanies(event_id) {
let companyIds, urlAssociateCompanies = jbdUtils.getAjaxUrl("associateCompaniesAjax", "event"),
eventId = event_id,
selectedValues = jQuery("#userAssociatedCompanies").val();
companyIds = Array.isArray(selectedValues) ? selectedValues.join() : -1, jQuery("#company-list button").each(function() {
jQuery(this).attr("disabled", "disabled")
}), jQuery("#company-list .jmodal-btn").addClass("loader");
let successMessage = jQuery("#associated-companies-message").html();
jQuery.ajax({
type: "GET",
url: urlAssociateCompanies,
data: {
companyIds: companyIds,
eventId: eventId
},
dataType: "json",
cache: !1,
success: function() {
Array.isArray(selectedValues) ? (jQuery(successMessage).appendTo("body").jbdModal(), jQuery("#company-list .jmodal-btn").removeClass("loader")) : jQuery.jbdModal.close(), location.reload()
}
})
}
showEventList(view) {
jQuery("#list-view-container").show(), jQuery("#jbd-grid-view").hide(), jQuery(".result-counter").show(), jQuery(".pagination").show(), jQuery(".search-toggles .sortby").show(), jQuery(".search-toggles .orderBy").show(), jQuery("#grid-view-link").removeClass("active"), jQuery("#list-view-link").addClass("active"), jQuery("#search-filters-react").show()
}
showGrid(hidePagination = !1) {
if (jQuery("#list-view-container").hide(), jQuery("#jbd-grid-view").show(), hidePagination && (jQuery(".result-counter").hide(), jQuery(".pagination").hide()), jQuery(".search-toggles .sortby").hide(), jQuery(".search-toggles .orderBy").hide(), "undefined" != typeof calendarOptions && document.getElementById("events-calendar")) {
var calendarEl = document.getElementById("events-calendar");
void 0 === calendarOptions.initialView && (calendarOptions.initialView = "dayGridMonth"), new FullCalendar.Calendar(calendarEl, calendarOptions).render(), jQuery("#search-filters-react").hide()
}
jQuery("#grid-view-link").addClass("active"), jQuery("#list-view-link").removeClass("active")
}
setSearchDates(startDate, endDate) {
jQuery("#adminForm #startDate").val(startDate), jQuery("#adminForm #endDate").val(endDate), jQuery("#adminForm input[name=limitstart]").val(0), jbdUtils.initializeGetItemsAjax()
}
editEvent(eventId) {
jQuery("#adminForm #id").val(eventId), jQuery("#adminForm #task").val("managecompanyevent.edit"), jQuery("#adminForm").submit()
}
addDirEvent() {
jQuery("#adminForm #id").val(0), jQuery("#adminForm #task").val("managecompanyevent.add"), jQuery("#adminForm").submit()
}
deleteDirEvent(eventId) {
jQuery("#adminForm #id").val(eventId), confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_EVENTS_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(eventId), jQuery("#adminForm #task").val("managecompanyevents.delete"), jQuery("#adminForm").submit())
}
showDeleteDialog() {
jQuery("#delete-event-dialog").jbdModal()
}
deleteEvent() {
jQuery("#delete_mode").val(1), Joomla.submitform("managecompanyevents.delete"), jQuery.jbdModal.close()
}
deleteAllFollowignEvents() {
jQuery("#delete_mode").val(2), Joomla.submitform("managecompanyevents.delete"), jQuery.jbdModal.close()
}
deleteAllSeriesEvents() {
jQuery("#delete_mode").val(3), Joomla.submitform("managecompanyevents.delete"), jQuery.jbdModal.close()
}
selectAppointment() {
jQuery("#adminForm").submit()
}
deleteAppointment(appointmentId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_EVENT_APPOINTMENT_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(appointmentId), jQuery("#adminForm #task").val("managecompanyeventappointments.delete"), jQuery("#adminForm").submit())
}
confirmAppointment(appointmentId) {
jQuery("#adminForm #id").val(appointmentId), jQuery("#adminForm #task").val("managecompanyeventappointments.confirm"), jQuery("#adminForm").submit()
}
denyAppointment(appointmentId) {
jQuery("#adminForm #id").val(appointmentId), jQuery("#adminForm #task").val("managecompanyeventappointments.deny"), jQuery("#adminForm").submit()
}
deleteEventReservation(bookingId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_EVENT_RESERVATION_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(bookingId), jQuery("#adminForm #task").val("managecompanyeventreservations.delete"), jQuery("#adminForm").submit())
}
selectTicket() {
jQuery("#adminForm").submit()
}
addEventTicket() {
jQuery("#adminForm #id").val(0), jQuery("#adminForm #task").val("managecompanyeventticket.add"), jQuery("#adminForm").submit()
}
deleteTicket(ticketId) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_EVENT_TICKET_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(ticketId), jQuery("#adminForm #task").val("managecompanyeventtickets.delete"), jQuery("#adminForm").submit())
}
duplicateTicket(ticketId) {
jQuery("#adminForm #id").val(ticketId), jQuery("#adminForm #task").val("managecompanyeventticket.duplicate"), jQuery("#adminForm").submit()
}
deleteEventMessage(id) {
confirm(Joomla.JText._("COM_JBUSINESS_DIRECTORY_EVENT_MESSAGE_CONFIRM_DELETE")) && (jQuery("#adminForm #id").val(id), jQuery("#adminForm #task").val("manageeventmessages.delete"), jQuery("#adminForm").submit())
}
}
let jbdEvents = new JBDEvents;
class JBDTrips {
constructor() {
this.todayDate = new Date
}
showSaveDialog(task) {
jQuery("#adminForm #task").val(task), jQuery("#edit-trip-dialog").jbdModal()
}
repeatNone() {
jQuery("#repeat-options").hide(), jQuery("#datepicker-calendar").hide()
}
repeatDaily() {
jQuery("#repeat-options").show(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").hide(), jQuery("#datepicker-calendar").hide()
}
repeatWeekly() {
jQuery("").hide(), jQuery("#repeat-options").show(), jQuery("#week-days-group").show(), jQuery("#monthly-repeat").hide(), jQuery("#datepicker-calendar").hide()
}
repeatMonthly() {
jQuery("#repeat-options").show(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").show(), jQuery("#datepicker-calendar").hide()
}
repeatYearly() {
jQuery("#repeat-options").show(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").hide(), jQuery("#datepicker-calendar").hide()
}
repeatByDate() {
jQuery("#repeat-options").hide(), jQuery("#week-days-group").hide(), jQuery("#monthly-repeat").hide(), jQuery("#datepicker-calendar").show()
}
endsOnOccurances() {
jQuery("#rend_date").prop("disabled", !0), jQuery("#occurrences").prop("disabled", !1)
}
endsOnDate() {
jQuery("#rend_date").prop("disabled", !1), jQuery("#occurrences").prop("disabled", !0)
}
handleUncompleteBookings(tripId) {
let urlBookings = jbdUtils.getAjaxUrl("handleUncompleteBookingsAjax", "trip"),
self = this;
jQuery.ajax({
type: "GET",
url: urlBookings,
data: {
tripId: tripId
},
dataType: "json",
cache: !1,
success: function() {
self.createTripCalendar(tripId)
}
})
}
createTripCalendar(tripId) {
let urlGetDays = jbdUtils.getAjaxUrl("getTripAvailableDatesAjax", "trip");
jQuery.ajax({
type: "GET",
url: urlGetDays,
data: {
tripId: tripId
},
dataType: "json",
cache: !1,
success: function(data) {
var firstDate = jQuery.datepicker.formatDate("mm/dd/yy", new Date(data[0]));
jQuery("#datepicker").datepicker("destroy"), jQuery("#datepicker").datepicker({
beforeShowDay: function(date) {
let string = jQuery.datepicker.formatDate("mm-dd-yy", date);
return [-1 != data.indexOf(string)]
},
onSelect: function(date) {
jQuery("#tripDate").val(date)
},
defaultDate: firstDate
}), jQuery("#tripDate").val(firstDate), data.length > 0 && jQuery("#trip-action-container").html('<a href="javascript:document.tripBookingForm.submit()" class="btn btn-success">Book Now</a>')
}
})
}
}
let jbdTrips = new JBDTrips;
class JBDVideos {
loadMore() {
let moreVideosUrl = jbdUtils.getAjaxUrl("getMoreVideosAjax", "video"),
videoId = jQuery("#video-id").val(),
categoryId = jQuery("#main-catetegory").val(),
start = jQuery("#start").val();
start = parseInt(start), jQuery.ajax({
type: "GET",
url: moreVideosUrl,
data: {
videoId: videoId,
categoryId: categoryId,
start: start
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#related-videos").append(data.data.videos), jQuery("#start").val(start + data.data.videosCount), data.data.show_more || jQuery("#load-more-btn").hide()
}
})
}
}
let jbdVideos = new JBDVideos;
class JBDReviews {
saveReview(formId) {
var form_id = "#" + formId;
jQuery(form_id).validationEngine({
validateNonVisibleFields: !0,
updatePromptsPosition: !0,
ignore: ""
}), jQuery(form_id).validationEngine("validate") && document.getElementById(formId).submit()
}
cancelSubmitReview() {
jQuery("#add-review").slideUp(500)
}
addNewReview(requiresLogin, companyView) {
companyView = void 0 === companyView || companyView, requiresLogin ? jbdUtils.showLoginNotice() : (1 == companyView && jbdListings.showDetails("company-reviews"), window.location.hash = "#reviews", jQuery("#add-review").slideDown(500), jQuery("html, body").animate({
scrollTop: jQuery("#add-review").offset().top + jQuery("#add-review").height() / 2
}, 1e3))
}
addNewReviewOnTabs(requiresLogin) {
requiresLogin ? jbdUtils.showLoginNotice() : (jbdListings.showDirTab("#tabs-3"), jQuery("#add-review").slideDown(500), jbdListings.showTabContent("company-reviews"), window.location.hash = "#add-review")
}
reportReviewAbuse(requiresLogin, reviewId) {
requiresLogin ? jbdUtils.showLoginNotice() : (document.getElementById("reportAbuse").elements.reviewId.value = reviewId, jQuery("#report-abuse").jbdModal())
}
respondToReview(requiresLogin, reviewId) {
requiresLogin ? jbdUtils.showLoginNotice() : (document.reviewResponseFrm.elements.reviewId.value = reviewId, jQuery("#new-review-response").jbdModal())
}
saveReviewAbuse() {
this.validateReportAbuseForm() && document.reportAbuse.submit()
}
saveReviewResponse() {
this.validateReviewResponseForm() && document.reviewResponseFrm.submit()
}
closeDialog() {
jQuery.jbdModal.close()
}
increaseReviewLikeCount(reviewId) {
var postParameters = "",
postData = "&task=companies.increaseReviewLikeCountAjax&view=companies" + (postParameters += "&reviewId=" + reviewId);
jQuery.post(jbdUtils.getProperty("baseUrl"), postData, this.processIncreaseLikeResult)
}
increaseOfferReviewLikeCount(reviewId) {
var postParameters = "",
postData = "&task=offer.increaseReviewLikeCountAjax&view=offers" + (postParameters += "&reviewId=" + reviewId);
jQuery.post(jbdUtils.getProperty("baseUrl"), postData, this.processIncreaseLikeResult)
}
processIncreaseLikeResult(response) {
jQuery(response).find("answer").each(function() {
1 == jQuery(this).attr("result") && (jQuery("#like" + jQuery(this).attr("reviewId")).text(parseInt(jQuery("#like" + jQuery(this).attr("reviewId")).text()) + 1), jbdReviews.saveCookieLikeId(jQuery(this).attr("reviewId")), jQuery("#like" + jQuery(this).attr("reviewId")).parent().parent().children().attr("onclick", ""), jQuery("#like" + jQuery(this).attr("reviewId")).parent().parent().addClass("reduceOpacity"))
})
}
saveCookieLikeId(reviewId) {
var ids = jbdUtils.getCookie("likeIds");
void 0 === ids && (ids = ""), ids += "," + reviewId, jbdUtils.setCookie("likeIds", ids, 60)
}
increaseReviewLoveCount(reviewId) {
var postParameters = "",
postData = "&task=companies.increaseReviewLoveCountAjax&view=companies" + (postParameters += "&reviewId=" + reviewId);
jQuery.post(jbdUtils.getProperty("baseUrl"), postData, this.processIncreaseLoveResult)
}
processIncreaseLoveResult(response) {
jQuery(response).find("answer").each(function() {
1 == jQuery(this).attr("result") && (jQuery("#love" + jQuery(this).attr("reviewId")).text(parseInt(jQuery("#love" + jQuery(this).attr("reviewId")).text()) + 1), jbdReviews.saveCookieLoveId(jQuery(this).attr("reviewId")), jQuery("#love" + jQuery(this).attr("reviewId")).parent().parent().children().attr("onclick", ""), jQuery("#love" + jQuery(this).attr("reviewId")).parent().parent().addClass("reduceOpacity"))
})
}
saveCookieLoveId(reviewId) {
var ids = jbdUtils.getCookie("loveIds");
void 0 === ids && (ids = ""), ids += "," + reviewId, jbdUtils.setCookie("loveIds", ids, 60)
}
increaseReviewDislikeCount(reviewId) {
var postParameters = "",
postData = "&task=companies.increaseReviewDislikeCountAjax&view=companies" + (postParameters += "&reviewId=" + reviewId);
jQuery.post(jbdUtils.getProperty("baseUrl"), postData, this.processIncreaseDislikeResult)
}
increaseOfferReviewDislikeCount(reviewId) {
var postParameters = "",
postData = "&task=offer.increaseReviewDislikeCountAjax&view=offers" + (postParameters += "&reviewId=" + reviewId);
jQuery.post(jbdUtils.getProperty("baseUrl"), postData, this.processIncreaseDislikeResult)
}
processIncreaseDislikeResult(response) {
jQuery(response).find("answer").each(function() {
1 == jQuery(this).attr("result") && (jQuery("#dislike" + jQuery(this).attr("reviewId")).text(parseInt(jQuery("#dislike" + jQuery(this).attr("reviewId")).text()) + 1), jbdReviews.saveCookieDislikeId(jQuery(this).attr("reviewId")), jQuery("#dislike" + jQuery(this).attr("reviewId")).parent().parent().children().attr("onclick", ""), jQuery("#dislike" + jQuery(this).attr("reviewId")).parent().parent().addClass("reduceOpacity"))
})
}
saveCookieDislikeId(reviewId) {
var ids = jbdUtils.getCookie("dislikeIds");
void 0 === ids && (ids = ""), ids += "," + reviewId, jbdUtils.setCookie("dislikeIds", ids, 60)
}
checkLikeStatus() {
var ids = jbdUtils.getCookie("likeIds");
void 0 === ids && (ids = ""), ids = ids.split(",");
for (var i = 0; i < ids.length; i++) jQuery("#like" + ids[i]).parent().parent().children("a:first-child").attr("onclick", ""), jQuery("#like" + ids[i]).parent().parent().addClass("reduceOpacity")
}
checkLoveStatus() {
var ids = jbdUtils.getCookie("loveIds");
void 0 === ids && (ids = ""), ids = ids.split(",");
for (var i = 0; i < ids.length; i++) jQuery("#love" + ids[i]).parent().parent().children("a:first-child").attr("onclick", ""), jQuery("#love" + ids[i]).parent().parent().addClass("reduceOpacity")
}
checkDislikeStatus() {
var ids = jbdUtils.getCookie("dislikeIds");
void 0 === ids && (ids = ""), ids = ids.split(",");
for (var i = 0; i < ids.length; i++) jQuery("#dislike" + ids[i]).parent().parent().children("a:first-child").attr("onclick", ""), jQuery("#dislike" + ids[i]).parent().parent().addClass("reduceOpacity")
}
validateReportAbuseForm() {
var form = document.reportAbuse,
isError = !1;
return jQuery(".error_msg").each(function() {
jQuery(this).hide()
}), validateField(form.elements.email, "email", !1, null) || (jQuery("#reportAbuse #frmEmail_error_msg").show(), isError || jQuery("#reportAbuse #email").focus(), isError = !0), validateField(form.elements.description, "string", !1, null) || (jQuery("#reportAbuse #frmDescription_error_msg").show(), isError || jQuery("#reportAbuse #frmDescription_error_msg").focus(), isError = !0), !isError
}
validateReviewResponseForm() {
var form = document.reviewResponseFrm,
isError = !1;
return jQuery(".error_msg").each(function() {
jQuery(this).hide()
}), validateField(form.elements.firstName, "string", !1, null) || (jQuery("#reviewResponseFrm #frmFirstName_error_msg").show(), isError || jQuery("#firstName").focus(), isError = !0), validateField(form.elements.lastName, "string", !1, null) || (jQuery(" #reviewResponseFrm #frmLastName_error_msg").show(), isError || jQuery("#lastName").focus(), isError = !0), validateField(form.elements.email, "email", !1, null) || (jQuery("#reviewResponseFrm #frmEmail_error_msg").show(), isError || jQuery("#email").focus(), isError = !0), validateField(form.elements.response, "string", !1, null) || (jQuery("#reviewResponseFrm #frmDescription_error_msg").show(), isError || jQuery("#reviewResponseFrm #frmDescription_error_msg").focus(), isError = !0), !isError
}
deleteReview(controller, id) {
confirm(Joomla.JText._("LNG_ARE_YOU_SURE_YOU_WANT_TO_DELETE")) && (jQuery("#id").val(id), jQuery("#task").val(controller + ".delete"), jQuery("#adminForm").submit())
}
loadMoreReviews() {
let moreReviewsUrl = jbdUtils.getAjaxUrl("getMoreReviewsAjax", "companies"),
start = jQuery("#start").val(),
companyId = jQuery("#company").val();
start = parseInt(start), jQuery.ajax({
type: "GET",
url: moreReviewsUrl,
data: {
start: start,
companyId: companyId
},
dataType: "json",
cache: !1,
success: function(data) {
jQuery("#reviews").append(data.data.reviews), jQuery("#start").val(start + data.data.reviewsCount), jbdListings.magnifyImages("gallery"), data.data.show_more || jQuery("#load-more-btn").hide(), jbdReviews.checkLikeStatus(), jbdReviews.checkDislikeStatus(), jbdReviews.checkLoveStatus(), jbdListings.renderReviewRating(), jQuery(".review-questions").each(function() {
jbdListings.showReviewQuestions(jQuery(this).attr("id"))
})
}
})
}
}
let jbdReviews = new JBDReviews;
window.addEventListener("load", function() {
jbdReviews.checkLikeStatus(), jbdReviews.checkDislikeStatus(), jbdReviews.checkLoveStatus()
});
class JBDTabs {
constructor() {
this.currentTab = 1, this.currentTabIndex = 0, this.maxTabs = 6, this.tabMapInitialized = 0
}
setMaxTabs(maxTabs) {
this.maxTabs = maxTabs
}
setPresentTabs(presentTabs) {
this.presentTabs = presentTabs, this.setMaxTabs(presentTabs.length)
}
openTab(tab) {
if (jbdUtils.getProperty("isMultilingual")) {
let tabgroup = jQuery(".tab-" + jbdUtils.getProperty("defaultLang"));
0 == tabgroup.length && (tabgroup = jQuery("button[aria-controls='tab-" + jbdUtils.getProperty("defaultLang") + "']")), tabgroup.each(function() {
jQuery(this).click()
})
}
jQuery("#item-form").validationEngine("detach"), jbdUtils.getProperty("validateRichTextEditors") && jbdUtils.validateRichTextEditors(), jbdUtils.validateMultiSelects(), jQuery("#item-form").validationEngine("validate") && (jQuery("#tab" + tab).hasClass("active") ? (jQuery("#tab" + tab).removeClass("active"), jQuery("#edit-tab" + tab).hide()) : this.showEditTab(tab))
}
showEditTab(tab) {
if (jQuery(".edit-tab").each(function() {
jQuery(this).hide()
}), jQuery(".process-step").each(function() {
jQuery(this).hide(), jQuery(this).removeClass("active")
}), jQuery(".process-tab").each(function() {
jQuery(this).removeClass("active"), jQuery(this).removeClass("completed"), jQuery(this).removeClass("not-completed")
}), jQuery("#next-btn").length || jQuery("#save-btn").length) {
for (var i = 1; i < this.currentTabIndex + 1; i++) jQuery("#tab" + i).addClass("completed");
for (i = this.currentTabIndex + 2; i <= this.maxTabs; i++) jQuery("#tab" + i).addClass("not-completed")
}
if (0 == this.currentTabIndex ? jQuery("#prev-btn").hide() : jQuery("#prev-btn").show(), this.currentTabIndex + 1 == this.maxTabs ? (jQuery("#next-btn").hide(), jQuery("#save-btn").show(), jQuery("#privacy_policy").show()) : (jQuery("#next-btn").show(), jQuery("#save-btn").hide(), jQuery("#privacy_policy").hide()), jQuery("#edit-tab" + tab).show(), jQuery("#step" + tab).show(), 1 != tab) {
let scrollTopOffset = jQuery("#tab" + tab).offset().top - 150;
jQuery("html,body").animate({
scrollTop: scrollTopOffset
}, "slow")
}
jQuery("#step" + tab).addClass("active"), jQuery("#tab" + tab).addClass("active"), jQuery("#active-step-number").html(tab), 3 == tab && 0 == this.tabMapInitialized && (initializeMap(), this.tabMapInitialized = 1)
}
nextTab() {
if (jbdUtils.getProperty("isMultilingual")) {
let tabgroup = jQuery(".tab-" + jbdUtils.getProperty("defaultLang"));
0 == tabgroup.length && (tabgroup = jQuery("button[aria-controls='tab-" + jbdUtils.getProperty("defaultLang") + "']")), tabgroup.each(function() {
jQuery(this).click()
})
}
jbdUtils.getProperty("validateRichTextEditors") && jbdUtils.validateRichTextEditors(), jQuery("#item-form").validationEngine("validate") && (this.currentTabIndex < this.presentTabs.length - 1 && (this.currentTabIndex++, this.currentTab = this.presentTabs[this.currentTabIndex]), this.showEditTab(this.currentTab))
}
previousTab() {
this.currentTabIndex > 0 && (this.currentTabIndex--, this.currentTab = this.presentTabs[this.currentTabIndex]), this.showEditTab(this.currentTab)
}
}
let jbdTabs = new JBDTabs;
class JBDUpload {
constructor(params) {
this.setIsBack = !1, this.folderIDs = [], this.allowedImageFileExtension = /^.+\.(png|bmp|gif|png|jpeg|webp|PNG|JPG|GIF|JPEG|WEBP)$/i, this.allowedImageFileExtMessage = "Only the following file extensions allowed: jpg, bmp ,gif ,png, jpeg, webp!", void 0 !== params ? (void 0 !== params.maxAttachments ? this.maxAttachments = params.maxAttachments : this.maxAttachments = jbdUtils.getProperty("maxAttachments"), void 0 !== params.maxPictures && (this.maxPictures = params.maxPictures), void 0 !== params.maxVideos && (this.maxVideos = params.maxVideos), void 0 !== params.maxSounds && (this.maxSounds = params.maxSounds), void 0 !== params.removePath && (this.removePath = params.removePath), void 0 !== params.setIsBack && (this.setIsBack = params.setIsBack), void 0 !== params.picturesFolder ? this.picturesFolder = params.picturesFolder : this.picturesFolder = jbdUtils.getProperty("imageBaseUrl")) : (this.picturesFolder = jbdUtils.getProperty("imageBaseUrl"), this.maxAttachments = jbdUtils.getProperty("maxAttachments"))
}
setIsBackEnd() {
picturesUploaded = jQuery('input[name*="picture_path[]"]').length, this.setIsBack = !0, this.checkNumberOfPictures()
}
setMaxPictures(maxAllowedNumber) {
picturesUploaded = jQuery('input[name*="picture_path[]"]').length, this.maxPictures = maxAllowedNumber, this.checkNumberOfPictures()
}
checkNumberOfPictures() {
let nrPictures = jQuery("#pictures-list #sortable li").length;
this.maxPictures <= nrPictures ? jQuery("#file-upload").hide() : jQuery("#file-upload").show()
}
getItemName() {
let name = jQuery("#alias").val();
return null != name && "" != name && void 0 != name || null != (name = jQuery("#name").val()) && "" != name && void 0 != name || null != (name = jQuery('[id^="name_"]').val()) && void 0 != name || (name = ""), name = name.replace(/ /g, "_")
}
imageUploader(folderID, folderIDPath, type, picId) {
let typeIndex = void 0 === type ? "default" : type;
this.folderIDs[typeIndex] = {
folderID: folderID,
folderIDPath: folderIDPath
};
let self = this;
void 0 !== type && null !== type || (type = ""), void 0 !== picId && null !== picId || (picId = ""), jQuery("#" + type + "imageUploader" + picId).change(function() {
jQuery("#remove-image-loading").remove(), jQuery("#" + type + "picture-preview" + picId).append('<p id="remove-image-loading" class="text-center"><span class="icon-refresh icon-refresh-animate"></span> Loading...</p>'), jQuery("#item-form").validationEngine("detach");
var path = jQuery(this).val();
if (!path) return !1;
if (-1 == path.search(self.allowedImageFileExtension)) return jQuery("#remove-image-loading").remove(), alert(self.allowedImageFileExtMessage), !1;
let imageName = "image_name=" + self.getItemName();
jQuery(this).upload(folderIDPath, imageName, function(responce) {
if ("" == responce) jQuery("#remove-image-loading").remove(), alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")), jQuery(this).val("");
else {
var xml = responce;
if (jbdUtils.getProperty("enable_resolution_check"))
if (void 0 !== jQuery(xml).find("warning").attr("value")) {
jQuery("#remove-image-loading").remove();
var wHeight = jQuery(xml).find("warning").attr("height"),
wWidth = jQuery(xml).find("warning").attr("width");
return alert(Joomla.JText._("LNG_IMAGE_SIZE_WARNING") + " (Width:" + wWidth + ", Height:" + wHeight + ")"), !1
} jQuery(xml).find("picture").each(function() {
0 == jQuery(this).attr("error") ? (self.setUpImage(folderID + jQuery(this).attr("path"), jQuery(this).attr("name"), type, picId), jQuery("#remove-image-loading").remove(), jbdUtils.getProperty("enable_crop") && !jbdUtils.getProperty("disable_cropping_types").includes(jQuery(this).attr("picture-type")) && self.showCropper(self.picturesFolder + folderID + jQuery(this).attr("path"), type, picId)) : 1 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_FILE_ALLREADY_ADDED")) : 2 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")) : 3 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_GD_LIBRARY")) : 4 == jQuery(this).attr("error") && alert(Joomla.JText._("LNG_ERROR_RESIZING_FILE"))
})
}
}), jQuery("#item-form").validationEngine("attach")
})
}
setUpImage(path, name, type, picId) {
jQuery("#" + type + "imageLocation" + picId).val(path);
let img_new = document.createElement("img");
img_new.setAttribute("src", this.picturesFolder + path), img_new.setAttribute("id", "itemImg"), img_new.setAttribute("class", "item-image"), jQuery("#" + type + "picture-preview" + picId).empty(), jQuery("#" + type + "picture-preview" + picId).append(img_new), "/no_image.jpg" == path && window.location.reload(!0)
}
markerUploader(folderID, folderIDPath) {
let self = this;
jQuery("#markerfile").change(function() {
if (jQuery("#remove-image-loading").remove(), jQuery("#marker-preview").append('<p id="remove-image-loading" class="text-center"><span class="icon-refresh icon-refresh-animate"></span></p>'), jQuery("#item-form").validationEngine("detach"), -1 == jQuery(this).val().search(self.allowedImageFileExtension)) return jQuery("#remove-image-loading").remove(), alert(self.allowedImageFileExtMessage), !1;
jQuery(this).upload(folderIDPath, function(responce) {
"" == responce ? (jQuery("#remove-image-loading").remove(), alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")), jQuery(this).val("")) : jQuery(responce).find("picture").each(function() {
0 == jQuery(this).attr("error") ? (self.setUpMarker(folderID + jQuery(this).attr("path"), jQuery(this).attr("name")), jQuery("#remove-image-loading").remove()) : 1 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_FILE_ALLREADY_ADDED")) : 2 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")) : 3 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_GD_LIBRARY")) : 4 == jQuery(this).attr("error") && alert(Joomla.JText._("LNG_ERROR_RESIZING_FILE"))
})
}), jQuery("#item-form").validationEngine("attach")
})
}
setUpMarker(path, name) {
jQuery("#markerLocation").val(path);
var img_new = document.createElement("img");
img_new.setAttribute("src", this.picturesFolder + path), img_new.setAttribute("id", "markerImg"), img_new.setAttribute("class", "marker-image"), jQuery("#marker-preview").empty(), jQuery("#marker-preview").append(img_new)
}
multiImageUploader(folder, folderPath) {
let self = this;
jQuery("#multiImageUploader").change(function() {
if (jQuery("#remove-image-loading").remove(), jQuery("#table_pictures").append('<p id="remove-image-loading" class="text-center"><span class="icon-refresh icon-refresh-animate"></span>Loading...</p>'), jQuery("#item-form").validationEngine("detach"), -1 == jQuery(this).val().search(self.allowedImageFileExtension)) return jQuery("#remove-image-loading").remove(), alert(self.allowedImageFileExtMessage), !1;
jQuery(this).upload(folderPath, function(responce) {
if ("" == responce) jQuery("#remove-image-loading").remove(), alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")), jQuery(this).val("");
else {
var xml = responce;
if (jbdUtils.getProperty("enable_resolution_check"))
if (void 0 !== jQuery(xml).find("warning").attr("value")) {
jQuery("#remove-image-loading").remove();
var wHeight = jQuery(xml).find("warning").attr("height"),
wWidth = jQuery(xml).find("warning").attr("width");
return alert(Joomla.JText._("LNG_IMAGE_SIZE_WARNING") + " (Width:" + wWidth + ", Height:" + wHeight + ")"), !1
} jQuery(xml).find("picture").each(function() {
0 == jQuery(this).attr("error") ? (self.addPicture(folder + jQuery(this).attr("path"), jQuery(this).attr("name")), jQuery("#remove-image-loading").remove()) : 1 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_FILE_ALLREADY_ADDED")) : 2 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")) : 3 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_GD_LIBRARY")) : 4 == jQuery(this).attr("error") && alert(Joomla.JText._("LNG_ERROR_RESIZING_FILE"))
}), jQuery(this).val("")
}
}, "html"), jQuery("#item-form").validationEngine("attach")
})
}
removePicture(pos) {
let lis = document.querySelectorAll("#sortable li");
null == lis && alert("Undefined List, contact administrator !"), pos >= lis.length && (pos = lis.length - 1), this.checkNumberOfPictures()
}
removeAllPicture(id) {
void 0 !== id && null !== id || (id = "sortable");
let lis = document.querySelectorAll("#" + id + " li");
null == lis && alert("Undefined List, contact administrator !");
let maxImages = lis.length;
for (let i = 0; i < maxImages; i++) {
let pos = i;
pos >= lis.length && (pos = lis.length - 1), lis[pos].parentNode.removeChild(lis[pos])
}
this.checkNumberOfPictures()
}
btn_removefile() {
let self = this;
jQuery("#btn_removefile").click(function() {
jQuery("#item-form").validationEngine("detach");
let pos = jQuery("#crt_pos").val(),
path = jQuery("#crt_path").val();
jQuery(this).upload(this.removePath + path + "&_pos=" + pos, function(responce) {
"" == responce ? (alert(Joomla.JText._("LNG_ERROR_REMOVING_FILE")), jQuery(this).val("")) : (jQuery(responce).find("picture").each(function() {
0 == jQuery(this).attr("error") ? self.removePicture(jQuery(this).attr("pos")) : 2 == jQuery(this).attr("error") ? self.removePicture(pos) : 3 == jQuery(this).attr("error") && alert(Joomla.JText._("LNG_FILE_DOESNT_EXIST"))
}), jQuery("#crt_pos").val(""), jQuery("#crt_path").val(""))
}, "html"), jQuery("#item-form").validationEngine("detach")
})
}
multiFileUploader(folderID, folderIDPath) {
let self = this;
jQuery("#multiFileUploader").change(function() {
jQuery("#remove-file-loading").remove(), jQuery("#attachment-list").find(".jbd-item-list").append('<p id="remove-file-loading" class="text-center"><span class="icon-refresh icon-refresh-animate"></span> Loading...</p>'), jQuery("#item-form").validationEngine("detach");
jQuery(this).val();
jQuery(this).upload(folderIDPath, function(responce) {
if ("" == responce) jQuery("#remove-file-loading").remove(), alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")), jQuery(this).val("");
else {
var xml = responce;
jQuery("#remove-file-loading").remove(), jQuery(xml).find("attachment").each(function() {
jQuery(this).attr("name").length > jbdUtils.getProperty("maxFilenameLength") ? alert(Joomla.JText._("LNG_FILENAME_TOO_LONG")) : 0 == jQuery(this).attr("error") ? jQuery("#attachment-list #sortable-attachment li").length < self.maxAttachments ? (self.addAttachment(folderID + jQuery(this).attr("path"), jQuery(this).attr("name")), jQuery("#multiFileUploader").val("")) : alert(Joomla.JText._("LNG_MAX_ATTACHMENTS_ALLOWED") + self.maxAttachments) : jQuery(this).attr("info") ? alert(jQuery(this).attr("info")) : alert(Joomla.JText._("LNG_ERROR_ADDING_FILE"))
})
}
}, "html"), jQuery("#item-form").validationEngine("attach")
})
}
addAttachment(path, name) {
var attachTemplate = jQuery("#attachment-item-template").html(),
newId = Math.random().toString(36).substring(7);
attachTemplate = (attachTemplate = (attachTemplate = (attachTemplate = (attachTemplate = attachTemplate.replaceAll("{attachment_id}", newId)).replaceAll("{attachment_name}", name)).replaceAll("{attachment_path}", jbdUtils.basename(path))).replaceAll("{attachment_full_path}", path)).replaceAll("{attachment_status}", 1), jQuery("#attachment-list").find(".jbd-item-list").append(attachTemplate), jQuery("#attachment-list").jbdList({
statusCallback: this.changeAttachmentStatus,
deleteCallback: this.deleteAttachment,
statusSelector: "attachment_status_",
deleteMsg: Joomla.JText._("LNG_CONFIRM_DELETE_ATTACHMENT")
})
}
addPicture(path, name) {
var pictureTemplate = jQuery("#picture-item-template").html(),
newId = Math.random().toString(36).substring(7);
pictureTemplate = (pictureTemplate = (pictureTemplate = (pictureTemplate = (pictureTemplate = (pictureTemplate = pictureTemplate.replaceAll("{picture_id}", newId)).replaceAll("{picture_title}", "")).replaceAll("{picture_info}", "")).replaceAll("{picture_path}", jbdUtils.basename(path))).replaceAll("{picture_full_path}", path)).replaceAll("{picture_enable}", 1);
var link = '<img src="' + (link = this.picturesFolder + path) + '">';
pictureTemplate = pictureTemplate.replaceAll("{picture_link}", link), jQuery("#pictures-list").find(".jbd-item-list").append(pictureTemplate), jQuery("#pictures-list").jbdList({
statusCallback: this.changePictureStatus,
deleteCallback: this.deletePicture,
statusSelector: "picture_enable_",
deleteMsg: Joomla.JText._("LNG_CONFIRM_DELETE_PICTURE")
}), this.checkNumberOfPictures()
}
changeAttachmentStatus(id, oldVal) {
var newVal = 0 == oldVal ? 1 : 0;
jQuery("#attachment_status_" + id).val(newVal)
}
changePictureStatus(id, oldVal) {
var newVal = 0 == oldVal ? 1 : 0;
jQuery("#picture_enable_" + id).val(newVal)
}
changeExtraPictureStatus(id, oldVal) {
var newVal = 0 == oldVal ? 1 : 0;
jQuery("#image_enable_" + id).val(newVal)
}
deleteAttachment(id) {
jQuery("#crt_path_a").val(jQuery("#attachment_path_" + id)), jQuery("#btn_removefile_at").click()
}
deletePicture(id) {
jQuery("#crt_path").val(jQuery("#picture_path_" + id)), jQuery("#btn_removefile").click()
}
deleteExtraPicture(id) {
jQuery("#crt_path").val(jQuery("#image_path_" + id)), jQuery("#btn_removefile").click()
}
btn_removefile_at(removePath_at) {
void 0 === removePath_at && (removePath_at = this.removePath), jQuery("#btn_removefile_at").click(function() {
jQuery("#item-form").validationEngine("detach"), pos = jQuery("#crt_pos_a").val(), path = jQuery("#crt_path_a").val(), jQuery(this).upload(removePath_at + path + "&_pos=" + pos, function(responce) {
"" == responce ? (alert(Joomla.JText._("LNG_ERROR_REMOVING_FILE")), jQuery(this).val("")) : (jQuery(responce).find("picture").each(function() {
0 == jQuery(this).attr("error") || (2 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_REMOVING_FILE")) : 3 == jQuery(this).attr("error") && alert(Joomla.JText._("LNG_FILE_DOESNT_EXIST")))
}), jQuery("#crt_pos_a").val(""), jQuery("#crt_path_a").val(""))
}, "html"), jQuery("#item-form").validationEngine("detach")
})
}
removeImage(type, picId) {
void 0 !== type && null !== type || (type = ""), void 0 !== picId && null !== picId || (picId = ""), jQuery("#" + type + "imageLocation" + picId).val(""), jQuery("#" + type + "picture-preview" + picId).html("<i class='la la-image'></i>"), jQuery("#" + type + "imageUploader" + picId).val("")
}
removeRow(id) {
jQuery("#" + id).remove(), self.checkNumberOfVideos(), self.checkNumberOfSounds()
}
showCropper(dataUri, type, picId) {
let self = this;
void 0 !== this.cropper && this.cropper.destroy();
var width, height;
void 0 !== picId && null !== picId || (picId = ""), jQuery("#cropper-modal").jbdModal(), jQuery("#cropper-image").attr("src", ""), jQuery("#cropper-image").attr("src", dataUri), jQuery("#save-cropped").unbind("click"), jQuery("#save-cropped").on("click", function(event) {
self.saveCropped(type, picId)
}), 0 == type.length ? (this.removeImage(), width = jbdUtils.getProperty("logo_width"), height = jbdUtils.getProperty("logo_height")) : "cover-" === type ? (width = jbdUtils.getProperty("cover_width"), height = jbdUtils.getProperty("cover_height"), this.removeImage("cover-")) : "service-" === type ? (width = jbdUtils.getProperty("gallery_width"), height = jbdUtils.getProperty("gallery_height"), this.removeImage("service-", picId)) : "speaker-" === type ? (width = jbdUtils.getProperty("speaker_img_width"), height = jbdUtils.getProperty("speaker_img_height"), this.removeImage("speaker-")) : (width = jbdUtils.getProperty("gallery_width"), height = jbdUtils.getProperty("gallery_height")), width = parseInt(width), height = parseInt(height);
var image = document.getElementById("cropper-image");
this.cropper = new Cropper(image, {
aspectRatio: width / height,
cropBoxResizable: !1,
dragMode: "move",
scalable: !0,
minCropBoxWidth: width,
minCropBoxHeight: height,
crop: function(e) {}
})
}
saveCropped(type, picId) {
let self = this;
this.cropper.getCroppedCanvas({
fillColor: "#fff"
}).toBlob(function(blob) {
var formData = new FormData;
blob.name = "cropped." + blob.type.substr(blob.type.indexOf("/") + 1, blob.type.length), formData.append("croppedimage", blob);
let folderID = "",
submitPath = "";
0 == type.length ? (folderID = self.folderIDs.default.folderID, submitPath = self.folderIDs.default.folderIDPath) : (folderID = self.folderIDs[type].folderID, submitPath = self.folderIDs[type].folderIDPath), submitPath += "&crop=1", submitPath += "&image_name=" + self.getItemName(), jQuery.ajax(submitPath, {
type: "POST",
data: formData,
processData: !1,
contentType: !1,
success: function(xml) {
jQuery(xml).find("picture").each(function() {
0 == jQuery(this).attr("error") ? (self.setUpImage(folderID + jQuery(this).attr("path"), jQuery(this).attr("name"), type, picId), jQuery("#remove-image-loading").remove()) : 1 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_FILE_ALLREADY_ADDED")) : 2 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_ADDING_FILE")) : 3 == jQuery(this).attr("error") ? alert(Joomla.JText._("LNG_ERROR_GD_LIBRARY")) : 4 == jQuery(this).attr("error") && alert(Joomla.JText._("LNG_ERROR_RESIZING_FILE"))
}), jQuery.jbdModal.close(), self.cropper.destroy()
},
error: function() {}
})
}, "image/jpeg", .8)
}
imageUploaderDropzone(dropZoneDiv, url, clickableButtons, MultiLanguageMessage, ImagePath, paralelUploadNumber, pictureAdder) {
let self = this;
Dropzone.autoDiscover = !1, jQuery(dropZoneDiv).dropzone({
url: url,
addRemoveLinks: !0,
acceptedFiles: "image/gif,.jpg,.jpeg,.png,.svg,.webp",
maxFilesize: 32,
enqueueForUpload: !0,
dictRemoveFile: "Remove Preview",
autoProcessQueue: !0,
parallelUploads: paralelUploadNumber,
dictDefaultMessage: MultiLanguageMessage,
clickable: clickableButtons,
init: function() {
var myDropzone = this;
jQuery(dropZoneDiv + "-submitAll").click(function(e) {
e.preventDefault(), e.stopPropagation(), myDropzone.processQueue(), jQuery("button").each(function() {
jQuery(this).remove("#add")
})
})
},
success: function(file, response) {
var xml = response;
file.name.replace(/[^0-9a-zA-Z.]/g, "_"), file.previewElement.classList.add("dz-success");
var name = jQuery(xml).find("picture").attr("name");
switch (pictureAdder) {
case "addPicture":
file.height >= jbdUtils.getProperty("gallery_height") && file.width >= jbdUtils.getProperty("gallery_width") || !jbdUtils.getProperty("enable_resolution_check") ? self.addPicture(ImagePath + name, name) : alert("[" + name + "] " + Joomla.JText._("LNG_IMAGE_SIZE_WARNING") + " (Width:" + jbdUtils.getProperty("gallery_width") + ", Height:" + jbdUtils.getProperty("gallery_height") + ")");
break;
case "addExtraPicture":
file.height >= jbdUtils.getProperty("gallery_height") && file.width >= jbdUtils.getProperty("gallery_width") || !jbdUtils.getProperty("enable_resolution_check") ? self.addExtraPicture(ImagePath + name, name) : alert("[" + name + "] " + Joomla.JText._("LNG_IMAGE_SIZE_WARNING") + " (Width:" + jbdUtils.getProperty("gallery_width") + ", Height:" + jbdUtils.getProperty("gallery_height") + ")");
break;
case "setUpLogo":
setUpLogo(name);
break;
case "setUpLogoExtraOptions":
setUpLogoExtraOptions(ImagePath + name, name);
break;
default:
alert("Error! no image creation function defined for this view")
}
},
error: function(file, response) {
file.previewElement.classList.add("dz-error")
}
})
}
addExtraPicture(path, name) {
var pictureTemplate = jQuery("#extra-picture-item-template").html(),
newId = Math.random().toString(36).substring(7);
pictureTemplate = (pictureTemplate = (pictureTemplate = (pictureTemplate = (pictureTemplate = (pictureTemplate = pictureTemplate.replaceAll("{image_id}", newId)).replaceAll("{image_title}", "")).replaceAll("{image_info}", "")).replaceAll("{image_path}", jbdUtils.basename(path))).replaceAll("{image_full_path}", path)).replaceAll("{image_enable}", 1);
var link = '<img src="' + (link = this.picturesFolder + path) + '">';
pictureTemplate = pictureTemplate.replaceAll("{image_link}", link), jQuery("#extra-pictures-list").find(".jbd-item-list").append(pictureTemplate), jQuery("#extra-pictures-list").jbdList({
statusCallback: this.changePictureStatus,
deleteCallback: this.deletePicture,
statusSelector: "image_enable_",
deleteMsg: Joomla.JText._("LNG_CONFIRM_DELETE_PICTURE")
}), this.checkNumberOfPictures()
}
photosNameFormater(imageName) {
return imageName.length > 14 ? imageName.substring(imageName.length - 14) : imageName
}
addVideo(type) {
null !== type && void 0 !== type || (type = "");
var count = jQuery("#video-container").children().length + 1;
var outerDiv = document.createElement("div");
outerDiv.setAttribute("class", "video-item"), outerDiv.setAttribute("id", "detailBox" + count);
var newLabel = document.createElement("label");
newLabel.setAttribute("for", 0), newLabel.innerHTML = Joomla.JText._("LNG_VIDEO");
var cointainerDiv = document.createElement("div");
cointainerDiv.setAttribute("class", "input-group");
var newInput = document.createElement("input");
newInput.setAttribute("name", "videos[]"), newInput.setAttribute("type", "text"), newInput.setAttribute("maxlength", "245"), newInput.setAttribute("id", 0), newInput.setAttribute("class", "form-control"), newInput.setAttribute("placeholder", "Video URL");
var appendDiv = document.createElement("div");
appendDiv.setAttribute("class", "input-group-append");
var newButton = document.createElement("button");
newButton.setAttribute("class", "btn btn-secondary"), newButton.setAttribute("onclick", 'uploadInstance.removeRow("detailBox' + count + '");checkNumberOfVideos();');
var newIcon = document.createElement("i");
if (newIcon.setAttribute("class", "la la-lg la-remove"), newButton.appendChild(newIcon), appendDiv.appendChild(newButton), "withTitle" == type) {
var titleInput = document.createElement("input");
titleInput.setAttribute("name", "title[]"), titleInput.setAttribute("type", "text"), titleInput.setAttribute("id", 0), titleInput.setAttribute("maxlength", "245"), titleInput.setAttribute("class", "form-control mr-2"), titleInput.setAttribute("placeholder", "Video Title"), cointainerDiv.appendChild(titleInput)
}
cointainerDiv.appendChild(newInput), cointainerDiv.appendChild(appendDiv), outerDiv.appendChild(newLabel), outerDiv.appendChild(cointainerDiv), jQuery("#video-container").append(outerDiv), this.checkNumberOfVideos()
}
checkNumberOfVideos() {
jQuery('input[name*="videos[]"]').length < this.maxVideos ? jQuery("#add-video").show() : jQuery("#add-video").hide()
}
addSound() {
var count = jQuery("#sound-container").children().length + 1;
var outerDiv = document.createElement("div");
outerDiv.setAttribute("id", "soundDetailBox" + count), outerDiv.setAttribute("class", "sound-details-box");
var newLabel = document.createElement("label");
newLabel.setAttribute("for", 0), newLabel.innerHTML = Joomla.JText._("LNG_SOUND");
var inputGroupDiv = document.createElement("div");
inputGroupDiv.setAttribute("class", "input-group");
var newInput = document.createElement("input");
newInput.setAttribute("name", "sounds[]"), newInput.setAttribute("id", 0), newInput.setAttribute("class", "form-control");
var inputGroupAppendDiv = document.createElement("div");
inputGroupAppendDiv.setAttribute("class", "input-group-append");
var newButton = document.createElement("button");
newButton.setAttribute("class", "input-group-text btn-secondary"), newButton.setAttribute("onclick", 'uploadInstance.removeRow("soundDetailBox' + count + '");');
var newIcon = document.createElement("i");
newIcon.setAttribute("class", "la la-lg la-remove"), newButton.appendChild(newIcon), inputGroupAppendDiv.appendChild(newButton), inputGroupDiv.appendChild(newInput), inputGroupDiv.appendChild(inputGroupAppendDiv), outerDiv.appendChild(newLabel), outerDiv.appendChild(inputGroupDiv), jQuery("#sound-container").append(outerDiv), this.checkNumberOfSounds()
}
checkNumberOfSounds() {
jQuery('input[name*="sounds[]"]').length < this.maxSounds ? jQuery("#add-sound").show() : jQuery("#add-sound").hide()
}
removeRow(id) {
jQuery("#" + id).remove(), this.checkNumberOfVideos(), this.checkNumberOfSounds()
}
}
class JBDUploadHelper {
static getUploadInstance(params) {
return void 0 !== params && void 0 !== params.maxPictures && (JBDUploadHelper.maxPictures = params.maxPictures), new JBDUpload(params)
}
static getMaxAllowedNumber() {
return JBDUploadHelper.maxPictures
}
}
class JBDQuoteRequest {
constructor(categoryId = null) {
this.response_success = 1, this.response_error = 0, this.validate_default = 1, this.validate_location = 2, this.validate_input = 3, this.validate_user = 4, this.validate_skip = 0, this.category_id = categoryId
}
init(categoryId) {
this.category_id = categoryId, this.modal = jQuery("#quote-request-modal"), this.modal.jbdModal({
clickClose: !1
}), this.modal.find(".modal-container").html(""), this.modal.find("#thankyou-step").hide(), this.modal.find("#loading-quote-requests").find(".msg").text(Joomla.JText._("LNG_RETRIEVING_QUESTIONS")), this.modal.find("#loading-quote-requests").show(), this.retrieveQuestions()
}
retrieveQuestions() {
let questionsUrl = jbdUtils.getAjaxUrl("getQuestions", "requestquote"),
self = this,
categoryId = this.category_id;
jQuery("#quotes-form").validationEngine("attach"), jQuery.ajax({
type: "GET",
url: questionsUrl,
data: {
categoryId: categoryId,
cache: !1
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_error ? (alert(data.message), self.closeModal()) : data.status == self.response_success && (self.modal.find("#loading-quote-requests").hide(), self.modal.find(".modal-container").html(data.data), self.initAutocomplete())
}
})
}
openStep(step, validate) {
if (void 0 === validate && (validate = this.validate_default), 1 == jQuery("#login").val()) {
let stopStep = !1,
message = "",
email = jQuery("#quote-request-modal #email").val(),
password = jQuery("$quote-request-modal #password").val(),
result = jbdUtils.getAjaxUrl("checkUserLoginCredentials", "businessuser");
if (jQuery.ajax({
type: "GET",
url: result,
data: {
email: email,
password: password
},
dataType: "json",
cache: !1,
async: !1,
success: function(data) {
0 == data.status ? (stopStep = !0, message = data.message) : 2 == data.status && (stopStep = !0, message = data.message)
}
}), 1 == stopStep) return void alert(message)
}
if (validate != this.validate_skip && !this.validateStep(validate)) return void alert(Joomla.JText._("LNG_PLEASE_FILL_THE_DETAILS"));
let oldStep = jQuery(".step-container.step-active");
if (oldStep.hide(), oldStep.removeClass("step-active"), validate == this.validate_location) {
let loadingDiv = jQuery("#loading-quote-requests");
loadingDiv.find(".msg").text(Joomla.JText._("LNG_SEARCHING_LISTINGS")), loadingDiv.show(), this.searchListings(function() {
let newStep = jQuery("#step-" + step);
newStep.addClass("step-active"), newStep.fadeIn()
})
} else {
let newStep = jQuery("#step-" + step);
newStep.addClass("step-active"), newStep.fadeIn()
}
}
validateStep(validate) {
if (validate == this.validate_default) {
let isChecked = !1;
return jQuery(".step-active .options-container .option-row").each(function() {
if (!1 !== jQuery(this).find(".question-container").find("input").prop("checked")) return isChecked = !0, !0
}), isChecked
}
if (validate == this.validate_location) return 0 != jQuery(".step-active").find(".zipcode-quote").val().length;
if (validate == this.validate_user) return jQuery("#quotes-form").validationEngine("validate");
if (validate == this.validate_input) {
let isFilled = !1;
return jQuery(".step-active .options-container .option-row").each(function() {
if ("" !== jQuery(this).find("input").val().trim()) return isFilled = !0, !0
}), isFilled
}
}
initAutocomplete() {
let element = document.getElementsByClassName("zipcode-quote")[0];
jQuery(document).ready(function() {
JBDMapHelper.initAutocomplete(element, function(place) {
jQuery("#quote-latitude").val(place.latitude), jQuery("#quote-longitude").val(place.longitude)
}, !1, !1)
})
}
submitRequest() {
let data = jQuery("#quotes-form").serializeArray(),
saveQuote = jbdUtils.getAjaxUrl("saveQuoteRequests", "requestquote"),
self = this,
loadingMessage = this.modal.find("#loading-quote-requests").find(".msg"),
loadingDiv = this.modal.find("#loading-quote-requests");
this.modal.find(".modal-container").html(""), loadingMessage.text(Joomla.JText._("LNG_SENDING_REQUESTS")), loadingDiv.show(), jQuery.ajax({
type: "POST",
url: saveQuote,
data: {
data: data
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_error ? (self.closeModal(), alert(data.message)) : data.status == self.response_success && (1 == data.data.contactListings && self.contactListings(data.data.quoteId, data.data.companyIds), loadingDiv.hide(), self.modal.find("#thankyou-step").fadeIn())
}
})
}
searchListings(callback) {
let searchListing = jbdUtils.getAjaxUrl("searchListingsAjax", "requestquote"),
self = this,
lat = jQuery("#quote-latitude").val(),
long = jQuery("#quote-longitude").val(),
locationString = jQuery("#quote-zipcode").val();
jQuery.ajax({
type: "GET",
url: searchListing,
data: {
categoryId: self.category_id,
latitude: lat,
longitude: long,
location: locationString
},
dataType: "json",
cache: !1,
success: function(data) {
if (data.status == self.response_error) {
self.closeModal();
let html = '<div class="jbd-container" style="display:none"><div class="jmodal-sm"><div class="jmodal-header"><p class="jmodal-header-title">' + data.data.title + '</p><a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a> </div> <div class="jmodal-body"><p>' + data.message + "</p></div> </div></div>";
jQuery(html).appendTo("body").jbdModal()
} else if (data.status == self.response_success) {
let loadingDiv = self.modal.find("#loading-quote-requests");
jQuery("#quote-latitude").val(data.data.latitude), jQuery("#quote-longitude").val(data.data.longitude), loadingDiv.hide(), callback()
}
}
})
}
contactListings(quoteId, companyIds) {
let contactListings = jbdUtils.getAjaxUrl("contactListingsAjax", "requestquote");
jQuery.ajax({
type: "GET",
url: contactListings,
data: {
quoteId: quoteId,
companyIds: companyIds
},
dataType: "json",
cache: !1,
success: function(data) {}
})
}
quoteApply(quoteId, companyId, price = null, message = null) {
this.contactListings(quoteId, companyId);
let applyUrl = jbdUtils.getAjaxUrl("replyToQuoteAjax", "managelistingrequestquotes");
jQuery.ajax({
type: "GET",
url: applyUrl,
data: {
quote_id: quoteId,
company_id: companyId,
price: price,
message: message
},
dataType: "json",
cache: !1,
success: function(data) {
null != price && jQuery.jbdModal.close(), jQuery("#apply-" + quoteId).html('<i class="la la-check-circle la-2x jbd-green mr-2"></i>')
}
})
}
closeModal() {
this.modal.find("#thankyou-step").hide(), this.modal.find("#loading-quote-requests").hide(), jQuery.jbdModal.close()
}
toggleLogIn() {
jQuery("#nameDiv").toggle(), jQuery("#name, #password, #email").val(""), 1 == jQuery("#login").val() ? (jQuery("#loginDiv").html(Joomla.JText._("LNG_ALREADY_HAVE_ACCOUNT") + ' <a href="javascript:jbdQuoteRequest.toggleLogIn()">' + Joomla.JText._("LNG_LOG_IN") + "</a>"), jQuery("#description").html(Joomla.JText._("LNG_ENTER_USER_DETAILS")), jQuery("#login").val(0)) : (jQuery("#loginDiv").html(Joomla.JText._("LNG_NOT_MEMBER") + ' <a href="javascript:jbdQuoteRequest.toggleLogIn()">' + Joomla.JText._("LNG_REGISTER_HERE") + "</a>"), jQuery("#description").html(Joomla.JText._("LNG_YOU_HAVE_TO_BE_LOGGED_IN")), jQuery("#login").val(1))
}
}
let jbdQuoteRequest = new JBDQuoteRequest;
class JBDQuoteMessages {
constructor() {
this.response_success = 1, this.response_error = 0, this.allowSend = !1, this.messages = [], this.lastMsgId = 0, this.firstMsgId = 0, this.pollingInterval = JBDConstants.QUOTE_MESSAGES_POLLING_INTERVAL
}
init(replyId, userId = null, options = null) {
this.replyId = replyId, this.userId = userId, null != options && void 0 !== options.allowSend && (this.allowSend = options.allowSend), this.chatContainer = jQuery("#chat-container-" + this.replyId), this.chatFooter = this.chatContainer.find(".chat-footer"), this.chatInput = this.chatContainer.find(".chat-textbox"), this.chatSendBtn = this.chatContainer.find(".btn-send"), this.chatBody = this.chatContainer.find(".chat-body"), this.chatLoading = this.chatBody.find(".loading-quote-messages");
let self = this;
this.allowSend ? (this.chatInput.on("keydown", function(event) {
13 == event.which && self.sendMessage()
}), this.chatSendBtn.on("click", function(event) {
self.sendMessage()
})) : this.chatFooter.attr("style", "display:none !important"), this.chatBody.on("scroll", function() {
0 == jQuery(this).scrollTop() && self.loadHistory()
}), this.chatLoading.show(), this.chatBody.hide(), this.getMessages(), this.chatLoading.hide(), this.chatBody.show(), this.interval = setInterval(function() {
self.pollMessages()
}, self.pollingInterval)
}
getMessages() {
let self = this,
getMessages = jbdUtils.getAjaxUrl("getMessagesAjax", "requestquotemessages");
jQuery.ajax({
type: "POST",
url: getMessages,
data: {
replyId: self.replyId
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_success ? (self.messages = data.data, self.chatInput.val(""), self.renderMessages(!0), self.chatLoading.hide(), self.chatBody.show()) : alert(data.message)
}
})
}
renderMessages(scrollDown, messages) {
void 0 === messages && (messages = this.messages), void 0 === scrollDown && (scrollDown = !1);
for (let i in messages) {
let msg = messages[i];
if (void 0 !== msg && 0 === jQuery("#msg-" + msg.msgId).length && messages.hasOwnProperty(i)) {
let html = this.getMessageHtml(msg);
msg.msgId = parseInt(msg.msgId), 0 != this.lastMsgId ? msg.msgId > this.lastMsgId ? this.chatBody.append(html) : this.chatBody.find(".chat-top").after(html) : this.chatBody.append(html), this.lastMsgId < msg.msgId && (this.lastMsgId = msg.msgId), 0 === this.firstMsgId ? this.firstMsgId = msg.msgId : this.firstMsgId > msg.msgId && (this.firstMsgId = msg.msgId)
}
}
scrollDown && void 0 !== this.chatBody[0] && this.chatBody.scrollTop(this.chatBody[0].scrollHeight)
}
getMessageHtml(msg) {
let html = "",
msgClass = "msg-rcvd";
null == this.userId && (this.userId = msg.senderId), msg.senderId == this.userId && (msgClass = "msg-snt");
let date = new Date(msg.created);
return html += '<div class="msg" id="msg-' + msg.msgId + '">', html += '<div class="' + msgClass + '">', html += '<div class="msg-txt">', html += msg.text, html += "</div>", html += '<p class="msg-date">' + date.toLocaleString() + "</p>", html += "</div>", html += "</div>"
}
sendMessage() {
let msg = {},
text = this.chatInput.val();
if (0 == text.length || jbdUtils.isBlank(text)) return !1;
let self = this,
sendMessage = jbdUtils.getAjaxUrl("sendMessageAjax", "requestquotemessages");
jQuery.ajax({
type: "POST",
url: sendMessage,
data: {
replyId: self.replyId,
senderId: self.userId,
text: text
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_success ? (msg = data.data, self.messages.unshift(msg), self.chatInput.val(""), self.renderMessages(!0)) : alert(data.message)
}
})
}
loadHistory() {
let messages = [],
getMessages = jbdUtils.getAjaxUrl("getMessagesAjax", "requestquotemessages"),
self = this;
self.chatLoading.show(), jQuery.ajax({
type: "POST",
url: getMessages,
data: {
replyId: self.replyId,
firstId: self.firstMsgId
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_success ? (messages = data.data, self.renderMessages(!1, messages), self.chatLoading.hide()) : alert(data.message)
}
})
}
pollMessages() {
let self = this,
getMessages = jbdUtils.getAjaxUrl("getMessagesAjax", "requestquotemessages");
jQuery.ajax({
type: "POST",
url: getMessages,
data: {
replyId: self.replyId,
lastId: self.lastMsgId
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_success ? data.data.length > 0 && (self.messages = data.data, self.renderMessages(!0)) : alert(data.message)
}
})
}
openModal(replyId, userId = null, options = null) {
let modal = jQuery("#quote-request-messages-modal");
modal.jbdModal();
let self = this,
getChat = jbdUtils.getAjaxUrl("getChatHtmlAjax", "requestquotemessages");
jQuery.ajax({
type: "POST",
url: getChat,
data: {
replyId: replyId
},
dataType: "json",
cache: !1,
success: function(data) {
data.status == self.response_success ? (modal.find(".jmodal-body").html(data.data), self.init(replyId, userId, options)) : alert(data.message), jQuery("#new-messages-" + replyId).hide()
}
}), modal.on(jQuery.jbdModal.BEFORE_CLOSE, function() {
self.clearInstance()
})
}
clearInstance() {
this.replyId = null, this.userId = null, this.allowSend = !1, this.messages = [], this.lastMsgId = 0, this.firstMsgId = 0, this.chatContainer = null, this.chatInput = null, this.chatSendBtn = null, this.chatLoading = null, this.chatBody = null, this.chatFooter = null, clearInterval(this.interval), this.interval = null, jQuery("#quote-request-messages-modal").find(".modal-body").html("")
}
}
let jbdQuoteMessages = new JBDQuoteMessages;
class JBDBatch {
constructor() {
this.controller = "", this.incremental = 0, this.resume = 0, this.batchSize = 100, this.offset = 0, this.progress = 0, this.reload = !1, this.totalItems = 0
}
initialize(controller, task, incremental) {
this.controller = controller, this.incremental = incremental, this.offset = 0, this.progress = 0, this.runTask(task)
}
runTask(task) {
let baseUrl = jbdUtils.getAjaxUrl(task, this.controller);
baseUrl = baseUrl + "&" + jQuery("#jbd-indexer-token").attr("name") + "=1";
jQuery.ajax({
type: "GET",
url: baseUrl,
data: {
incremental: this.incremental,
offset: this.offset
},
success: this.processResponse,
error: this.processFailure,
cache: !1
})
}
processResponse(data, resp) {
try {
if (null === data) throw resp;
if (data.error) throw data;
data.start && (jbdBatch.totalItems = data.totalItems), jbdBatch.offset = data.batchOffset, jbdBatch.updateProgress(data.header, data.message), jbdBatch.offset < jbdBatch.totalItems ? jbdBatch.runTask("processBatch") : jbdBatch.reload || (jbdBatch.reload = !0, setTimeout(function() {}, 3e3))
} catch (error) {
return jQuery("#progress").remove(), data.error && (jQuery("#jbd-progress-title").text(data.header).addClass("finder-error"), jQuery("#jbd-progress-message").html(data.message).addClass("finder-error")), !1
}
return !0
}
processFailure(xhr) {
let data = "object" == typeof xhr && xhr.responseText ? xhr.responseText : null;
data = data ? jQuery.parseJSON(data) : null, jQuery("#progress").remove(), data && (data = null != data.responseText ? Json.evaluate(data.responseText, !0) : data);
var header = data ? data.header : Joomla.JText._("LNG_AN_ERROR_HAS_OCCURED"),
message = data ? data.message : Joomla.JText._("LNG_MESSAGE_RETRIEVED") + " <br />" + data;
jQuery("#jbd-progress-title").text(header).addClass("finder-error"), jQuery("#jbd-progress-message").html(message).addClass("finder-error")
}
updateProgress(header, message) {
let progress = jbdBatch.offset / jbdBatch.totalItems * 100;
jQuery("#jbd-progress-title").text(header), jQuery("#jbd-progress-message").html(message + " ( " + jbdBatch.offset + " / " + jbdBatch.totalItems + " )"), progress < 100 ? jQuery("#progress-bar").css("width", progress + "%").attr("aria-valuenow", progress) : (jQuery("#progress-bar").removeClass("bar-success").addClass("bar-warning").attr("aria-valuemin", 100).attr("aria-valuemax", 200), jQuery("#progress-bar").css("width", progress + "%").attr("aria-valuenow", progress)), "" == message && jQuery("#progress").remove()
}
}
let jbdBatch = new JBDBatch;
const jbdAI = {
targetField: null,
type: null,
field: null,
language: null,
showTextGenerationPopup: function(type, field, targetField, promptText, language) {
this.type = type, this.field = field, this.targetField = targetField, this.language = language, jQuery("#text-generation-dialog").remove();
const modalHtml = `\n <div id="text-generation-dialog" class="jbd-container message-modal">\n <div class="jmodal-md">\n <div class="jmodal-header">\n <p class="jmodal-header-title">${Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_GENERATE_TEXT")}</p>\n <a href="#close-modal" rel="modal:close" class="close-btn"><i class="la la-close "></i></a>\n </div>\n <div class="jmodal-body">\n <div class="form-group">\n <label for="ai-prompt">${Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_PROMPT")}</label>\n <textarea id="ai-prompt" class="form-control" rows="3">${promptText}</textarea>\n </div>\n <div class="form-group">\n <button type="button" class="btn btn-primary" onclick="jbdAI.generateText();">\n <i class="la la-magic"></i> ${Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_GENERATE")}\n </button>\n </div>\n <div id="ai-result" class="form-group">\n <label for="ai-preview">${Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_GENERATED_TEXT")}</label>\n <div id="ai-preview" style="display:none;" class="border p-3 mb-3"></div>\n <textarea id="ai-generated-text" class="form-control" rows="5"></textarea>\n </div>\n <div class="button-row">\n <button type="button" class="btn btn-dark" onclick="jQuery.jbdModal.close();">\n ${Joomla.JText._("COM_JBUSINESSDIRECTORY_CANCEL")}\n </button>\n <button type="button" class="btn btn-success" onclick="jbdAI.useGeneratedText();">\n ${Joomla.JText._("COM_JBUSINESSDIRECTORY_USE_TEXT")}\n </button>\n </div>\n </div>\n </div>\n </div>\n `;
jQuery("body").append(modalHtml), jQuery("#text-generation-dialog").jbdModal()
},
generateText: function() {
const prompt = jQuery("#ai-prompt").val(),
loadingHtml = '<div class="text-center"><i class="la la-spinner la-spin la-2x"></i><br>' + Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_GENERATING") + "</div>";
jQuery("#ai-preview").show(), jQuery("#ai-preview").html(loadingHtml);
let url = jbdUtils.getAjaxUrl("ai", "frontai");
jQuery.ajax({
url: url,
type: "POST",
cache: !1,
data: {
prompt: prompt,
type: this.type,
field: this.field,
language: this.language,
task: "ai.generateText"
},
success: function(response) {
try {
jQuery("#ai-preview").hide(), jQuery("#ai-preview").html("");
const result = "string" == typeof response ? JSON.parse(response) : response;
"success" === result.status ? jQuery("#ai-generated-text").val(result.text) : jQuery("#ai-preview").html('<div class="alert alert-danger">' + (result.message || Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_ERROR")) + "</div>")
} catch (e) {
jQuery("#ai-preview").html('<div class="alert alert-danger">' + Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_ERROR") + "</div>")
}
},
error: function() {
jQuery("#ai-preview").html('<div class="alert alert-danger">' + Joomla.JText._("COM_JBUSINESSDIRECTORY_AI_ERROR") + "</div>")
}
})
},
useGeneratedText: function() {
const generatedText = jQuery("#ai-generated-text").val(),
formattedText = generatedText.replace(/\n/g, "<br>");
if (jQuery(this.targetField).length > 0 && jQuery(this.targetField).val(generatedText), "undefined" != typeof tinyMCE) {
const textField = this.targetField.replace("#", "").replace("-", "_");
tinyMCE.get(textField) && tinyMCE.get(textField).setContent(formattedText, {
format: "html"
})
}
jQuery.jbdModal.close()
}
};
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterHorizontalCatItems = function(_React$Component) {
_inherits(SearchFilterHorizontalCatItems, _React$Component);
var _super = _createSuper(SearchFilterHorizontalCatItems);
function SearchFilterHorizontalCatItems(props) {
return _classCallCheck(this, SearchFilterHorizontalCatItems), _super.call(this, props)
}
return _createClass(SearchFilterHorizontalCatItems, [{
key: "render",
value: function() {
var nameField = this.props.nameField,
valueField = this.props.valueField,
selectedItems = void 0 !== this.props.selectedItems ? this.props.selectedItems : null,
type = this.props.type,
title = this.props.title,
items = Object.values(this.props.items);
null != selectedItems && selectedItems[0];
var values = [];
selectedItems && (values = -1 != selectedItems.toString().indexOf(",") ? selectedItems.toString().split(",").map(Number) : [parseInt(selectedItems)]);
var addFilterAction = jbdUtils.addFilterRule,
removeFilterAction = jbdUtils.removeFilterRule;
return React.createElement("li", {
key: Math.random()
}, React.createElement("div", {
className: "main-cat-container"
}, React.createElement("div", null, React.createElement("div", {
className: "filter-main-cat cursor-pointer"
}, title)), React.createElement("i", {
className: "icon"
})), React.createElement("ul", {
className: "submenu",
key: "horizontal-" + type
}, items.map(function(item) {
if (null != item[valueField]) {
var action = addFilterAction,
itemValue = parseInt(item[valueField]);
return values.includes(itemValue) && (action = removeFilterAction), React.createElement("li", {
key: Math.random(),
className: ""
}, React.createElement("div", null, React.createElement("input", {
className: "cursor-pointer",
name: "cat",
type: "checkbox",
checked: values.includes(itemValue),
onChange: function() {
return action(type, item[valueField], !0)
}
}), " ", React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return action(type, item[valueField], !0)
}
}, item[nameField])))
}
})))
}
}]), SearchFilterHorizontalCatItems
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterHorizontalCat = function(_React$Component) {
_inherits(SearchFilterHorizontalCat, _React$Component);
var _super = _createSuper(SearchFilterHorizontalCat);
function SearchFilterHorizontalCat(props) {
return _classCallCheck(this, SearchFilterHorizontalCat), _super.call(this, props)
}
return _createClass(SearchFilterHorizontalCat, [{
key: "componentDidMount",
value: function() {
jQuery(".chosen-react").on("change", function(e) {
var type = jQuery(this).attr("name"),
val = jQuery(this).chosen().val();
switch (type) {
case "categories":
jbdUtils.chooseCategory(val);
break;
default:
jbdUtils.addFilterRule(type, val)
}
}), jQuery(".filter-categories i.icon").click(function(e) {
$hasOpenClass = jQuery(this).parent().parent().hasClass("open"), jQuery(".filter-categories li").removeClass("open"), $hasOpenClass || jQuery(this).parent().parent().toggleClass("open"), e.stopPropagation()
}), jQuery(".filter-main-cat").click(function(e) {
$hasOpenClass = jQuery(this).parent().parent().parent().hasClass("open"), jQuery(".filter-categories li").removeClass("open"), $hasOpenClass || jQuery(this).parent().parent().parent().toggleClass("open"), e.stopPropagation()
}), jQuery("body").click(function(e) {
jQuery(".filter-categories li").removeClass("open")
})
}
}, {
key: "getCategoryFilters",
value: function(categories) {
for (var _this = this, counterCategories = 0, categoryFilters = [], _loop = function(i) {
var filterCriteria = categories[i];
if (filterCriteria[0].subCategories = Object.values(filterCriteria[0].subCategories), counterCategories < 100) {
var action = jbdUtils.addFilterRuleCategory,
checkedMain = !1;
_this.props.selectedCategories.some(function(cat) {
return cat == filterCriteria[0][0].id
}) && ("selectedlink", "selected", action = jbdUtils.removeFilterRuleCategory, React.createElement("span", {
className: "cross"
}), checkedMain = !0);
var subCategoriesFilters = [];
if (null != filterCriteria[0].subCategories)
for (var _loop2 = function(j) {
var subCategory = filterCriteria[0].subCategories[j],
liClassSub = "",
actionSub = jbdUtils.addFilterRuleCategory,
removeTextSub = "",
checked = !1;
_this.props.selectedCategories.some(function(cat) {
return cat == subCategory[0].id
}) && (liClassSub = "selectedlink", "selected", actionSub = jbdUtils.removeFilterRuleCategory, removeTextSub = React.createElement("span", {
className: "cross"
}), checked = !0), subCategoriesFilters.push(React.createElement("li", {
key: Math.random() + "-" + i,
className: liClassSub
}, React.createElement("div", null, React.createElement("input", {
className: "cursor-pointer",
name: "cat",
type: "checkbox",
checked: checked,
onChange: function() {
return actionSub(subCategory[0].id)
}
}), " ", React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return actionSub(subCategory[0].id)
}
}, subCategory[0].name, " ", removeTextSub))))
}, j = 0; j < filterCriteria[0].subCategories.length; j++) _loop2(j);
categoryFilters.push(React.createElement("li", {
key: Math.random() + "-" + i,
className: "multi-column"
}, React.createElement("div", {
className: "main-cat-container"
}, React.createElement("div", null, React.createElement("div", {
className: "filter-main-cat cursor-pointer"
}, filterCriteria[0][0].name)), React.createElement("i", {
className: "icon"
})), React.createElement("ul", {
className: "submenu"
}, React.createElement("li", {
key: Math.random() + "-" + i
}, React.createElement("div", null, React.createElement("input", {
className: "cursor-pointer",
name: "cat",
type: "checkbox",
checked: checkedMain,
onChange: function() {
return action(filterCriteria[0][0].id)
}
}), " ", React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return action(filterCriteria[0][0].id)
}
}, filterCriteria[0][0].name))), subCategoriesFilters))), counterCategories++
}
}, i = 0; i < categories.length; i++) _loop(i);
return categoryFilters
}
}, {
key: "render",
value: function() {
var _this2 = this;
return null != this.props.searchFilter.categories && this.props.searchFilter.categories.length > 0 && this.getCategoryFilters(this.props.searchFilter.categories), React.createElement("div", {
id: "category-filter-horizontal",
className: "category-filter-horizontal"
}, React.createElement("ul", {
key: 100 * Math.random(),
className: "filter-categories"
}, null != this.props.searchFilter.categories && this.props.searchFilter.categories.length > 0 ? this.getCategoryFilters(this.props.searchFilter.categories) : null, null != this.props.searchFilter.memberships && this.props.searchFilter.memberships.length > 0 ? React.createElement(SearchFilterHorizontalCatItems, {
items: this.props.searchFilter.memberships,
selectedItems: this.props.selectedParams.membership,
title: Joomla.JText._("LNG_SELECT_MEMBERSHIP"),
type: "membership",
valueField: "membership_id",
nameField: "membership_name"
}) : null, null != this.props.searchFilter && null != this.props.searchFilter.attributes && this.props.searchFilter.attributes.length > 0 ? this.props.searchFilter.attributes.map(function(items) {
var item = Object.values(items)[0],
nameField = "value";
null != item.optionName && (nameField = "optionName");
var type = "attribute_" + item.id;
return React.createElement(SearchFilterHorizontalCatItems, {
items: items,
selectedItems: _this2.props.selectedParams[type],
title: item.name,
type: type,
valueField: "value",
nameField: nameField
})
}) : null), null)
}
}]), SearchFilterHorizontalCat
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterHorizontalItems = function(_React$Component) {
_inherits(SearchFilterHorizontalItems, _React$Component);
var _super = _createSuper(SearchFilterHorizontalItems);
function SearchFilterHorizontalItems(props) {
return _classCallCheck(this, SearchFilterHorizontalItems), _super.call(this, props)
}
return _createClass(SearchFilterHorizontalItems, [{
key: "render",
value: function() {
var _this = this,
nameField = this.props.nameField,
valueField = this.props.valueField,
selectedItems = void 0 !== this.props.selectedItems ? this.props.selectedItems : null,
type = this.props.type,
title = this.props.title,
items = Object.values(this.props.items),
selectedItem = null;
return null != selectedItems && (selectedItem = selectedItems[0]), React.createElement("div", {
className: "search-options-item"
}, React.createElement("div", {
className: "jbd-select-box"
}, React.createElement("i", {
className: "la la-list"
}), React.createElement("select", {
name: type,
className: "chosen-react",
value: selectedItem,
key: "horizontal-" + type,
onChange: function() {
return jbdUtils.addFilterRule(type, _this.value)
}
}, React.createElement("option", {
value: ""
}, title), items.map(function(item) {
return React.createElement("option", {
className: type + "-" + item[valueField],
value: item[valueField]
}, item[nameField])
}))))
}
}]), SearchFilterHorizontalItems
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
SearchFilterHorizontalItems = function(_React$Component) {
_inherits(SearchFilterHorizontalItems, _React$Component);
var _super = _createSuper(SearchFilterHorizontalItems);
function SearchFilterHorizontalItems(props) {
var _this;
return _classCallCheck(this, SearchFilterHorizontalItems), (_this = _super.call(this, props)).changeHandler = _this.changeHandler.bind(_assertThisInitialized(_this)), _this
}
return _createClass(SearchFilterHorizontalItems, [{
key: "changeHandler",
value: function(e) {
jbdUtils.addFilterRule(this.props.type, e.target.value, e.target.options[e.target.selectedIndex].text)
}
}, {
key: "render",
value: function() {
var _this2 = this,
nameField = this.props.nameField,
valueField = this.props.valueField,
type = (void 0 !== this.props.selectedItems && this.props.selectedItems, this.props.type),
title = this.props.title,
itemDisabled = !1;
jQuery.isEmptyObject(this.props.items) && (itemDisabled = !0);
var items = Object.values(this.props.items);
return React.createElement("div", {
className: "search-options-item"
}, React.createElement("div", {
className: "jbd-select-box"
}, React.createElement("i", {
className: "la la-list"
}), React.createElement("select", {
name: type,
className: "chosen-react",
value: null,
key: "horizontal-" + type,
disabled: itemDisabled,
onChange: function(e) {
return _this2.changeHandler(e)
}
}, React.createElement("option", {
value: ""
}, title), items.map(function(item) {
return React.createElement("option", {
className: type + "-" + item[valueField],
value: item[valueField]
}, item[nameField])
}))))
}
}]), SearchFilterHorizontalItems
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterHorizontal = function(_React$Component) {
_inherits(SearchFilterHorizontal, _React$Component);
var _super = _createSuper(SearchFilterHorizontal);
function SearchFilterHorizontal(props) {
return _classCallCheck(this, SearchFilterHorizontal), _super.call(this, props)
}
return _createClass(SearchFilterHorizontal, [{
key: "componentDidMount",
value: function() {
jQuery(".chosen-react").on("change", function(e) {
var type = jQuery(this).attr("name"),
val = jQuery(this).chosen().val();
if (val) switch (type) {
case "categories":
jbdUtils.addFilterRuleCategory(val);
break;
case "distance":
jbdListings.setRadius(val);
break;
default:
jbdUtils.addFilterRule(type, val)
}
}), jQuery(".chosen-react").chosen({
width: "165px",
disable_search_threshold: 5,
inherit_select_classes: !0,
placeholder_text_single: Joomla.JText._("LNG_SELECT_OPTION"),
placeholder_text_multiple: Joomla.JText._("LNG_SELECT_OPTION")
})
}
}, {
key: "render",
value: function() {
var _this = this,
showClearFilter = !1;
void 0 !== this.props.selectedParams.city && this.props.selectedParams.city.length, this.props.onlyLocal;
(null != this.props.searchKeyword || null != this.props.zipCode || null != this.props.searchFilter.categories && this.props.searchFilter.categories.length > 0 || null != this.props.searchFilter.starRating && this.props.searchFilter.starRating.length > 0 || null != this.props.searchFilter.types && this.props.searchFilter.types.length > 0 || null != this.props.searchFilter.countries && this.props.searchFilter.countries.length > 0 || null != this.props.searchFilter.provinces && this.props.searchFilter.provinces.length > 0 || null != this.props.searchFilter.regions && this.props.searchFilter.regions.length > 0 || null != this.props.searchFilter.cities && this.props.searchFilter.cities.length > 0 || null != this.props.searchFilter.areas && this.props.searchFilter.areas.length > 0 || null != this.props.searchFilter.companies && this.props.searchFilter.companies.length > 0 || null != this.props.customAttributesValues && this.props.customAttributesValues.length > 0 || null != this.props.location && null != this.props.location.latitude) && (showClearFilter = !1);
var selectedCategory = null,
selectedCategoryName = null;
null != this.props.category && (selectedCategory = this.props.category.id, selectedCategoryName = this.props.category.name), selectedCategory = null;
return React.createElement("div", null, React.createElement("div", {
id: "filter-switch-horizontal",
className: "filter-switch",
onClick: function() {
return jbdUtils.toggleHorizontalFilter()
}
}, Joomla.JText._("LNG_SHOW_FILTER")), React.createElement("div", {
id: "search-filter-horizontal",
className: "search-filter-horizontal"
}, React.createElement("div", {
class: "search-filter-label"
}, React.createElement("i", {
class: "icon filters"
}), " ", Joomla.JText._("LNG_FILTERS")), React.createElement("div", {
class: "search-filter-fields"
}, void 0 == this.props.searchFilter.categories || 0 != this.props.categorySearch && null != this.props.categorySearch ? null : React.createElement("div", {
className: "search-options-item"
}, React.createElement("div", {
className: "jbd-select-box"
}, React.createElement("i", {
className: "la la-list"
}), React.createElement("select", {
name: "categories",
className: "chosen-react",
value: selectedCategory,
onChange: function(e) {
return jbdUtils.chooseCategory(e.target.value)
}
}, null != selectedCategory ? React.createElement(React.Fragment, null, React.createElement("option", {
value: ""
}, Joomla.JText._("LNG_CATEGORY")), React.createElement("option", {
value: selectedCategory
}, selectedCategoryName)) : React.createElement("option", {
value: ""
}, Joomla.JText._("LNG_CATEGORY")), this.props.searchFilter.categories.map(function(filterCriteria) {
return filterCriteria[1] > 0 && filterCriteria[0][0].id != selectedCategory ? React.createElement("option", {
value: filterCriteria[0][0].id
}, filterCriteria[0][0].name) : null
})))), void 0 !== this.props.searchFilter.starRating ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.starRating,
selectedItems: this.props.selectedParams.starRating,
title: Joomla.JText._("LNG_SELECT_RATING"),
type: "starRating",
valueField: "reviewScore",
nameField: "reviewScore"
}) : null, void 0 !== this.props.searchFilter.types ? React.createElement(SearchFilterHorizontalItems, {
fetchData: this.props.fetchData,
items: this.props.searchFilter.types,
selectedItems: this.props.selectedParams.type,
title: Joomla.JText._("LNG_SELECT_TYPE"),
type: "type",
valueField: "typeId",
nameField: "typeName"
}) : null, void 0 !== this.props.searchFilter.packages ? React.createElement(SearchFilterHorizontalItems, {
fetchData: this.props.fetchData,
items: this.props.searchFilter.packages,
selectedItems: this.props.selectedParams.package,
title: Joomla.JText._("LNG_PACKAGE"),
type: "package",
valueField: "package_id",
nameField: "package_name"
}) : null, void 0 !== this.props.searchFilter.countries && null == this.props.zipCode ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.countries,
selectedItems: this.props.selectedParams.country,
title: Joomla.JText._("LNG_SELECT_COUNTRY"),
type: "country",
valueField: "countryId",
nameField: "countryName"
}) : null, void 0 !== this.props.searchFilter.provinces && null == this.props.zipCode ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.provinces,
selectedItems: this.props.selectedParams.province,
title: Joomla.JText._("LNG_PROVINCE"),
type: "province",
valueField: "provinceName",
nameField: "provinceName"
}) : null, void 0 !== this.props.searchFilter.regions && null == this.props.zipCode ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.regions,
selectedItems: this.props.selectedParams.region,
title: Joomla.JText._("LNG_SELECT_REGION"),
type: "region",
valueField: "region",
nameField: "regionName"
}) : null, void 0 !== this.props.searchFilter.cities && null == this.props.zipCode ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.cities,
selectedItems: this.props.selectedParams.city,
title: Joomla.JText._("LNG_SELECT_CITY"),
type: "city",
valueField: "city",
nameField: "cityName"
}) : null, void 0 !== this.props.searchFilter.areas ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.areas,
selectedItems: this.props.selectedParams.area,
title: Joomla.JText._("LNG_SELECT_AREA"),
type: "area",
valueField: "areaName",
nameField: "areaName"
}) : null, void 0 !== this.props.searchFilter.memberships ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.memberships,
selectedItems: this.props.selectedParams.membership,
title: Joomla.JText._("LNG_SELECT_MEMBERSHIP"),
type: "membership",
valueField: "membership_id",
nameField: "membership_name"
}) : null, void 0 != this.props.searchFilter.attributes ? this.props.searchFilter.attributes.map(function(items) {
var item = Object.values(items)[0],
nameField = "value";
null != item.optionName && (nameField = "optionName");
var type = "attribute_" + item.id;
return React.createElement(SearchFilterHorizontalItems, {
items: items,
selectedItems: _this.props.selectedParams[type],
title: item.name,
type: type,
valueField: "value",
nameField: nameField
})
}) : null, void 0 !== this.props.searchFilter.companies ? React.createElement(SearchFilterHorizontalItems, {
items: this.props.searchFilter.companies,
selectedItems: this.props.selectedParams.company,
title: Joomla.JText._("LNG_SELECT_COMPANY"),
type: "company",
valueField: "companyId",
nameField: "companyName"
}) : null, null != this.props.searchFilter.showDates && this.props.itemType == JBDConstants.ITEM_TYPE_REQUEST_QUOTE ? React.createElement("div", {
className: "search-options-item"
}, React.createElement("div", {
className: "jbd-date-box"
}, React.createElement("input", {
type: "date",
value: this.props.startDate,
onChange: function(e) {
return jbdUtils.setFilterDates("startDate", e.target.value)
}
}))) : null, null != this.props.searchFilter.showDates && this.props.itemType == JBDConstants.ITEM_TYPE_REQUEST_QUOTE ? React.createElement("div", {
className: "search-options-item"
}, React.createElement("div", {
className: "jbd-date-box"
}, React.createElement("input", {
type: "date",
value: this.props.endDate,
onChange: function(e) {
return jbdUtils.setFilterDates("endDate", e.target.value)
}
}))) : null, void 0 != this.props.location && void 0 != this.props.location.latitude ? React.createElement("div", {
className: "search-options-item radius"
}, React.createElement("div", {
className: "jbd-select-box"
}, React.createElement("i", {
className: "la la-list"
}), React.createElement("select", {
name: "distance",
className: "chosen-react",
onChange: function(e) {
return jbdListings.setRadius(e.target.value)
}
}, React.createElement("option", {
value: "0"
}, Joomla.JText._("LNG_RADIUS")), React.createElement("option", {
value: "10"
}, "10"), React.createElement("option", {
value: "25"
}, "25"), React.createElement("option", {
value: "50"
}, "50")))) : null, showClearFilter ? React.createElement("div", {
className: "search-options-item"
}, React.createElement("a", {
className: "clear-search cursor-pointer",
onClick: function() {
return jbdUtils.resetFilters(!0, !0)
},
style: {
textDecoration: "none"
}
}, Joomla.JText._("LNG_CLEAR"))) : null, null, null)))
}
}]), SearchFilterHorizontal
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterParams = function(_React$Component) {
_inherits(SearchFilterParams, _React$Component);
var _super = _createSuper(SearchFilterParams);
function SearchFilterParams(props) {
return _classCallCheck(this, SearchFilterParams), _super.call(this, props)
}
return _createClass(SearchFilterParams, [{
key: "componentDidMount",
value: function() {}
}, {
key: "render",
value: function() {
var _this = this,
showClearFilter = !1;
this.props.selectedParams.city, this.props.onlyLocal;
null != this.props.category && (this.props.category.id, this.props.category.name);
return (null != this.props.searchKeyword && this.props.searchKeyword.length > 0 || null != this.props.selectedParams.category && this.props.selectedParams.category.length > 0 && (0 == this.props.categorySearch || null == this.props.categorySearch) || null != this.props.selectedParams.starRating && this.props.selectedParams.starRating.length > 0 || null != this.props.selectedParams.type && this.props.selectedParams.type.length > 0 || null != this.props.zipCode && this.props.zipCode.length > 0 || !jQuery.isEmptyObject(this.props.location) || null != this.props.selectedParams.package && this.props.selectedParams.package.length > 0 || null != this.props.selectedParams.country && this.props.selectedParams.country.length > 0 && null == this.props.zipCode || null != this.props.selectedParams.province && this.props.selectedParams.province.length > 0 && null == this.props.zipCode || null != this.props.selectedParams.region && this.props.selectedParams.region.length > 0 && null == this.props.zipCode || null != this.props.selectedParams.city && this.props.selectedParams.city.length > 0 && null == this.props.zipCode || null != this.props.selectedParams.area && this.props.selectedParams.area.length > 0 && null == this.props.zipCode || null != this.props.selectedParams.membership && this.props.selectedParams.membership.length > 0 || null != this.props.selectedParams.startDate && this.props.selectedParams.startDate.length > 0 || null != this.props.selectedParams.endDate && this.props.selectedParams.endDate.length > 0 || null != this.props.selectedParams.startTime && this.props.selectedParams.startTime.length > 0 || null != this.props.selectedParams.endTime && this.props.selectedParams.endTime.length > 0 || null != this.props.selectedParams.minPrice && this.props.selectedParams.minPrice.length > 0 || null != this.props.selectedParams.maxPrice && this.props.selectedParams.maxPrice.length > 0 || null != this.props.selectedParams.age && this.props.selectedParams.age.length > 0 || null != this.props.selectedParams["custom-attributes"] && this.props.selectedParams["custom-attributes"].length > 0 || null != this.props.customAttributesValues && this.props.customAttributesValues.length > 0) && (showClearFilter = !0), React.createElement("div", {
id: "search-filter-source"
}, 1 == showClearFilter ? React.createElement("div", {
id: "search-path",
className: "search-filter-params"
}, 1 == showClearFilter && 2 == this.props.filterType ? React.createElement("div", {
class: "search-filter-header"
}, React.createElement("span", {
class: "search-filter-title"
}, Joomla.JText._("LNG_APPLIED_FILTERS")), React.createElement("span", {
className: "filter-type-elem reset"
}, React.createElement("a", {
href: "javascript:jbdUtils.resetFilters(true, true)"
}, Joomla.JText._("LNG_CLEAR_ALL_FILTERS"), " ", React.createElement("i", {
className: "la la-close"
})))) : null, React.createElement("ul", {
id: "selected-criteria",
className: "selected-criteria"
}, null != this.props.searchKeyword ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("keyword")
}
}, this.props.searchKeyword, " ", React.createElement("i", {
class: "la la-times"
}))) : null, null == this.props.category || 0 != this.props.categorySearch && null != this.props.categorySearch ? null : React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRuleCategory(_this.props.category.id)
}
}, this.props.category.name, " ", React.createElement("i", {
class: "la la-times"
}))), !jQuery.isEmptyObject(this.props.searchFilter.types) && void 0 !== this.props.selectedParams.type && this.props.selectedParams.type.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("type", _this.props.selectedParams.type[0])
}
}, this.props.searchFilter.types[this.props.selectedParams.type[0]].typeName, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.packages) && void 0 !== this.props.selectedParams.package && this.props.selectedParams.package.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("package", _this.props.selectedParams.package[0])
}
}, this.props.searchFilter.packages[this.props.selectedParams.package[0]].package_name, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.starRating) && void 0 !== this.props.selectedParams.starRating && this.props.selectedParams.starRating.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("starRating", _this.props.selectedParams.starRating[0])
}
}, this.props.searchFilter.starRating[this.props.selectedParams.starRating[0]].reviewScore, React.createElement("i", {
class: "la la-star"
}), " ", React.createElement("i", {
class: "la la-times"
}))) : null, null != this.props.searchFilter.countries && this.props.searchFilter.countries.length > 0 && void 0 !== this.props.selectedParams.country && this.props.selectedParams.country.length > 0 && null == this.props.zipCode ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("country", _this.props.selectedParams.country[0])
}
}, this.props.searchFilter.countries[this.props.selectedParams.country[0]].countryName, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.provinces) && void 0 !== this.props.selectedParams.province && this.props.selectedParams.province.length > 0 && null == this.props.zipCode ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("province", _this.props.selectedParams.province[0])
}
}, this.props.searchFilter.provinces[this.props.selectedParams.province[0]].provinceName, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.regions) && void 0 !== this.props.selectedParams.region && this.props.selectedParams.region.length > 0 && null == this.props.zipCode ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem region",
onClick: function() {
return jbdUtils.removeFilterRule("region", _this.props.selectedParams.region[0])
}
}, this.props.searchFilter.regions[this.props.selectedParams.region[0]].regionName, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.cities) && void 0 !== this.props.selectedParams.city && this.props.selectedParams.city.length > 0 && null == this.props.zipCode ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem city",
onClick: function() {
return jbdUtils.removeFilterRule("city", _this.props.selectedParams.city[0])
}
}, this.props.searchFilter.cities[this.props.selectedParams.city[0]].cityName, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.areas) && void 0 !== this.props.selectedParams.area && this.props.selectedParams.area.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("area", _this.props.selectedParams.area[0])
}
}, this.props.searchFilter.areas[this.props.selectedParams.area[0]].areaName, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.memberships) && void 0 !== this.props.selectedParams.membership && this.props.selectedParams.membership.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeFilterRule("membership", _this.props.selectedParams.membership[0])
}
}, this.props.searchFilter.memberships[this.props.selectedParams.membership[0]].membership_name, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.searchFilter.attributes) && null != this.props.customAttributesValues && this.props.customAttributesValues.length > 0 ? React.createElement("ul", {
class: "selected-criteria"
}, this.props.customAttributesValues.map(function(attribute, index) {
return null != attribute ? React.createElement("li", null, React.createElement("a", {
className: "filter-type-elem",
onClick: function() {
return jbdUtils.removeAttrCond(attribute.attribute_id, attribute.id)
}
}, attribute.name, " ", React.createElement("i", {
class: "la la-times"
}))) : null
})) : null, !jQuery.isEmptyObject(this.props.selectedParams["custom-attributes"]) && null != this.props.selectedParams["custom-attributes"] && this.props.selectedParams["custom-attributes"].length > 0 ? React.createElement("ul", {
class: "selected-criteria"
}, this.props.selectedParams["custom-attributes"].map(function(attribute, index) {
if (null == attribute) return null;
Object.keys(attribute).map(function(key, index) {
return React.createElement("li", null, React.createElement("a", {
className: "filter-type-elem",
onClick: function() {
return jbdUtils.removeAttrCond(key, key)
}
}, attribute[key], " ", React.createElement("i", {
class: "la la-times"
})))
})
})) : null, null != this.props.zipCode && this.props.zipCode.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem 12",
onClick: function() {
return jbdUtils.removeSearchRule("zipcode")
}
}, this.props.zipCode, " ", React.createElement("i", {
class: "la la-times"
}))) : null, !jQuery.isEmptyObject(this.props.location) && jQuery.isEmptyObject(this.props.zipCode) ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("location")
}
}, Joomla.JText._("LNG_GEO_LOCATION"), " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.age && this.props.selectedParams.age.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("age")
}
}, Joomla.JText._("LNG_AGE"), " ", this.props.selectedParams.age, " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.startTime && this.props.selectedParams.startTime.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("start-time")
}
}, Joomla.JText._("LNG_START_TIME"), " ", this.props.selectedParams.startTime, " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.endTime && this.props.selectedParams.endTime.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("end-time")
}
}, Joomla.JText._("LNG_END_TIME"), " ", this.props.selectedParams.endTime, " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.startDate && this.props.selectedParams.startDate.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("startDate")
}
}, Joomla.JText._("LNG_START"), " ", this.props.selectedParams.startDate, " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.endDate && this.props.selectedParams.endDate.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("endDate")
}
}, Joomla.JText._("LNG_END"), " ", this.props.selectedParams.endDate, " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.minPrice && this.props.selectedParams.minPrice.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("minprice")
}
}, Joomla.JText._("LNG_MIN_PRICE"), " ", this.props.selectedParams.minPrice, " ", React.createElement("i", {
class: "la la-times"
}))) : null, void 0 !== this.props.selectedParams.maxPrice && this.props.selectedParams.maxPrice.length > 0 ? React.createElement("li", null, React.createElement("a", {
class: "filter-type-elem",
onClick: function() {
return jbdUtils.removeSearchRule("maxprice")
}
}, Joomla.JText._("LNG_MAX_PRICE"), " ", this.props.selectedParams.maxPrice, " ", React.createElement("i", {
class: "la la-times"
}))) : null, 1 == showClearFilter && 2 != this.props.filterType ? React.createElement("span", {
className: "filter-type-elem reset"
}, React.createElement("a", {
href: "javascript:jbdUtils.resetFilters(true, true)"
}, Joomla.JText._("LNG_CLEAR_ALL_FILTERS"))) : null)) : null)
}
}]), SearchFilterParams
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterVerticalCategories = function(_React$Component) {
_inherits(SearchFilterVerticalCategories, _React$Component);
var _super = _createSuper(SearchFilterVerticalCategories);
function SearchFilterVerticalCategories(props) {
return _classCallCheck(this, SearchFilterVerticalCategories), _super.call(this, props)
}
return _createClass(SearchFilterVerticalCategories, [{
key: "getRegularFilters",
value: function(categories) {
for (var _this = this, counterCategories = 0, categoryFilters = [], moreCategoryFilters = [], _loop = function(i) {
var filterCriteria = categories[i];
if (!(counterCategories < _this.props.searchFilterItems)) return categoryFilters.push(React.createElement("a", {
id: "showMoreCategories",
className: "filterExpand cursor-pointer",
onClick: function() {
return jbdUtils.showMoreParams("extra_categories_params", "showMoreCategories")
}
}, Joomla.JText._("LNG_MORE"), " (+)")), "break";
filterCriteria[1] > 0 && categoryFilters.push(React.createElement("li", {
key: Math.random() + "-" + i
}, null != _this.props.category && filterCriteria[0][0].id == _this.props.category.id ? React.createElement("strong", null, filterCriteria[0][0].name) : React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return jbdUtils.chooseCategory(filterCriteria[0][0].id)
}
}, filterCriteria[0][0].name))), counterCategories++
}, i = 0; i < categories.length; i++) {
if ("break" === _loop(i)) break
}
for (var _loop2 = function(_i) {
var filterCriteria = categories[_i];
--counterCategories < 0 && filterCriteria[1] > 0 && moreCategoryFilters.push(React.createElement("li", {
key: Math.random() + "-" + _i
}, null != _this.props.category && filterCriteria[0][0] == _this.props.category.id ? React.createElement("strong", null, filterCriteria[0][0].name) : React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return jbdUtils.chooseCategory(filterCriteria[0][0].id)
}
}, filterCriteria[0][0].name)))
}, _i = 0; _i < categories.length; _i++) _loop2(_i);
return React.createElement("ul", null, categoryFilters, React.createElement("div", {
style: {
display: "none"
},
id: "extra_categories_params"
}, moreCategoryFilters, React.createElement("a", {
id: "showLessCategories",
className: "filterExpand cursor-pointer",
onClick: function() {
return jbdUtils.showLessParams("extra_categories_params", "showMoreCategories")
}
}, Joomla.JText._("LNG_LESS"), " (-)")))
}
}, {
key: "getFacetedFilters",
value: function(categories) {
for (var _this2 = this, counterCategories = 0, categoryFilters = [], moreCategoryFilters = [], _loop3 = function(i) {
var filterCriteria = categories[i];
if (filterCriteria[0].subCategories = Object.values(filterCriteria[0].subCategories), !(counterCategories < _this2.props.searchFilterItems)) return categoryFilters.push(React.createElement("a", {
id: "showMoreCategories1",
className: "filterExpand cursor-pointer",
onClick: function() {
return jbdUtils.showMoreParams("extra_categories_params1", "showMoreCategories1")
}
}, Joomla.JText._("LNG_MORE"), " (+)")), "break";
var liClass = "",
divClass = "",
action = jbdUtils.addFilterRuleCategory,
removeText = "";
_this2.props.selectedCategories.some(function(cat) {
return cat == filterCriteria[0][0].id
}) && (liClass = "selectedlink", divClass = "selected", action = jbdUtils.removeFilterRuleCategory, removeText = React.createElement("span", {
className: "cross"
}));
var subCategoriesFilters = [];
if (null != filterCriteria[0].subCategories)
for (var _loop5 = function(j) {
var subCategory = filterCriteria[0].subCategories[j],
liClassSub = "",
divClassSub = "",
actionSub = jbdUtils.addFilterRuleCategory,
removeTextSub = "";
_this2.props.selectedCategories.some(function(cat) {
return cat == subCategory[0].id
}) && (liClassSub = "selectedlink", divClassSub = "selected", actionSub = jbdUtils.removeFilterRuleCategory, removeTextSub = React.createElement("span", {
className: "cross"
})), subCategoriesFilters.push(React.createElement("li", {
className: liClassSub
}, React.createElement("div", {
className: divClassSub
}, React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return actionSub(subCategory[0].id)
}
}, subCategory[0].name, " ", removeTextSub))))
}, j = 0; j < filterCriteria[0].subCategories.length; j++) _loop5(j);
categoryFilters.push(React.createElement("li", {
key: Math.random() + "-" + i,
className: liClass
}, React.createElement("div", {
key: Math.random() + "-" + i,
className: divClass
}, React.createElement("a", {
className: "filter-main-cat cursor-pointer",
onClick: function() {
return action(filterCriteria[0][0].id)
}
}, filterCriteria[0][0].name, " ", removeText)), subCategoriesFilters)), counterCategories++
}, i = 0; i < categories.length; i++) {
if ("break" === _loop3(i)) break
}
for (var _loop4 = function(_i2) {
var filterCriteria = categories[_i2];
counterCategories--, filterCriteria[0].subCategories = Object.values(filterCriteria[0].subCategories), counterCategories < 0 && filterCriteria[1] > 0 && function() {
var liClass = "",
divClass = "",
action = jbdUtils.addFilterRuleCategory,
removeText = "";
_this2.props.selectedCategories.some(function(cat) {
return cat == filterCriteria[0][0].id
}) && (liClass = "selectedlink", divClass = "selected", action = jbdUtils.removeFilterRuleCategory, removeText = React.createElement("span", {
className: "cross"
}));
var subCategoriesFilters = [];
if (null != filterCriteria[0].subCategories)
for (var _loop6 = function(j) {
var subCategory = filterCriteria[0].subCategories[j],
liClassSub = "",
divClassSub = "",
removeTextSub = (jbdUtils.addFilterRuleCategory, "");
_this2.props.selectedCategories.some(function(cat) {
return cat == subCategory[0].id
}) && (liClassSub = "selectedlink", divClassSub = "selected", jbdUtils.removeFilterRuleCategory, removeTextSub = React.createElement("span", {
className: "cross"
})), subCategoriesFilters.push(React.createElement("li", {
key: Math.random() + "-" + _i2,
className: liClassSub
}, React.createElement("div", {
className: divClassSub
}, React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return action(subCategory[0].id)
}
}, subCategory[0].name, " ", removeTextSub))))
}, j = 0; j < filterCriteria[0].subCategories.length; j++) _loop6(j);
moreCategoryFilters.push(React.createElement("li", {
key: Math.random() + "-" + _i2,
className: liClass
}, React.createElement("div", {
className: divClass
}, React.createElement("a", {
className: "filter-main-cat cursor-pointer",
onClick: function() {
return action(filterCriteria[0][0].id)
}
}, filterCriteria[0][0].name, " ", removeText)), React.createElement("ul", null, subCategoriesFilters)))
}()
}, _i2 = 0; _i2 < categories.length; _i2++) _loop4(_i2);
return React.createElement("ul", {
className: "filter-categories"
}, categoryFilters, React.createElement("div", {
style: {
display: "none"
},
id: "extra_categories_params1"
}, moreCategoryFilters, React.createElement("a", {
id: "showLessCategories1",
className: "filterExpand cursor-pointer",
onClick: function() {
return jbdUtils.showLessParams("extra_categories_params1", "showMoreCategories1")
}
}, Joomla.JText._("LNG_LESS"), " (-)")))
}
}, {
key: "render",
value: function() {
var categories = this.props.categories,
categoryFilters = "";
return categoryFilters = 0 == this.props.searchType ? this.getRegularFilters(categories) : this.getFacetedFilters(categories), React.createElement("div", {
className: "filter-criteria"
}, React.createElement("div", {
className: "filter-header"
}, jbdUtils.decodeHtml(Joomla.JText._("LNG_CATEGORIES"))), categoryFilters, React.createElement("div", {
className: "clear"
}))
}
}]), SearchFilterVerticalCategories
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterVerticalItems = function(_React$Component) {
_inherits(SearchFilterVerticalItems, _React$Component);
var _super = _createSuper(SearchFilterVerticalItems);
function SearchFilterVerticalItems(props) {
return _classCallCheck(this, SearchFilterVerticalItems), _super.call(this, props)
}
return _createClass(SearchFilterVerticalItems, [{
key: "getFilters",
value: function(items) {
var nameField = this.props.nameField,
valueField = this.props.valueField,
selectedItems = this.props.selectedItems,
customText = this.props.customText,
type = this.props.type;
items = Object.values(items);
var setCategory = void 0 !== this.props.category && null != this.props.category ? 1 : 0,
categId = void 0 !== this.props.categoryId && null != this.props.categoryId ? this.props.categoryId : 0,
addFilterAction = void 0 !== this.props.addFilterAction ? this.props.addFilterAction : jbdUtils.addFilterRule,
removeFilterAction = void 0 !== this.props.removeFilterAction ? this.props.removeFilterAction : jbdUtils.removeFilterRule;
return React.createElement("span", null, items.map(function(item, index) {
if (null != item[valueField]) {
var liClass = "",
divClass = "",
action = addFilterAction,
removeText = "";
return null != selectedItems && selectedItems.some(function(selectedItem) {
return selectedItem == item[valueField]
}) && (liClass = "selectedlink", divClass = "selected", action = removeFilterAction, removeText = React.createElement("span", {
className: "cross"
})), React.createElement("li", {
key: 10 * Math.random() * index,
className: liClass
}, React.createElement("div", {
key: 10 * Math.random(),
className: divClass
}, React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return action(type, item[valueField], setCategory, categId)
}
}, jbdUtils.decodeHtml(item[nameField]), " ", jbdUtils.decodeHtml(customText), " ", removeText)))
}
}))
}
}, {
key: "getExpandedFilters",
value: function() {
var items = this.props.items,
showMoreBtn = this.props.showMoreBtn,
showMoreId = this.props.showMoreId;
items = Object.values(items);
for (var filters, result = [], moreFilters = "", counterItems = 0, visibleItems = [], hiddenItems = [], i = 0; i < items.length; i++) {
var item = items[i];
counterItems < this.props.searchFilterItems ? visibleItems.push(item) : hiddenItems.push(item), counterItems++
}
return filters = this.getFilters(visibleItems), result.push(filters), hiddenItems.length > 0 && (moreFilters = this.getFilters(hiddenItems), result.push(React.createElement("a", {
id: showMoreBtn,
className: "filterExpand cursor-pointer",
onClick: function() {
return jbdUtils.showMoreParams(showMoreId, showMoreBtn)
}
}, Joomla.JText._("LNG_MORE"), " (+)")), result.push(React.createElement("div", {
style: {
display: "none"
},
id: showMoreId
}, moreFilters, React.createElement("a", {
id: showMoreBtn,
className: "filterExpand cursor-pointer",
onClick: function() {
return jbdUtils.showLessParams(showMoreId, showMoreBtn)
}
}, Joomla.JText._("LNG_LESS"), " (-)")))), result
}
}, {
key: "render",
value: function() {
var items = this.props.items,
title = jbdUtils.decodeHtml(this.props.title),
filters = "";
return filters = this.props.expandItems ? this.getExpandedFilters(items) : this.getFilters(items), React.createElement("div", {
key: 10 * Math.random(),
className: "filter-criteria"
}, React.createElement("div", {
key: 10 * Math.random(),
className: "filter-header"
}, title), React.createElement("ul", {
key: 10 * Math.random()
}, filters), React.createElement("div", {
key: 10 * Math.random(),
className: "clear"
}))
}
}]), SearchFilterVerticalItems
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilterVertical = function(_React$Component) {
_inherits(SearchFilterVertical, _React$Component);
var _super = _createSuper(SearchFilterVertical);
function SearchFilterVertical(props) {
return _classCallCheck(this, SearchFilterVertical), _super.call(this, props)
}
return _createClass(SearchFilterVertical, [{
key: "getDistanceFilters",
value: function() {
var _this = this,
distanceUnit = 1 == jbdUtils.getProperty("metric") ? Joomla.JText._("LNG_MILES") : Joomla.JText._("LNG_KM");
return React.createElement("div", {
className: "filter-criteria"
}, React.createElement("div", {
key: Math.random(),
className: "filter-header"
}, Joomla.JText._("LNG_DISTANCE")), React.createElement("ul", null, [50, 25, 10, 0].map(function(radius, index) {
var radiusText = radius + " " + distanceUnit;
return 0 == radius && (radiusText = Joomla.JText._("LNG_ALL")), React.createElement("li", {
key: Math.random() + "-" + index
}, _this.props.radius != radius ? React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return jbdListings.setRadius(radius)
}
}, radiusText) : React.createElement("strong", null, radiusText))
})))
}
}, {
key: "getFilterMonths",
value: function() {
var filterMonths = this.props.filterMonths,
startDate = this.props.startDate;
return null == filterMonths ? null : React.createElement("div", {
className: "filter-criteria"
}, React.createElement("div", {
key: Math.random(),
className: "filter-header"
}, Joomla.JText._("LNG_MONTHS")), React.createElement("ul", null, filterMonths.map(function(month, index) {
var liClass = "",
divClass = "",
removeText = "",
action = jbdEvents.setSearchDates,
paramStartDate = month.start_date,
paramEndDate = month.end_date;
return month.start_date == startDate && (action = jbdEvents.setSearchDates, liClass = "selectedlink", divClass = "selected", removeText = React.createElement("span", {
className: "cross"
}), paramStartDate = "", paramEndDate = ""), React.createElement("li", {
key: Math.random() + "-" + index,
className: liClass
}, React.createElement("div", {
key: Math.random() + "-" + index,
className: divClass
}, React.createElement("a", {
className: "cursor-pointer",
onClick: function() {
return action(paramStartDate, paramEndDate)
}
}, month.name, " ", removeText)))
})))
}
}, {
key: "render",
value: function() {
var _this2 = this,
searchFilterClasses = ["search-filter"];
2 == jbdUtils.getProperty("search_filter_view") && searchFilterClasses.push("style-2");
var distanceFilters = "";
null != this.props.location && null != this.props.location.latitude && (distanceFilters = this.getDistanceFilters());
var cityValueField = "city",
regionValueField = "region",
monthFilters = "",
searchFilterItems = jbdUtils.getProperty("search_filter_items"),
searchType = jbdUtils.getProperty("search_type");
return this.props.itemType == JBDConstants.ITEM_TYPE_EVENT ? (cityValueField = "cityName", regionValueField = "regionName", monthFilters = this.getFilterMonths(), searchFilterItems = jbdUtils.getProperty("event_search_filter_items"), searchType = jbdUtils.getProperty("event_search_type")) : this.props.itemType == JBDConstants.ITEM_TYPE_OFFER && (cityValueField = "cityName", regionValueField = "regionName", searchFilterItems = jbdUtils.getProperty("offer_search_filter_items"), searchType = jbdUtils.getProperty("offer_search_type")), React.createElement("div", null, React.createElement("div", {
id: "filter-switch",
className: "filter-switch",
onClick: function() {
return jbdUtils.toggleFilter()
}
}, Joomla.JText._("LNG_SHOW_FILTER")), React.createElement("div", {
id: "search-filter",
className: searchFilterClasses.join(" ")
}, React.createElement("div", {
className: "filter-fav clear",
style: {
display: "none"
}
}, "/* TODO is this section needed? */"), React.createElement("div", {
key: Math.random(),
className: "search-category-box"
}, distanceFilters, jQuery.isEmptyObject(this.props.searchFilter.months) ? null : monthFilters, React.createElement("div", {
id: "filterCategoryItems",
key: Math.random()
}, null != this.props.searchFilter && null != this.props.searchFilter.categories && this.props.searchFilter.categories.length > 0 ? React.createElement(SearchFilterVerticalCategories, {
categories: this.props.searchFilter.categories,
category: this.props.category,
selectedCategories: this.props.selectedCategories,
searchFilterItems: searchFilterItems,
searchType: searchType
}) : null, jQuery.isEmptyObject(this.props.searchFilter.starRating) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.starRating,
selectedItems: this.props.selectedParams.starRating,
title: Joomla.JText._("LNG_STAR_RATING"),
type: "starRating",
valueField: "reviewScore",
nameField: "reviewScore",
customText: Joomla.JText._("LNG_STARS"),
expandItems: !1,
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.types) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.types,
selectedItems: this.props.selectedParams.type,
title: Joomla.JText._("LNG_TYPES"),
type: "type",
valueField: "typeId",
nameField: "typeName",
expandItems: !0,
showMoreId: "extra_types_params",
showMoreBtn: "showMoreTypes",
categoryId: this.props.categoryId,
category: this.props.category,
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.memberships) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.memberships,
selectedItems: this.props.selectedParams.membership,
title: Joomla.JText._("LNG_SELECT_MEMBERSHIP"),
type: "membership",
valueField: "membership_id",
nameField: "membership_name",
expandItems: !0,
showMoreId: "extra_memberships_params",
showMoreBtn: "showMoreMemberships",
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.packages) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.packages,
selectedItems: this.props.selectedParams.package,
title: Joomla.JText._("LNG_PACKAGE"),
type: "package",
valueField: "package_id",
nameField: "package_name",
expandItems: !0,
showMoreId: "extra_package_params",
showMoreBtn: "showMorePackages",
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.countries) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.countries,
selectedItems: this.props.selectedParams.country,
title: Joomla.JText._("LNG_COUNTRIES"),
type: "country",
valueField: "countryId",
nameField: "countryName",
expandItems: !0,
showMoreId: "extra_countries_params",
showMoreBtn: "showMoreCountries",
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.provinces) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.provinces,
selectedItems: this.props.selectedParams.province,
title: Joomla.JText._("LNG_PROVINCE"),
type: "province",
valueField: "provinceName",
nameField: "provinceName",
expandItems: !0,
showMoreId: "extra_provinces_params",
showMoreBtn: "showMoreProvinces",
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.regions) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.regions,
selectedItems: this.props.selectedParams.region,
title: Joomla.JText._("LNG_REGIONS"),
type: "region",
valueField: regionValueField,
nameField: "regionName",
expandItems: !0,
showMoreId: "extra_regions_params",
showMoreBtn: "showMoreRegions",
categoryId: this.props.categoryId,
category: this.props.category,
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.cities) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.cities,
selectedItems: this.props.selectedParams.city,
title: Joomla.JText._("LNG_CITIES"),
type: "city",
valueField: cityValueField,
nameField: "cityName",
expandItems: !0,
showMoreId: "extra_cities_params",
showMoreBtn: "showMoreCities",
categoryId: this.props.categoryId,
category: this.props.category,
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.areas) ? null : React.createElement(SearchFilterVerticalItems, {
items: this.props.searchFilter.areas,
selectedItems: this.props.selectedParams.area,
title: Joomla.JText._("LNG_AREA"),
type: "area",
valueField: "areaName",
nameField: "areaName",
expandItems: !0,
showMoreId: "extra_areas_params",
showMoreBtn: "showMoreAreas",
categoryId: this.props.categoryId,
category: this.props.category,
searchFilterItems: searchFilterItems
}), jQuery.isEmptyObject(this.props.searchFilter.attributes) ? null : this.props.searchFilter.attributes.map(function(items) {
var item = Object.values(items)[0],
nameField = "value";
null != item.optionName && (nameField = "optionName");
var type = "attribute_" + item.id,
extraAttribute = "extra_attributes_params_" + item.id,
showMore = "showMoreAttributes_" + item.id;
return React.createElement(SearchFilterVerticalItems, {
items: items,
selectedItems: _this2.props.selectedParams[type],
title: item.name,
type: type,
valueField: "value",
nameField: nameField,
expandItems: !0,
showMoreId: extraAttribute,
showMoreBtn: showMore,
categoryId: _this2.props.categoryId,
category: _this2.props.category,
searchFilterItems: searchFilterItems
})
})))))
}
}]), SearchFilterVertical
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var SearchFilter = function(_React$Component) {
_inherits(SearchFilter, _React$Component);
var _super = _createSuper(SearchFilter);
function SearchFilter(props) {
var _this;
return _classCallCheck(this, SearchFilter), (_this = _super.call(this, props)).state = {
radius: null,
location: null,
searchFilter: [],
category: null,
categoryId: null,
categorySearch: null,
selectedCategories: [],
selectedParams: [],
filterMonths: null,
startDate: null,
endDate: null,
searchKeyword: null,
customAttributesValues: null,
zipCode: null,
err: null,
searchFilterType: null,
showSearchFilterParams: null,
isLoading: !1,
onlyLocal: null
}, _this.fetchData = _this.fetchData.bind(_assertThisInitialized(_this)), _this
}
return _createClass(SearchFilter, [{
key: "fetchData",
value: function() {
var _this2 = this;
this.setState({
isLoading: !0
});
var url = jbdUtils.getAjaxUrl("getSearchFilter", "search");
this.props.itemType == JBDConstants.ITEM_TYPE_EVENT ? url = jbdUtils.getAjaxUrl("getSearchFilter", "events") : this.props.itemType == JBDConstants.ITEM_TYPE_OFFER ? url = jbdUtils.getAjaxUrl("getSearchFilter", "offers") : this.props.itemType == JBDConstants.ITEM_TYPE_REQUEST_QUOTE && (url = jbdUtils.getAjaxUrl("getSearchFilter", "requestquotes")), url = url + "&_c=" + 10 * Math.random() + "&reload=1", fetch(url, {
headers: {
"Cache-Control": "no-cache, no-store, must-revalidate",
Pragma: "no-cache",
Expires: 0
}
}).then(function(res) {
if (res.status >= 400) throw new Error("Server responded with error!");
return res.json()
}).then(function(response) {
_this2.setFilterData(response)
}, function(err) {
_this2.setState({
err: err,
isLoading: !1
})
})
}
}, {
key: "componentDidMount",
value: function() {
this.fetchData()
}
}, {
key: "setFilterData",
value: function(response) {
var searchFilter = null;
if (null != response.data.searchFilter)
for (var key in searchFilter = [], response.data.searchFilter)
if (response.data.searchFilter.hasOwnProperty(key)) {
var row = [];
for (var keyj in response.data.searchFilter[key]) row[keyj] = response.data.searchFilter[key][keyj];
searchFilter[key] = row
} this.setState({
radius: response.data.radius,
location: response.data.location,
searchFilter: searchFilter,
category: response.data.category,
categoryId: void 0 !== response.data.categoryId ? response.data.categoryId : null,
categorySearch: void 0 !== response.data.categorySearch ? response.data.categorySearch : null,
selectedCategories: response.data.selectedCategories,
selectedParams: response.data.selectedParams,
filterMonths: void 0 !== response.data.filterMonths ? response.data.filterMonths : null,
startDate: void 0 !== response.data.startDate ? response.data.startDate : null,
endDate: void 0 !== response.data.endDate ? response.data.endDate : null,
onlyLocal: void 0 !== response.data.onlyLocal ? response.data.onlyLocal : null,
searchKeyword: void 0 !== response.data.searchKeyword ? response.data.searchKeyword : null,
customAttributesValues: void 0 !== response.data.customAttributesValues ? response.data.customAttributesValues : null,
zipCode: void 0 !== response.data.zipCode ? response.data.zipCode : null,
isLoading: !1
}), jbdUtils.moveMap(), jbdUtils.getProperty("move-search-filter")
}
}, {
key: "render",
value: function() {
return this.state.isLoading ? React.createElement(Loading, null) : React.createElement("div", null, 1 == this.props.searchFilterType ? React.createElement(SearchFilterHorizontal, {
fetchData: this.fetchData,
searchKeyword: this.state.searchKeyword,
radius: this.state.radius,
location: this.state.location,
searchFilter: this.state.searchFilter,
category: this.state.category,
categorySearch: this.state.categorySearch,
categoryId: this.state.categoryId,
selectedCategories: this.state.selectedCategories,
selectedParams: this.state.selectedParams,
customAttributesValues: this.state.customAttributesValues,
zipCode: this.state.zipCode,
itemType: this.props.itemType,
startDate: this.state.startDate,
endDate: this.state.endDate,
onlyLocal: this.state.onlyLocal
}) : null, 3 == this.props.searchFilterType && 1 == this.props.itemType && React.createElement(SearchFilterHorizontalCat, {
searchKeyword: this.state.searchKeyword,
radius: this.state.radius,
location: this.state.location,
searchFilter: this.state.searchFilter,
category: this.state.category,
categorySearch: this.state.categorySearch,
categoryId: this.state.categoryId,
selectedCategories: this.state.selectedCategories,
selectedParams: this.state.selectedParams,
customAttributesValues: this.state.customAttributesValues,
zipCode: this.state.zipCode,
itemType: this.props.itemType
}), 1 == this.props.showSearchFilterParams ? React.createElement(SearchFilterParams, {
searchKeyword: this.state.searchKeyword,
radius: this.state.radius,
location: this.state.location,
searchFilter: this.state.searchFilter,
filterType: this.props.searchFilterType,
category: this.state.category,
categorySearch: this.state.categorySearch,
categoryId: this.state.categoryId,
selectedCategories: this.state.selectedCategories,
selectedParams: this.state.selectedParams,
customAttributesValues: this.state.customAttributesValues,
zipCode: this.state.zipCode,
itemType: this.props.itemType,
startDate: this.state.startDate,
endDate: this.state.endDate,
onlyLocal: this.state.onlyLocal
}) : null, 2 == this.props.searchFilterType ? React.createElement(SearchFilterVertical, {
filterType: this.props.searchFilterType,
radius: this.state.radius,
location: this.state.location,
searchFilter: this.state.searchFilter,
category: this.state.category,
categorySearch: this.state.categorySearch,
categoryId: this.state.categoryId,
selectedCategories: this.state.selectedCategories,
selectedParams: this.state.selectedParams,
filterMonths: this.state.filterMonths,
startDate: this.state.startDate,
itemType: this.props.itemType
}) : null)
}
}]), SearchFilter
}(React.Component);
function _typeof(obj) {
"@babel/helpers - typeof";
return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
})(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function")
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function");
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: !0,
configurable: !0
}
}), superClass && _setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
return o.__proto__ = p, o
})(o, p)
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function() {
var result, Super = _getPrototypeOf(Derived);
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget)
} else result = Super.apply(this, arguments);
return _possibleConstructorReturn(this, result)
}
}
function _possibleConstructorReturn(self, call) {
return !call || "object" !== _typeof(call) && "function" != typeof call ? _assertThisInitialized(self) : call
}
function _assertThisInitialized(self) {
if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return self
}
function _isNativeReflectConstruct() {
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ("function" == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), !0
} catch (e) {
return !1
}
}
function _getPrototypeOf(o) {
return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
return o.__proto__ || Object.getPrototypeOf(o)
})(o)
}
var Loading = function(_React$Component) {
_inherits(Loading, _React$Component);
var _super = _createSuper(Loading);
function Loading(props) {
return _classCallCheck(this, Loading), _super.call(this, props)
}
return _createClass(Loading, [{
key: "render",
value: function() {
var loaderUrl = jbdUtils.getProperty("assetsUrl") + "images/loading-search.gif";
return React.createElement("div", {
className: "search-loading"
}, React.createElement("img", {
src: loaderUrl,
alt: "loading..."
}))
}
}]), Loading
}(React.Component);