LFP = new Object();
LFP.MODULES = new Object();
LFP.UTIL = new Object();
LFP.MENU = new Object();
LFP.SETTINGS = new Object();

LFP.init = function(menu_label,menu_url) {
  LFP.UTIL.skipElement("skip-navigation");
  LFP.MENU.menu_label = menu_label;
  LFP.MENU.menu_url = menu_url;
  LFP.SETTINGS.prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
}
LFP.UTIL.htmlToElement = function(html) {
  var template = document.createElement('template');
  html = html.trim(); // Never return a text node of whitespace as the result
  template.innerHTML = html;
  return template.content.firstChild;
}
LFP.UTIL.templateToElement = function(html) {
  var template = document.createElement('template');
  template.innerHTML = html;
  return template.content.firstChild;
}
LFP.UTIL.includeScript = function(filename,shouldDefer) {
  var script  = document.createElement('script');
  script.src  = filename;
  script.type = 'text/javascript';
  script.defer = shouldDefer;
  document.getElementsByTagName('head').item(0).appendChild(script);
}
LFP.UTIL.skipElement = function(elementID) {
  let skippy = document.getElementById(elementID);
  skippy.addEventListener("keyup", function(event) {
    if (event.keyCode === 13 || event.keyCode === 32) {skippy.click();}
  });
}
LFP.UTIL.getOffset = function( el ) {
  var _x = 0;
  var _y = 0;
  while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
    _x += el.offsetLeft - el.scrollLeft;
    _y += el.offsetTop - el.scrollTop;
    el = el.offsetParent;
  }
  return { top: _y, left: _x };
}
LFP.UTIL.getTextWidth = function(text, font) {
  var canvas = LFP.UTIL.getTextWidth.canvas || (LFP.UTIL.getTextWidth.canvas = document.createElement("canvas"));
  var context = canvas.getContext("2d");
  context.font = font;
  var metrics = context.measureText(text);
  return metrics.width;
}
