
var parameters = parseQueryString();
var language = parameters['language'] ;
if (language != 'en' && language != 'all')
  language='fr';
var category = parameters['category'] ;
if (category != 'other' && category != 'all')
  category='semweb';

var UriWithoutQuery = location.search == '' 
  ? location.href 
  : location.href.substring(0, location.href.lastIndexOf(location.search));

// hook event

window.onload = initFilter;
if (document.addEventListener) {
    onDOMLoad = function() {
      window.onload = undefined;
      initFilter();
    };
    document.addEventListener("DOMContentLoaded", onDOMLoad, false);
}

function initFilter() {
  document.getElementById('category').value = category;
  document.getElementById('language').value = language;
  filter();
}

function filter() {
  dayGroups = getElementsByClassName('daygroup');
  for (var i=0; i< dayGroups.length; i++) 
    filterDayGroup(dayGroups[i]);
  var currentCategory = document.getElementById('category').value;
  var currentLanguage = document.getElementById('language').value;
  if (category == currentCategory && language==currentLanguage) {
    document.getElementById('permalink').innerHtml = ' ';
  } else {
    document.getElementById('permalink').innerHTML = 
      'Lien permanent pour cette s&eacute;lection : [<a href="' +
    UriWithoutQuery + '?language=' + currentLanguage + 
    '&category='+ currentCategory +'">lien</a>] ';
  }
}

function filterDayGroup(dayGroup) {
  channelGroups = getElementsByClassName('channelgroup', dayGroup);
  var nbVisibleChannels = 0;
  for (var i=0; i< channelGroups.length; i++)
    nbVisibleChannels += filterChannelGroup(channelGroups[i]);
  if (nbVisibleChannels > 0) {
    dayGroup.style.display='block';
    return 1;
  } else {
    dayGroup.style.display='none';
    return 0;
  }
}

function filterChannelGroup(channelGroup) {
  entryGroups = getElementsByClassName('entrygroup', channelGroup);
  var nbVisibleEntries = 0;
  for (var i=0; i< entryGroups.length; i++) 
    nbVisibleEntries += filterEntryGroup(entryGroups[i]);
  if (nbVisibleEntries > 0) {
    channelGroup.style.display='block';
    return 1;
  } else {
    channelGroup.style.display='none';
    return 0;
  }
}

function filterEntryGroup(entryGroup) {
  var lang=entryGroup.lang;
  var langs = document.getElementById('language').value;
  var isSemWeb = getElementsByClassName('date', entryGroup)[0].getElementsByTagName('a')[0].firstChild.nodeValue.indexOf('WebSemantique') > -1;
  var cats = document.getElementById('category').value;
  if((langs=='all' || langs==lang) && (cats=='all' || (cats=='semweb' && isSemWeb ) || (cats=='other')&& !isSemWeb )){
    entryGroup.style.display='block';
    return 1;
  } else { 
    entryGroup.style.display='none';
    return 0;
  }
}

function getElementsByClassName(name, node) {
  if (node == undefined)
    node=document.body;
   if (node.className==name) {
    return [node];
  }
  var nodes = new Array();
  for (var i = 0; i<node.childNodes.length; i++) {
    var child = node.childNodes[i];
     if (child.nodeType ==1 ) {
      nodes = nodes.concat(getElementsByClassName(name, child));
    }
  }
  return nodes;
}

function parseQueryString (str) {
  str = str ? str : location.search;
  var query = str.charAt(0) == '?' ? str.substring(1) : str;
  query = query.replace(/\+/g, ' ');
  var args = new Object();
  if (query) {
    var fields = query.split('&');
    for (var f = 0; f < fields.length; f++) {
      var field = fields[f].split('=');
      args[unescape(field[0])] = unescape(field[1]);
    }
  }
  return args;
}
