(function () {
  'use strict';

  function _iterableToArrayLimit(arr, i) {
    var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
    if (null != _i) {
      var _s,
        _e,
        _x,
        _r,
        _arr = [],
        _n = !0,
        _d = !1;
      try {
        if (_x = (_i = _i.call(arr)).next, 0 === i) {
          if (Object(_i) !== _i) return;
          _n = !1;
        } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
      } catch (err) {
        _d = !0, _e = err;
      } finally {
        try {
          if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
        } finally {
          if (_d) throw _e;
        }
      }
      return _arr;
    }
  }
  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }
  function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
  }
  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }
  function _arrayLikeToArray(arr, len) {
    if (len == null || len > arr.length) len = arr.length;
    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
    return arr2;
  }
  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  /*
    LemonLDAP::NG Portal jQuery scripts
    */
  var datas,
    delKey,
    displayIcon,
    getQueryParam,
    getValues,
    _ping,
    ppolicyResults,
    removeOidcConsent,
    restoreOrder,
    setCookie,
    setKey,
    setOrder,
    setResult,
    setSelector,
    translate,
    translatePage,
    translationFields,
    updateBorder,
    indexOf = [].indexOf;

  // Translation mechanism
  translationFields = {};

  // Launched at startup: download language JSON and translate all HTML tags that
  // contains one of the following attributes using translate() function:
  //  - trspan       : set result in tag content
  //  - trmsg        : get error number and set result of PE<number> result in tag
  //                   content
  //  - trplaceholder: set result in "placeholder" attribute
  //  - localtime    : transform time (in ms)ing translate()
  ppolicyResults = {};
  setResult = function setResult(field, result) {
    var ref, ref1;
    ppolicyResults[field] = result;
    displayIcon(field, result);
    // Compute form validity from all previous results
    if (Object.values(ppolicyResults).every(function (value) {
      return value === "good" || value === "info";
    })) {
      if ((ref = $('#newpassword').get(0)) != null) {
        ref.setCustomValidity('');
      }
    } else {
      if ((ref1 = $('#newpassword').get(0)) != null) {
        ref1.setCustomValidity(translate('PE28'));
      }
    }
    return updateBorder();
  };
  displayIcon = function displayIcon(field, result) {
    // Clear icon
    $("#" + field).removeClass('fa-times fa-check fa-spinner fa-pulse fa-info-circle fa-question-circle text-danger text-success text-info text-secondary');
    $("#" + field).attr('role', 'status');
    // Display correct icon
    switch (result) {
      case "good":
        return $("#" + field).addClass('fa-check text-success');
      case "bad":
        $("#" + field).addClass('fa-times text-danger');
        return $("#" + field).attr('role', 'alert');
      case "unknown":
        return $("#" + field).addClass('fa-question-circle text-secondary');
      case "waiting":
        return $("#" + field).addClass('fa-spinner fa-pulse text-secondary');
      case "info":
        return $("#" + field).addClass('fa-info-circle text-info');
    }
  };
  updateBorder = function updateBorder() {
    var ref, ref1;
    if (((ref = $('#newpassword').get(0)) != null ? ref.checkValidity() : void 0) && ((ref1 = $('#confirmpassword').get(0)) != null ? ref1.checkValidity() : void 0)) {
      return $('.ppolicy').removeClass('border-danger').addClass('border-success');
    } else {
      return $('.ppolicy').removeClass('border-success').addClass('border-danger');
    }
  };
  translatePage = function translatePage(lang) {
    if (lang) {
      window.currentLanguage = lang;
    } else {
      lang = window.currentLanguage;
    }
    return $.getJSON("".concat(window.staticPrefix, "languages/").concat(lang, ".json"), function (data) {
      var k, ref, ref1, v;
      translationFields = data;
      ref = window.datas.trOver.all;
      for (k in ref) {
        v = ref[k];
        translationFields[k] = v;
      }
      if (window.datas.trOver[lang]) {
        ref1 = window.datas.trOver[lang];
        for (k in ref1) {
          v = ref1[k];
          translationFields[k] = v;
        }
      }
      $("[trspan]").each(function () {
        var args, i, len, txt;
        args = $(this).attr('trspan').split(',');
        txt = translate(args.shift());
        for (i = 0, len = args.length; i < len; i++) {
          v = args[i];
          txt = txt.replace(/%[sd]/, v);
        }
        return $(this).html(txt);
      });
      $("[trmsg]").each(function () {
        var msg;
        $(this).html(translate("PE".concat($(this).attr('trmsg'))));
        msg = translate("PE".concat($(this).attr('trmsg')));
        if (msg.match(/_hide_/)) {
          return $(this).parent().hide();
        }
      });
      $("[trattribute]").each(function () {
        var attribute, i, len, trattribute, trattributes, value;
        trattributes = $(this).attr('trattribute').trim().split(/\s+/);
        for (i = 0, len = trattributes.length; i < len; i++) {
          trattribute = trattributes[i];
          var _trattribute$split = trattribute.split(':');
          var _trattribute$split2 = _slicedToArray(_trattribute$split, 2);
          attribute = _trattribute$split2[0];
          value = _trattribute$split2[1];
          if (attribute && value) {
            $(this).attr(attribute, translate(value));
          }
        }
        return true;
      });
      $("[trplaceholder]").each(function () {
        var tmp;
        tmp = translate($(this).attr('trplaceholder'));
        $(this).attr('placeholder', tmp);
        return $(this).attr('aria-label', tmp);
      });
      return $("[localtime]").each(function () {
        var d;
        d = new Date($(this).attr('localtime') * 1000);
        return $(this).text(d.toLocaleString());
      });
    });
  };

  // Translate a string
  translate = function translate(str) {
    if (translationFields[str]) {
      return translationFields[str];
    } else {
      return str;
    }
  };

  // These functions are exported so that custom JS code can call them
  // Do not remove without a deprecation notice
  window.translate = translate;
  window.translatePage = translatePage;

  // Initialization variables: read all <script type="application/init"> tags and
  // return JSON parsing result. This is set in window.data variable
  getValues = function getValues() {
    var values;
    values = {};
    $("script[type='application/init']").each(function () {
      var e, k, results, tmp;
      try {
        tmp = JSON.parse($(this).text());
        results = [];
        for (k in tmp) {
          results.push(values[k] = tmp[k]);
        }
        return results;
      } catch (error1) {
        e = error1;
        console.error('Parsing error', e);
        console.debug('JSON', $(this).text());
      }
    });
    return values;
  };

  // Gets a query string parametrer
  // We cannot use URLSearchParam because of IE (#2230)
  getQueryParam = function getQueryParam(name) {
    var match;
    match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    if (match) {
      return decodeURIComponent(match[1].replace(/\+/g, ' '));
    } else {
      return null;
    }
  };

  // Code from http://snipplr.com/view/29434/
  // ----------------------------------------
  setSelector = "#appslist";

  // Function to write the sorted apps list to session (network errors ignored)
  setOrder = function setOrder() {
    return setKey('_appsListOrder', $(setSelector).sortable("toArray").join());
  };

  // Function used to remove an OIDC consent
  removeOidcConsent = function removeOidcConsent(partner) {
    var e;
    e = function e(j, s, _e) {
      return alert("".concat(s, " ").concat(_e));
    };
    // Success
    return delKey("_oidcConsents", partner, function () {
      return $("[partner='".concat(partner, "']")).hide();
      // Error
    }, e);
  };

  // Function used by setOrder() and removeOidcConsent() to push new values
  // For security reason, modification is rejected unless a valid token is given
  setKey = function setKey(key, val, _success, error) {
    // First request to get token
    return $.ajax({
      type: "GET",
      url: "".concat(scriptname, "mysession/?gettoken"),
      dataType: 'json',
      error: error,
      // On success, value is set
      success: function success(data) {
        var d;
        d = {
          token: data.token
        };
        d[key] = val;
        return $.ajax({
          type: "PUT",
          url: "".concat(scriptname, "mysession/persistent"),
          dataType: 'json',
          data: d,
          success: _success,
          error: error
        });
      }
    });
  };
  delKey = function delKey(key, sub, _success2, error) {
    return $.ajax({
      type: "GET",
      url: "".concat(scriptname, "mysession/?gettoken"),
      dataType: 'json',
      error: error,
      // On success, value is set
      success: function success(data) {
        return $.ajax({
          type: "DELETE",
          url: "".concat(scriptname, "mysession/persistent/").concat(key, "?sub=").concat(sub, "&token=").concat(data.token),
          dataType: 'json',
          success: _success2,
          error: error
        });
      }
    });
  };

  // function that restores the list order from session
  restoreOrder = function restoreOrder() {
    var IDs, child, i, item, itemID, items, l, len, len1, list, rebuild, savedOrd, v;
    list = $(setSelector);
    if (!(list != null && datas['appslistorder'])) {
      return null;
    }
    // make array from saved order
    IDs = datas['appslistorder'].split(',');
    // fetch current order
    items = list.sortable("toArray");
    // make array from current order
    rebuild = [];
    for (i = 0, len = items.length; i < len; i++) {
      v = items[i];
      rebuild[v] = v;
    }
    for (l = 0, len1 = IDs.length; l < len1; l++) {
      itemID = IDs[l];
      if (rebuild[itemID]) {
        // select item id from current order
        item = rebuild[itemID];
        // select the item according to current order
        child = $(setSelector + ".ui-sortable").children("#" + item);
        // select the item according to the saved order
        savedOrd = $(setSelector + ".ui-sortable").children("#" + itemID);
        // remove all the items
        child.remove();
        // add the items in turn according to saved order
        // we need to filter here since the "ui-sortable"
        // class is applied to all ul elements and we
        // only want the very first! You can modify this
        // to support multiple lists - not tested!
        $(setSelector + ".ui-sortable").filter(":first").append(savedOrd);
      }
    }
    return 1;
  };

  // function void ping()
  // Check if session is alive on server side
  // @return nothing
  _ping = function ping() {
    return $.ajax({
      type: "POST",
      url: scriptname,
      data: {
        ping: 1
      },
      dataType: 'json',
      success: function success(data) {
        if (data.result != null && data.result === 1) {
          return setTimeout(_ping, datas['pingInterval']);
        } else {
          return location.reload(true);
        }
      },
      error: function error(j, t, e) {
        return location.reload(true);
      }
    });
  };
  window.ping = _ping;
  setCookie = function setCookie(name, value, exdays) {
    var cookiestring, d, samesite, secure;
    samesite = datas['sameSite'];
    secure = datas['cookieSecure'];
    cookiestring = "".concat(name, "=").concat(value, "; path=/; SameSite=").concat(samesite);
    if (exdays) {
      d = new Date();
      d.setTime(d.getTime() + exdays * 86400000);
      cookiestring += "; expires=".concat(d.toUTCString());
    }
    if (secure) {
      cookiestring += "; Secure";
    }
    return document.cookie = cookiestring;
  };

  // Initialization
  datas = {};
  $(window).on('load', function () {
    var action, al, authMenuIndex, authMenuTabs, back_url, checkpassword, checksamepass, field, hiddenParams, i, lang, langdiv, len, link, menuIndex, menuTabs, method, queryLang, ref, setCookieLang, togglecheckpassword, displaytab;
    // Get application/init variables
    datas = getValues();
    // Keep the currently selected tab
    if ("datas" in window && "choicetab" in window.datas) {
      datas.choicetab = window.datas.choicetab;
    }
    // Export datas for other scripts
    window.datas = datas;
    $("#appslist").sortable({
      axis: "y",
      cursor: "move",
      opacity: 0.5,
      revert: true,
      items: "> div.category",
      update: function update() {
        return setOrder();
      }
    });
    restoreOrder();
    $("div.message").fadeIn('slow');
    // Set timezone
    $("input[name=timezone]").val(-(new Date().getTimezoneOffset() / 60));
    // Menu tabs
    menuTabs = $("#menu").tabs({
      active: 0
    });
    displaytab = getQueryParam('tab');
    menuIndex = $('#menu a[href="#' + displaytab + '"]').parent().index();
    if (menuIndex < 0) {
      menuIndex = 0;
    }
    menuTabs.tabs("option", "active", menuIndex);
    // Authentication choice tabs
    authMenuTabs = $("#authMenu").tabs({
      active: 0
    });
    authMenuIndex = $('#authMenu a[href="#' + displaytab + '"]').parent().index();
    if (authMenuIndex < 0) {
      authMenuIndex = 0;
    }
    authMenuTabs.tabs("option", "active", authMenuIndex);
    // TODO: cookie
    // $("#authMenu").tabs
    // 	cookie:
    // 		name: 'lemonldapauthchoice'
    if (datas['choicetab']) {
      authMenuTabs.tabs("option", "active", $('#authMenu a[href="#id_' + datas['choicetab'] + '"]').parent().index());
    }
    // If there are no auto-focused fields, focus on first visible input
    if ($("input[autofocus]").length === 0) {
      $("input[type=text], input[type=password]").first().focus();
    }
    // Open links in new windows if required
    if (datas['newwindow']) {
      $('#appslist a').attr("target", "_blank");
    }
    // Complete removeOther link
    if ($("p.removeOther").length) {
      action = $("#form").attr("action");
      method = $("#form").attr("method");
      console.debug('method=', method);
      hiddenParams = "";
      if ($("#form input[type=hidden]")) {
        console.debug('Parse hidden values');
        $("#form input[type=hidden]").each(function (index) {
          console.debug(' ->', $(this).attr("name"), $(this).val());
          return hiddenParams += "&" + $(this).attr("name") + "=" + $(this).val();
        });
      }
      back_url = "";
      if (action) {
        console.debug('action=', action);
        if (action.indexOf("?") !== -1) {
          action.substring(0, action.indexOf("?")) + "?";
        } else {
          back_url = action + "?";
        }
        back_url += hiddenParams;
        hiddenParams = "";
      }
      link = $("p.removeOther a").attr("href") + "&method=" + method + hiddenParams;
      if (back_url) {
        link += "&url=" + btoa(back_url);
      }
      $("p.removeOther a").attr("href", link);
    }
    // Language detection. Priority order:
    //  0 - llnglanguage parameter
    //  1 - datas['language'] value (server-set from Cookie+Accept-Language)
    if (window.location.search) {
      queryLang = getQueryParam('llnglanguage');
      if (queryLang) {
        console.debug('Get lang from parameter');
      }
      setCookieLang = getQueryParam('setCookieLang');
      if (setCookieLang === 1) {
        console.debug('Set lang cookie');
      }
    }
    if (!lang) {
      lang = window.datas['language'];
      if (lang && !queryLang) {
        console.debug('Get lang from server');
      }
    } else if (indexOf.call(window.availableLanguages, lang) < 0) {
      lang = window.datas['language'];
      if (!queryLang) {
        console.debug('Lang not available -> Get lang from server');
      }
    }
    if (queryLang) {
      if (indexOf.call(window.availableLanguages, queryLang) < 0) {
        console.debug('Lang not available -> Get lang from server');
        queryLang = window.language;
      }
      console.debug('Selected lang ->', queryLang);
      if (setCookieLang) {
        console.debug('Set cookie lang ->', queryLang);
        setCookie('llnglanguage', queryLang, 3650);
      }
      translatePage(queryLang);
    } else {
      console.debug('Selected lang ->', lang);
      translatePage(lang);
    }
    // Build language icons
    langdiv = '';
    ref = window.availableLanguages;
    for (i = 0, len = ref.length; i < len; i++) {
      al = ref[i];
      langdiv += "<img class=\"langicon\" src=\"".concat(window.staticPrefix, "common/").concat(al, ".png\" title=\"").concat(al, "\" alt=\"[").concat(al, "]\"> ");
    }
    $('#languages').html(langdiv);
    $('.langicon').on('click', function () {
      lang = $(this).attr('title');
      setCookie('llnglanguage', lang, 3650);
      return translatePage(lang);
    });
    // Password policy
    checkpassword = function checkpassword(password, evType) {
      var e, info;
      e = jQuery.Event("checkpassword");
      info = {
        password: password,
        evType: evType,
        setResult: setResult
      };
      return $(document).trigger(e, info);
    };
    checksamepass = function checksamepass() {
      var ref1, ref2, ref3, ref4, ref5;
      if (((ref1 = $('#confirmpassword').get(0)) != null ? ref1.value : void 0) && ((ref2 = $('#confirmpassword').get(0)) != null ? ref2.value : void 0) === ((ref3 = $('#newpassword').get(0)) != null ? ref3.value : void 0)) {
        if ((ref4 = $('#confirmpassword').get(0)) != null) {
          ref4.setCustomValidity('');
        }
        displayIcon("samepassword-feedback", "good");
        updateBorder();
        return true;
      } else {
        if ((ref5 = $('#confirmpassword').get(0)) != null) {
          ref5.setCustomValidity(translate('PE34'));
        }
        displayIcon("samepassword-feedback", "bad");
        updateBorder();
        return false;
      }
    };
    if (window.datas.ppolicy != null && $('#newpassword').length) {
      // Initialize display
      checkpassword('');
      checksamepass();
      $('#confirmpassword').keyup(function (e) {
        checksamepass();
      });
      $('#newpassword').keyup(function (e) {
        checkpassword(e.target.value);
        checksamepass();
      });
      $('#newpassword').focusout(function (e) {
        checkpassword(e.target.value, "focusout");
        checksamepass();
      });
    }
    // If generating password, disable policy check
    togglecheckpassword = function togglecheckpassword(e) {
      var ref1;
      if (e.target.checked) {
        $('#newpassword').off('keyup');
        return (ref1 = $('#newpassword').get(0)) != null ? ref1.setCustomValidity('') : void 0;
      } else {
        // Restore check
        $('#newpassword').keyup(function (e) {
          checkpassword(e.target.value);
        });
        return checkpassword('');
      }
    };
    $('#newpassword').change(checksamepass);
    $('#confirmpassword').change(checksamepass);
    if (window.datas.ppolicy != null && $('#newpassword').length) {
      $('#reset').change(togglecheckpassword);
    }
    // Set local dates (used to display history)
    $(".localeDate").each(function () {
      var s;
      s = new Date($(this).attr("val") * 1000);
      return $(this).text(s.toLocaleString());
    });
    $('.oidcConsent').on('click', function () {
      return removeOidcConsent($(this).attr('partner'));
    });
    // Ping if asked
    if (datas['pingInterval'] && datas['pingInterval'] > 0) {
      window.setTimeout(_ping, datas['pingInterval']);
    }
    // Functions to show/hide display password button
    if (datas['enablePasswordDisplay']) {
      field = '';
      if (datas['dontStorePassword']) {
        $(".toggle-password").on('mousedown touchstart', function () {
          field = $(this).attr('id');
          field = field.replace(/^toggle_/, '');
          console.debug('Display', field);
          $(this).toggleClass("fa-eye fa-eye-slash");
          return $("input[name=".concat(field, "]")).attr('class', 'form-control');
        });
        $(".toggle-password").on('mouseup touchend', function () {
          $(this).toggleClass("fa-eye fa-eye-slash");
          if ($("input[name=".concat(field, "]")).get(0).value) {
            return $("input[name=".concat(field, "]")).attr('class', 'form-control key');
          }
        });
      } else {
        $(".toggle-password").on('mousedown touchstart', function () {
          field = $(this).attr('id');
          field = field.replace(/^toggle_/, '');
          console.debug('Display', field);
          $(this).toggleClass("fa-eye fa-eye-slash");
          return $("input[name=".concat(field, "]")).attr("type", "text");
        });
        $(".toggle-password").on('mouseup touchend', function () {
          $(this).toggleClass("fa-eye fa-eye-slash");
          return $("input[name=".concat(field, "]")).attr("type", "password");
        });
      }
    }
    // Functions to show/hide newpassword inputs
    $('#reset').change(function () {
      var checked, ref1, ref2, ref3, ref4, ref5;
      checked = $(this).prop('checked');
      console.debug('Reset is checked', checked);
      if (checked === true) {
        $('#ppolicy').hide();
        $('#newpasswords').hide();
        $('#newpassword').removeAttr('required');
        $('#confirmpassword').removeAttr('required');
        return (ref1 = $('#confirmpassword').get(0)) != null ? ref1.setCustomValidity('') : void 0;
      } else {
        $('#ppolicy').show();
        $('#newpasswords').show();
        $('#newpassword').attr('required', true);
        $('#confirmpassword').attr('required', true);
        if (((ref2 = $('#confirmpassword').get(0)) != null ? ref2.value : void 0) === ((ref3 = $('#newpassword').get(0)) != null ? ref3.value : void 0)) {
          return (ref4 = $('#confirmpassword').get(0)) != null ? ref4.setCustomValidity('') : void 0;
        } else {
          return (ref5 = $('#confirmpassword').get(0)) != null ? ref5.setCustomValidity(translate('PE34')) : void 0;
        }
      }
    });
    // Functions to show/hide placeholder password inputs
    $('#passwordfield').on('input', function () {
      if ($('#passwordfield').get(0).value && datas['dontStorePassword']) {
        return $("#passwordfield").attr('class', 'form-control key');
      } else {
        return $("#passwordfield").attr('class', 'form-control');
      }
    });
    $('#oldpassword').on('input', function () {
      if ($('#oldpassword').get(0).value && datas['dontStorePassword']) {
        return $("#oldpassword").attr('class', 'form-control key');
      } else {
        return $("#oldpassword").attr('class', 'form-control');
      }
    });
    $('#newpassword').on('input', function () {
      if ($('#newpassword').get(0).value && datas['dontStorePassword']) {
        return $("#newpassword").attr('class', 'form-control key');
      } else {
        return $("#newpassword").attr('class', 'form-control');
      }
    });
    $('#confirmpassword').on('input', function () {
      if ($('#confirmpassword').get(0).value && datas['dontStorePassword']) {
        return $("#confirmpassword").attr('class', 'form-control key');
      } else {
        return $("#confirmpassword").attr('class', 'form-control');
      }
    });
    //$('#formpass').on 'submit', changePwd
    $('.clear-finduser-field').on('click', function () {
      return $(this).parent().find(':input').each(function () {
        console.debug('Clear search field ->', $(this).attr('name'));
        return $(this).val('');
      });
    });
    $('#closefinduserform').on('click', function () {
      console.debug('Clear modal');
      return $('#finduserForm').trigger('reset');
    });
    $('#finduserbutton').on('click', function (event) {
      var str;
      event.preventDefault();
      document.body.style.cursor = 'progress';
      str = $("#finduserForm").serialize();
      console.debug('Send findUser request with parameters', str);
      return $.ajax({
        type: "POST",
        url: "".concat(scriptname, "finduser"),
        dataType: 'json',
        data: str,
        // On success, values are set
        success: function success(data) {
          var user;
          document.body.style.cursor = 'default';
          user = data.user;
          console.debug('Suggested spoofId=', user);
          $("input[name=spoofId]").each(function () {
            return $(this).val(user);
          });
          if (data.captcha) {
            $('#captcha').attr('src', data.captcha);
          }
          if (data.token) {
            $('#finduserToken').val(data.token);
            return $('#token').val(data.token);
          }
        },
        error: function error(j, status, err) {
          var res;
          document.body.style.cursor = 'default';
          if (err) {
            console.error('Error', err);
          }
          if (j) {
            res = JSON.parse(j.responseText);
          }
          if (res && res.error) {
            console.error('Returned error', res);
          }
        }
      });
    });
    $('#btn-back-to-top').on('click', function () {
      console.debug('Back to top');
      document.body.scrollTop = 0;
      return document.documentElement.scrollTop = 0;
    });
    $(window).on('scroll', function () {
      if (datas['scrollTop'] && (document.body.scrollTop > Math.abs(datas['scrollTop']) || document.documentElement.scrollTop > Math.abs(datas['scrollTop']))) {
        return $('#btn-back-to-top').css("display", "block");
      } else {
        return $('#btn-back-to-top').css("display", "none");
      }
    });
    $('form[data-property=single-submit]').on('submit', function (event) {
      if ($(this).data('data-submitted') === true) {
        event.preventDefault();
      } else {
        $(this).find(':submit').prop('disabled', true);
        return $(this).data('data-submitted', true);
      }
    });
    $(".category[name=\"".concat(datas['floatingCategory'], "\"]")).appendTo('#floating-menu').find("i").remove();
    $(".category[name=\"".concat(datas['floatingCategory'], "\"]")).draggable();
    var parent = document.getElementById('floating-menu');
    if (parent) {
      var divs = parent.querySelectorAll('.col-md-4');
      divs.forEach(function (div, index) {
        div.classList.remove("col-md-4");
        div.classList.add("col-md-12");
      });
    }
    $(document).trigger("portalLoaded");
    return true;
  });

})();
