(function () {
  //Inject code v5.2

  var highcharts = document.createElement('script');
  var injectVersion = 6;
  var cdn = 'https://app.everviz.com/resources/highcharts/11.4.8/';
  var loaded = 0;  
  var encodedUrl = encodeURI('https://https://app.everviz.com//show/AN5j91Nt-');
  var chartCreated = false;
  var delayGen = 0;
  var scripts = [
    "highcharts.js",
    "modules/stock.js",
    "highcharts-more.js",
    "highcharts-3d.js",
    "modules/data.js",
    "modules/exporting.js",
    "modules/funnel.js",
    "modules/solid-gauge.js",
    "modules/export-data.js",
    "modules/accessibility.js"
  ];

  const inEmbedCode = window.location.pathname.indexOf('/embed/') > -1;
  const inEverviz = window.location.origin === 'https://app.everviz.com';
  const loadHighchartsModules = inEverviz && !inEmbedCode;

  var legacyElementClassName = 'highcharts-AN5j91Nt-';
  var elementClassName = 'everviz-AN5j91Nt-';
  var externalCSS = [
    "https://app.everviz.com/static/fonts/gordita/style.css",
    "https://app.everviz.com/resources/css/highcharts-data-table.css"
  ];

  var extraScripts = [
  "https://app.everviz.com/resources/js/highcharts-scroll-animation.js",
  "https://app.everviz.com/resources/js/everviz-utils.js",
  "https://app.everviz.com/resources/js/highcharts-overrides.js",
  "https://app.everviz.com/resources/js/highcharts-resize.js",
  ];

  var options = {"colors":["#215ba7","#f5cc2f","#6D5BD1","#F9DCE7","#AEC8FA","#DDD8F5"],"chart":{"style":{"fontFamily":"gordita","fontSize":"12px"},"type":"area","polar":false,"borderColor":"#ffffff"},"title":{"text":"<div><strong style=\"color: rgb(51, 51, 51);\">Permis S attribués à Genève / enregistrés à l'Hospice général</strong></div>","align":"center","useHTML":true,"style":{"fontSize":"18px"}},"subtitle":{"text":"","align":"left"},"credits":{"text":"<br>","href":""},"plotOptions":{"series":{"borderRadius":2,"pointPadding":0.01,"groupPadding":0.05,"borderWidth":0,"shadow":false,"marker":{"enabled":true},"lineWidth":2,"allowPointSelect":true,"states":{"select":{"color":"#EFFFEF","borderColor":"black","dashStyle":"dot"}},"label":{"enabled":false},"dataLabels":{"enabled":true}}},"legend":{"align":"center","verticalAlign":"bottom","itemMarginBottom":10,"x":0,"symbolRadius":2,"enabled":true},"rangeSelector":{"enabled":true,"allButtonsEnabled":true,"buttonSpacing":0,"floating":false,"inputDateFormat":"%e %b %Y","selected":{}},"series":[{"data":[],"turboThreshold":0,"_colorIndex":0,"_symbolIndex":0,"type":"spline","marker":{"enabled":true}},{"data":[],"turboThreshold":0,"_colorIndex":1,"_symbolIndex":0,"type":"spline"}],"lang":{"shortMonths":["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],"weekdays":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"months":["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],"numericSymbols":["k","M","G","T","P","E"]},"stockTools":{"gui":{"enabled":false}},"navigation":{"bindingsClassName":"tools-container"},"exporting":{"url":"https://api.everviz.com/export","accessibility":{"enabled":false},"useMultiLevelHeaders":false,"useRowspanHeaders":false,"enabled":false,"sourceWidth":null,"sourceHeight":null},"annotations":[],"tooltip":{"valueSuffix":" "},"xAxis":{"type":"datetime","labels":{"format":"{value:%d-%m-%Y}","enabled":true},"className":""},"yAxis":{"type":"linear","opposite":false,"visible":false},"data":{"csv":"\"Date\";\"Permis S attribués à Genève (source: SEM)\";\"Permis S enregistrés à l'Hospice général (source : Hospice général)\"\n;;\n\"14.03.2022\";128;11\n\"21.03.2022\";420;215\n\"28.03.2022\";615;441\n\"04.04.2022\";866;652\n\"11.04.2022\";1106;919\n\"18.04.2022\";1405;1061\n\"25.04.2022\";1769;1361\n\"02.05.2022\";2197;1830\n\"09.05.2022\";2397;2173\n\"16.05.2022\";2556;2374\n\"23.05.2022\";2703;2472\n\"30.05.2022\";2802;2595\n\"06.06.2022\";2936;2700\n\"13.06.2022\";3002;2773\n\"20.06.2022\";3073;2810\n\"27.06.2022\";3151;2848\n\"04.07.2022\";3229;2910\n\"11.07.2022\";3292;2973\n\"18.07.2022\";3363;3026\n\"25.07.2022\";3424;3079\n\"01.08.2022\";3440;3104\n\"08.08.2022\";3462;3032\n\"15.08.2022\";3514;3017\n\"22.08.2022\";3535;3065\n\"29.08.2022\";3596;3089\n\"05.09.2022\";3620;3044\n\"12.09.2022\";3652;3077\n\"19.09.2022\";3697;3078\n\"26.09.2022\";3733;3104\n\"03.10.2022\";3781;3073\n\"10.10.2022\";3838;3085\n\"17.10.2022\";3864;3080\n\"24.10.2022\";3879;3074\n\"31.10.2022\";3915;3064\n\"07.11.2022\";3941;3032\n\"14.11.2022\";3981;3068\n\"21.11.2022\";4012;3072\n\"28.11.2022\";4051;3097\n\"05.12.2022\";4073;3089\n\"12.12.2022\";4129;3121\n\"19.12.2022\";4174;3137\n\"26.12.2022\";4200;3127\n\"02.01.2023\";4228;3120\n\"09.01.2023\";4254;3110\n\"16.01.2023\";4284;3113\n\"23.01.2023\";4303;3132\n\"30.01.2023\";4343;3168\n\"06.02.2023\";4379;3161\n\"13.02.2023\";4414;3164\n\"20.02.2023\";4443;3190\n\"27.02.2023\";4470;3229\n\"06.03.2023\";4470;3226\n\"13.03.2023\";4508;3223\n\"20.03.2023\";4508;3204\n\"27.03.2023\";4541;3220\n\"03.04.2023\";4594;3268\n\"10.04.2023\";4594;3218\n\"17.04.2023\";4633;3214\n\"24.04.2023\";4659;3197\n\"01.05.2023\";4659;3197\n\"08.05.2023\";4670;3155\n\"15.05.2023\";4702;3167\n\"22.05.2023\";4702;3174\n\"29.05.2023\";4715;3174\n\"05.06.2023\";4741;3154\n\"12.06.2023\";4746;3146\n\"19.06.2023\";4753;3155\n\"26.06.2023\";4760;3157\n\"03.07.2023\";4776;3110\n\"10.07.2023\";4792;3125\n\"17.07.2023\";4792;3139\n\"24.07.2023\";4856;3170\n\"31.07.2023\";4856;3170\n\"07.08.2023\";4860;3146\n\"14.08.2023\";4860;3167\n\"21.08.2023\";4860;3195\n\"28.08.2023\";4925;3212\n\"04.09.2023\";4946;3221\n\"11.09.2023\";4987;3239\n\"18.09.2023\";5022;3255\n\"25.09.2023\";5022;3280\n\"02.10.2023\";5093;3221\n\"09.10.2023\";5108;3238\n\"16.10.2023\";5138;3233\n\"23.10.2023\";5138;3241\n\"30.10.2023\";5193;3269\n\"06.11.2023\";5212;3273\n\"13.11.2023\";5212;3298\n\"20.11.2023\";5228;3297\n\"27.11.2023\";5238;3315\n\"04.12.2023\";5269;3321\n\"11.12.2023\";5269;3350\n\"18.12.2023\";5285;3378\n\"07.01.2024\";5315;3419\n\"15.01.2024\";5328;3421\n\"22.01.2024\";5328;3461\n\"29.01.2024\";5335;3470\n\"05.02.2024\";5335;3439\n\"12.02.2024\";5335;3467\n\"19.02.2024\";5333;3466\n\"26.02.2024\";5334;3490\n\"04.03.2024\";5334;3479\n\"11.03.2024\";5334;3449\n\"18.03.2024\";5336;3497\n\"25.03.2024\";5336;3516\n\"02.04.2024\";5336;3510\n\"08.04.2024\";5341;3520\n\"15.04.2024\";5341;3517\n\"22.04.2024\";5341;3532\n\"29.04.2024\";5341;3556\n\"06.05.2024\";5362;3559\n\"13.05.2024\";5362;3549\n\"21.05.2024\";5362;3556\n\"27.05.2024\";5362;3560\n\"03.06.2024\";5362;3541\n\"11.06.2024\";5362;3521\n\"25.06.2024\";5418;3536\n\"01.07.2024\";5418;3546\n\"16.07.2024\";5464;3535\n\"29.07.2024\";5464;3550","seriesMapping":[{"x":0,"y":1,"date":0,"permis_s_attribues_a_geneve_source_sem":1,"permis_s_enregistres_a_l_hospice_general_source_hospice_general":2},{"x":0,"y":2,"date":0,"permis_s_attribues_a_geneve_source_sem":1,"permis_s_enregistres_a_l_hospice_general_source_hospice_general":2}],"assignDataFields":[{"labels":"A","values":"B"},{"labels":"A","values":"C"}]}};
  var optionsStub;
  
  var templateDataSettings = {};

  var pluginCode = {};;

  function isScriptAlreadyIncluded(src){

    var scripts = document.getElementsByTagName("script");
    for (var i = 0; i < scripts.length; i++) {
      if (scripts[i].hasAttribute('src')) {
        const scriptTag = scripts[i].getAttribute('src') || '';
        if ((scriptTag.indexOf(src) >= 0) || 
            (scriptTag.indexOf('highcharts.src.js') > -1 && src === 'highcharts.js') ||
            ((scriptTag.indexOf('stock/highstock.js') > -1) && src === 'modules/highstock.js') ||
             (loadHighchartsModules && src === 'highcharts.js')) {
          return true;
        }
      }
    }
    return false;
  }

  function loadCSS() {
    var cssLength = externalCSS.length;
    for(var i=0; i < cssLength; i++) {
      var css = document.createElement('link');
      css.rel  = 'stylesheet';
      css.type = "text/css";
      css.href = externalCSS[i];
      document.body.appendChild(css);
    }
  }

  function allScriptsIncluded(){
    var allScripts = scripts.concat(extraScripts);
    var haveAllScriptsBeenIncluded = true;
    var scriptsToUse = document.getElementsByTagName("script");
    for(var n=0;n<allScripts.length;n++) {
      if (!isScriptAlreadyIncluded(allScripts[n], scriptsToUse)) {
        haveAllScriptsBeenIncluded = false;
        break;
      }
    }
    return haveAllScriptsBeenIncluded;
  }

  function modifyOptions(){
    if (options.data && !options.data.complete) {
      options.data.complete = function(chartOptions) {
        const keys = Object.keys(templateDataSettings || {});
        keys.forEach(function(key) {
          const serie = chartOptions.series[key];
          (serie.data || []).forEach(function(d, i) {
            if (templateDataSettings[key].data && templateDataSettings[key].data[i]) {
              window["everviz"].merge(d, templateDataSettings[key].data[i]);
            }
          })
        })

        if (options && options.chart && options.chart.type === 'packedbubble') {
          chartOptions.series.forEach((series) => {
            series.data = series.data.filter((point) => point.value);
          });
        }

        return chartOptions;
      }
    }
    
    optionsStub = window["everviz"].createStub(options);
    window["everviz"].merge(options, pluginCode);
    if ('StockChart' === 'Map') window["everviz"].modifyMapType(options);
  }

  function createChart() {
    if(chartCreated) return;

    var hasProj4 = extraScripts.indexOf('https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.6/proj4.js') > -1;

    if (!allScriptsIncluded() || 
      (hasProj4 && !window.proj4) || 
      !window["everviz"].merge ||
      !window["everviz"].createStub) {
      setTimeout(createChart, 200);
      return;
    }  

    modifyOptions();

    if (hasProj4) delayGen = 100;

    if (typeof window['Highcharts'] !== 'undefined') {
      
    if (window['everviz'] && window['everviz'].tooltipFormatter && 
        options.everviz && options.everviz.tooltip){
      if (!options.tooltip) options.tooltip = {};
      options.tooltip.formatter = window['everviz'].tooltipFormatter;
    }


    if (options.yAxis && options.yAxis.length === 1) options.yAxis = options.yAxis[0];
    if (options.xAxis && options.xAxis.length === 1) options.xAxis = options.xAxis[0];
    if (options.zAxis && options.zAxis.length === 1) options.zAxis = options.zAxis[0];

    Highcharts.merge(true, options, {
    plotOptions: {
        series: {
            dataLabels:{
              formatter: function() {
                return (this.point.index % 7 === 0 ? this.point.y : null);
              }
            }
        }
    }
});
/*
// Sample of extending options:
Highcharts.merge(true, options, {
    chart: {
        backgroundColor: "#bada55"
    },
    plotOptions: {
        series: {
            cursor: "pointer",
            events: {
                click: function(event) {
                    alert(this.name + " clicked\n" +
                          "Alt: " + event.altKey + "\n" +
                          "Control: " + event.ctrlKey + "\n" +
                          "Shift: " + event.shiftKey + "\n");
                }
            }
        }
    }
});
*/


      if (options && (options.lang || options.global)) {
        Highcharts.setOptions({
          global: options.global || {},
          lang: options.lang || {}
        });
      }

      if (Highcharts.Annotation) {
        Highcharts.Annotation.ControlPoint.prototype.redraw = function (animation) {
          this.graphic[animation ? 'animate' : 'attr'](
              this.options.positioner ? this.options.positioner.call(this, this.target) : null
          );
        };
      }

      chartCreated = true;
      window.HighchartsCloud.hasLoaded = true; 
      setTimeout(function(){
          if (window["everviz"] && window["everviz"].pendingAnim) {
            //TODO: change to using classes instead.
            //Bit of work to do there due to backward compatibility
            const elements = document.querySelectorAll(
              '#' + elementClassName + 
              ', #' + legacyElementClassName
            );
            const elementsArray = Array.prototype.slice.call(elements);
            elementsArray.forEach(function(element, elementIndex) {

              window["everviz"].updateRenderTo(optionsStub, element);
              const stubbedChart = new Highcharts.StockChart(optionsStub);
              

              window["everviz"].pendingAnim({
                id: element.id + '-' + elementIndex, 
                loaded: false,
                options: options,
                appear:function(){
                  window.everviz.disconnectResizeObserver(stubbedChart);
                  window["everviz"].updateRenderTo(options, element);
                  new Highcharts.StockChart(options);

                },
                element: element
              });
            });

          } else {
            const element = document.querySelector('#' + legacyElementClassName);

            if (element) new Highcharts.StockChart(legacyElementClassName, options)
            else new Highcharts.StockChart(elementClassName, options) 

            
          }
      }, delayGen);
    }
  }

  function check(scripts, cb) {
    if (loaded === scripts.length) {
      if (cb) {
        cb();
      } else {


        //Create first project
        if (!window.HighchartsCloud.versions ||
           (window.HighchartsCloud.versions && window.HighchartsCloud.versions.length !== window.HighchartsCloud.ondone.length)) {
             
          for (var i = 0; i < window.HighchartsCloud.ondone.length; i++) {
            try {
              window.HighchartsCloud.ondone[i]();
            } catch(e) {
              console.error(e);
            }
          }
        } else {
          if (window.HighchartsCloud.stack.length) {
            window.HighchartsCloud.stack[0]();
            window.HighchartsCloud.stack.shift();
            const shouldRenderNextChart = window.HighchartsCloud.stack.length > 0;
            if (shouldRenderNextChart) {
              window.HighchartsCloud.stack[0](true);
            }
          }
        }
        
      }
    }
  }

  function loadScript(s, scripts, cb) {
    if (!s) next();
    
    function next() {
      ++loaded;
      if (loaded < scripts.length) {
        loadScript(scripts[loaded], scripts, cb);
      }
      check(scripts, cb);
    }

    if (isScriptAlreadyIncluded(s)) {
      return next();
    }

    var n = document.createElement('script');

    n.onload = function () {
      next();
    };

    if (s.indexOf('http') >= 0) {
      n.src = s;
    } else {
      n.src = cdn + s;
    }
    document.body.appendChild(n);
  }

  function loadExtraScripts(){
    if (extraScripts.length > 0) {
      loaded = 0;
      loadScript(extraScripts[0], extraScripts);
    } else {
      check(scripts);
    }
  }

  function loadExtraScriptsAndMakeChart(isUsingStack){
    loaded = 0;
    loadCSS();
    if (extraScripts.length > 0) {
      if (isUsingStack) {
        window.HighchartsCloud.stack[0] = createChart;
        loadScript(extraScripts[0], extraScripts);
      }
      else loadScript(extraScripts[0], extraScripts, createChart);
    } else {
      check(extraScripts);
    }
  }

  function getAllScripts(){
    var evervizScripts = [];
    var allScripts = scripts.map(function(script) {
      return 'highcharts/'+ script.replace('highcharts/highcharts.js', 'highcharts.js').replace('.js', '');
    }).concat(
      extraScripts.map(function(script) {
        if (script.indexOf('https://app.everviz.com/resources/highcharts/11.4.8/') > -1) {
          return 'highcharts/'+ script.replace('https://app.everviz.com/resources/highcharts/11.4.8/', '').replace('.js', '');
        } else if (script.indexOf('https://app.everviz.com/') > -1) {
          evervizScripts.push(script);
          return null;
        } else return script;
      }).filter(function(s) {
        return s !== null;
      })
    );

    allScripts.forEach(function(script) {
      if (window.HighchartsCloud.allScripts)
        window.HighchartsCloud.allScripts[script] = 1
    });

    return {
      allHighchartsScripts: allScripts,
      evervizScripts: evervizScripts
    }
  }

  function loadRequireJSScript(){
    require.config({
      packages: [{
        name: 'highcharts',
        main: 'highcharts'
      }],
      paths: {
        'highcharts': 'https://app.everviz.com/resources/highcharts/11.4.8'
      }
    });

    const allScripts = getAllScripts();

    require(
      allScripts.allHighchartsScripts,
      function (Highcharts) {
        //Attach highcharts to the window for use in the everviz scripts
        window.Highcharts = Highcharts;
        if (allScripts && allScripts.evervizScripts.length) {
          require(allScripts.evervizScripts, function(){
            createChart();
            loadCSS();
          })
        } else {
          createChart();
          loadCSS();
        }
      }
    );
  }

  function loadInitialScript(){
    if (window['require'] && typeof require === "function" && typeof require.specified === "function") {
      loadRequireJSScript();
    } else {
      getAllScripts()
      loadScript(scripts[0], scripts, loadExtraScripts);
      loadCSS();
    }
  }

  if (typeof window['HighchartsCloud'] === 'undefined') {
    window.HighchartsCloud = {
      ondone: [createChart],
      stack: [createChart],
      hasWrapped: false,
      hasLoaded: false,
      externalCSS: externalCSS,
      versions: [injectVersion],
      types: ['chart'],
      allScripts: {},
      projectUUIDs: {'AN5j91Nt-': 1},
    };

    loadInitialScript();

  } else {
    if (window.HighchartsCloud.externalCSS) window.HighchartsCloud.externalCSS.push(externalCSS);
    if (!window.HighchartsCloud.hasLoaded) {
      if (!window.HighchartsCloud.projectUUIDs) window.HighchartsCloud.projectUUIDs = {};

      if (!window.HighchartsCloud.projectUUIDs['AN5j91Nt-']) {

        window.HighchartsCloud.projectUUIDs['AN5j91Nt-'] = 1;
        window.HighchartsCloud.ondone.push(loadExtraScriptsAndMakeChart);
        if (window.HighchartsCloud.stack) {
          window.HighchartsCloud.stack.push(loadExtraScriptsAndMakeChart);
          window.HighchartsCloud.versions.push(injectVersion);
          window.HighchartsCloud.types.push('chart');
        }

      }
      if (window['require'] && typeof require === "function" && typeof require.specified === "function") {
        getAllScripts()
        loadRequireJSScript();
      }
    }
    else {
      if (window['require'] && typeof require === "function" && typeof require.specified === "function") {
        loadRequireJSScript();
      } else {
        getAllScripts()
        loadExtraScriptsAndMakeChart();
      }
    }
  }

}());
