/*
 * Gestion des filtres sur les communiqués de presse
 */
if(!SOF) {var SOF = {};}
SOF.PressReleasesFilters = {
  press_releases: null,
  filters: {
    year: null,
    theme: null
  },
  results: null,
  messages: {
    'de': '<p>Derzeit ist keine Pressemeldung zum gesuchten Begriff erhältlich.</p>',
    'es': '<p>Disculpe, no contamos con press releases disponibles sobre su requerimiento.</p>',
    'fr': '<p>Aucun résultat ne correspond à votre recherche.</p>',
    'gb': '<p>There is no press release corresponding to your demand.</p>',
    'it': '<p>Non esiste un comunicato stampa che corrisponda alla sua richiesta.</p>',
    'zh': '<p>暂时没有符合您需求的新闻稿</p>'
  },
  language: 'fr',
  
  /**
   * Rafraichissement des résultats
   * @return void
   */
  refresh: function()  
  {
    // initialisation des communiqués
    if (null == this.press_releases) {
      this.detect_language();
      this.load();
    }
    this.refresh_filters();
    
    this.results = 0;
    for (var i in this.press_releases) {
      if (!this.press_releases[i].element) continue;
      
      if (this.filters.year != '0' && this.filters.theme != '0') {
        if (this.filters.year == this.press_releases[i].year && this.filters.theme == this.press_releases[i].theme) {
          this.press_releases[i].element.style.display = 'block';
          this.results++;
        } else {
          this.press_releases[i].element.style.display = 'none';
        }
      } else if (this.filters.year != '0') {
        if (this.filters.year == this.press_releases[i].year) {
          this.press_releases[i].element.style.display = 'block';
          this.results++;
        } else {
          this.press_releases[i].element.style.display = 'none';
        }
      } else if (this.filters.theme != '0') {
        if (this.filters.theme == this.press_releases[i].theme) {
          this.press_releases[i].element.style.display = 'block';
          this.results++;
        } else {
          this.press_releases[i].element.style.display = 'none';
        }
      } else {
        this.press_releases[i].element.style.display = 'block';
        this.results++;
      }
    }
    if (0 == this.results) {
      this.error_message.style.display = 'block';
    } else {
      this.error_message.style.display = 'none';
    }
  },
  
  /**
   * Chargement des données à partir du DOM 
   * @return void
   */
  load: function()
  {
    tmp = document.getElementsByTagName('li');
    this.press_releases = [];
    for (var i in tmp) {
      if (tmp[i].parentNode && tmp[i].parentNode.parentNode && tmp[i].parentNode.parentNode.className.indexOf('communiques') != -1) {
        var year = tmp[i].getElementsByTagName('h3').item(0).innerHTML;
        year = year.split(' ');
        for (var j in year) {
          if (year[j].length == 4 && !isNaN(year[j])) {
            year = year[j];
            break;
          }
        }
        
        this.press_releases[this.press_releases.length] = {
          element: tmp[i],
          year: year,
          theme: tmp[i].getAttribute('topic')
        };
      }
    }
    
    // injection du containeur du message d'erreur éventuel si pas de résultats
    this.error_message = document.createElement('li');
    this.error_message.style.display = 'none';
    this.error_message.innerHTML = this.messages[this.language];
    this.press_releases[0].element.parentNode.insertBefore(this.error_message, this.press_releases[0].element);
  },
  
  /**
   * Mis à jour des filtres
   * @return void
   */
  refresh_filters: function()
  {
    var year_select = document.getElementById('filters_year');
    var theme_select = document.getElementById('filters_theme');
    
    this.filters = {
      year: (year_select.value) ? year_select.value : '0',
      theme: (theme_select.value) ? theme_select.value : '0'
    };
  },
  
  /**
   * Initialisation de la langue (pour messages d'erreurs)
   * @return void
   */
  detect_language: function() 
  {
    var t = window.location.href.split('/');
    this.language = t[3];
  }
};