(() => {
  if (!(window.Options && localStorage && document.querySelector ('div.post.op') && Options.get_tab ('webm'))) { return; }

  const setloopsto = (root, loop) => {
    if (typeof setupVideosIn === "function") {
      // expand-video.js
      const label = loop ? '[loop]' : '[play once]'
      $(root).find ('p.fileinfo > span').filter ((k, e) => e.innerText === label).each ((k, e) => e.click ())
    } else {
      const flag = loop ? '1' : '0'
      Array.from (root.querySelectorAll ("div.file > a.file")).filter (e => e.hasAttribute ("href")).map (e => [e, e.getAttribute ("href").match (/^(\/player[.]php[?].+&loop=)([01])$/)]).filter (e_match => e_match [1] != null).forEach (e_match => e_match [0].setAttribute ("href", e_match [1] [1] + flag))
    }
  }

  const prefix  = 'videoloop-'
  const getcb   = (name) => document.getElementById (prefix + name)
  const checked = (name) => getcb (name).checked
  const cbset   = (name, flag) => { getcb (name).checked = flag; }

  const addgui = () => {
    const vlautoset = ((localStorage [prefix + "autoset"] || "false") === "true")
    const vlonoff   = ((localStorage [prefix + "onoff"  ] || "true" ) === "true")
    const gui       = '<span>'
      + _('Loop:')
      + ' <label><input type="checkbox" id="' + prefix + 'onoff">'   + _('On')       + '</label>'
      + ' <label><input type="checkbox" id="' + prefix + 'autoset">' + _('Auto set') + '</label>'
      + ' <button id="' + prefix + 'setnow">' + _('Set now') + '</button>'
      + '</span>';
    Options.extend_tab ("webm", gui)
    cbset ('autoset', vlautoset)
    cbset ('onoff',   vlonoff)
    $('#' + prefix + 'autoset, #' + prefix + 'onoff').on("change", (ev) => {
      const cb = ev.target
      localStorage [cb.getAttribute ("id")] = cb.checked ? "true" : "false"
    })
    $('#' + prefix + 'setnow').on("click", () => {
      setloopsto (document, checked ('onoff'))
    })
  }

  addgui()
  if (checked ('autoset')) {
    setloopsto (document, checked ('onoff'))
  }
})()