jQuery(function ($) {
matriz.ui = matriz.ui || {};
matriz.ui.init = {
beforeunload: function () {
$("form[data-matriz-warn-onunload]").each(function (index, el) {
var $form = $(el);
$form.data("serialized-form", $form.serialize());
window.onbeforeunload = function (e) {
e = e || window.event;
if ($form.data("serialized-form") !== $form.serialize()) {
var mensagem = "Qualquer informação não salva será perdida. Deseja prosseguir?";
e.returnValue = mensagem;
return mensagem;
}
};
});
},
datepicker: function ($el) {
if (!($el instanceof jQuery)) {
$el = $(".input-group.date");
}
var language = "pt-BR";
if (matriz.global.theme.uri !== "/themes/admin") {
language = $("html").attr("lang");
}
//inicializa o datepicker
//http://eternicode.github.io/bootstrap-datepicker
$el.datepicker({
autoclose: true,
language: language,
keyboardNavigation: false,
forceParse: false,
todayHighlight: true,
orientation: "top auto"
}).on("changeDate", function () {
});
},
geolocation: function () {
matriz.geolocation.init();
},
loading: function () {
matriz.ui.loading.init();
},
mask: function () {
$("[data-mask]").each(function () {
var mask = $(this).attr("data-mask");
$(this).mask(mask);
});
},
//Inicializa bootstrap-maxlength (http://mimo84.github.io/bootstrap-maxlength/)
maxlength: function (selector, options) {
if (!options) {
options = {
alwaysShow: true,
warningClass: "matriz__counter-ok",
limitReachedClass: "matriz__counter-limit",
twoCharLinebreak: false
};
}
if (selector) {
$(selector).maxlength(options);
} else {
$('.form-group input.form-control[maxlength]').maxlength(options);
$('.form-group textarea.form-control[maxlength]').maxlength(options);
}
},
combobox: function () {
var $matrizUiCombobox = $('select.matriz-ui-combobox');
$matrizUiCombobox.selectpicker();
$matrizUiCombobox.filter('[required]').addClass('matriz-ui-combobox-required').css("display", "inline-block");
},
tabs: function () {
//desabilitando clique nas abas com
$("ul.nav-tabs li.disabled a").off("click");
$("ul.nav-tabs li.disabled a").on("click", function (e) {
return false;
});
},
searchbox: function () {
$("#formBuscaNav [name='search']").on("click", function (e) {
$searchText = $(this);
$searchText.get(0).setSelectionRange(0, $searchText.val().length);
});
},
tristatecheckbox: function ($selector) {
matriz.ui.tristatecheckbox.init($selector);
},
modal: function ($container)
{
matriz.ui.init.datepicker();
matriz.ui.init.mask();
matriz.ui.init.maxlength();
matriz.ui.init.combobox();
matriz.ui.init.tabs();
//matriz.ui.init.geolocation();
//matriz.ui.loading.init();
},
notImplementedActions: function () {
/**
* Código removido, uma vez que o atributo "data-matriz-not-implemented-action"
* não é mais usado e o uso do DOMSubTreeModification estva causando
* lentidão na execução do script
*/
},
player: function () {
$(".matriz-media-player").each(function () {
$(this).matrizMediaPlayer();
});
},
components: function () {
matriz.ui.component.Manager.init();
},
void: function () {
$("[data-matriz-void]").on("click", function (e) {
e.preventDefault();
});
},
blueimp: function() {
preparaBlueImpLightbox(".artigo__ilustracao", "#galeria-lightbox");
preparaBlueImpLightbox(".artigo__ilustracao--esquerda", "#galeria-lightbox");
preparaBlueImpLightbox(".artigo__ilustracao--direita", "#galeria-lightbox");
preparaBlueImpLightbox(".artigo__ilustracao--carousel .owl-carousel", "#galeria-lightbox");
// prepara o lightbox para conteudolistaimagem
preparaBlueImpLightbox(".thumbs-gallery", "#galeria-lightbox");
// prepara o lightbox para carrousel de galerias de imagem thumb
preparaBlueImpLightbox(".conteudoimagem-mini-galeria", "#galeria-lightbox");
},
owl: function() {
$(".textmidia-image-carousel, .conteudovideo-mini-galeria, .conteudoimagem-mini-galeria").each((function(k, e) {
preparaOWL(e);
}).bind(this));
},
common: function () {
matriz.ui.init.datepicker();
matriz.ui.init.mask();
matriz.ui.init.maxlength();
matriz.ui.init.combobox();
matriz.ui.init.tabs();
matriz.ui.init.loading();
matriz.ui.init.player();
matriz.ui.init.components();
matriz.ui.init.void();
},
all: function () {
// matriz.ui.init.beforeunload();
matriz.ui.init.datepicker();
matriz.ui.init.geolocation();
matriz.ui.init.mask();
matriz.ui.init.maxlength();
matriz.ui.init.combobox();
matriz.ui.init.tabs();
matriz.ui.init.searchbox();
matriz.ui.init.loading();
matriz.ui.init.notImplementedActions();
matriz.ui.init.player();
matriz.ui.init.components();
matriz.ui.init.void();
matriz.common.events.trigger("matriz.ui.init.all");
}
};
matriz.ui.geolocation = {};
matriz.ui.geolocation.getGeoObjectByName = function (name, obj) {
if (name) {
var nameParts = name.split("."), len = nameParts.length, tmpobj = obj;
for (var i = 0; i < len; i++) {
if (!tmpobj[nameParts[i]]) {
tmpobj[nameParts[i]] = {};
}
tmpobj = tmpobj[nameParts[i]];
}
return tmpobj;
}
};
matriz.ui.geolocation.init = function ()
{
//tratamento para select
$("select").each(function () {
var $el = $(this);
matriz.common.events.on("matriz.externalapis.google.maps.ready", function () {
var geolocalizacaoName = $el.attr("data-matriz-geolocation-value");
var geolocalizacaoValue = matriz.ui.geolocation.getGeoObjectByName(geolocalizacaoName, matriz.geolocation.data);
if (geolocalizacaoName && geolocalizacaoValue) {
$el.children("[value='" + geolocalizacaoValue + "']").attr("selected", true);
}
});
});
//tratamento para textbox, hidden, radio e checkbox
$("input").each(function () {
var geolocalizacaoName = $(this).attr("data-matriz-geolocation-value");
if (geolocalizacaoName && matriz.geolocation.data[geolocalizacaoName])
{
switch ($(this).attr("type"))
{
case "checkbox":
case "radio":
if ($(this).val() === matriz.geolocation.data[geolocalizacaoName])
$(this).attr("checked", "checked");
break;
case "text":
case "hidden":
$(this).val(matriz.geolocation.data[geolocalizacaoName]);
break;
}
}
});
$('.matriz-ui-combobox').selectpicker("refresh");
};
matriz.ui.loading = {};
matriz.ui.loading.init = function ()
{
$('#modalLoading').hide();
$('#modalLoading').modal({backdrop: "static", show: false});
};
matriz.ui.loading.modal = {};
matriz.ui.loading.modal.show = function ()
{
$('#modalLoading').show();
};
matriz.ui.loading.modal.hide = function ()
{
$('#modalLoading').hide();
};
matriz.ui.loading.element = {};
matriz.ui.loading.element.show = function (el, keepChildrenShowing) {
if (!keepChildrenShowing) {
el.children().hide();
}
el.append($("").addClass("matriz-loading-clock"));
};
matriz.ui.loading.element.hide = function (el, keepChildrenHidden) {
if (!keepChildrenHidden) {
el.children().show();
}
el.find(".matriz-loading-clock").remove();
};
matriz.ui.loadImage = function (imgsrc) {
var deferred = $.Deferred();
var img = new Image();
img.addEventListener("load", function () {
deferred.resolve(img);
});
img.addEventListener("error", function () {
deferred.reject(new Error("O endereço ".concat(imgsrc).concat(" parece não conter uma imagem válida.")));
});
img.src = imgsrc;
return deferred.promise();
};
matriz.ui.textsearch = {
init: function (searchboxSelector, trsSelector) {
$(searchboxSelector).keyup(function () {
var inputTextValue = $(this).val().toLowerCase();
$(trsSelector).each(function () {
var encontrou = false;
$(this).find("td").each(function () {
if ($(this).text().toLowerCase().indexOf(inputTextValue) > -1) {
encontrou = true;
}
});
if (!encontrou) {
$(this).hide();
} else {
$(this).show();
}
});
});
}
};
function preparaOWL(container) {
$(container).owlCarousel({
items: 4, //10 items above 1000px browser width
itemsDesktop: [1200, 3], //5 items between 1200px and 901px
itemsDesktopSmall: [900, 3], // between 900px and 601px
itemsTablet: [600, 2], //2 items between 600 and 480
itemsMobile: [479, 1], // 1 item between 479 and 0
pagination: false
});
var owl = $(container).data('owlCarousel');
$(container).parent().find(".next").click(function() {
owl.next();
});
$(container).parent().find(".prev").click(function() {
owl.prev();
});
};
function preparaBlueImpLightbox(seletor, container, callback) {
$(seletor).each(function() {
if ($(container).length === 0) {
container = container.concat($(this).attr("id"));
}
$(this).on("click", function(event) {
if (["img", "a"].indexOf(event.target.tagName.toLowerCase()) !== -1) {
event = event || window.event;
var target = event.target || event.srcElement;
var link = target.src ? target.parentNode : target;
var options = {
container: container,
index: link,
event: event,
preloadRange: 1,
continuous: false,
onslide: function(index, slide) {
if (callback instanceof Function) {
callback.call(this, index, slide);
}
var titulo = this.list[index].getAttribute('title');
if (!titulo) {
titulo = this.list[index].getAttribute('data-legenda');
}
var node_titulo = this.container.find(".imagem-detalhe__titulo");
$(node_titulo).html(titulo);
var node_link = $(this.container.find(".imagem-detalhe__link")).find("a");
if (node_link) {
var urlAmigavel = this.list[index].getAttribute("data-urlamigavel");
if (urlAmigavel) {
$(node_link).attr("href", urlAmigavel);
} else {
node_link.remove();
}
}
var credito = this.list[index].getAttribute("data-credito");
var node_credito = this.container.find(".imagem-detalhe__credito");
if (credito) {
var label_credito = this.list[index].getAttribute("data-label-credito");
$(node_credito).html(label_credito + credito);
} else {
$(node_credito).html("");
}
}
};
var elements = this.getElementsByTagName('a');
var itens = [];
for(var i = 0; i < elements.length; i++) {
itens.push(elements[i]);
}
window.v = blueimp.Gallery(itens, options);
}
});
});
};
});