// http server and directory where the ogg files are
var videoURL = "videos/";

// list of categories with names, each with a list of videos
var categories = [
  { en: "Opening", fr: "Vernissage", videos: [
    { url: "makeart2010_-_2010-11-04_-_visitors.ogg", en: "Exhibition visitors", fr: "Exposition visiteurs" },
    { url: "makeart2010_-_2010-11-04_-_opening.ogg", en: "Welcome to make art", fr: "Bienvenue à make art" },
    { url: "makeart2010_-_2010-11-04_-_mcld.ogg", en: "MCLD \"CODEBOX\" performance", fr: "MCLD \"CODEBOX\" performance" }
  ]},
  { en: "Planetarium", fr: "Planétarium", videos: [
    { url: "makeart2010_-_2010-11-05_-_doebereiner_and_morimoto.ogg", en: "döbereiner & morimoto", fr: "döbereiner & morimoto" }
  ]},
  { en: "Outlooks", fr: "Perspectives", videos: [
    { url: "makeart2010_-_2010-11-06_-_gabriel_menotti.ogg", en: "Gabriel Menotti \"Gambiarra and The Prototyping Perspective\"", fr: "Gabriel Menotti \"Gambiarra and The Prototyping Perspective\"" },
    { url: "makeart2010_-_2010-11-06_-_vito_campanelli_1.ogg", en: "Vito Campanelli \"remix it yourself\" (part 1)", fr: "Vito Campanelli \"remix it yourself\" (part 1)" },
    { url: "makeart2010_-_2010-11-06_-_vito_campanelli_2.ogg", en: "Vito Campanelli \"remix it yourself\" (part 2)", fr: "Vito Campanelli \"remix it yourself\" (part 2)" },
    { url: "makeart2010_-_2010-11-06_-_stdin_brainch.ogg", en: "<stdin> \"Brainch\"", fr: "<stdin> \"Brainch\"" }
  ]},
  { en: "Workbench", fr: "Plan de travail", videos: [
    { url: "makeart2010_-_2010-11-06_-_loredana_bontempi.ogg", en: "Loredana Bontempi \"Digital dump\"", fr: "Loredana Bontempi \"Digital dump\"" },
    { url: "makeart2010_-_2010-11-06_-_emanuele_bonetti.ogg", en: "Emanuele Bonetti \"Peer-to-peer design strategies\"", fr: "Emanuele Bonetti \"Peer-to-peer design strategies\"" },
    { url: "makeart2010_-_2010-11-06_-_calcyum.ogg", en: "Calcyum \"FLOSS issues in graphic design\"", fr: "Calcyum \"FLOSS issues in graphic design\"" },
    { url: "makeart2010_-_2010-11-06_-_open_source_publishing.ogg", en: "Open Source Publishing \"Dingbat Liberation Fest 0.4\"", fr: "Open Source Publishing \"Dingbat Liberation Fest 0.4\"" }
  ]},
  { en: "Savoir-faire", fr: "Savoir-faire", videos: [
    { url: "makeart2010_-_2010-11-06_-_aditya_mandayam.ogg", en: "Aditya Mandayam \"laptopograms\"", fr: "Aditya Mandayam \"laptopograms\"" },
    { url: "makeart2010_-_2010-11-06_-_alberto_de_campo.ogg", en: "Alberto de Campo \"Varia Zoosystematica Profundorum\"", fr: "Alberto de Campo \"Varia Zoosystematica Profundorum\"" },
    { url: "makeart2010_-_2010-11-06_-_dorothe_depeauw_and_simon_yuill.ogg", en: "Dorothé Depeauw & Simon Yuill \"objscrs / Kaleidoscope\"", fr: "Dorothé Depeauw & Simon Yuill \"objscrs / Kaleidoscope\"" },
    { url: "makeart2010_-_2010-11-06_-_ginger_coons.ogg", en: "ginger coons \"Libre Graphics Magazine\"", fr: "ginger coons \"Libre Graphics Magazine\"" }
  ]},
  { en: "Placard concerts", fr: "Placard concerts", videos: [
    { url: "makeart2010_-_2010-11-06_-_benjamin_cadon_-_2013.ogg", en: "Benjamin Cadon \"2013\"", fr: "Benjamin Cadon \"2013\"" },
    { url: "makeart2010_-_2010-11-06_-_marije_baalman.ogg", en: "Marije Baalman \"Code LiveCode Live\"", fr: "Marije Baalman \"Code LiveCode Live\"" },
    { url: "makeart2010_-_2010-11-06_-_noish_vs_automata_v001.ogg", en: "Noish Vs Automata_v001", fr: "Noish Vs Automata_v001" },
    { url: "makeart2010_-_2010-11-06_-_alberto_de_campo_1.ogg", en: "Alberto de Campo (part 1)", fr: "Alberto de Campo (part 1)" },
    { url: "makeart2010_-_2010-11-06_-_alberto_de_campo_2.ogg", en: "Alberto de Campo (part 2)", fr: "Alberto de Campo (part 2)" },
    { url: "makeart2010_-_2010-11-06_-_segmentation_fault.ogg", en: "Segmentation Fault", fr: "Segmentation Fault" }
  ]},
  { en: "Brunch club", fr: "Brunch club", videos: [
    { url: "makeart2010_-_2010-11-07_-_brunch_club.ogg", en: "Brunch club", fr: "Brunch club" }
  ]}
];

// return a closure that adds a video with the right url and fallback text
function addvideo(url, text) { return function(evt) {
  var download = { en: "download", fr: "download" }; // TODO FIXME TRANSLATE
  var doc = document;
  var eh3 = evt.target;
  var ediv = eh3.parentNode;
  var edivv = doc.createElement("div");
  var ev = doc.createElement("video");
  ev.setAttribute("autoplay", "autoplay");
  ev.setAttribute("controls", "controls");
  ev.setAttribute("src", url);
//  ev.setAttribute("poster", url + ".jpg"); // do any browsers support this yet?
  var ea = doc.createElement("a");
  ea.setAttribute("href", url);
  ea.setAttribute("title", text);
  var edown = doc.createTextNode(download[lang]);
  ea.appendChild(edown);
  ev.appendChild(ea);
  edivv.appendChild(ev);
  ediv.appendChild(edivv);
  eh3.onclick = removevideo(url, text); // behaviour change: toggle
}; }

// return a closure that removes the neighbouring video
function removevideo(url, text) { return function(evt) {
  var doc = document;
  var eh3 = evt.target;
  var ediv = eh3.parentNode;
  var ev = eh3.nextSibling;
  ediv.removeChild(ev);
  eh3.onclick = addvideo(url, text); // behaviour change: toggle
}; }

// called on body load
function init() {
  var doc = document;
  var evs = doc.getElementById("videos");
  if (evs) { // if this page is the videos page
    var c;
    for (c = 0; c < categories.length; c = c + 1) {
      // add a heading for each category that has a non-empty video inside
      var videos = categories[c].videos;
      var nonempty = false;
      var v;
      for (v = 0; v < videos.length; v = v + 1) {
        nonempty = nonempty || videos[v].url != "";
      }
      if (nonempty) {
        var eh3 = doc.createElement("h3");
        var ehead = doc.createTextNode(categories[c][lang]);
        eh3.appendChild(ehead);
        evs.appendChild(eh3);
        var i;
        for (i = 0; i < videos.length; i = i + 1) {
          // add a link for each video that has a non-empty url..
          var video = videos[i];
          if (video.url != "") {
            var url = videoURL + video.url;
            var hash = video.url;
            var text = video[lang];
            var ediv = doc.createElement("div");
            ediv.setAttribute("class", "video");
            ediv.setAttribute("id", hash);
            var ea = doc.createElement("a");
            ea.setAttribute("href", "#" + hash); // link to self
            ea.setAttribute("class", "videolink");
            var ehead = doc.createTextNode(text);
            ea.appendChild(ehead);
            ediv.appendChild(ea);
            ea.onclick = addvideo(url, text); // link behaviour
            evs.appendChild(ediv);
          }
        }
      }
    }
  }
}


