/**
* @namespace WPGMZA
* @module ModernStoreLocator
* @requires WPGMZA
*/
(function($) {
/**
* The new modern look store locator. It takes the elements
* from the default look and moves them into the map, wrapping
* in a new element so we can apply new styles.
* @return Object
*/
WPGMZA.ModernStoreLocator = function(map_id)
{
var self = this;
var original;
WPGMZA.assertInstanceOf(this, "ModernStoreLocator");
if(WPGMZA.isProVersion())
original = $(".wpgmza_sl_search_button[mid='" + map_id + "']").closest(".wpgmza_sl_main_div");
else
original = $(".wpgmza_sl_search_button").closest(".wpgmza_sl_main_div");
if(!original.length)
return;
// Build / re-arrange elements
this.element = $("<div class='wpgmza-modern-store-locator'><div class='wpgmza-inner wpgmza-modern-hover-opaque'/></div>")[0];
var inner = $(this.element).find(".wpgmza-inner");
var titleSearch = $(original).find("[id='nameInput_" + map_id + "']");
if(titleSearch.length)
{
var placeholder = wpgmaps_localize[map_id].other_settings.store_locator_name_string;
if(placeholder && placeholder.length)
titleSearch.attr("placeholder", placeholder);
inner.append(titleSearch);
}
var addressInput;
if(WPGMZA.isProVersion())
addressInput = $(original).find(".addressInput");
else
addressInput = $(original).find("#addressInput");
if(wpgmaps_localize[map_id].other_settings.store_locator_query_string && wpgmaps_localize[map_id].other_settings.store_locator_query_string.length)
addressInput.attr("placeholder", wpgmaps_localize[map_id].other_settings.store_locator_query_string);
inner.append(addressInput);
inner.append($(original).find("select.wpgmza_sl_radius_select"));
// inner.append($(original).find(".wpgmza_filter_select_" + map_id));
// Buttons
this.searchButton = $(original).find( ".wpgmza_sl_search_button" );
inner.append(this.searchButton);
this.resetButton = $(original).find( ".wpgmza_sl_reset_button_div" );
inner.append(this.resetButton);
this.resetButton.hide();
if(WPGMZA.isProVersion())
{
this.searchButton.on("click", function(event) {
if($("addressInput_" + map_id).val() == 0)
return;
self.searchButton.hide();
self.resetButton.show();
});
this.resetButton.on("click", function(event) {
self.resetButton.hide();
self.searchButton.show();
});
}
// Distance type
inner.append($("#wpgmza_distance_type_" + map_id));
// Categories
var container = $(original).find(".wpgmza_cat_checkbox_holder");
var ul = $(container).children("ul");
var items = $(container).find("li");
var numCategories = 0;
//$(items).find("ul").remove();
//$(ul).append(items);
var icons = [];
items.each(function(index, el) {
var id = $(el).attr("class").match(/\d+/);
for(var category_id in wpgmza_category_data) {
if(id == category_id) {
var src = wpgmza_category_data[category_id].image;
var icon = $('<div class="wpgmza-chip-icon"/>');
icon.css({
"background-image": "url('" + src + "')",
"width": $("#wpgmza_cat_checkbox_" + category_id + " + label").height() + "px"
});
icons.push(icon);
if(src != null && src != ""){
//$(el).find("label").prepend(icon);
$("#wpgmza_cat_checkbox_" + category_id + " + label").prepend(icon);
}
numCategories++;
break;
}
}
});
$(this.element).append(container);
if(numCategories) {
this.optionsButton = $('<span class="wpgmza_store_locator_options_button"><i class="fas fa-list"></i></span>');
$(this.searchButton).before(this.optionsButton);
}
setInterval(function() {
icons.forEach(function(icon) {
var height = $(icon).height();
$(icon).css({"width": height + "px"});
$(icon).closest("label").css({"padding-left": height + 8 + "px"});
});
$(container).css("width", $(self.element).find(".wpgmza-inner").outerWidth() + "px");
}, 1000);
$(this.element).find(".wpgmza_store_locator_options_button").on("click", function(event) {
if(container.hasClass("wpgmza-open"))
container.removeClass("wpgmza-open");
else
container.addClass("wpgmza-open");
});
// Remove original element
$(original).remove();
// Event listeners
$(this.element).find("input, select").on("focus", function() {
$(inner).addClass("active");
});
$(this.element).find("input, select").on("blur", function() {
$(inner).removeClass("active");
});
}
WPGMZA.ModernStoreLocator.createInstance = function(map_id)
{
if(WPGMZA.settings.engine == "google-maps")
return new WPGMZA.GoogleModernStoreLocator(map_id);
else
return new WPGMZA.OLModernStoreLocator(map_id);
}
})(jQuery);