﻿//Variables globales


$(document).ready(function(){


    /**
    * Pagination de l'horaire en page d'accueil
    *
    * @author Sylvain Bouchard
    */

    $('.agenda-pager').click( function(event){

        //voici le # de la page voulue
        var p = $(event.target).attr('name');

        //voici toutes les pages pour le jour courant
        var $contenu_jour = $(event.target.parentNode.parentNode.parentNode.parentNode);

        //cacher toutes les pages (à une vitesse telle que l'oeil humain n'y verra que du feu)
        $contenu_jour.find('.contenu-page').hide();

        //afficher seulement celle qu'on veut
        $contenu_jour.find('.agenda-page-'+p).show();


        //faire afficher le bon lien en rouge
        $('ul.liste-pages li a').each( function(i){
            if( $(this).attr('name') == p ){
                $(this).addClass('selection-page');
            } else {
                $(this).removeClass('selection-page');
            }
        });

        return false;
    });

    $('div#mainlogo').click( function(event){
        event.preventDefault();
        window.location.href = "/";
    });


    function description_right_to_left(selecteur_a_pousser, margin_offset){
        // Marge 'selecteur_a_pousser' (typiquement un fil) selon description, avec ratio magique arbitraire.

        var description_height = $('div.description-right-to-left').height();
        if(description_height != null)
            $(selecteur_a_pousser).css('margin-top', margin_offset + description_height + 'px');

    }
    description_right_to_left('div#accueil-col-carte-blanche', 180);
    description_right_to_left('div#carte-blanche-col-emissions', 150);
    description_right_to_left('div#quoi-de-neuf-col-proposer', 150);
    description_right_to_left('div#nouvelles-col-fil', 150);
    description_right_to_left('div#ampli-col-left', 150);

    main();

 });

 
 /**
 * Démarrage de l'application
 */
 function main() {
    initMenu();
    initToolTip();
    initLegende();
    initToggleDetails();
    initAlbums();
    initBaladoLiensXML();
    initExtraitsAudio();
    initMarquee();
    initAgendaAccueil();
    initLecteurFlash();

    chyz.accueil.palmares.bindEvents();

 }

 /**
 * Initialise le liens légende de la page. 
 *
 * @author Philippe Bourdages
 */
 function initLegende() {

    if ($("#legende").size() == 1) {
        $("#legende").mouseover(function(){
            $("#legendeImage").fadeIn();
        });
        $("#legende").mouseout(function(){
             $("#legendeImage").fadeOut();
        });
    }
 }


 function initMenu() {
     
    //Ouverture des sousMenu au mouseenter
    $("#menuTop > li > a").mouseenter(function(){
        $(this).next().children('.sousmenu').show()
    });
    
    //Fermeture des sousMenu au mouseLeave
    $("#menuTop > li").mouseleave(function(){
        $(this).find(".sousmenu").hide();
    });    
 }
 
 
 
 /**
 * Initialise les tooltips des icônes de la page. Nécessite jquery.dimensions.js 
 * et jquery.tooltip.js chargé.
 *
 * @author Philippe Bourdages
 */
 function initToolTip() {
    //Boucle sur tous les éléments présent sur la page
    $(".icone").each(function (i) {$(this).tooltip({ track: true, delay: 0, showURL: false });})
 }
 
 /**
 * Initialise tous les liens qui permettent d'afficher ou de cacher le 
 * contenu présent dans le div .sous-info. 
 *
 * @author Philippe Bourdages
 */
 function initToggleDetails() {
     //Association des évènements au click
    $(".bouton-ouvert-sous-info-right").each(clickToggleDetails);
    $(".bouton-ferme-sous-info-right").each(clickToggleDetails);
    $(".bouton-ouvert-sous-info").each(clickToggleDetails);
    $(".bouton-ferme-sous-info").each(clickToggleDetails);
 }
 
 /**
 * Au clic, empêche le liens de s'activer et appelle la méthode toggleDetails
 *
 * @author Philippe Bourdages
 */
 function clickToggleDetails() {
    $(this).click(function(event) {
        event.preventDefault();
        toggleDetails($(this));
    });
 }
 
 /**
 * Interchange le visuel des boutons fermer/ouvrir et affiche/cache
 * le contenu présent dans le div avec la classe sous-info qui suis 
 * l'élément a.
 *
 * @author Philippe Bourdages
 * @param bouton La référence du bouton d'ont on veut intervertir l'état
 */
 function toggleDetails(bouton) {     
     switch(bouton.attr("class")) {
        case 'bouton-ouvert-sous-info-right' : 
            bouton.attr('class', 'bouton-ferme-sous-info-right');
            fermerDetails(bouton);
            break;
        case 'bouton-ferme-sous-info-right' : 
            bouton.attr('class', 'bouton-ouvert-sous-info-right');
            ouvrirDetails(bouton);
            break;
        case 'bouton-ouvert-sous-info' : 
            bouton.attr('class', 'bouton-ferme-sous-info');
            fermerDetails(bouton);
            break;
        case 'bouton-ferme-sous-info' : 
            bouton.attr('class', 'bouton-ouvert-sous-info');
            ouvrirDetails(bouton);
            break;
     }
 }
 
 /**
 * Cache les informations du div.sous-info qui est après l'élément bouton.
 *
 * @author Philippe Bourdages
 * @param bouton La référence du bouton d'ont on veut cacher les détails
 */
 function fermerDetails(bouton) {
     bouton.next("div.sous-info").slideUp("fast");
 }
 
 /**
 * Affiche les informations du div.sous-info qui est après l'élément bouton.
 *
 * @author Philippe Bourdages
 * @param bouton La référence du bouton d'ont on veut afficher les détails
 */
 function ouvrirDetails(bouton) {
      bouton.next("div.sous-info").slideDown("fast");
 }
 
 /**
 * Initialise les albums photos de la page.
 *
 * @author Philippe Bourdages
 */
 function initAlbums() {
    $(".album").each(function() {
        //Init
        $(this).data("nbPhoto", $(this).find(".album-photo").size());
        $(this).data("actuel", 0);
        
        //S'il y a plus d'une photo
        if ( $(this).data("nbPhoto") > 1) {
           initBtnPrecSuiv($(this));
        } else {
            cacherBtnPrecSuiv($(this));  
        }                   
    });
 }
 

 /**
 * Initialise les boutons suivant et précédant de l'album photo précisé par l'argument refAlbum.
 *
 * @author Philippe Bourdages
 * @param refAlbum La référence vers un album photo
 */
 function initBtnPrecSuiv (refAlbum) {
    //Désactivation des évènements
    var btnPrec = refAlbum.find(".prec");
    var btnSuiv = refAlbum.find(".suiv");
    
    //Initialisation des éléments
    btnPrec.addClass("desactive");
    btnPrec.data("ref", refAlbum);
    btnSuiv.data("ref", refAlbum);
    refAlbum.data("btnPrecRef", btnPrec);
    refAlbum.data("btnSuivRef", btnSuiv);
    
    //Initialisation des évènements
    btnPrec.click(function(event) {
        event.preventDefault();
    });
    
    btnSuiv.click(function(event) {
        event.preventDefault();
    });
    btnSuiv.mouseup(imageSuivante);
 }
 
 /**
 * Cache les boutons suivant et précédant de l'album photo précisé par l'argument refAlbum.
 *
 * @author Philippe Bourdages
 * @param refAlbum La référence vers un album photo
 */
 function cacherBtnPrecSuiv(refAlbum) {
     refAlbum.find(".boutons-align-right").hide();
 }
 
 /**
 * Affiche l'image suivante d'un album photo.
 *
 * @author Philippe Bourdages
 */
 function imageSuivante() {
     var nbPhoto = $(this).data("ref").data("nbPhoto");
     var actuel = $(this).data("ref").data("actuel");
     
     //Incrémentation du compteur et affichage/disparition des images
     if (actuel < (nbPhoto - 1)) {
        $(this).data("ref").data("actuel", actuel + 1)
        $(this).data("ref").find(".album-photo").eq(actuel).hide();
        $(this).data("ref").find(".album-photo").eq(actuel + 1).show();
     }
     
     //Désactivation du bouton suivant
     if (actuel + 1 == (nbPhoto -1)) {
         $(this).mouseup = null;
         $(this).addClass("desactive");
     }
     
     //Réactivation du bouton précédant
     if (actuel + 1 == 1) {
         $(this).data("ref").data("btnPrecRef").mouseup(imagePrecedante);
         $(this).data("ref").data("btnPrecRef").removeClass("desactive");
     }
 }
 
 /**
 * Affiche l'image précédante d'un album photo.
 *
 * @author Philippe Bourdages
 */
 function imagePrecedante() {
     var nbPhoto = $(this).data("ref").data("nbPhoto");
     var actuel = $(this).data("ref").data("actuel");
     
     //Décrémentation du compteur et affichage/disparition des images
     if (actuel > 0) {
        $(this).data("ref").data("actuel", actuel - 1)
        $(this).data("ref").find(".album-photo").eq(actuel - 1).show();
        $(this).data("ref").find(".album-photo").eq(actuel).hide();
     }
     
     //Désactivation du bouton précédant
     if (actuel - 1 == 0) {
         $(this).mouseup = null;
         $(this).addClass("desactive");
     }
     
     //Réactivation du bouton suivant
     if (actuel - 1 < (nbPhoto - 1)) {
         $(this).data("ref").data("btnSuivRef").mouseup(imageSuivante);
          $(this).data("ref").data("btnSuivRef").removeClass("desactive");
     }
}

function initBaladoLiensXML() {

    $('#balado_lien_xml').click( function(){
        input = $('#balado_lien_xml_copy')
        
        if( input.hasClass('hidden') ){
            input.removeClass('hidden');
            $('#balado_lien_xml_copy input').select()
        } else {
            input.addClass('hidden');
        }
        return false;
    });

    $('#balado_lien_xml_copy input').click( function(){
        $('#balado_lien_xml_copy input').select()
    });

}

function initExtraitsAudio() {
    //S'il y a une zone d'extraits audio
    if ($("#extraits-audio").size() == 1) {
        
        var extraitsAudio = $("#extraits-audio");
        extraitsAudio.data("actuel", 1);
        
        extraitsAudio.data("contenuRef", $("#contenu-extraits-audio"));
        
        //S'il y a plus d'une page
        if (EXTRAIT_NBPAGE > 1) {
           initBtnPrecSuivExtraits(extraitsAudio);
        } else {
            //cacherBtnPrecSuivExtraits(extraitsAudio);  
        }        
        
    }
}

function initBtnPrecSuivExtraits(refExtraits) {
    var btnPrec = refExtraits.find(".prec");
    btnPrec.addClass("desactive");
    btnPrec.data("ref", refExtraits);
    refExtraits.data("btnPrecRef", btnPrec);

    var btnSuiv = refExtraits.find(".suiv");
    btnSuiv.data("ref", refExtraits);
    refExtraits.data("btnSuivRef", btnSuiv);
    
    btnPrec.click(function(event) {
        event.preventDefault();
    });
    
    btnSuiv.click(function(event) {
        event.preventDefault();
        
    });
    btnSuiv.mouseup(extraitsSuivants);
}


 /**
 * Cache les boutons suivant et précédant de l'album photo précisé par l'argument refAlbum.
 *
 * @author Philippe Bourdages
 * @param refAlbum La référence vers un album photo
 */
 function cacherBtnPrecSuivExtraits(refExtraits) {
     refExtraits.find(".boutons-align-right").hide();
 }
 

 function extraitsSuivants() {
     var nbPages = EXTRAIT_NBPAGE;
     var actuel = $(this).data("ref").data("actuel");
          var ref =  $(this).data("ref");

     
     //Incrémentation du compteur et affichage/disparition des images
     if (actuel < (nbPages)) {
        $(this).data("ref").data("actuel", actuel + 1)
        var adresse = 'extrait/' + (actuel + 1) + '/';
        
        $.ajax({
             url: adresse,
             success: function(response) {
                ref.data("contenuRef").html(response);
             },
             error: function(xhr) {
                alert('Error!  Status = ' + xhr.status);
             }
         });
     }
     
     //Désactivation du bouton suivant
     if (actuel + 1 == nbPages) {
         $(this).mouseup = null;
         $(this).addClass("desactive");
     }
     
     //Réactivation du bouton précédant
     if (actuel + 1 == 2) {
         $(this).data("ref").data("btnPrecRef").mouseup(extraitsPrecedants);
         $(this).data("ref").data("btnPrecRef").removeClass("desactive");
     }
 }
 

 function extraitsPrecedants() {
     var nbPages = EXTRAIT_NBPAGE;
     var actuel = $(this).data("ref").data("actuel");
     var ref =  $(this).data("ref");
     
     //Décrémentation du compteur et affichage/disparition des images
     if (actuel > 1) {
        $(this).data("ref").data("actuel", actuel - 1)
        var adresse = 'extrait/' + (actuel - 1) + '/';
         
        $.ajax({
             url: adresse,
             success: function(response) {
                ref.data("contenuRef").html(response);
             },
             error: function(xhr) {
                alert('Error!  Status = ' + xhr.status);
             }
         });
     }
     
     //Désactivation du bouton précédant
     if (actuel - 1 == 1) {
         $(this).mouseup = null;
         $(this).addClass("desactive");
     }
     
     //Réactivation du bouton suivant
     if (actuel - 1 < nbPages) {
         $(this).data("ref").data("btnSuivRef").mouseup(extraitsSuivants);
         $(this).data("ref").data("btnSuivRef").removeClass("desactive");
     }
}

/**
* Initialise le marquee de la page s'il y en a un.
*
* @author Philippe Bourdages
*/
function initMarquee() {
    if ($('marquee').size() == 1) {
        $('marquee').marquee('marqueeClass');    
    }
}

/**
* Initialise l'agenda de la page d'accueil.
*
* @author Philippe Bourdages
*/
function initAgendaAccueil() {
    if ($("#liste-chaines").size() == 1) {
        var listeChaines = $("#liste-chaines");
        
        //Initialisation de la chaine chyz
        var chaineChyz = $("#chaine-chyz").find("a").eq(1);
        chaineChyz.data("refMenu", listeChaines);
        chaineChyz.data("liste", "liste-programmation-chyz");
        initListeSemaine(chaineChyz);
        chaineChyz.click(function(event) {
            event.preventDefault();
        });

        //Initialisation de la chaine studio
        var chaineStudio = $("#chaine-studio-mobile").find("a").eq(1);
        chaineStudio.data("refMenu", listeChaines);
        chaineStudio.data("liste", "liste-studio-mobile");
        initListeSemaine(chaineStudio);
        chaineStudio.click(function(event) {
            event.preventDefault();
        });
        chaineStudio.mouseup(selectionnerChaine);

        //Initialisation de la chaine enregistrements
        var chaineEnregistrements = $("#chaine-enregistements").find("a").eq(1);
        chaineEnregistrements.data("refMenu", listeChaines);
        chaineEnregistrements.data("liste", "liste-enregistrements");
        initListeSemaine(chaineEnregistrements);
        chaineEnregistrements.click(function(event) {
            event.preventDefault();
        });
        chaineEnregistrements.mouseup(selectionnerChaine);

        //Initialisation de la chaine évènements
        var chaineEvenements = $("#chaine-spectacles-evenements").find("a");
        chaineEvenements.data("refMenu", listeChaines);
        chaineEvenements.data("liste", "liste-spectacles-evenements");
        initListeSemaine(chaineEvenements);
        chaineEvenements.click(function(event) {
            event.preventDefault();
        });
        chaineEvenements.mouseup(selectionnerChaine);
                
        //Enregistrement des références des boutons
        listeChaines.data("chaineChyz", chaineChyz);
        listeChaines.data("chaineStudio", chaineStudio);
        listeChaines.data("chaineEnregistrements", chaineEnregistrements);
        listeChaines.data("chaineEvenements", chaineEvenements);
                
        //Initialisation de la première page
        listeChaines.data("selection", chaineChyz);
        chaineChyz.addClass("selection");
    }
}

/**
* Sélectionne la chaîne dont le bouton viens d'être cliqué. Cette fonction est
* associé à l'évènement mouseup des boutons des chaîne. Cache l'ancienne chaîne
* et affiche celle qui viens d'être cliqué
*
* @author Philippe Bourdages
*/
function selectionnerChaine() {
    //Sélection de la nouvelle chaine
    $(this).mouseup = null;
    $(this).addClass("selection");
    
    //Désélection de l'ancienne chaine
    var ancienneSelection = $(this).data("refMenu").data("selection");
    deselectionnerChaine(ancienneSelection);
    
    //Écrasement de la référence
    $(this).data("refMenu").data("selection", $(this));
    
    //Affiche et cache les chaînes
    cacherChaine(ancienneSelection.data("liste"));
    afficherChaine($(this).data("liste"));
}

/**
* Réactivation d'un bouton et changement de son aspect visuel
* pour le remettre en mode non sélectionné
*
* @author Philippe Bourdages
*/
function deselectionnerChaine(selection) {
    selection.mouseup(selectionnerChaine);
    selection.removeClass("selection");
}

/**
* Affiche le contenu d'une chaîne.
*
* @author Philippe Bourdages
*/
function afficherChaine(nomChaine) {
    $("." + nomChaine).show();
}

/**
* Cache le contenu d'une chaîne.
*
* @author Philippe Bourdages
*/
function cacherChaine(nomChaine) {
    $("." + nomChaine).hide();
}

/**
* Initialise la liste des jours de la semaine d'une chaîne spécifié par refBouton qui est une référence
* à un bouton d'une des chaînes. Place les évènements sur les boutons suivant, précédant, et
* les jours et initialise quelques variables sur refBouton pour faire la gestion.
*
* @author Philippe Bourdages
* @param refBouton Une référence vers un des boutons des chaînes
*/
function initListeSemaine(refBouton) {
    //Récupération des références
    var nomListe = refBouton.data("liste");
    var contenant = $("." + nomListe);
    var liste = contenant.find(".liste-semaine");


    //Initialisation des boutons jours
    var listeJour = liste.find("li a");


    for (var i = 0; i < 7; i++) {

        listeJour.eq(i).click(function(event) {
            event.preventDefault();
        });

        listeJour.eq(i).mouseup( function(){
            selectionnerJour($(this).data("refBouton"), $(this).data("id"));
        });
        listeJour.eq(i).data("refBouton", refBouton);
        listeJour.eq(i).data("id", i);
    }
    
    //Ajout de références sur le bouton de la chaîne
    refBouton.data("jour", WEEKDAY);
    refBouton.data("refListe", liste);


    /*
    Si le span d'emission en ondes existe, on part de ça pour activer la bonne page automatiquement.
    */
    if(refBouton.attr('href') == '/agendas/1/'){
        var span = $('span.emission-en-ondes');

        if(span.length){
            var pageno = span.parent().parent().parent().parent().attr('class').replace('contenu-page agenda-page-', '');
            $('.agenda-pager[name="'+ pageno +'"]').click();
        }
    }

}

/**
* Interchange deux jours d'une chaîne spécifié par refBouton une référence vers un bouton 
* d'une des chaînes. L'indice de la journée actuellement sélectionné est récupéré par le biais
* de refBouton, et ensuite le contenu de celle-ci est interchangé avec celui de la prochaine
* journée, spécifié par la variable prochainJour, que l'on veut afficher
*
* @author Philippe Bourdages
* @param refBouton Une référence vers un des boutons des chaînes
* @param prochainJour L'indice de la prochaine journée à afficher
*/
function selectionnerJour(refBouton, prochainJour) {
    var ancien = refBouton.data("jour");
    afficherJour(refBouton, ancien, prochainJour);
    
    //On change le compteur
    refBouton.data("jour", prochainJour);
    
    //Affichage et masquage
    var refAncien = refBouton.data("refListe").find("li").eq(ancien);
    refAncien.find("a").removeClass("selection");
    var refProchain = refBouton.data("refListe").find("li").eq(prochainJour);
    refProchain.find("a").addClass("selection");
}


/**
*
* @author Philippe Bourdages
*/
function afficherJour(refBouton, ancienJour, prochainJour) {
    var nomListe = refBouton.data("liste");
    var contenant = $("." + nomListe);
    
    //Interchangement des jours
    contenant.find(".contenu-jour" + ancienJour).hide();
    contenant.find(".contenu-jour" + prochainJour).show();
}


/**
*
* @author Philippe Bourdages
*/
function initLecteurFlash() {

    if ($("#lecteur").size() == 1) {
        $('#lecteur').data("timer", setInterval("updateContenuLecteur()" , 60000));
    }

    if ($("#lecteur-mp3").size() == 1) {
        $('#lecteur-mp3').data("timer", setInterval("updateTitre()" , 60000));
    }

}

function updateContenuLecteur() {

    updateTitre();

    $.ajax({
         url: '/lecteur-audio/contenu',
         success: function(response) {
            $("#emission_ajax").html(response);
            
            // les liens dans la fenêtre-mère.
            lecteur.bindEvents_emission();
         }
     });
}

function updateTitre() {
    if (RELOAD_TITLE != 'TRUE') return false;

    $.ajax({
         url: '/lecteur-audio/titre',
         success: function(response) {
            $(".marqueeClass > div").html(response);
         }
     });
}

var lecteur_popup = null;
function ouvrirLecteur(url) {

    if(lecteur_popup == null || lecteur_popup.closed)
        lecteur_popup = window.open(url, 'lecteur_audio',"width=670,height=546,toolbar=0");

    if(window.focus) lecteur_popup.focus();
}

function onChangeType(obj) {
    var t=obj.value;
    if(t=="date") $("#dateList").show(); else $("#dateList").hide();
    if(t=="journee") $("#journeeList").show(); else $("#journeeList").hide();
    if(t=="style") $("#styleList").show(); else $("#styleList").hide();
    if(t=="quotidienne") $("#quotidienne").show(); else $("#quotidienne").hide();
    if(t=="categorie") $("#cat_enr").show(); else $("#cat_enr").hide();
    if(t=="thematique") $("#thematique").show(); else $("#thematique").hide();
}


/*
CHYZ javascript namespace
*/
chyz = {};

chyz.accueil = {};


chyz.accueil.palmares = {

    bindEvents: function(){
        
        $('#palm-prev').unbind().click( function(event){
            var p = chyz.accueil.palmares;
            if( p.hasPrevPage() ) p.changePage( p.getStyleMusical(), p.getPrevPage() );
            return false;
        });

        $('#palm-next').unbind().click( function(event){
            var p = chyz.accueil.palmares;
            if( p.hasNextPage() ) p.changePage( p.getStyleMusical(), p.getNextPage() );
            return false;
        });

        $('.palmares-btn').unbind().click( function(event){
            var stylemusical = $(event.target).attr('stylemusical');
            chyz.accueil.palmares.changePage(stylemusical, 0);
            return false;
        });

        $('.palmares-btn-enabled').unbind().click( function(event){
            //évite un glitch quand on clique 2x sur le style à l'accueil.
            return false;
        });

        $('.palmares-btn-experimental').unbind().click( function(event){
            //contourne une autre sorte de glitch
            var stylemusical = $(event.target).parent().attr('stylemusical');
            chyz.accueil.palmares.changePage(stylemusical, 0);
            return false;
        });

    },

    changePage: function(style_id, nth){
        /* load la nth-ième page du palmarès #style_id de cette semaine */
        $container = $('#container-palmares');

        $.ajax({
             url: '/musique/palmares/ajax/'+style_id+'/'+nth+'/',
             success: function(html) {
                $container.html(html);
                chyz.accueil.palmares.bindEvents();
             },
             error: function(xhr) {
                alert('Error!  Status = ' + xhr.status);
             }
         });
    },

    getPrevPage: function(){
        return $('#palmares-album').attr('nth_prev');
    },

    getNextPage: function(){
        return $('#palmares-album').attr('nth_next');
    },

    hasPrevPage: function(){
        return parseInt( $('#palmares-album').attr('has_prev') );
    },

    hasNextPage: function(){
        return parseInt( $('#palmares-album').attr('has_next') );
    },

    getStyleMusical: function(){
        return $('#palmares-album').attr('stylemusical');
    }

}


chyz.diffusions = {

    bindEvents_balado: function(){

        $('a.balado_lien_xml').click( function(event){

            var $div = $(event.target).parent().parent().parent().next();
            var $input = $div.children()[0];
            
            if( $div.hasClass('hidden') ){
                $div.removeClass('hidden');
                $input.select()
            } else {
                $div.addClass('hidden');
            }
            return false;
        });

        //le contenu du lien aussi fait partie du grand plan.
        $('a.balado_lien_xml span').click( function(event){
            $(event.target).parent().click();
        });

        $('.balado_lien_xml_copy input').click( function(event){
            $(event.target).select();
        });
    }
}

chyz.pagination = {

    changePage: function($container, $boutons, direction){

        var pagenumber = parseInt( $container.attr('pagenumber') );
        var pagecount = parseInt( $container.attr('pagecount') );
        var page = pagenumber+direction;

        if(page < 1) page = 1;
        if(page > pagecount) page = pagecount;

        $container.attr('pagenumber', page);
        chyz.pagination.updateDisabledStatus($container,$boutons);

        $.ajax({
             url: $container.attr('pageurl').replace('PAGE',page),
             success: function(html) {
                $container.html(html);
             },
             error: function(xhr) {
                alert('Error!  Status = ' + xhr.status);
             }
         });
    },

    updateDisabledStatus: function($container, $boutons){

        var pagenumber = parseInt( $container.attr('pagenumber') );
        var pagecount = parseInt( $container.attr('pagecount') );

        //handle sur les boutons
        var $prec = $boutons.find('a.prec')
        var $suiv = $boutons.find('a.suiv')

        if(pagenumber == 1){
            $prec.addClass('desactive');
            $suiv.removeClass('desactive');
            return false;
        }

        if(pagenumber == pagecount){
            $prec.removeClass('desactive');
            $suiv.addClass('desactive');
            return false;
        }

        $prec.removeClass('desactive');
        $suiv.removeClass('desactive');

        return true;

    },

    bindEvents: function(container_id){

        var $container = $('#'+container_id);
        var $boutons = $container.parent().find('.boutons-align-right');

        if($boutons.length){

            //bouton "Suivant"
            $boutons.find('a.prec').click( function(event){
                chyz.pagination.changePage($container,$boutons,-1);
                return false;
            });

            //bouton "Précédent"
            $boutons.find('a.suiv').click( function(event){
                chyz.pagination.changePage($container,$boutons,+1);
                return false;
            });
        }

    }

};
