(function() {
  let group = []
  d3.xml("/img/mapa_ep.svg", function(svg) {
    Array.prototype.forEach.call(svg.getElementsByTagName("path"), function(path) {
      let data = {'CZ0100': {  district: 'Praha',  percent: '38,31%',  link: 'ep133?xjazyk=CZ&xnumnuts=1100',  state: 'ukončeno'},'CZ0201': {  district: 'Benešov',  percent: '30,29%',  link: 'ep133?xjazyk=CZ&xnumnuts=2101',  state: 'ukončeno'},'CZ0202': {  district: 'Beroun',  percent: '29,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=2102',  state: 'ukončeno'},'CZ0203': {  district: 'Kladno',  percent: '26,35%',  link: 'ep133?xjazyk=CZ&xnumnuts=2103',  state: 'ukončeno'},'CZ0204': {  district: 'Kolín',  percent: '28,34%',  link: 'ep133?xjazyk=CZ&xnumnuts=2104',  state: 'ukončeno'},'CZ0205': {  district: 'Kutná Hora',  percent: '27,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=2105',  state: 'ukončeno'},'CZ0206': {  district: 'Mělník',  percent: '26,68%',  link: 'ep133?xjazyk=CZ&xnumnuts=2106',  state: 'ukončeno'},'CZ0207': {  district: 'Mladá Boleslav',  percent: '27,84%',  link: 'ep133?xjazyk=CZ&xnumnuts=2107',  state: 'ukončeno'},'CZ0208': {  district: 'Nymburk',  percent: '29,39%',  link: 'ep133?xjazyk=CZ&xnumnuts=2108',  state: 'ukončeno'},'CZ0209': {  district: 'Praha-východ',  percent: '35,42%',  link: 'ep133?xjazyk=CZ&xnumnuts=2109',  state: 'ukončeno'},'CZ020A': {  district: 'Praha-západ',  percent: '39,12%',  link: 'ep133?xjazyk=CZ&xnumnuts=2110',  state: 'ukončeno'},'CZ020B': {  district: 'Příbram',  percent: '30,14%',  link: 'ep133?xjazyk=CZ&xnumnuts=2111',  state: 'ukončeno'},'CZ020C': {  district: 'Rakovník',  percent: '26,62%',  link: 'ep133?xjazyk=CZ&xnumnuts=2112',  state: 'ukončeno'},'CZ0311': {  district: 'České Budějovice',  percent: '29,75%',  link: 'ep133?xjazyk=CZ&xnumnuts=3101',  state: 'ukončeno'},'CZ0312': {  district: 'Český Krumlov',  percent: '26,28%',  link: 'ep133?xjazyk=CZ&xnumnuts=3102',  state: 'ukončeno'},'CZ0313': {  district: 'Jindřichův Hradec',  percent: '29,10%',  link: 'ep133?xjazyk=CZ&xnumnuts=3103',  state: 'ukončeno'},'CZ0314': {  district: 'Písek',  percent: '29,06%',  link: 'ep133?xjazyk=CZ&xnumnuts=3104',  state: 'ukončeno'},'CZ0315': {  district: 'Prachatice',  percent: '26,45%',  link: 'ep133?xjazyk=CZ&xnumnuts=3105',  state: 'ukončeno'},'CZ0316': {  district: 'Strakonice',  percent: '29,20%',  link: 'ep133?xjazyk=CZ&xnumnuts=3106',  state: 'ukončeno'},'CZ0317': {  district: 'Tábor',  percent: '30,10%',  link: 'ep133?xjazyk=CZ&xnumnuts=3107',  state: 'ukončeno'},'CZ0321': {  district: 'Domažlice',  percent: '26,19%',  link: 'ep133?xjazyk=CZ&xnumnuts=3201',  state: 'ukončeno'},'CZ0322': {  district: 'Klatovy',  percent: '28,90%',  link: 'ep133?xjazyk=CZ&xnumnuts=3202',  state: 'ukončeno'},'CZ0323': {  district: 'Plzeň-město',  percent: '30,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=3203',  state: 'ukončeno'},'CZ0324': {  district: 'Plzeň-jih',  percent: '27,02%',  link: 'ep133?xjazyk=CZ&xnumnuts=3204',  state: 'ukončeno'},'CZ0325': {  district: 'Plzeň-sever',  percent: '26,75%',  link: 'ep133?xjazyk=CZ&xnumnuts=3205',  state: 'ukončeno'},'CZ0326': {  district: 'Rokycany',  percent: '27,12%',  link: 'ep133?xjazyk=CZ&xnumnuts=3206',  state: 'ukončeno'},'CZ0327': {  district: 'Tachov',  percent: '21,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=3207',  state: 'ukončeno'},'CZ0411': {  district: 'Cheb',  percent: '23,26%',  link: 'ep133?xjazyk=CZ&xnumnuts=4101',  state: 'ukončeno'},'CZ0412': {  district: 'Karlovy Vary',  percent: '25,90%',  link: 'ep133?xjazyk=CZ&xnumnuts=4102',  state: 'ukončeno'},'CZ0413': {  district: 'Sokolov',  percent: '19,72%',  link: 'ep133?xjazyk=CZ&xnumnuts=4103',  state: 'ukončeno'},'CZ0421': {  district: 'Děčín',  percent: '22,57%',  link: 'ep133?xjazyk=CZ&xnumnuts=4201',  state: 'ukončeno'},'CZ0422': {  district: 'Chomutov',  percent: '19,00%',  link: 'ep133?xjazyk=CZ&xnumnuts=4202',  state: 'ukončeno'},'CZ0423': {  district: 'Litoměřice',  percent: '26,00%',  link: 'ep133?xjazyk=CZ&xnumnuts=4203',  state: 'ukončeno'},'CZ0424': {  district: 'Louny',  percent: '24,23%',  link: 'ep133?xjazyk=CZ&xnumnuts=4204',  state: 'ukončeno'},'CZ0425': {  district: 'Most',  percent: '19,28%',  link: 'ep133?xjazyk=CZ&xnumnuts=4205',  state: 'ukončeno'},'CZ0426': {  district: 'Teplice',  percent: '20,71%',  link: 'ep133?xjazyk=CZ&xnumnuts=4206',  state: 'ukončeno'},'CZ0427': {  district: 'Ústí nad Labem',  percent: '23,06%',  link: 'ep133?xjazyk=CZ&xnumnuts=4207',  state: 'ukončeno'},'CZ0511': {  district: 'Česká Lípa',  percent: '23,63%',  link: 'ep133?xjazyk=CZ&xnumnuts=5101',  state: 'ukončeno'},'CZ0512': {  district: 'Jablonec nad Nisou',  percent: '28,43%',  link: 'ep133?xjazyk=CZ&xnumnuts=5102',  state: 'ukončeno'},'CZ0513': {  district: 'Liberec',  percent: '28,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=5103',  state: 'ukončeno'},'CZ0514': {  district: 'Semily',  percent: '33,32%',  link: 'ep133?xjazyk=CZ&xnumnuts=5104',  state: 'ukončeno'},'CZ0521': {  district: 'Hradec Králové',  percent: '33,11%',  link: 'ep133?xjazyk=CZ&xnumnuts=5201',  state: 'ukončeno'},'CZ0522': {  district: 'Jičín',  percent: '29,67%',  link: 'ep133?xjazyk=CZ&xnumnuts=5202',  state: 'ukončeno'},'CZ0523': {  district: 'Náchod',  percent: '29,68%',  link: 'ep133?xjazyk=CZ&xnumnuts=5203',  state: 'ukončeno'},'CZ0524': {  district: 'Rychnov nad Kněžnou',  percent: '29,45%',  link: 'ep133?xjazyk=CZ&xnumnuts=5204',  state: 'ukončeno'},'CZ0525': {  district: 'Trutnov',  percent: '28,09%',  link: 'ep133?xjazyk=CZ&xnumnuts=5205',  state: 'ukončeno'},'CZ0531': {  district: 'Chrudim',  percent: '27,38%',  link: 'ep133?xjazyk=CZ&xnumnuts=5301',  state: 'ukončeno'},'CZ0532': {  district: 'Pardubice',  percent: '29,74%',  link: 'ep133?xjazyk=CZ&xnumnuts=5302',  state: 'ukončeno'},'CZ0533': {  district: 'Svitavy',  percent: '26,48%',  link: 'ep133?xjazyk=CZ&xnumnuts=5303',  state: 'ukončeno'},'CZ0534': {  district: 'Ústí nad Orlicí',  percent: '30,58%',  link: 'ep133?xjazyk=CZ&xnumnuts=5304',  state: 'ukončeno'},'CZ0631': {  district: 'Havlíčkův Brod',  percent: '29,36%',  link: 'ep133?xjazyk=CZ&xnumnuts=6101',  state: 'ukončeno'},'CZ0632': {  district: 'Jihlava',  percent: '30,11%',  link: 'ep133?xjazyk=CZ&xnumnuts=6102',  state: 'ukončeno'},'CZ0633': {  district: 'Pelhřimov',  percent: '30,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=6103',  state: 'ukončeno'},'CZ0634': {  district: 'Třebíč',  percent: '28,52%',  link: 'ep133?xjazyk=CZ&xnumnuts=6104',  state: 'ukončeno'},'CZ0635': {  district: 'Žďár nad Sázavou',  percent: '29,49%',  link: 'ep133?xjazyk=CZ&xnumnuts=6105',  state: 'ukončeno'},'CZ0641': {  district: 'Blansko',  percent: '30,05%',  link: 'ep133?xjazyk=CZ&xnumnuts=6201',  state: 'ukončeno'},'CZ0642': {  district: 'Brno-město',  percent: '32,37%',  link: 'ep133?xjazyk=CZ&xnumnuts=6202',  state: 'ukončeno'},'CZ0643': {  district: 'Brno-venkov',  percent: '31,17%',  link: 'ep133?xjazyk=CZ&xnumnuts=6203',  state: 'ukončeno'},'CZ0644': {  district: 'Břeclav',  percent: '25,31%',  link: 'ep133?xjazyk=CZ&xnumnuts=6204',  state: 'ukončeno'},'CZ0645': {  district: 'Hodonín',  percent: '26,75%',  link: 'ep133?xjazyk=CZ&xnumnuts=6205',  state: 'ukončeno'},'CZ0646': {  district: 'Vyškov',  percent: '28,08%',  link: 'ep133?xjazyk=CZ&xnumnuts=6206',  state: 'ukončeno'},'CZ0647': {  district: 'Znojmo',  percent: '26,00%',  link: 'ep133?xjazyk=CZ&xnumnuts=6207',  state: 'ukončeno'},'CZ0711': {  district: 'Jeseník',  percent: '22,54%',  link: 'ep133?xjazyk=CZ&xnumnuts=7101',  state: 'ukončeno'},'CZ0712': {  district: 'Olomouc',  percent: '27,84%',  link: 'ep133?xjazyk=CZ&xnumnuts=7102',  state: 'ukončeno'},'CZ0713': {  district: 'Prostějov',  percent: '25,05%',  link: 'ep133?xjazyk=CZ&xnumnuts=7103',  state: 'ukončeno'},'CZ0714': {  district: 'Přerov',  percent: '26,17%',  link: 'ep133?xjazyk=CZ&xnumnuts=7104',  state: 'ukončeno'},'CZ0715': {  district: 'Šumperk',  percent: '26,45%',  link: 'ep133?xjazyk=CZ&xnumnuts=7105',  state: 'ukončeno'},'CZ0721': {  district: 'Kroměříž',  percent: '28,73%',  link: 'ep133?xjazyk=CZ&xnumnuts=7201',  state: 'ukončeno'},'CZ0722': {  district: 'Uherské Hradiště',  percent: '28,36%',  link: 'ep133?xjazyk=CZ&xnumnuts=7202',  state: 'ukončeno'},'CZ0723': {  district: 'Vsetín',  percent: '27,10%',  link: 'ep133?xjazyk=CZ&xnumnuts=7203',  state: 'ukončeno'},'CZ0724': {  district: 'Zlín',  percent: '29,06%',  link: 'ep133?xjazyk=CZ&xnumnuts=7204',  state: 'ukončeno'},'CZ0801': {  district: 'Bruntál',  percent: '21,61%',  link: 'ep133?xjazyk=CZ&xnumnuts=8101',  state: 'ukončeno'},'CZ0802': {  district: 'Frýdek-Místek',  percent: '25,89%',  link: 'ep133?xjazyk=CZ&xnumnuts=8102',  state: 'ukončeno'},'CZ0803': {  district: 'Karviná',  percent: '20,23%',  link: 'ep133?xjazyk=CZ&xnumnuts=8103',  state: 'ukončeno'},'CZ0804': {  district: 'Nový Jičín',  percent: '27,03%',  link: 'ep133?xjazyk=CZ&xnumnuts=8104',  state: 'ukončeno'},'CZ0805': {  district: 'Opava',  percent: '24,05%',  link: 'ep133?xjazyk=CZ&xnumnuts=8105',  state: 'ukončeno'},'CZ0806': {  district: 'Ostrava-město',  percent: '24,05%',  link: 'ep133?xjazyk=CZ&xnumnuts=8106',  state: 'ukončeno'}},
          id = path.id
      if (data[path.id]) {
        group.push({
          district: data[id].district,
          percent: data[id].percent,
          showTooltip: !!data[id].district,
          link: data[id].link,
          state: data[id].state,
          id: id,
          d: path.attributes.d.value
        })
      } else {
        group.push({
          showTooltip: false,
          id: id,
          d: path.attributes.d.value
        })
      }
    })
    draw(group)
  })
  function tooltipHtml(d) {
    return (
      "<p class=\"okres\"> " + d.district + " </p>" +
      "<p class=\"ucast\"> " + d.percent + "</p>" +
      "<p class=\"stav\"> " + d.state + " </p>"
    )
  }
  function draw(group) {
    d3.select("#region-svg")
      .selectAll(".state")
      .data(group)
      .enter()
      .append("g")
      .attr("class", "state-g")
      .attr("stroke", "#000000")
      .attr("stroke-width", function(d) {return (d.id === "0") ? "1" : "0.5"})
      .append("a")
      .attr("class", "state-a")
      .attr("target", "_self")
      .attr("xlink:href", function(d) {return (d.name === "") ? "#" : d.link})
      .append("path")
      .attr("class", "state-path")
      .attr("d", function(d) {return d.d})
      .attr("id", function(d) {return d.id})
      .attr("transform", "scale(0.8)")
      .style("fill", function(d) {
        if (!!d.percent) {
          return d3.interpolate("#e5e5ff", "#0000e5")(d.percent.replace(/,/g, ".").replace(/\%?/g, "") / 100)
        } else {
          return "#686868"
        }
      })
      .on("mouseover", mouseOver).on("mouseout", mouseOut)
    function mouseOver(d) {
      if (d.showTooltip) {
        d3.select("#tooltip").transition().duration(200).style("opacity", 1)
        d3.select("#tooltip").html(tooltipHtml(d))
        .style("left", (d3.event.clientX) + "px")
        .style("top", (d3.event.clientY) + "px")
      }
    }
    function mouseOut(d) {
      if (d.showTooltip) {
        d3.select("#tooltip").transition().duration(500).style("opacity", 0)
      }
    }
  }
})()
