Ir directamente al contenido
Muy Pronto:
¡Ofertas Black Friday!
Únete al club VIP
Se acerca Black Friday, únete al club VIP y aprovecha las mejores ofertas del año.
Por primera vez, empezamos DÍAS ANTES del Día de Acción de Gracias. TODO estará en oferta.
Regístrate ahora mismo y no te lo pierdas.
↓
Enter your discount code here
✔️ Discount code found, it will be applied at checkout.
';
customContents["coming soon:\u003cbr\u003eblack friday sale!".trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ")] = 'Muy Pronto:
¡Ofertas Black Friday!';
customContents["join as a vip".trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ")] = 'Únete al club VIP';
customContents["with black friday almost upon us, join the vip club and get ready to enjoy the biggest sale of the year.".trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ")] = 'Se acerca Black Friday, únete al club VIP y aprovecha las mejores ofertas del año.';
customContents["for the first time, it's starting days before thanksgiving. everything in our store will be on sale for the holidays.".trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ")] = 'Por primera vez, empezamos DÍAS ANTES del Día de Acción de Gracias. TODO estará en oferta.';
customContents["sign up right now so you don’t miss this.\u003cbr\u003e↓\u003cbr\u003e".trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ")] = 'Regístrate ahora mismo y no te lo pierdas.
↓
';
// Images Section
langify.locale = langify.locale || {
primary: false,
iso_code: "es",
root_url: "\/es",
language_id: "ly117812",
languages: [{
iso_code: "en",
root_url: "\/",
language_id: "ly26881",
domain: "",
},{
iso_code: "es",
root_url: "\/es",
language_id: "ly117812",
domain: "",
},
],
};
function isIE() {
ua = navigator.userAgent;
var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
return is_ie;
}
if (!isIE()){
// Disable link correction ALWAYS on languages with mapped domains
if(langify.locale.languages.find(x => x.iso_code === "es" && x.domain !== '' )) {
langify.settings.observeLinks = false;
}
var langifyObserverCore = function() {
var observedNodes = [];
var intersectionObs = null;
var mutationObs = null;
var mutationObsConfig = {
characterData: true,
characterDataOldValue: true,
attributes: true,
attributeOldValue: true,
childList: true,
subtree: true,
};
function init() {
if(langify.settings.observe) {
spreadCustomContents();
if (window.MutationObserver) {
if (langify.settings.lazyload && window.IntersectionObserver) {
startIntersectionObserver();
} else {
startMutationObserver(null);
}
} else {
startMutationEvents();
}
}
}
// Intersection Observer
function startIntersectionObserver() {
intersectionObs = new IntersectionObserver(callbackIntersectionChange);
var elementNodes = document.getElementsByClassName('shopify-section');
Array.prototype.slice.call(elementNodes).forEach(function(node) {
intersectionObs.observe(node);
});
}
function callbackIntersectionChange(intersections) {
intersections.forEach(function(intersection) {
var target = intersection.target;
var targetIsIntersecting = Boolean(target.getAttribute('ly-is-intersecting') === "true" ? true : false);
if(typeof targetIsIntersecting == 'undefined' || targetIsIntersecting == null) {
target.setAttribute('ly-is-intersecting', intersection.isIntersecting);
targetIsIntersecting = intersection.isIntersecting;
}
// On Screen
if(targetIsIntersecting == false && intersection.isIntersecting == true) {
if(!target.getAttribute('ly-is-observing')) {
startMutationObserver(target);
intersectionObs.unobserve(target);
// As the mutation observer didn't see the "add" of the elememts, trigger the initial translation manually
var elementNodes = getNodesUnder(target, 'SHOW_ELEMENT');
var textNodes = getNodesUnder(target, 'SHOW_TEXT');
var nodes = elementNodes.concat(textNodes);
nodes.forEach(function(node) {
translate(node, 'mutation -> childList');
});
}
}
// Off Screen
//else if(targetIsIntersecting == true && intersection.isIntersecting == false) {
// stopMutationObserver(target);
//}
target.setAttribute('ly-is-intersecting', intersection.isIntersecting);
});
}
// Mutation Observer
function startMutationObserver(observerTarget) {
if (!observerTarget) {
var target = document.documentElement || document.body; // main window
} else {
if (observerTarget.nodeName === 'IFRAME') {
var target = observerTarget.contentDocument || observerTarget.contentWindow.document; // iframe
} else {
var target = observerTarget;
}
}
mutationObs = new MutationObserver(callbackDomChange);
mutationObs.observe(target, mutationObsConfig);
observedNodes.push(target);
try { target.setAttribute('ly-is-observing', 'true'); } catch(e) {}
}
function stopMutationObserver(target) {
if(observedNodes.indexOf(target) > -1) {
observedNodes.splice(observedNodes.indexOf(target), 1);
}
var mutations = mutationObs.takeRecords();
mutationObs.disconnect();
observedNodes.forEach(node => {
mutationObs.observe(node, mutationObsConfig);
});
try { target.removeAttribute('ly-is-observing'); } catch(e) {}
}
function callbackDomChange(mutations, mutationObs) {
for (var i = 0, length = mutations.length; i < length; i++) {
var mutation = mutations[i];
var target = mutation.target;
// Links-Hook
if (mutation.type === 'attributes' && (mutation.attributeName === 'href' || mutation.attributeName === 'action')) {
var target = mutation.target;
translateLink(target.getAttribute(mutation.attributeName), target);
}
// Images-Hook
else if (mutation.type === 'attributes' && (mutation.attributeName === 'src' || mutation.attributeName === 'data-src' || mutation.attributeName === 'srcset' || mutation.attributeName === 'data-srcset')) {
translateImage(target, mutation.attributeName);
}
else if (mutation.type === 'attributes' && mutation.attributeName === 'style') {
translateCssImage(target);
}
// Subtree Events
else if (mutation.type === 'childList') {
// Added Nodes
if(mutation.addedNodes.length > 0) {
var elementNodes = getNodesUnder(mutation.target, 'SHOW_ELEMENT');
var textNodes = getNodesUnder(mutation.target, 'SHOW_TEXT');
var nodes = elementNodes.concat(textNodes);
nodes.forEach(function(node) {
translate(node, 'mutation -> childList');
});
}
}
// CharacterData Events
else if (mutation.type === 'characterData') {
var target = mutation.target;
translate(target, 'mutation -> characterData');
}
}
}
function translate(node, info) {
if((node.nodeType === 1 && node.hasAttribute('data-ly-locked')) || (node.nodeType === 3 && node.parentNode && node.parentNode.hasAttribute('data-ly-locked'))) {
return;
}
// CC-Hook
if (node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE') {
if (node.nodeType === 3) {
translateTextNode(node, info);
}
translateNodeAttrs(node);
}
// Links-Hook
if (node.nodeName === 'A' || node.nodeName === 'FORM') {
if(node.hasAttribute('href')) var attrName = 'href';
else var attrName = 'action';
var url = node.getAttribute(attrName);
translateLink(url, node);
}
// Images-Hook
if (node.nodeName === 'IMG' || node.nodeName === 'SOURCE') {
translateImage(node, ['src', 'data-src', 'srcset', 'data-srcset']);
}
if (node.attributes && node.getAttribute('style')) {
translateCssImage(node);
}
// Iframe Observation
if (node.nodeName === 'IFRAME') {
// Todo: handle srcdoc iframe content observing
if (node.getAttribute('ly-is-observing') == null && node.getAttribute('src') == null && !node.hasAttribute('srcdoc')) {
node.setAttribute('ly-is-observing', 'true');
startMutationObserver(node);
}
}
}
function translateNodeAttrs(node) {
if(Object.keys(customContents_attr).length > 0) {
}
}
var mutationCount = 0;
function translateTextNode(node, info) {
if(langify.settings.observeCustomContents === false || !node.textContent || node.textContent.trim().length === 0) {
return;
}
var src = node.textContent.trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ").toLowerCase();
if(customContents_text[src] && node.textContent !== customContents_text[src]) {
var newContent = node.textContent.replace(node.textContent.trim(), customContents_text[src]);
if (newContent != node.textContent) {
if(!node.parentNode.hasAttribute('data-ly-mutation-count') || parseInt(node.parentNode.getAttribute('data-ly-mutation-count')) < langify.settings.maxMutations) {
var count = node.parentNode.hasAttribute('data-ly-mutation-count') ? parseInt(node.parentNode.getAttribute('data-ly-mutation-count')) : 0;
node.parentNode.setAttribute('data-ly-mutation-count', count+1);
node.textContent = newContent;
mutationCount = mutationCount + 1;
log('REPLACED (TEXT)', {
oldValue: src,
newValue: customContents_text[src],
mutationCount,
}, 'success'
);
var event = new CustomEvent('langify.observer.aftertranslatetext', {
bubbles: true,
detail: {
target: node,
original: src,
translation: customContents_text[src]
}
});
node.dispatchEvent(event);
}
}
}
}
function translateLink(url, node) {
if(langify.settings.observeLinks === false || node.hasAttribute('data-ly-locked') || !url || (url.indexOf('mailto:') !== -1 || url.indexOf('javascript:') !== -1 || url.indexOf('tel:') !== -1 || url.indexOf('file:') !== -1 || url.indexOf('ftp:') !== -1 || url.indexOf('sms:') !== -1 || url.indexOf('market:') !== -1 || url.indexOf('fax:') !== -1 || url.indexOf('callto:') !== -1 || url.indexOf('ts3server:') !== -1)) {
return;
}
var isLocalized = (url.indexOf('/'+"es"+'/') === 0 || url === '/'+"es" || url.indexOf('/'+"es"+'/') === 0 || url === '/'+"es");
var link = url.replace("https:\/\/offernova.com", '').replace(/\/es\//gi, '/');
var isUrlAbsolute = (link.indexOf('://') > 0 || link.indexOf('//') === 0);
var blacklist = ['#'].concat(langify.settings.linksBlacklist);
var isUrlBlacklisted = blacklist.find(x => url.indexOf(x) === 0);
if(!isLocalized && !isUrlAbsolute && !isUrlBlacklisted && "\/es" != '/') {
if(node.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action';
if(link === '/' || link == "\/es") link = '';
var newLink = "\/es" + link;
var timeStamp = Math.floor(Date.now());
if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) {
node.setAttribute('data-ly-processed', timeStamp);
node.setAttribute(attrName, newLink);
if(node.hasAttribute('data-'+attrName)) node.setAttribute('data-'+attrName, newLink);
mutationCount = mutationCount + 1;
log('REPLACED (LINK)', {
attrName,
oldValue: url,
newValue: newLink,
mutationCount,
}, 'success'
);
var event = new CustomEvent('langify.observer.aftertranslatelink', {
bubbles: true,
detail: {
target: node,
attribute: attrName,
original: url,
translation: newLink
}
});
node.dispatchEvent(event);
}
}
}
function translateImage(node, attr) {
if(langify.settings.observeImages === false || node.hasAttribute('data-ly-locked') || Object.keys(customContents_image).length === 0) {
return
}
var attrs = [];
if(typeof attr === 'string') attrs.push(attr);
else if(typeof attr === 'object') attrs = attr;
attrs.forEach(function(attr) {
if(node.hasAttribute(attr)) {
var imgObject = langify.helper.extractImageObject(node.getAttribute(attr));
var imgKey = imgObject ? imgObject.file.toLowerCase() : '';
if(customContents_image[imgKey]) {
// Replace
var oldValue = node.getAttribute(attr);
var translation = node.getAttribute(attr);
translation = translation.replace(new RegExp(imgObject.host, 'g'), customContents_image[imgKey].host);
translation = translation.replace(new RegExp(imgObject.name, 'g'), customContents_image[imgKey].name);
translation = translation.replace(new RegExp(imgObject.type, 'g'), customContents_image[imgKey].type);
if(node.getAttribute(attr) != translation) {
var timeStamp = Math.floor(Date.now());
if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) {
node.setAttribute('data-ly-processed', timeStamp);
node.setAttribute(attr, translation);
mutationCount = mutationCount + 1;
log('REPLACED (IMAGE)', {
attrName: attr,
oldValue: oldValue,
newValue: translation,
mutationCount,
}, 'success');
var event = new CustomEvent('langify.observer.aftertranslateimage', {
bubbles: true,
detail: {
target: node,
attribute: attr,
original: oldValue,
translation: translation
}
});
node.dispatchEvent(event);
}
}
}
}
});
}
function translateCssImage(node) {
if(langify.settings.observeImages === false || node.hasAttribute('data-ly-locked') || Object.keys(customContents_image).length === 0 || !node.getAttribute('style')) {
return
}
var imgMatches = node.getAttribute('style').match(/url\(("|')?(.*)("|')?\)/gi);
if(imgMatches !== null) {
var imgSource = imgMatches[0].replace(/url\(("|')?|("|')?\)/, '');
var imgObject = langify.helper.extractImageObject(imgSource);
var imgKey = imgObject ? imgObject.file.toLowerCase() : '';
var attr = 'style';
if(customContents_image[imgKey]) {
// Replace
var translation = node.getAttribute(attr);
translation = translation.replace(new RegExp(imgObject.host, 'g'), customContents_image[imgKey].host);
translation = translation.replace(new RegExp(imgObject.name, 'g'), customContents_image[imgKey].name);
translation = translation.replace(new RegExp(imgObject.type, 'g'), customContents_image[imgKey].type);
if(node.getAttribute(attr) != translation) {
var timeStamp = Math.floor(Date.now());
if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) {
node.setAttribute('data-ly-processed', timeStamp);
node.setAttribute(attr, translation);
mutationCount = mutationCount + 1;
}
}
}
}
}
function findAndLocalizeLinks(target, parent) {
if(target.parentNode && parent) var allLinks = target.parentElement.querySelectorAll('[href],[action]');
else var allLinks = target.querySelectorAll('[href],[action]');
allLinks.forEach(link => {
if(link.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action';
var url = link.getAttribute(attrName);
translateLink(url, link);
});
}
function getNodesUnder(el, show){
var n, a=[], walk=document.createTreeWalker(el, NodeFilter[show] , null, false);
while(n=walk.nextNode()) a.push(n);
return a;
}
function log(title, data, type) {
if(langify.settings.debug) {
let css = 'color: green; font-weight: bold;';
console.log(`%c ${title}: \n`, css, data);
}
}
function spreadCustomContents() {
var getFileName = function(url) {
if(!url || url == '') return;
url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#"));
url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?"));
url = url.substring(url.lastIndexOf("/") + 1, url.length);
url = url.replace(/(_[0-9]+x[0-9]*|_{width}x)?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(jpe?g|png|gif|webp)/gi, "");
return '/' + url;
}
Object.entries(customContents).forEach(function(entry) {
//if(/<\/?[a-z][\s\S]*>/i.test(entry[0])) customContents_html[entry[0]] = entry[1];
//else if(/(http(s?):)?([/|.|\w|\s|-])*\.(?:jpe?g|gif|png)/.test(entry[0])) customContents_image[getFileName(entry[0])] = getFileName(entry[1]);
if(/(http(s?):)?([/|.|\w|\s|-])*\.(?:jpe?g|gif|png|webp)/.test(entry[0])) customContents_image[langify.helper.extractImageObject(entry[0]).file] = langify.helper.extractImageObject(entry[1]);
else customContents_text[entry[0]] = entry[1];
});
log('CUSTOM CONTENTS:', {customContents, customContents_text, customContents_image}, 'info')
}
// Polyfill for old browsers
function startMutationEvents() {
var target = document.querySelector('body');
target.addEventListener("DOMAttrModified", function (event) {
if(event.attrName === 'href' || event.attrName === 'action') {
if(event.prevValue != event.newValue) {
translateLink(event.newValue, event.target);
}
}
}, false);
target.addEventListener("DOMSubtreeModified", function (event) {
//findAndLocalizeLinks(event.target, false);
//matchCustomContent(event.target);
}, false);
}
function triggerCustomContents() {
var rootnode = document.getElementsByTagName('body')[0]
var walker = document.createTreeWalker(rootnode, NodeFilter.SHOW_ALL, null, false)
while (walker.nextNode()) {
//console.log(walker.currentNode.tagName)
translate(walker.currentNode, null);
}
}
function stopObserver() {
mutationObs.takeRecords();
mutationObs.disconnect();
}
init();
return {
init: init,
triggerCustomContents: triggerCustomContents,
stopObserver: stopObserver,
}
};
var langifyObserver = langifyObserverCore();
langify.api = {
observer: {
start: langifyObserver.init,
stop: langifyObserver.stopObserver,
trigger: langifyObserver.triggerCustomContents
}
};
}
langify.tools = langify.tools || {
compareJQueryVersion: function(a,b) {if (a === b) {return 0;}var a_components = a.split(".");var b_components = b.split(".");var len = Math.min(a_components.length, b_components.length);for (var i = 0; i < len; i++) {if (parseInt(a_components[i]) > parseInt(b_components[i])) {return 1;}if (parseInt(a_components[i]) < parseInt(b_components[i])) {return -1;}}if (a_components.length > b_components.length) {return 1;}if (a_components.length < b_components.length) {return -1;}return 0;}
};
langify.loader = langify.loader || {
loadScript: function(url, callback) {
var script = document.createElement('script');
script.type = 'text/javascript';
if(script.readyState) {
script.onreadystatechange = function () {
if(script.readyState == 'loaded' || script.readyState == 'complete') {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
},
reload: function() {
window.location.reload();
}
};
langify.switcher = langify.switcher || {
toggleSwitcherOpen: function(e) {
e.classList.toggle('ly-is-open');
},
init: function() {
var lyForceOff = location.search.split('ly-force-off=')[1];
var switcherElements = Array.prototype.slice.call(document.getElementsByClassName('ly-languages-switcher'));
document.addEventListener('click', function(event) {
if(!event.target.closest('.ly-languages-switcher')) {
var openSwitchers = document.querySelectorAll('.ly-languages-switcher.ly-is-open')
for(i = 0; i < openSwitchers.length; i++) {
openSwitchers[i].classList.remove('ly-is-open');
}
}
});
// Custom positioning
for(i = 0; i < switcherElements.length; i++) {
if(lyForceOff !== 'true' && langify.locale.languages.length > 1) {
switcherElements[i].classList.remove('ly-hide');
}
if(switcherElements[i].classList.contains('ly-custom') && (document.getElementById('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint')) || document.getElementsByClassName('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint')).length )) {
var targets = Array.from(document.getElementsByClassName('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint')));
var target = document.getElementById('ly-custom-'+switcherElements[i].getAttribute('data-breakpoint'));
if(target) targets.push(target);
for(c = 0; c < targets.length; c++) {
var clone = switcherElements[i].cloneNode(true);
targets[c].innerHTML = clone.outerHTML;
}
switcherElements[i].classList.add('ly-hide');
}
}
var links = document.getElementsByClassName('ly-languages-switcher-link');
for(l = 0; l < links.length; l++) {
links[l].setAttribute('href', links[l].getAttribute('href') + window.location.search);
links[l].addEventListener('click', function(event) {
langify.helper.setCookie('ly-lang-selected', this.getAttribute('data-ly-code'), 365);
});
}
document.addEventListener('DOMContentLoaded',function(){
if(lyForceOff == 'true') {
document.getElementById('preview-bar-iframe').classList.add('ly-hide');
}
});
// Native select event handling
var languageUrls = [];languageUrls['en'] = '/pages/bfcm';languageUrls['es'] = '/es/pages/bfcm';var nativeLangifySelects = document.getElementsByClassName('ly-native-select');
for(var i = 0; i < nativeLangifySelects.length; i++) {
nativeLangifySelects[i].onchange = function () {
var selectedLanguageCode = this[this.selectedIndex].getAttribute('key');
var url = languageUrls[selectedLanguageCode];
if(url) {
langify.helper.setCookie('ly-lang-selected', selectedLanguageCode, 365);
window.location.replace(url+window.location.search);
}
}
}
// Initial cart.attributes update
ShopifyAPI.getCart(function (cart) {
var currentLanguage = "es";
if(!cart.attributes.language || cart.attributes.language != currentLanguage) {
ShopifyAPI.updateCartAttributes({'language': currentLanguage}, function(data){});
}
});
if(langify.locale.languages.length === 1) {
console.info(`%c LANGIFY INFO:\n`, 'font-weight: bold;', 'All languages are disabled! There must be at least one active language in order that the languages switcher is displayed.')
}
}
};
langify.currency = langify.currency || {
getHasSelectedCurrency: function() {return '' == 'true';},
getCurrencyForLanguage: function(language) {var languageToCurrencies = [];return languageToCurrencies[language];},
getCurrencySwitcher: function() {var currencySwitcher = $('#currencies');if(currencySwitcher.length) {return currencySwitcher;} else {return null;}},
init: function() {
if(!langify.currency.getHasSelectedCurrency()) {
}
}
};
langify.core = langify.core || {
onComplete: function() {
var root_url = langify.locale.root_url != '/' ? langify.locale.root_url : '';
ShopifyAPI.attributeToString = function(attribute) {if((typeof attribute) !== 'string') {attribute += '';if(attribute === 'undefined') {attribute = '';}}return jQuery.trim(attribute);};
ShopifyAPI.getCart = function(callback) {jQuery.getJSON(root_url+'/cart.js', function (cart, textStatus) {if((typeof callback) === 'function') {callback(cart);}});};
ShopifyAPI.updateCartNote = function(note, callback) {var params = {type: 'POST',url: root_url+'/cart/update.js',data: 'note=' + this.attributeToString(note),dataType: 'json',success: function(cart) {if((typeof callback) === 'function') {callback(cart);}},error: this.onError};jQuery.ajax(params);};
ShopifyAPI.updateCartAttributes = function(attributes, callback) {var data = '';var that = this;if(jQuery.isArray(attributes)) {jQuery.each(attributes, function(indexInArray, valueOfElement) {var key = that.attributeToString(valueOfElement.key);if (key !== '') {data += 'attributes[' + key + ']=' + that.attributeToString(valueOfElement.value) + '&';}});} else if ((typeof attributes === 'object') && attributes !== null) {jQuery.each(attributes, function(key, value) {data += 'attributes[' + that.attributeToString(key) + ']=' + that.attributeToString(value) + '&';});}var params = {type: 'POST',url: root_url+'/cart/update.js',data: data,dataType: 'json',success: function(cart) {if((typeof callback) === 'function') {callback(cart);}},error: this.onError};jQuery.ajax(params);};
ShopifyAPI.onError = function(XMLHttpRequest, textStatus) {};
langify.switcher.init();
//langify.currency.init();
},
init: function() {
if(typeof jQuery === 'undefined') {
langify.loader.loadScript('//cdn.jsdelivr.net/jquery/1.9.1/jquery.min.js', function() {
langify.core.onComplete();
});
} else if(langify.tools.compareJQueryVersion(jQuery.fn.jquery, '1.7.0') <= 0) {
langify.loader.loadScript('//cdn.jsdelivr.net/jquery/1.9.1/jquery.min.js', function() {
langify.core.onComplete();
});
} else {
langify.core.onComplete();
}
}
};
!function(e,t){typeof module!="undefined"?module.exports=t():typeof define=="function"&&typeof define.amd=="object"?define(t):this[e]=t()}("domready",function(){var e=[],t,n=typeof document=="object"&&document,r=n&&n.documentElement.doScroll,i="DOMContentLoaded",s=n&&(r?/^loaded|^c/:/^loaded|^i|^c/).test(n.readyState);return!s&&n&&n.addEventListener(i,t=function(){n.removeEventListener(i,t),s=1;while(t=e.shift())t()}),function(t){s?setTimeout(t,0):e.push(t)}})
try { domready(langify.core.init); }
catch(error) { langify.core.init(); }
// Polyfills
(function () {
if ( typeof window.CustomEvent === "function" ) return false;
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: null };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
}
window.CustomEvent = CustomEvent;
})();