

;var site = (function(){

  /**********
    Membre privé à l'objet site
  **********/
  var that = this;

  /**
   * @name flash.update
   * @desc Overwrite jQuery.flash.update function.
   *
  **/
  var resetFlashUpdate = function() {
    /**
     * @name flash.update
     * @desc The default method for replacing an element with an update message.
     *
    **/
    jQuery.fn.flash.update = function(htmlOptions) {
      var url = String(location).split('?');
      url.splice(1,0,'?hasFlash=true&');
      url = url.join('');
      if(document.body.className.substr(0,2) === 'fr') {
        var msg = '<p class="fr no-flash">Pour voir ce contenu vous aurez besoin de la toute derniere version de Adobe Flash Player. <a href="http://www.adobe.com/go/getflashplayer" target="_blank">Téléchargez Flash Player</a>. <!-- Already have Flash Player? <a href="'+url+'">Click here.</a> --></p><p class="en" lang="en">This content requires the very latest version Flash Player.<br /> <a href="http://www.adobe.com/go/getflashplayer" target="_blank">Download Flash Player</a>.</p>';
      } else {
        var msg = '<p class="en no-flash">This content requires the very latest version Flash Player. <a href="http://www.adobe.com/go/getflashplayer" target="_blank">Download Flash Player</a>. <!-- Already have Flash Player? <a href="'+url+'">Click here.</a> --></p><p class="en" lang="en">This content requires the very latest version Flash Player.<br /> <a href="http://www.adobe.com/go/getflashplayer" target="_blank">Download Flash Player</a>.</p>';
      }
      this.innerHTML = '<span class="alt">'+this.innerHTML+'</span>';
      jQuery(this)
        .addClass('flash-update')
        .prepend(msg);
    };
  };
  
  this.toProperType = function(val) {
    if(typeof val == "object" || typeof val == "function") return val;
    if(val == 'true') return true;
    else if(val == 'false') return false;
    else if(/^\d+$/.test(val)) return parseInt(val);
    else return '' + val.toString() + '';
  }
  
  var prepareFlash = function() {
    // Récupère le source du tag <noscript> flash-replacer
    if(!document.getElementById('mediamovie')) return;
    var attrSource = jQuery('#mediamovie').html().replace(/&gt;/g, '>').replace(/&lt;/g, '<');
    // Récupère le contenue de la fause balise <flashembed> qui se trouve dans le commentaire HTML de la balise <noscript>
    var flvparams = attrSource.match(/<(?:flash)?embed([^>]*)>/i);

    // Si le flashembed a été trouvé génère l'objet de remplace pour le jQuery.flash
    if(flvparams && typeof(flvparams != 'undefined')) {
      // Sépare les paramètres et supprime les éléments vide
      /*
        .match : trouve les combinaison attribut="valeur" et retourne un array
        .join : retourne une string avec tous les paramètres séparés par des |
        .replace : Supprime tous les "
        .split : retourne un array avec chaque combinaison attribut=valeur
      */
      var params = flvparams[1].match(/[a-z]+\="[^"]*"/gi).join('|').replace(/"/g, '').split('|');
      var flvVersion = {version: '6.0'}; //Version par défaut
      flvparams = {};
      for(var i = 0; i < params.length; i+=1) {
        //Sépare l'attribut de ça valeur (p = array[attribut, valeur])
        var p = params[i].match(/(^[a-z]+)=(.*)/i);

        // Les propriété flashvars et (min)version sont traité à part
        if(!/^(flashvars|(?:min)version)$/i.test(p[1])) {
          // Extend flvparms avec la nouvelle valeur
          flvparams[p[1]] = this.toProperType(p[2]);

        } else if (p[1].toLowerCase() == 'flashvars') {
          var vars = new String(p[2]);
          vars = vars.replace('&amp;', '&').split('&');
          var flashvars = {};
          for(var j = 0; j < vars.length; j++) {
            var v = vars[j].match(/(^[^=]+)=(.*)/i);
            flashvars[v[1]] = v[2];
          }
          flvparams.flashvars = flashvars;

        } else {
          flvVersion.version = p[2].toString();
        }
      }
      // Ajoute le flash à la page
      jQuery("#mediamovie").flash(flvparams, flvVersion);
    }

  };
  
  /**********
    Membre public à l'objet site
  **********/
  return {
    init: function() {
      resetFlashUpdate();
      prepareFlash();
    }
  };
    
})();

