(function (window, document) { "use strict"; var api = window.SIGBitacora = window.SIGBitacora || {}; window.SIGBitacoraFeed = api; function hasClass(element, className) { return element && element.classList && element.classList.contains(className); } function findToggle(element, container) { var current = element; while (current && current !== container) { if (hasClass(current, "js-sig-bitacora-toggle")) { return current; } current = current.parentNode; } return null; } function getControlledPanel(toggle, container) { var panelId = toggle.getAttribute("aria-controls"); var panel; if (!panelId) { return null; } panel = document.getElementById(panelId); if (!panel || !hasClass(panel, "sig-bitacora-details") || !container.contains(panel)) { return null; } return panel; } function setExpanded(toggle, panel, expanded) { var label = toggle.querySelector( ".sig-bitacora-detail-toggle-label"); toggle.setAttribute( "aria-expanded", expanded ? "true" : "false"); toggle.setAttribute( "title", expanded ? "Ocultar el detalle del movimiento" : "Mostrar el detalle del movimiento"); if (label) { label.textContent = expanded ? "Ocultar detalle" : "Ver detalle"; } panel.hidden = !expanded; panel.setAttribute( "aria-hidden", expanded ? "false" : "true"); } function toggleDetails(toggle, container) { var panel = getControlledPanel(toggle, container); var expanded; if (!panel) { return; } expanded = toggle.getAttribute("aria-expanded") === "true"; setExpanded(toggle, panel, !expanded); } function isActivationKey(event) { var key = event.key; var keyCode = event.which || event.keyCode; return key === "Enter" || key === " " || key === "Spacebar" || keyCode === 13 || keyCode === 32; } function hasNativeKeyboardActivation(element, event) { var tagName = element.tagName; var key = event.key; var keyCode = event.which || event.keyCode; if (tagName === "BUTTON" || tagName === "INPUT") { return true; } return tagName === "A" && element.hasAttribute("href") && (key === "Enter" || keyCode === 13); } function synchronizeToggle(toggle, container) { var panel = getControlledPanel(toggle, container); var ariaExpanded; var expanded; if (!panel) { toggle.setAttribute("aria-expanded", "false"); return; } ariaExpanded = toggle.getAttribute("aria-expanded"); if (ariaExpanded === "true") { expanded = true; } else if (ariaExpanded === "false") { expanded = false; } else { expanded = !panel.hidden; } setExpanded(toggle, panel, expanded); } function initializeContainer(container) { var toggles; var index; if (container.getAttribute( "data-sig-bitacora-initialized") === "1") { return; } toggles = container.querySelectorAll( ".js-sig-bitacora-toggle"); for (index = 0; index < toggles.length; index += 1) { synchronizeToggle(toggles[index], container); } container.addEventListener("click", function (event) { var toggle = findToggle(event.target, container); if (!toggle) { return; } toggleDetails(toggle, container); }); container.addEventListener("keydown", function (event) { var toggle = findToggle(event.target, container); if (!toggle || !isActivationKey(event) || event.repeat || hasNativeKeyboardActivation(toggle, event)) { return; } event.preventDefault(); toggleDetails(toggle, container); }); container.setAttribute( "data-sig-bitacora-initialized", "1"); } function collectContainers(root) { var containers = []; var descendants; var index; if (!root) { return containers; } if (root.nodeType === 1 && hasClass(root, "js-sig-bitacora")) { containers.push(root); } if (!root.querySelectorAll) { return containers; } descendants = root.querySelectorAll( ".js-sig-bitacora:not([data-sig-bitacora-initialized=\"1\"])"); for (index = 0; index < descendants.length; index += 1) { containers.push(descendants[index]); } return containers; } api.initialize = function (root) { var containers = collectContainers(root || document); var index; for (index = 0; index < containers.length; index += 1) { initializeContainer(containers[index]); } }; api.collapseAll = function (containerReference) { var container = typeof containerReference === "string" ? document.querySelector(containerReference) : containerReference; var toggles; var panel; var index; if (!container || !hasClass(container, "js-sig-bitacora")) { return; } toggles = container.querySelectorAll( ".js-sig-bitacora-toggle"); for (index = 0; index < toggles.length; index += 1) { panel = getControlledPanel(toggles[index], container); if (panel) { setExpanded(toggles[index], panel, false); } } }; if (window.SIG_BITACORA_INITIALIZATION_BRIDGE_REGISTERED !== true) { window.SIG_BITACORA_INITIALIZATION_BRIDGE_REGISTERED = true; if (window.Sys && Sys.Application) { Sys.Application.add_load(function () { api.initialize(document); }); } else if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function () { api.initialize(document); }); } else { api.initialize(document); } } }(window, document));