/*##############################################################################

    JS principal du site systématiquement appelé dans toutes les pages.
    Il contient tous les fonctions commun aux pages du site.

##############################################################################*/
var oDebug; // variable globale contenant l'objet "DIV.debug"
var oFx;    // variable globale contenant l'objet FX courant

// CONSTANTES
// ici on devrait utiliser le mot clé 'const' au lieu de 'var' pour déclarer des
// constantes et non des variables globales, mais IE ne reconnait pas ce mot clé.
var ICO_INF = 1;
var ICO_ERR = 2;


/**
 * fonction initiale du site exécutée une fois la page totalement chargée
 *
 *  @author Denis THEVENOT
 *  @return VOID
 */
$(document).ready(function()
{
	// debut ajout EH1 pour défilement
	$('#defilement').vTicker({
		   speed: 2550,
		   pause: 3000,
		   showItems: 1,
		   animation: 'fade',
		   mousePause: true,
		   height: 0,
		   direction: 'down'
	});
	// fin ajout EH1 pour défilement
	
	oDebug = $('#debug');
    if ($(oDebug).text() != '') { $(oDebug).show('normal'); }
    if ($('#message span').html() != '') { openMessage(); }
	
    changeStatusLink();
    autoActiveFlash();
    checkMsgErr();
    closeMessage();
});



/**
 * Envoie dans le block 'debug' le contenu de la chaine passée en paramètre
 *
 * @param : 'sChaine' Chaine de caractère à afficher dans le bloc de débuggage
 * @return VOID
 */
function debug(sChaine)
{
    $(oDebug).text(sChaine);
    $(oDebug).show('normal');
}




/**
 * Rafraichit un élément HTML tout les iSec secondes
 *
 * @author Denis THEVENOT
 * @param oElement Objet sur lequel le rafraichissement aura lieu
 * @param iSec Nombre de secondes d'intervalle entre chaque rafraishissement
 * @param sUrlOld chaine contenant l'URL d'origine de l'image (facultatif)
 * @return Boolean VRAI si l'objet est un élément HTML de type <IMG>, sinon FAUX
 */
function refreshImage(oImg, iSec, sUrlOld)
{
    if (!oImg.tagName == 'IMG') { return false; }
    if (!sUrlOld) { var sUrlOld = oImg.src; }

    var sUrlNew = '';

    // génère un nombre aléatoire afin de court-circuiter le cache.
    var sRand = Math.random() + '';
    sRand = sRand.substring(0,5);

    sUrlNew = sUrlOld + '&' + sRand;
    oImg.attr('src', sUrlNew);

    setTimeout(function() { refreshImage(oImg, iSec, sUrlOld); }, iSec*1000);
    return true;
}


/*##############################################################################

                        FONCTIONS DES MENUS

##############################################################################*/

/**
 * désactive tous les menus parent (onglets)
 *
 *  @author Denis THEVENOT
 *  @return VOID
 */
function disableAllMenu()
{
    $('#blocMenu a').removeClass('select');
}


/**
 * change le menu sélectionné
 *
 * @author Denis THEVENOT
 * @param iMenu Entier correspondant au numéro du menu à sélectionner
 * @return VOID
 */
function changeMenu(iMenu)
{
	
	if (iMenu < 1)
    {
        alert('Le numéro de menu doit obligatoirement être supérieur à 0.')
        return false;
    }

    var iMenu2 = iMenu - 1;

    var oMenu = $('#blocMenu a:eq('+iMenu2+')');
	
    if (!oMenu)
    {
        alert('Le menu n° ' + iMenu + ' n\'existe pas.');
    }
    else
    {
        disableAllMenu();
        oMenu.addClass('select');
    }
}


/**
 * Lorsque l'on clique sur le menu de gauche cela appelle la fonction faisant
 * apparaitre le bloc de texte correspondant au lien cliqué.
 *
 * @author Denis THEVENOT
 * @return VOID
 */
function clickOnLeftMenu()
{
    var aLinks = $('#leftMenu a');
	
    for (i=0; i<aLinks.length; i++)
    {
        aLinks[i].value = i;
        $(aLinks[i]).click(function ()
        {
            hideAllText();
            showText(this.value);
            return false;
        });
    }
}


/**
 * Fait apparaitre le bloc de texte correspondant à l'index passé en paramètre
 *
 * @author Denis THEVENOT
 * @param iIndex (Integer) Entier contenant l'index de l'élément concerné
 * @param bEffect (Boolean) Avec effet de fondu ou pas (défaut = true);
 * @return VOID
 */
function showText(iIndex, bEffect)
{
    if(!$('dl:eq('+iIndex+')')){ return false; }
    
    if (bEffect === undefined) { var bEffect = true; }

    var oLink = $('#leftMenu a:eq('+iIndex+')');
    var oBloc = $('dl:eq('+iIndex+')');

    if (bEffect)
    {
        $(oBloc).fadeIn('300', function(){
            $('#leftMenu').removeClass('hide');
        });
    }
    else
    {
        oBloc.css('opacity', 1);
    }

    $(oLink).addClass('select');
    changeHeight(iIndex);
}


/**
 * Cache tous les blocs de texte centraux
 *
 * @author Denis THEVENOT
 * @return VOID
 */
function hideAllText()
{
    $('dl').css('display','none');
    $('#leftMenu a').removeClass('select');
}


/**
 * Change la hauteur du bloc central en fonction de la hauteur du DL affiché
 *
 * @author Denis THEVENOT
 * @param iIndex (Integer) Entier contenant l'index du DL affiché
 * @return VOID
 */
function changeHeight(iIndex)
{
    var iHeight = $('dl:eq('+iIndex+')').height() + 30;

    if (iHeight > 330)
    {
        $('#blocCentral div.global:first').css('height', iHeight);
    }
    else
    {
        $('#blocCentral div.global:first').css('height', 450);
    }
}


/**
 * Change l'affichage de la barre de statut du lien survolé avec son innerHTML
 * au lieu de sont URL, si son innerHTML contient le caractères "<" (signifiant
 * la présence de contenu HTML), l'attribut 'title' est utilisé à la place.
 *
 * @author Denis THEVENOT
 * @return : VOID
 */
function changeStatusLink()
{
    var sTexte = '';

    $('a').mouseover(function()
    {
            sTexte = this.innerHTML;
            if (sTexte.indexOf('<', 0) > -1) { sTexte = this.title; }
            window.status = sTexte;
            //return true;
    }).mouseout(function()
    {
            window.status = '';
            //return true;
    });
}
 
 
/**
 * Active automatiquement les Objet Flash sous IE
 *
 * @author Denis THEVENOT
 * @return VOID
 */
function autoActiveFlash()
{
    var aObjects = $('object');

    for (var i = 0; i < aObjects.length; i++)
    {
        aObjects[i].outerHTML = aObjects[i].outerHTML;
    }
}



/**
 *  S'il y a un bloc 'msgErr' dans la page courante, vérifie s'il contient qqchose,
 *  et si c'est le cas affiche le bloc.
 *
 *
 * @author Denis THEVENOT
 * @return VOID
 */
function checkMsgErr()
{
    if ($('.msgErr'))
    {
        if ($('.msgErr').text() != '')
        {
            $('.msgErr').slideDown();
        }
    }
}


/**
 * Ouvre la boite de message central du site avec effets
 *
 * @author Denis THEVENOT
 * @param sTexte (String) Chaine du message ou Url de la page à charger dans le popup
 * @param iType (Integer) Index du type de message
 * @return VOID
 */
function openMessage(sTexte, iType)
{
    iScrollPosition = document.getElementsByTagName('html')[0].scrollTop; // on récupère la position du scrolling courant de la page

    $('html,body').animate({scrollTop: 0}, 1, 'swing'); // on remonte le scrolling tout en haut (0)

    $('#message #cadreMsg').draggable({handle: $('#message #cadreMsg h6:first')}); // rend 'draggable' le cadre de message

    if (!iType) { var iType = 0; }

    if (isIE6()) { $('select').css('visibility', 'hidden'); }

    if ($('#cadreMsg span:first').html() == '') { $('#cadreMsg span:first').html(sTexte); }
    
    if ($('#message h6 big:first').text() == '') { $('#message h6 big:first').text('Information'); }

    if ($('#message').attr('class') == '')
    {
        switch (iType)
        {
            case ICO_ERR : $('#message').addClass('Erreur'); break;
            default      : $('#message').addClass('Information'); break;
        }
    }

    $('#message').fadeIn('normal');

}


/**
 * Ferme la boite de message central du site avec effets lorsque l'on clic sur
 * le bouton 'fermer' du cadre.
 *
 * @author Denis THEVENOT
 * @return VOID
 */
function closeMessage()
{
    $('#message H6 B:first, #message a.close').click(function ()
    {
        $('html,body').animate({scrollTop: iScrollPosition}, 1, 'swing'); // remise en position du scrolling de départ...

        $('#message').fadeOut('normal', function()
        {
            if (isIE6()) { $('select').css('visibility', 'visible'); }
            $('#cadreMsg span:first').html('');
        });


        return false;
    });
}


/**
 *  Détermine si le navigateur est IE6
 *
 *  @author Denis THEVENOT
 *  @return (Boolean) TRUE si IE6, FALSE sinon...
 */
function isIE6()
{
    if ($.browser.msie && $.browser.version == '6.0')
    {
        return true;
    }
    else
    {
        return false;
    }
}


/**
 *  Détermine si le navigateur est IE7
 *
 *  @author Denis THEVENOT
 *  @return (Boolean) TRUE si IE7, FALSE sinon...
 */
function isIE7()
{
    if ($.browser.msie && $.browser.version == '7.0')
    {
        return true;
    }
    else
    {
        return false;
    }
}


/**
 *  Détermine si le navigateur est Firefox
 *
 *  @author Denis THEVENOT
 *  @return (Boolean) TRUE si IE6, FALSE sinon...
 */
function isFirefox()
{
    return $.browser.mozilla;
}


/**
 *  Test si la boite de message de retour de formulaire contient un message ou pas
 *  Si oui, on fait apparaitre la boite.
 *
 *  @author Denis THEVENOT
 *  @return VOID
 */
function checkMsgForm()
{
    if ($('#msgForm').text() != '')
    {
        $('#msgForm').slideDown('slow');
    }
}


/**
 * Verifie si le format de l'email est bon
 *
 * @author Denis THEVENOT
 * @param mail (String) Email à traiter
 * @return (Boolean) TRUE si le format est correct, FALSE sinon
 */
function checkMail(mail)
{
    if (mail.indexOf('@',0) == -1 || mail.indexOf('.',0) == -1)
    {
        return false;
    }
    else
    {
        return true;
    }
}


/**
 * Supprime les espaces en début et fin de chaine
 *
 * @author Denis THEVENOT
 * @param chaine (String) Chaine à traiter
 * @return (String) Chaine sans les espaces en début et fin
 */
function trim(chaine)
{
    return chaine.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-23436192-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();


