﻿/// <reference path="jquery.js" />
/// <reference path="jquery.datePicker.js" />
/// <reference path="jScrollPane.js" />
/// <reference path="BulleAide.js" />
var _dateDonnee;


//afficher la visionneuse de transcription
//Dans le cas ou
//la transcription est demandé depuis la page du calandrier:
//------Debut
//Récuperer la queryString
function querySt(parmAtrouve) {
    queryString = window.location.search.substring(1);
    qstablparam = queryString.split("&");
    for (i = 0; i < qstablparam.length; i++) {
        parmSplit = qstablparam[i].split("=");
        if (parmSplit[0] == parmAtrouve) {
            return parmSplit[1];
        }
    }

    return '';
}
    
$(document).ready(initPage);

// Initialise la programmation au complet et attache les evenements
// --------------------------------------------------------------------------------
function initPage() {
    var dateAujourdhui = new Date()

    // Creation du date picker
    var oCalendrierPopup = $('#CanalProgrammationJournee .calendrierPopup').datePicker({ displayClose: true });
    $('#CanalProgrammationJournee .calendrierPopup').dpSetStartDate('2002-01-01');
    $('#CanalProgrammationJournee .calendrierPopup').dpSetEndDate('2099-01-01');

    // Attacher les evenements aux objets
    oCalendrierPopup.bind('dateSelected', datePickerDateSelectedPrg);

    $("#CanalProgrammationJournee .aujourdhui a").bind("click", { dateSelectionnee: dateAujourdhui }, changerDatePrg)

    // Lance le rafraichissement
    actualiserNavigateurDatesPrg(dateAujourdhui);

    // Genere onglets interactifs pour la zone 'Programmation'
    // On ne veut pas attacher le jquery aux onglets de la recherche car cela
    // conflicte avec le code-behind
    $('.ZoneActualites > ul').tabs(); // la formulation de ce selecteur attrape celui de la zone prog. mais pas de la zone recherche.

    // Pour les onglets de la recherche, on applique simplement le style selected au bon onglet, i.e. celui pour lequel
    // le code-behind aura mis le A a actif
    $("#FormulaireRechercheVideoAudio ul.TabZoneActualites li a.actif").parent().addClass("ui-tabs-selected");
    
    // Evenements pour les icones de partage
    // Infobulle pour partager ne peut etre gérée par le code d'infobulle normal
    // car on n'utilise pas le point d'interrogation
    $(".icoPartage").click(afficherBullePartage);
    $("#infoBullePartager .fermerBulle").click(fermerBullePartage);
    $("#infoBullePartager ul li").not(".exclureAutomatisme").click(partagerLien);

    var afficherVisionneuse = false;

    var valeurVisionneuseQueryString = querySt("visTrans");

    if (valeurVisionneuseQueryString != undefined && valeurVisionneuseQueryString == 'true')
        afficherVisionneuse = true;
    
    if (afficherVisionneuse)
    {
        $("#hypTranscription").click();
    }

    //Ajout d'une ancre au lien d'aide, qui est un URL nommé.
    if ($(".HypAideVideoAudio")[0] != undefined) {
        $("a.HypAideVideoAudio")[0].href = $(".HypAideVideoAudio")[0].href + "#Vidéos";
    }    

    $("#versionProgrammationEnCache").val(0);
}

// Rafraichir les elements du calendrier en fonction de la date choisie
// --------------------------------------------------------------------------------
function actualiserProgrammation(dateSelectionnee) {
    actualiserNavigateurDatesPrg(dateSelectionnee);

    // Code pour actualiser les donnees de la page */


    return false;
}


function afficherBullePartage() {
    $("#infoBullePartager").show();
    return false;
}

function fermerBullePartage() {
    $("#infoBullePartager").hide();
    return false;
}

function partagerLien() {
    var boutonID = $(this).attr("id");

    var urlPageBrut = location.href
    var titrePageBrut = document.title
    var urlPageEncode = encodeURIComponent(location.href)
    var titrePageEncode = encodeURIComponent(document.title)

    switch (boutonID) {
        case 'hypFacebook':
            document.location = "http://www.facebook.com/share.php?u=" + urlPageEncode + "&t=" + titrePageEncode;
            break;

        case 'hypDelicious':
            document.location = "http://delicious.com/save?v=5&noui&jump=close&url=" + urlPageEncode + "&title=" + titrePageEncode;
            break;

        case 'hypGoogle':
            document.location = "http://google.com/bookmarks/mark?op=edit&bkmk=" + urlPageEncode + "&title=" + titrePageEncode;
            break;

        case 'hypDigg':
            document.location = "http://digg.com/submit?url=" + urlPageBrut + "&title=" + titrePageBrut;
            break;

        case 'hypReddit':
            document.location = "http://www.reddit.com/submit?url=" + urlPageEncode;
            break;

        case 'hypYahoo':
            document.location = "http://myweb2.search.yahoo.com/myresults/bookmarklet?u=" + urlPageEncode + "&t=" + titrePageEncode;
            break;

        case 'hypTechnorati':
            document.location = "http://technorati.com/faves?add=" + urlPageEncode;
            break;

        case 'hypMySpace':
            document.location = "http://www.myspace.com/Modules/PostTo/Pages/?" + "t=" + titrePageEncode + "&#038;c=" + titrePageEncode + "&#038;u=" + urlPageEncode + "&#038;l=2";
            break;
            
        case 'hypTwitter':
            document.location = "http://www.twitter.com/home?status=" + urlPageBrut;
            break;

    }

    return false;

}



// Traite l'evenement dateSelected du date picker. Signature dictee par le plugin. 
// --------------------------------------------------------------------------------
function datePickerDateSelectedPrg(evenement, dateSelected, $td, statutDate) {
    actualiserProgrammation(dateSelected);
    return false;
}


// Wrapper pour gerer les clicks attaches au moyen de jQuery
// --------------------------------------------------------------------------------
function changerDatePrg(evenement) {
    actualiserProgrammation(evenement.data.dateSelectionnee);
    return false;
}



// Actualise le navigateur de dates horizontal, attache les evenements 
// --------------------------------------------------------------------------------
function actualiserNavigateurDatesPrg(dateSelectionnee) {
    var dateTemp;
    var strTemp;

    // Garder la date sélectionner dans une variable globale
    _dateDonnee = dateSelectionnee;

    // Initialise le TitreDateDuJour
    strTemp = formatterDate(dateSelectionnee.getTime(), 1);
    $("#CanalProgrammationJournee #TitreDateDuJourPrg").text(strTemp);

    // Affiche le libellé aujourd'hui sauf si c'est la date selectionnee
    dateTemp = new Date()
    if (dateDiff(dateTemp, dateSelectionnee) != 0)
        $("#CanalProgrammationJournee .aujourdhui a").show();
    else
        $("#CanalProgrammationJournee .aujourdhui a").hide();

    //  Retourne un tableau de 9 elements date exprimes en millisecondes	
    var arrDatesAffichage = obtenirTableauDates(dateSelectionnee);


    // Initialise les attributs title des <a>, change la classe de la date selectionnee, 
    // attache les evenements. Les fleches gauche et droite sont traitees plus bas.	
    $("#CanalProgrammationJournee .dateNavigateur").not('.fleche').each
    (
	    function(i) {

	        // Date complete dans l'attribut TITLE			
	        $(this).attr({ title: formatterDate(arrDatesAffichage[i], 1) });

	        // Reconstruit la date a partir des millisecondes
	        dateTemp = new Date(arrDatesAffichage[i]);

	        // Ajoute la classe correcte pour la journee active et sinon l'enleve 
	        // pour s'assurer qu'une seule a la fois possede cette classe
	        if (dateSelectionnee.getDate() == dateTemp.getDate())
	            $(this).addClass("journeeActive");
	        else
	            $(this).removeClass("journeeActive");
	        $(this).bind("click", { dateSelectionnee: dateTemp }, changerDatePrg)
	    }
    );

    // Assigne l'evenement aux les fleches
    dateTemp = new Date(arrDatesAffichage[7]);
    $("#CanalProgrammationJournee #dateNavGauchePrg").bind("click", { dateSelectionnee: dateTemp }, changerDatePrg)
    dateTemp = new Date(arrDatesAffichage[8]);
    $("#CanalProgrammationJournee #dateNavDroitePrg").bind("click", { dateSelectionnee: dateTemp }, changerDatePrg)

    // Initialiser les libelles avec les dates correctes
    $("#CanalProgrammationJournee .libelleDate").each
    (
        function(i) {
            var dateTemp = new Date(arrDatesAffichage[i]); // reconstruire la date
            $(this).text(dateTemp.getDate()); // changer le texte du SPAN 
        }
    );

    // Initialiser les libelles avec les mois corrects
    $("#CanalProgrammationJournee .libelleMois").each
    (
        function(i) {
            var dateTemp = new Date(arrDatesAffichage[i]); // reconstruire la date
            var indiceMois = dateTemp.getMonth();
            $(this).text(arrCalLblMoisAnneeAbr[indiceMois] + '.'); // changer le texte du SPAN 
        }
    );
}

