Shadowbox.init();
/* general */

var LANG = $('html').attr('lang');
var dom = window.location.hostname;


function _(string) { return translate[string][LANG]; } // function to translate


/*
  Plugin ClearCarousel par Olivier Gorzalka
  permet de créer un caroussel
  Dernière mise à jour : 6 avril 2009
*/
(function($) {
  $.fn.extend({
    clearCarousel: function (options) {
      // Default options
      var settings = {
        insideContainer:'ul', // conteneur de la liste des panneaux à défiler
        panelTag:'li', // balise des différents panneaux
        nextBtn:'.nextitem', // selecteur suivant
        prevBtn:'.previousitem', // selecteur précédent
        classInsideWrapper:'.wrappernavigation', // classe du conteneur ajouté en javascript
        nbrToShow:5, // nbre de diapo à afficher par défaut
        timing:500, // vitesse de l'animation
        activeBtnCss: {
          'cursor':'pointer',
          opacity:1
        },
        inactiveBtnCss: {
          'cursor':'default',
          opacity:0.5
        }
      };
      if(options) $.extend(settings, options);

      var widthElem,
        page = 0,
        baseWidth = 0,
        containerWidth = 0,
        $this = $(this),
        $container =  $this.find(settings.insideContainer),
        $screens = $container.find(settings.panelTag),
        totalScreen = $screens.length;

      function c(classSelector) { return classSelector.substr(1, classSelector.length); }  // remove the "." form the class selector

      $this.addClass('clearCarousel');

      if (totalScreen <= settings.nbrToShow) { $(settings.nextBtn+','+settings.prevBtn).css('display','none'); } else {
        $(settings.prevBtn).css(settings.inactiveBtnCss);
      }

      function nextPrevSlide(sense) {
        if(sense=='next') {
          $(settings.prevBtn).css(settings.activeBtnCss);
          if (page+settings.nbrToShow != totalScreen) {
            page++;

            var movementNext = $container.offset().left - $screens.eq(page).offset().left;
            $container.stop().animate({
              'left':movementNext
            },settings.timing,function() {
              if (page+settings.nbrToShow == totalScreen) { $(settings.nextBtn).css(settings.inactiveBtnCss); }
              else { $(settings.nextBtn).css(settings.activeBtnCss); }
            });
          }
        } else {
          if (page != 0) {
            page--
            $(settings.nextBtn).css(settings.activeBtnCss);
            var movementPrevious = $container.offset().left - $screens.eq(page).offset().left;
            $container.stop().animate({
              'left':movementPrevious
            },settings.timing,function() {
              if (page == 0) { $(settings.prevBtn).css(settings.inactiveBtnCss); }
              else { $(settings.prevBtn).css(settings.activeBtnCss); }
            })
          }
        }
      }

      $screens.each(function(i,item) {
        widthElem = $(this).outerWidth();
        baseWidth += widthElem;
        if (i < settings.nbrToShow) {
          containerWidth += widthElem;
        }
      });

      $container.wrap('<div style="width:'+containerWidth+'px;zoom:1;position:relative;float:left;" class="'+c(settings.classInsideWrapper)+'"></div>')
      $(settings.classInsideWrapper)
        .css({'overflow':'hidden'})
        .find(settings.insideContainer).css({
        'width':baseWidth
        });
      $(settings.nextBtn).css(settings.activeBtnCss).click(function() { nextPrevSlide('next'); });
      $(settings.prevBtn).click(function() { nextPrevSlide('previous'); });
    }
  });
})(jQuery);

/**************************** SLIDER ACTUS HOME *************************/
var BQ_CURRENT;
var tick;
var fadeOut;
var fadeIn;

function bqs_tick()
{
  $("#actualites ul li").eq(BQ_CURRENT).animate({ left: '-420px' }, 700);
  fadeOut = setTimeout('bq_fadeOut('+BQ_CURRENT+')',700);
  fadeIn = setTimeout('bq_fadeIn()',700);
}

$(function() {
  if( $("#actualites ul li").length > 1 ){
    BQ_CURRENT = 0;
    base = setTimeout('bqs_tick()',10000);
  }
});
function bq_fadeIn()
{
  if( BQ_CURRENT +1 == $("#actualites ul li").length )
    BQ_CURRENT = 0;
  else
    BQ_CURRENT++;
  $("#actualites ul li").css("left","420px");
  $("#actualites ul li").eq(BQ_CURRENT).show();
  $("#actualites ul li").eq(BQ_CURRENT).animate({ left: '0px' }, 1000);
  tick = setTimeout('bqs_tick()',10000);
}

function bq_fadeOut( BQ )
{
  $("#actualites ul li").eq(BQ_CURRENT).hide();
}




/**************************** LIENS FICHIERS OU EXTERNES *************************/

// Ajout automatique des classes/attributs sur les liens fichiers ou externes
jQuery(document).ready(function(){

  var lien, ext, type, url, is_external, title;

  var new_window_txt = "dans une nouvelle fenêtre";

  // Gestion des spots publicitaires
  setup_spots();

  // Quelle langue ?
  if( readCookie('lang') == 'en' )
    new_window_txt = "in a new window";

  jQuery('a').each(function(i, item) {
    // Le lien n'a pas de href ? On passe
    if (jQuery(item).hasClass('lightbox') ||
      jQuery(item).parents('h1,h3,h4,#acces-rapide,#header,#footer,#intro-message').length ||
      jQuery(item).children('img').length
    ) {
      return;
    }

    var after = false;
    if( jQuery(item).parents('dt').length ){
      // on place le picto apres
      var after = true;
    }

    // On récupère l'url du lien
    url = jQuery(item).attr('href');
    if( url == undefined )
      return;

    // C'est un lien externe ?
    is_external = is_external_url(url);

    // Récupération du type de fichier
    type = get_type(url);

    // C'est un lien externe ?
    if( is_external ){
      if( jQuery(item).attr("title") != undefined )
        title = jQuery(item).attr("title");
      else
        title = jQuery(item).text();
      jQuery(item).attr("title", title +" ("+new_window_txt+")");
      jQuery(item).attr('rel','external');
    }

    // C'est un lien externe normal
    if( is_external && !type ){
      if (after) {
        jQuery("<span class=\"external\">&nbsp;</span>").insertAfter(jQuery(item));
      }
      else {
        jQuery("<span class=\"external\">&nbsp;</span>").insertBefore(jQuery(item));
      }
    }

    // C'est un fichier
    if( type ){
      if (after) {
          jQuery("<span class=\"typeicone type"+type+"\">&nbsp;</span>").insertAfter(jQuery(item));
      }
      else{
        jQuery("<span class=\"typeicone type"+type+"\">&nbsp;</span>").insertBefore(jQuery(item));
      }

      // On ajoute le marquage des liens pdf pour les stats
      // A faire : nettoyer le lien [a-Z0-9,.;-_ ]

      jQuery(item).bind('click',function(e){
        if( jQuery(this).attr('rel') == "external" ){
          return;
        }
        e.preventDefault();
        e.stopPropagation();
        var url = jQuery(this).attr('href');
        window.open(url);
        return false;
        });
    }
  });



  /* ClearCarousel */
  /* Insertion des boutons de controles */
  var prevBtnHtml = '<img class="previousitem" src="../../../../style/images/icones/prev-item.png" width="49" height="45" alt="Précedent" />';
  var nextBtnHtml = '<img class="nextitem" src="../../../../style/images/icones/next-item.png" width="49" height="45" alt="Suivant" />';
  $('.slidethis').css('position','relative').wrap('<div class="clearslider"/>')
  $(prevBtnHtml).insertBefore('.clearslider .slidethis');
  $(nextBtnHtml).insertAfter('.clearslider .slidethis');

  $('.clearslider').clearCarousel({
    insideContainer:'ul',
    panelTag:'li',
    nextBtn:'.nextitem',
    prevBtn:'.previousitem',
    classInsideWrapper:'.wrappernavigation',
    nbrToShow:3,
    correctBottomTopHeight:8
  });



  // fix for target=”_blank”
  var base_href = BASE_HREF;
  jQuery("a[@rel~='external']").click(function(){
      window.open(jQuery(this).attr("href"));
      return false;
  });

  insereStopAnim(); // lien d'arrêt des animations dans le footer

  // Setup the tab Generator :)
    if (typeof $.fn.tabGenerator != 'undefined') {
      $('.partenaires').find('ul:first').addClass('navigationTab');

      $('.partenaires').tabGenerator({
        separator: 'h4',
        navigation: '.navigationTab'
      });
    }

});

function get_type(url)
{
  var types = ['xls','doc','pdf','ppt','img','aud','zip','vid'];
  var i, types_nb, ext;
  var types_dt = new Array();

  types_dt['xls'] = ',xls,';
  types_dt['doc'] = ',doc,';
  types_dt['pdf'] = ',pdf,';
  types_dt['ppt'] = ',ppt,';
  types_dt['img'] = ',png,gif,jpeg,jpg,bmp,tiff,psd,psp,svg,xcf,ico,';
  types_dt['aud'] = ',mp3,ogg,flac,wav,aif,aiff,aifc,cda,m3u,mid,mod,mp2,snd,voc,wma,';
  types_dt['zip'] = ',zip,rar,';
  types_dt['vid'] = ',avi,wmv,qt,mkv,flv,mpg,ram,';

  types_nb = types.length;
  ext = get_extension( url );

  // C'est un fichier ?
  if( ext.length > 0 ){
    for( i = 0; i < types_nb;i++ ){
      if( types_dt[types[i]].indexOf(','+ext+',') >= 0 ){
        return( types[i] );
      }
    }
  }

  // C'est un mail ?
  if( url.indexOf('mailto:') >= 0)
    return( "mail" );

  return( false );
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function setCookie( name, value, expires, path, domain, secure )
{
  // set time, it's in milliseconds
  var today = new Date();
  today.setTime( today.getTime() );

  if( expires ){
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );

  document.cookie = name + "=" +escape( value ) +
  ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
  ( ( path ) ? ";path=" + path : "" ) +
  ( ( domain ) ? ";domain=" + domain : "" ) +
  ( ( secure ) ? ";secure" : "" );
}

function get_extension( str )
{
  if(str.charAt(str.length-1) == '/' )
    return( false );

  var pos = str.lastIndexOf( '.' );
  if( pos == -1 || str.length-pos > 4 )
    return( false );

  return( str.substring(pos+1) );
}


function is_external_url( url )
{
  var dom1 = dom.replace(/\./g, "\\.")
  var dom2 = dom1.replace(/\//g, "\\/")
  var pat = new RegExp("([^:]{2,6}://)?("+dom2+")?(.*)");

  var res;
  if (!url)
    return ( false );

  // Chemin absolu avec slash ?
  if( url && url.charAt(0) == '/' ) {
    return( false );
  }
  res = url.match(pat);
  // Chemin relatif

  if( !res[1] || res[1].length == 0 ) {
    return( false );
  }
  // Url externe
  if( !res[2] || res[2].length == 0 ) {
    return( true );
  }

  // Sinon, lien interne
  return( false );
}

/********************* FONCTION LANCÉES AU CHARGEMENT DU DOM ********************/


// Fonctions servant à stopper toutes les animations, clignotements
// Accessibility...
function insereStopAnim() {
  if (!$('#actualites')) return;
  // var htmlStopAnim = '<ul id="footerSecondaire"><li><a id="stopAnim" href="'+window.location.href+'#" title="'+_('stopAnimation_desc')+'">'+_('stopAnimation')+'</a></li></ul>';
  var htmlStopAnim = '<p class="stopAnim"><a id="stopAnim" href="'+window.location.href+'#" title="'+_('stopAnimation_desc')+'">'+_('stopAnimation')+'</a></p>';
  $('#actualites h2').after(htmlStopAnim);
  $('#stopAnim').click(function() {
    if (window.slideshow) slideshow.cycle('stop');

    // stop l'anim des actus en HP
    // supprime les timeout
    if ($("#actualites ul li")) {
      // $("#actualites ul li").eq(BQ_CURRENT).stop();
      $("#actualites ul li").eq(BQ_CURRENT).stop(true,true);
      $("#actualites ul li").eq(BQ_CURRENT).css('left', '0');
      clearTimeout(tick);
      clearTimeout(fadeOut);
      clearTimeout(fadeIn);
    }

    return false;
  })
}


/**************************** ARIA *************************/

/*
**  Plugin jQuery attrAria
**  adapté de la petite fonction simple pour commencer à utiliser ARIA...
**  renseigne les roles des zones : http://www.w3.org/TR/xhtml-role/#s_role_module_attributes
**  via http://www.lesintegristes.net/2008/12/09/introduction-a-wai-aria-traduction/
**  Params :
**  @aria-param : without the aria- prefix (ex: channel: 'notify')
**  LastChangedDate: 28 Dec 2008
*/
(function($) {
  $.fn.extend({
    attrAria: function (options) {
      var aria_keys = 'valuemin,valuemax,valuenow,valuetext,labelledby,live,polite,assertive,rude,atomic,busy,channel,relevant,required,describedby,invalid'.split(',')
      for (key in options) {
        if ($.inArray(key, aria_keys) > 0) {
          options['aria-'+key] = options[key]
          delete options[key]
        }
      }
      $(this).attr(options);
    }
  });
})(jQuery);

// Add ARIA roles to the document
function setupARIA() {
  $('#content').attrAria({ role: 'main' });
  $('#menu').attrAria({ role: 'navigation' });
  $('#header').attrAria({ role: 'banner' });
  $('#footer').attrAria({
    role: 'navigation',
    title:_('navTitle')
  });
}


// Gère l'affichage et la lecture des spots TV
$(document).ready(function() {
   // put all your jQuery goodness in here.
 });

function setup_spots()
{
  // Pas de liste de vidéos sur cette page ? On quitte
  if( $(".videos-liste li").length == 0 )
    return;

  var vid = $(".videos-liste li a").eq(0).attr("href");
  var lbl = $(".videos-liste li a").eq(0).attr("title");
  var img = $(".videos-liste li a").eq(0).find("img").attr("src");
  var params = "file="+vid+"&image="+img;

  // ajout du player
  add_player_cont(params);

  $(".videos-liste li a").click(function(){
    var vid = $(this).attr("href");
    var lbl = $(this).attr("title");
    var img = $(this).find("img").attr("src");
    var params = "file="+vid+"&image="+img;

    // Ajout du player
    add_player_cont(params)
    return false;
  }).append("<span></span>");
}

// efface le player si présent, et le rajoute
function add_player_cont(params)
{
  if( $("#player-cont").length == 1 )
    $("#player-cont").remove();

    // Ajout du player
  var $playList = $('.videos-liste');
  if ($('.clearslider').length) {
    $playList = $('.clearslider');
  }
  $playList.after('<div id="player-cont"><object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player" width="572" height="345">\
      <param name="movie" value="'+BASE_HREF+'/script/player.swf" />\
      <param name="allowfullscreen" value="true" />\
      <param name="allowscriptaccess" value="always" />\
      <param name="flashvars" value="'+params+'" />\
      <embed \
        type="application/x-shockwave-flash" \
        id="player2" \
        name="player2" \
        src="'+BASE_HREF+'/script/player.swf" \
        width="572" \
        height="345" \
        allowscriptaccess="always" \
        allowfullscreen="true" \
        flashvars="'+params+'" \
      /> \
    </object>\
    </div>\
  ');

}