﻿/*************************************************************
Fonctions permettant de récupérer la Culture de l'application

Utilisé pour l'instant lors de l'appel à aux méthodes Ajax
car le thread crée par Ajax utilise la culture par défault

*************************************************************/
var _cultureApplication;
function initCultureApplication(_culture) {
    _cultureApplication = _culture;
}

/***************************************************
Ces variables sont principalement appelées lorsque l'on utilise
des fontions AJAX :
La fonction appelée garde un contexte des paramètres passés,
ces paramètres garantissent l'unicité de l'appel, 
et donc l'unicité de la réponse.
****************************************************/
var _DsnEtablissement;
function initDsnEtablissement(_dsn) {
    _DsnEtablissement = _dsn;
}

var _guidUtilisateurCourant;
function initGuidUtilisateurCourant(_GuidUtilisateur) {
    _guidUtilisateurCourant = _GuidUtilisateur;
}

/************************************/

/***** Version du navigateur ******/
var isNS = (navigator.appName.substring(0, 3) == "Net");

_nom_Navigateur = navigator.appName;
_versionIE = _versionNet = 0;

if (_nom_Navigateur == 'Microsoft Internet Explorer') // IE
{
    if (navigator.appVersion.indexOf('MSIE') != -1) {
        t = navigator.appVersion.split('MSIE');
        _versionIE = parseFloat(t[1]);
    }
}
else // NETSCAPE
    _versionNet = parseFloat(navigator.appVersion);

/***********************************************/
var gv_last = null;

function gv_click(el) {
    if (gv_last != null) {
        gv_last.style.backgroundColor = '#F5F5F5';
    }
    //document.getElementById(el).style.backgroundColor='#97C4FE';
    el.style.backgroundColor = '#97C4FE';

    gv_last = el;
}

/************************************
Raccourcis clavier
************************************/
document.onkeydown = sortie;
function sortie(e) {
    var keyPad, alt, ctrl, shift;

    if (isNS) {
        alt = (e.altKey) ? true : false;
        ctrl = (e.ctrlKey) ? true : false;
        shift = (e.shiftKey) ? true : false;

        keyPad = e.which;
    }
    else {
        e = window.event;

        alt = (e.altKey) ? true : false;
        ctrl = (e.ctrlKey) ? true : false;
        shift = (e.shiftKey) ? true : false;

        keyPad = e.keyCode;
    }

    touche = -1;

    if (keyPad >= 96 && keyPad <= 105)
        touche = keyPad - 96;
    if (keyPad >= 48 && keyPad <= 57)
        touche = keyPad - 48;

    if (ctrl && !alt && touche != -1) {
        try {
            eval("var fct = ctrl" + touche);
            if (SortiePageCritique(e))
                fct();
            return false;
        }
        catch (ex) { }
    }

    return true;
}

/************************************
Webparts moteurs
************************************/

function affWpMoteur(zis, str, id) {
    var enfants = zis.parentNode.childNodes;

    var nbFils = enfants.length;
    for (i = 0; i < nbFils; i++)
        enfants[i].className = "";

    zis.className = "wpmcurrent";

    var el = document.getElementById(id + str);

    var enfantsContenu = document.getElementById(id + 'wpmoteurs').getElementsByTagName("DIV");

    var nbFils = enfantsContenu.length;

    for (i = 0; i < nbFils; i++)
        enfantsContenu[i].style.display = 'none';

    el.style.display = 'block';
}

/************************************
XML Littré
************************************/

function xmlLittre(mot, el, RepertoireImage) {
    var request = new Sys.Net.WebRequest();
    var tmp = escape(escape(mot));
    request.set_url("../Proxy.aspx?url=http://francois.gannaz.free.fr/Littre/xmlittre.php?requete=" + tmp);

    //request.completed.add(function test(e) { xmlLittreCompleted(mot, e, el) });
    request.add_completed(function test(e) { xmlLittreCompleted(mot, e, el) });
    request.invoke();

    var xml = document.getElementById(el);
    xml.innerHTML = "<img src='" + RepertoireImage + "/loading.gif' /> " + var_Langue_ATLAS_RECHERCHE;
    xml.style.height = "auto";
    xml.style.display = "block";
}

function EHM(mot, el, RepertoireImage) {
    var request = new Sys.Net.WebRequest();
    var tmp = encodeURIComponent(mot);
    request.set_url("../Proxy.aspx?rechercheEHM=" + tmp);

    request.add_completed(function test(e) { EHMCompleted(mot, e, el) });
    request.invoke();

    var xml = document.getElementById(el);
    xml.innerHTML = "<img src='" + RepertoireImage + "/loading.gif' /> " + var_Langue_ATLAS_RECHERCHE;
    xml.style.height = "auto";
    xml.style.display = "block";
}

function xmlLittreCompleted(mot, response, el) {
    //var data = response.get_data();
    var data = response.get_responseData();
    var str = data.toString();

    var debut = str.lastIndexOf("<!-- colonne de droite -->");
    var fin = str.lastIndexOf("<!--fin du corps-->");

    var xml = document.getElementById(el);
    var ok = str.substring(debut, fin);

    ok = ok.replace(/<(\/)?a(.*?)>/g, "");
    xml.innerHTML = ok + "<br /><a href='http://francois.gannaz.free.fr/Littre/xmlittre.php?requete=" + mot + "'>" + var_Langue_XML_LITTRE_DETAILS + "</a><div class='xmlcopy'>" + var_Langue_XML_LITTRE_DONNEES + "<a href='http://francois.gannaz.free.fr/Littre/accueil.php' target='_blank'>XMLittré</a></div>";

    if (xml.offsetHeight > 300 || xml.offsetHeight < 10) {
        xml.style.overflow = "auto";
        xml.style.height = "300px";
    }
}

function EHMCompleted(mot, response, el) {
    //var data = response.get_data();
    var data = response.get_responseData();
    var str = data.toString();
    var ok = "";

    var debut = str.indexOf("<!-- CUT -->");
    var fin = str.indexOf("<!-- CUT END -->");
    if (debut == -1) // pas de "<!-- CUT -->" => pas de résultat
    {
        ok = "Cette recherche n'a donné aucun résultat.";
    }
    else {
        ok = str.substring(debut, fin);
    }

    ok = ok.replace(/<(\/)?a(.*?)>/g, ""); //trim les liens
    var exp = new RegExp("src=\"", "g"); // recherche des src en global
    ok = ok.replace(exp, " src=\"http://www.ehmelhm.hachette-multimedia.fr"); //remplace par réf absolue

    var xml = document.getElementById(el);
    xml.innerHTML = ok + "<br /><a href=\"javascript:xmlLittreEHMDetails('" + mot + "');\">" + var_Langue_XML_LITTRE_DETAILS + "</a><div class='xmlcopy'>" + var_Langue_XML_LITTRE_DONNEES + "<a href='http://www.ehmel.hachette-multimedia.fr/auth_pass.html?login=kneehm&pass=hachette' target='_blank'>l'Encyclopédie Hachette Multimédia en Ligne</a></div>";

    if (xml.offsetHeight > 300 || xml.offsetHeight < 10) {
        xml.style.overflow = "auto";
        xml.style.height = "300px";
    }
}

function xmlittreclear(el) {
    document.getElementById(el + 'cEHMreq').value = '';
    document.getElementById(el + 'cxmlreq').value = '';
    var xml = document.getElementById(el + 'xmlittres');
    xml.innerHTML = "";
    xml.style.height = "auto";
    xml.style.display = 'none';
}

var fenetreEHM;
function xmlLittreEHMDetails(mot) {
    var url = 'http://www.ehmel.hachette-multimedia.fr/auth_pass.html?login=kneehm&pass=hachette';
    fenetreEHM = window.open(url);

    setTimeout("continueEHM('" + mot + "')", 1000);
}

function continueEHM(mot) {
    fenetreEHM.location = 'http://www.ehmel.hachette-multimedia.fr/search.html?searchTextUne=' + mot;
    return;
}


/****************************************
GridView
/****************************************/

var _oldRowSelectedID;
var _oldStyleRow;

function selectLigneGridView(guid, hiddenId, rowID, style) {
    /* Changement Guid séléctionné */
    var inputGuid = document.getElementById(hiddenId);

    if (inputGuid)
        inputGuid.value = guid;
    else
    //alert('Hidden Field inexistant') ;
        alert(var_Langue_HIDDEN_FIELD_INEXISTANT);


    /* Changement couleur */

    var oldRow = document.getElementById(_oldRowSelectedID);
    if (oldRow) // remise de l'ancienne couleur
        oldRow.className = _oldStyleRow;


    var row = document.getElementById(rowID);
    if (row) {
        _oldRowSelectedID = rowID;
        _oldStyleRow = row.className;
        row.className = style;
    }

}

function afficheZoneBoutons(panelIDBoutons) {
    var panel = document.getElementById(panelIDBoutons);
    panel.style.display = 'inline';

    //on masque tous les sous-panel (boutons libres) de la zone "BoutonsClic"
    var nb = panel.childNodes.length;

    for (i = 0; i < nb; i++) {
        if (panel.childNodes[i].tagName == 'DIV')
            panel.childNodes[i].style.display = 'none';
    }
}

function cacheZoneBoutons(panelIDBoutons) {
    var panel = document.getElementById(panelIDBoutons);
    panel.style.display = 'none';
}

function ArrayContains(a, obj)
{
    var i = a.length;
    while (i--)
    {
        if (a[i] === obj) 
        {
            return true;
        }
    }
    return false;
}

function ToggleDel()
{
    for (var indexIdSelectionne = 0; indexIdSelectionne < CheckBoxGuids.length; indexIdSelectionne++)
    {
        var tmp = document.getElementById(CheckBoxIDs[indexIdSelectionne]);

        if (tmp.checked == true && ArrayContains(tabIdsUL, CheckBoxGuids[indexIdSelectionne]))
            return true;
    }

    return false;
}

//ChangeChkValue est appelé à chaque fois qu'une case à coché est coché,
//cette fonction mets à jours la variable guidsSelectGridViewChk avec une liste des
//Guid séléctionnés.
function ChangeChkValue(guidsSelectGridViewChk, nbLignes, panelIdBoutonsSuppr) {
    var str = new StringBuilder();
    var auMoinsUnSelect = false;
    //CheckBoxGuids : tableau rempli avec la liste des Guids des 
    //utilisateurs affichés dans le tableau
    if (CheckBoxIDs != null && CheckBoxGuids != null) {
        for (var i = 0; i < nbLignes && i < CheckBoxIDs.length; i++) {
            var cb = document.getElementById(CheckBoxIDs[i]);
            if (cb != null && cb.checked) {
                auMoinsUnSelect = true
                str.append(CheckBoxGuids[i]);
                str.append(";");
            }
        }
    }
    if (auMoinsUnSelect)
    {
        afficheZoneBoutons(panelIdBoutonsSuppr);

        var afficherDEl = false;

        if (typeof(idBtnDesactiverEelve) != "undefined" && typeof(tabIdsUL) != "undefined")
        {
//            for (var a1 = 0; a1 < CheckBoxGuids.length; a1++)
//            {
//                for (var b1 = 0; b1 < tabIdsUL.length; b1++) {

//                    var tmp = document.getElementById(CheckBoxIDs[a1]);

//                    if (tmp.checked == true && tabIdsUL[b1] == CheckBoxGuids[a1]) {
//                        afficherDEl = true;
//                        break;
//                    }
//                }
            //            }



            if (ToggleDel())
            {
                var btnDEl = document.getElementById(idBtnDesactiverEelve);
                if (btnDEl) {
                    btnDEl.style.display = 'inline';
                }
            }
            else
            {
                var btnDEl = document.getElementById(idBtnDesactiverEelve);
                if (btnDEl) {
                    btnDEl.style.display = 'none';
                }
            } 


        }
        
    }
    else {
        cacheZoneBoutons(panelIdBoutonsSuppr);
    }
    var hiddenField = document.getElementById(guidsSelectGridViewChk);
    if (hiddenField != null) {
        //guidsSelectGridViewChk est donc mis à jours.
        hiddenField.value = str.build();
    }
    else {
        alert(var_Langue_CHAMP_INDEFINI_part1 + guidsSelectGridViewChk + var_Langue_CHAMP_INDEFINI_part2);
    }
}

function ChangeChkValueAll(idChkAll, guidsSelectGridViewChk, nbLignes, panelIdBoutonsSuppr) {
    var cb = document.getElementById(idChkAll);
    var hiddenField = document.getElementById(guidsSelectGridViewChk);

    if (cb != null) {
        if (cb.checked) {
            changeChekState(true, nbLignes);
            ChangeChkValue(guidsSelectGridViewChk, nbLignes, panelIdBoutonsSuppr);
        }
        else {
            changeChekState(false, nbLignes);
            cacheZoneBoutons(panelIdBoutonsSuppr);
            if (hiddenField)
                hiddenField.value = "";
        }
    }
}

function changeChekState(state, nbLignes) {
    if (CheckBoxIDs != null && CheckBoxGuids != null) {
        for (var i = 0; i < nbLignes && i < CheckBoxIDs.length; i++) {
            var cb = document.getElementById(CheckBoxIDs[i]);
            if (cb != null && !cb.disabled) {
                cb.checked = state;
            }
        }
    }
}

function afficheBouton(str) {
    document.getElementById(str).style.display = 'inline';
}

/****************************************
Page params/traductions
/****************************************/

function moveTrad(e, el) {
    //haut : 38 - bas : 40
    //gauche : 37 - droite : 39

    var lio = el.id.lastIndexOf('ntb');

    var elId = el.id.substr(0, lio) + 'ntb';

    num = parseInt(el.id.substr(lio + 3, 5));

    if (e.keyCode == 38 && document.getElementById(elId + (num - 2)))
        document.getElementById(elId + (num - 2)).focus();
    else if (e.keyCode == 40 && document.getElementById(elId + (num + 2)))
        document.getElementById(elId + (num + 2)).focus();
}


/****************************************
Page Critiques de saisie
/****************************************/

function SortiePageCritique(evt) {
    var suite = true;

    if (_objPageCritique && _objPageCritique.actif) {
        suite = confirm(_objPageCritique.messageConfirmation);
        if (suite) (_objPageCritique.setActif(false));
    }

    return suite;
}

function ActivePageCritique(evt, fonction) {
    // Ajout d'une fonction permettant d'activer l'objet PageCritique
    if (_objPageCritique && _objPageCritique.actif != true)
        _objPageCritique.setActif(true);

    eval("var fct = " + fonction);
    fct();
}

function ActivePageCritiqueTextBox(evt, textBox, fonction) {
    if (textBox.value != _ContenuChampsTextBoxEnCours)
        ActivePageCritique(evt, fonction);
}

function ActivePageCritique2(evt) {
    // Ajout d'une fonction permettant d'activer l'objet PageCritique
    if (_objPageCritique && _objPageCritique.actif != true)
        _objPageCritique.setActif(true);

}

function ActivePageCritiqueTextBox2(evt, textBox) {
    if (textBox.value != _ContenuChampsTextBoxEnCours)
        ActivePageCritique2(evt);
}



var _ContenuChampsTextBoxEnCours;

function EnregistreContenu(textBox) {
    _ContenuChampsTextBoxEnCours = textBox.value;
}

// Objet permettant de gérer les pages Critiques 
// Ex : Une page en cours de saisie ( notes ) --> éviter de changer de page sans confirmations

PageCritique = function() {
    this.actif = false;
    this.messageConfirmation;

    this.init = function(msgConfirmation) {
        this.messageConfirmation = msgConfirmation;
    }

    this.setActif = function(bool) {
        this.actif = bool;
    }

    this.inverseActif = function() {
        this.actif = !this.actif;
    }
}

// Variable globale utilisée lorsque l'on se trouve sur une page critique.
var _objPageCritique;

function InitObjetPageCritique(msgConfirmation) {
    _objPageCritique = new PageCritique();
    _objPageCritique.init(msgConfirmation);
}


/*************************************************************************************/
/*  MESSAGE D'AVERTISSEMENT DE FIN DE SESSION                                        */
/*************************************************************************************/

/* ----- taille écran ------------ */
largeurEc = screen.availWidth;
hauteurEc = screen.availHeight;

/* ----- taille de la div ------- */
largeurDiv = 600;
hauteurDiv = 40;

/* ----- position centrée------------ */
positionHorizontale = (largeurEc - largeurDiv) / 2;
positionVerticale = (hauteurEc - hauteurDiv) / 2 - 200;


/*----- affichage des trois messages ------------ */

document.write("<div id=\"div0\" onclick = Cacher('div0'); style=\"display:none;position:absolute; top:" + positionVerticale + "px; left:" + positionHorizontale + "px;padding:5px;width:" + largeurDiv + "px;height: 20 px;border:1px solid #4F608E;font-size:12px;color: #4F608E;text-align:center;background-color:#D9E9ED;\">");
document.write("</div>");

document.write("<div id=\"div1\" onclick = Cacher('div1'); style=\"display:none;position:absolute; top:" + positionVerticale + "px; left:" + positionHorizontale + "px;padding:5px;width:" + largeurDiv + "px;height:" + hauteurDiv + "px;border:1px solid #4F608E;font-size:12px;color: #4F608E;text-align:center;background-color:#D9E9ED;\">");
document.write("</div>");

document.write("<div id=\"div2\" onclick = Cacher('div2'); style=\"display:none;position:absolute; top:" + positionVerticale + "px; left:" + positionHorizontale + "px;padding:5px;width:" + largeurDiv + "px;height:" + hauteurDiv + "px;border:1px solid #4F608E;font-size:12px;color: #4F608E;text-align:center;background-color:#D9E9ED;\">");
document.write("</div>");

/*********************************************************************************************
*  Initialisation de l'affichage
*
* temps_avertissement = temps en ms à partir duquel le message s'affiche
* temps = temps au bout duquel le message disparaît si l'utilisateur ne l'a pas encore fermé
*********************************************************************************************/

function InitTimerAvertissementFinSession(objet, msgTimer, temps_avertissement, temps) {
    if (objet == 'div0') {
        document.getElementById('div0').innerHTML = '<div align="center">  <font color = #014299> ' + msgTimer + ' <br>';
        setTimeout("Afficher('" + objet + "')", temps_avertissement);
        setTimeout("Cacher('" + objet + "')", temps);
    }
    else {
        document.getElementById(objet).innerHTML = '<b> <div align="right"><font color = #3A80BC> Fermer</b><br> <div align="center">  <font color = #014299> ' + msgTimer + ' <br><br>';
        setTimeout("Afficher('" + objet + "')", temps_avertissement);
        setTimeout("Cacher('" + objet + "')", temps);
    }
}

function Afficher(objet) {
    document.getElementById(objet).style.display = 'block';
}

function Cacher(objet) {
    document.getElementById(objet).style.display = 'none';
}


/* Récupération de l'ancien index d'une dropdownlistcritique */

var checkIntPreviousIndex;

function checkPreviousIndex(obj) {
    checkIntPreviousIndex = obj.selectedIndex
}
function restaureAncienIndex(obj) {
    obj.selectedIndex = checkIntPreviousIndex;
    return false;
}

function AlertSessionExpired(msgTimer) {
    alert(msgTimer);
}


//fonction de formatage de l'heure
function lZ(x) {
    return (x > 9) ? x : '0' + x;
}

function addMinutes(dateTimeObj, iMinutes) {
    var length = iMinutes * 60 * 1000;
    var iseconds = dateTimeObj.getTime();
    iseconds += length;
    var dt = new Date(iseconds);
    return dt;
}


/********************************
** Session TimeOut Redirection **
********************************/

function InitTimerRedirectFinSession(temps, urlToRedirect) {
    setTimeout("RedirectFinSession('" + urlToRedirect + "')", temps);
}

function RedirectFinSession(urlToRedirect) {
    window.location = urlToRedirect;
}

/*****************************
**  Chargement de la page ****
*****************************/

function EndPageLoading() {
    var divLoading = document.getElementById('hidepage');
    if (divLoading)
        divLoading.style.visibility = 'hidden';
}

function PageLoading() {
    var divLoading = document.getElementById('hidepage');
    if (divLoading) {
        divLoading.style.visibility = '';
        divLoading.style.height = document.documentElement.offsetHeight;
    }

}


/****************************
Affichage export/import roles
****************************/

function afficherExportImport(exp, imp, lib) {
    document.getElementById(exp).innerHTML = var_Langue_Roles_EXPORTER + "'" + lib + "'";
    document.getElementById(imp).innerHTML = var_Langue_Roles_IMPORTER + "'" + lib + "'";

    document.getElementById(exp).parentNode.style.display = '';
    document.getElementById(imp).parentNode.style.display = '';

}

/****************************
Call Back Description Droits
****************************/

function __onCallbackTermine(result, context) {
    var s = context.split(";");
    role_desc(s[0], s[1], result);

}

/************************************
Affichage Aide Contextuelle
**************************************/

function AfficheAide(AideCtxId) {
    setTimeout("AfficheAideTimer('" + AideCtxId + "')", 1500);
}

function AfficheAideTimer(AideCtxId) {
    var divAide = document.getElementById(AideCtxId);
    if (divAide) {
        var heightTmp = divAide.offsetHeight;
        var WidthTmp = divAide.offsetWidth;

        var realheight = 0; 	// real div size
        var realwidth = 0;
        divAide.style.overflow = ""; 	// temporary showed as is
        divAide.style.height = "auto"; 	// without overflow 
        realheight = bytefx.$size(divAide).height; // to get real div height
        realwidth = bytefx.$size(divAide).width;
        divAide.style.overflow = "hidden"; 	// then hide and
        divAide.style.height = "0px"; 	// resize

        newsize = { width: realwidth - 2, height: realheight };
        bytefx.size(divAide, newsize, 8);
    }
}

AideContextuelle = function() {
    this.divAide;
    this.Afficher;
    this.Fermer;
    this.OuvrirPageAide;
    this.ActiverModeInit;
    this.DescactiverModeInit;


    this.init = function(divAideId, aAfficherId, aFermerId, aOuvrirAidePageId, aActiverModeInit, aDesactiverModeInit) {
        this.divAide = document.getElementById(divAideId);
        this.Afficher = document.getElementById(aAfficherId);
        this.Fermer = document.getElementById(aFermerId);
        this.OuvrirPageAide = document.getElementById(aOuvrirAidePageId);
        this.ActiverModeInit = document.getElementById(aActiverModeInit);
        this.DescactiverModeInit = document.getElementById(aDesactiverModeInit);

        this.Fermer.disabled = (this.divAide == null);
    }

    this.modifieAffichageAide = function() {
        if (this.divAide != null) {
            if (this.divAide.style.display == 'none') {
                this.divAide.style.display = '';
                if (this.Afficher != null)
                    this.Afficher.style.display = 'none';

                if (this.Fermer != null)
                    this.Fermer.style.display = '';
            }
            else {
                this.divAide.style.display = 'none';
                if (this.Afficher != null)
                    this.Afficher.style.display = '';
                if (this.Fermer != null)
                    this.Fermer.style.display = 'none';
            }
        }
    }

    this.modifieAidePage = function(affichage) {
        this.modifieAffichageAide();

        if (!affichage)
            this.OuvrirPageAide.style.display = '';
        else
            this.OuvrirPageAide.style.display = 'none';
    }

    this.modifieAide = function(affichage) {
        this.modifieAffichageAide();
        if (!affichage) {
            this.ActiverModeInit.style.display = '';
            this.DescactiverModeInit.style.display = 'none';
        }
        else {
            this.ActiverModeInit.style.display = 'none';
            this.DescactiverModeInit.style.display = '';
        }
    }
}

// Variable globale utilisée pour la gestion de l'aide.
var _AideContextuelle;

function InitObjetAideContextuelle(divAideId, aAfficherId, aFermerId, aOuvrirAidePageId, aActiverModeInit, aDesactiverModeInit) {
    _AideContextuelle = new AideContextuelle();
    _AideContextuelle.init(divAideId, aAfficherId, aFermerId, aOuvrirAidePageId, aActiverModeInit, aDesactiverModeInit);
}

function ModifieAffichageAide() {
    _AideContextuelle.modifieAffichageAide();
}

function __onModifieAidePage(result, context) {
    if (context == 'false')
        _AideContextuelle.modifieAidePage(false);
    else
        _AideContextuelle.modifieAidePage(true);
}

function __onModifieAide(result, context) {
    if (context == 'false')
        _AideContextuelle.modifieAide(false);
    else
        _AideContextuelle.modifieAide(true);
}

function _showPremiereFois(pParamfeed) {

    var arrayTmp = new Array();
    arrayTmp = pParamfeed.split("*");

    var str = arrayTmp[0];
    var id = arrayTmp[1];

    testFeed(str, id);

    if (self.showPremiereFois) { showPremiereFois(); }
}

/****************************
Tooltip dundas
****************************/
/*var FADINGTOOLTIP;
var wnd_height, wnd_width;
var tooltip_height, tooltip_width;
var tooltip_shown=false;
var	transparency = 100;
var timer_id = 1;

// override events
window.onload = WindowLoading;
window.onresize = UpdateWindowSize;
document.onmousemove = AdjustToolTipPosition;

function DisplayTooltip(type,date)
{

var tooltip_text = '<img src="~/Infostance.Scolastance/Modules/Statistiques/statpopup.aspx?type=' + type + '&date=' + date + '">';
FADINGTOOLTIP.innerHTML = tooltip_text;
tooltip_shown =  true;

// Get tooltip window height
tooltip_height=(FADINGTOOLTIP.style.pixelHeight)? FADINGTOOLTIP.style.pixelHeight : FADINGTOOLTIP.offsetHeight;
transparency=0;
ToolTipFading();
} 

function RemoveTooltip()
{
FADINGTOOLTIP.innerHTML = "";
tooltip_shown = false;
clearTimeout(timer_id);
FADINGTOOLTIP.style.visibility="hidden";
}

function AdjustToolTipPosition(e)
{
if(tooltip_shown && FADINGTOOLTIP)
{
offset_y = (event.clientY + tooltip_height - document.body.scrollTop + 30 >= wnd_height) ? - 15 - tooltip_height: 20;
FADINGTOOLTIP.style.visibility = "visible";
FADINGTOOLTIP.style.left = Math.min(wnd_width - tooltip_width - 10 , Math.max(3, event.clientX + 6)) + document.body.scrollLeft + 'px';
FADINGTOOLTIP.style.top = event.clientY + offset_y + document.body.scrollTop + 'px';
}
}

function WindowLoading()
{
FADINGTOOLTIP=document.getElementById('FADINGTOOLTIP');
if (FADINGTOOLTIP)
{
// Get tooltip  window width				
tooltip_width = (FADINGTOOLTIP.style.pixelWidth) ? FADINGTOOLTIP.style.pixelWidth : FADINGTOOLTIP.offsetWidth;
    	
// Get tooltip window height
tooltip_height=(FADINGTOOLTIP.style.pixelHeight)? FADINGTOOLTIP.style.pixelHeight : FADINGTOOLTIP.offsetHeight;

UpdateWindowSize();
}
}

function ToolTipFading()
{
if(transparency <= 100)
{
FADINGTOOLTIP.style.filter="alpha(opacity="+transparency+")";
transparency += 5;
timer_id = setTimeout('ToolTipFading()', 35);
}
}

function UpdateWindowSize() 
{
wnd_height=document.body.clientHeight;
wnd_width=document.body.clientWidth;
}*/


/*****************************
Ajout Page Personelle
********************************/
function Onok(selectId, textBoxNomPageId, chkPagePersoId) {
    var chkPerso = document.getElementById(chkPagePersoId);

    if (chkPerso != null) {
        if (chkPerso.checked == true) // On veut ajouter une page perso
        {
            var nomPage = document.getElementById(textBoxNomPageId);
            if (nomPage) {
                var nom = nomPage.value;
                __doPostBack('GrClaSelected', "PERSO;" + nom);
            }
        }
        else // on veut ajouter une page Groupe/ Classe
        {
            var select = document.getElementById(selectId);
            if (select) {
                var grCla = select.value;
                __doPostBack('GrClaSelected', "GRPCLA;" + grCla);
            }
        }
    }
}

/********
Actualités
***/

function demasquerActu(el) {
    if (el.parentNode.childNodes[1].style.display == 'none') {
        el.parentNode.childNodes[1].style.display = '';
        el.src = el.src.replace('imgDemasquer', 'imgMasquer');
    }
    else {
        el.parentNode.childNodes[1].style.display = 'none';
        el.src = el.src.replace('imgMasquer', 'imgDemasquer');

    }
}

function showExpiration(idCheckbox, idPanel) {
    var checked = document.getElementById(idCheckbox).checked;
    document.getElementById(idPanel).style.display = (checked == true) ? 'inline' : 'none';
}


/****
Absences
****/

function funcRad(nomDiv1, visibilite1, nomDiv2, visibilite2) {
    if (document.getElementById(nomDiv1))
        document.getElementById(nomDiv1).style.display = visibilite1;
    if (document.getElementById(nomDiv2))
        document.getElementById(nomDiv2).style.display = visibilite2;
}

// Affichage ou non d'un ou plusieurs elements
// il n'y a qu'un parametre formel : affichage ou non des elements
// appel de la fonction showElements(true, id1, id2, id3, ...., idn)
function showElements(bool) {
    var l = showElements.arguments.length;                  // nombre de parametres de la fonction
    var sdisplay = (bool ? 'block' : 'none');             // style d'affichage

    if (l > 1) {
        for (i = 1; i < l; i++)                           // parcourt des elements a afficher
            document.getElementById(showElements.arguments[i]).style.display = sdisplay;
    }
}


// Affichage ou non d'un ou plusieurs elements
// il n'y a qu'un parametre formel : affichage ou non des elements
// appel de la fonction showElementsByControls(true, control1, control2, control3, ...., controln)
function showElementsByControls(bool) {
    var l = showElementsByControls.arguments.length;        // nombre de parametres de la fonction
    var sdisplay = (bool ? 'block' : 'none');             // style d'affichage

    if (l > 1) {
        for (i = 1; i < l; i++)                           // parcourt des elements a afficher
            showElementsByControls.arguments[i].style.display = sdisplay;
    }
}

// Affichage ou non d'une div
function affCache(pClientId) {
    var pr = document.getElementById(pClientId);

    if (pr.style.display == "") {
        pr.style.display = "none";
    } else {
        pr.style.display = "";
    }
}

/********************
WebPart Membres
*********************/

var _timeMembresChargement
function _onChargementMembres(result, context) {
    CreateWebPartMembresAsync(result, context);
}

function CreateWebPartMembresAsync(result, context) {
    if (result == "CHARGEMENT") {
        // on rappelle le serveur si la fonction se trouve déjà sur la page
        if (_RappelServeurMembre)
            _timeMembresChargement = setTimeout('_RappelServeurMembre()', 500);
        else
            _timeMembresChargement = setTimeout("CreateWebPartMembresAsync('CHARGEMENT','')", 500);
    }
    else {
        // On remplit la webPart
        document.getElementById(context).innerHTML = result;
    }

}


/********************
Fonction pour module de traduction
*********************/

function traduction_tabmodule(langue) {
    // framework protoload
    //    $(document.body).startWaiting('bigBlackWaiting');
    //    window.setTimeout(document.body.stopWaiting.bind(document.body), 5000);


    var temp;
    document.getElementById('waiting').style.display = "block";
    alert('Work in progress');

    //window.open('../../../Modules/chargement.html', 'chargement', 'toolbar=no, location=no, directories=no, status=no, scrollbars=no, resizable=no, copyhistory=no, width=300, height=300, left=300, top=300');
    temp = TraductionAjax.affich_tabmodule(langue);

    document.getElementById('waiting').style.display = "none";
    var aj = temp.value;
    var id = document.getElementById("resultatAjax");

    id.innerHTML = "<center><h2>" + langue + "</h2></center>" + aj;
}

function sauve_tab_traduc() {
    //on récupère le nombre de clé par pages qui est sélectionné
    var nbcle = document.getElementsByTagName('table')[7].getElementsByTagName('tr').length - 4;
    var i;
    var trad = new Array(nbcle);
    var cle = new Array(nbcle);

    var ligne = 1;

    for (i = 0; i < nbcle; i++) {
        trad[i] = document.getElementById("tab" + i.toString()).value + "\\sep\\";
        cle[i] = document.getElementsByTagName('table')[7].getElementsByTagName('tr')[ligne].getElementsByTagName('td')[0].innerHTML + "\\sep\\";

        ligne++;
    }
    var langue = document.getElementsByName("mp$ctl00$Content$Content$filtre$ctl04")[0];
    langue = langue.options[langue.selectedIndex].value;

    var module = document.getElementsByName("mp$ctl00$Content$Content$filtre$ctl07")[0];
    module = module.options[module.selectedIndex].value;

    TraductionAjax.sauve_tab_traduc(langue, cle, trad, module);

}


function getElementbyClass(classname) {

    var partscollect;

    var inc = 0;
    var alltags = document.all ? document.all :
    document.getElementsByTagName("*");

    for (i = 0; i < alltags.length; i++) {
        if (alltags[i].className == classname)
            partscollect = alltags[i];
    }
    return partscollect;
}

/***************************************************
Fonction désactivant la liste des parqmètres passés en paramètre.
****************************************************/
var ctl_disabled = false;
var ctl_selectedIndex = -1;
function startValidation(ctlId) {

    ctl = document.getElementById(ctlId);
    if (ctl) {
        if (ctl_disabled) {
            if (ctl_selectedIndex >= 0)
                ctl.selectedIndex = ctl_selectedIndex;
            return false;
        }
    }
    return true;

}
function PostBackEnCours(ctlId) {
    if (ctlId) {
        ctl = document.getElementById(ctlId);
        if (ctl)
            ctl_selectedIndex = ctl.selectedIndex;

    }

    return (ctl_disabled);
}

function DemarrerPostBack() {
    ctl_disabled = true;
    return true;

}
var popup;
var popup_x;
var popup_y;
var texte_popup;
function ShowPopup(idPopup, idContainer, textePopup, urlImg) {
    if (idPopup) {
        //idPopup.style.display = 'block'
        //idPopup.innerText = 'Enregistrement en cours, veuillez patienter.'
        popup = document.getElementById(idPopup);
        if (popup && !popup_x && !popup_y) {
            document.onmousemove = PopupPersistance;
            document.onclick = PopupPersistance;
            document.ondoubleclick = PopupPersistance;
            popup.innerHTML = '<table border="0" cellpadding="0" cellspacing="0"><tr><td><img src="' + urlImg + '/loading.gif" /></td><td>' + textePopup + '</td></tr></table>'
            _PPafficheModal(idPopup, idContainer);
            if (!popup_x)
                popup_x = popup.style.left;
            if (!popup_y)
                popup_y = popup.style.top;
            texte_popup = popup.innerHTML;
        }

        //initCoordonnees(idPopup.id, 20, 20);

    }
}

function PopupPersistance() {
    if (popup) {
        popup.style.left = popup_x;
        popup.style.top = popup_y;
        popup.style.display = 'block';
        popup.innerHTML = texte_popup;
    }
}


/***************************************************
Fonction pour le rss de l'aide contextuelle "Rss/rss.js
****************************************************/

var lastRequestStr = null;
var time;
var anchor;

function testFeed(str, id) {
    if (lastRequestStr != str) {
        var el = document.getElementById(id);

        var start = str.lastIndexOf("&ClientId=") + 10;
        var end = str.lastIndexOf("&") > (start - 9) ? str.lastIndexOf("&") : str.length;
        var clientId = str.substring(start, end);

        var oReq = zXmlHttp.createRequest();
        oReq.onreadystatechange = function() {
            if (oReq.readyState == 4) {
                if (oReq.status == 200) {
                    afficheFeed(oReq.responseText, el, clientId);
                }
            }

        };
        oReq.open("GET", str, true);
        oReq.send(null);

        lastRequestStr = str;

        AnnuleRssInfos();
    }
}

function afficheWait() {
    _PPcloseLast();

    document.getElementById('popup_rss').innerHTML = "<img src='../../../images/loading.gif'/>&nbsp;&nbsp;<strong>" + var_Langue_TreeView_LOADING + "</strong>";

    _PPaffiche('popup_rss', '');

    setToAnchor('popup_rss');
}

function afficheFeed(str, el, clientId) {
    if (el != null) {
        el.innerHTML = str;

        if (document.getElementById(clientId + '_divInfosRSS') != null) {
            document.getElementById('popup_rss').innerHTML = document.getElementById(clientId + '_divInfosRSS').innerHTML;
        }
    }
}

function setToAnchor(ID_Div) {
    if (xMouse) {
        document.getElementById(ID_Div).style.left = xMouse - 100 + "px";
        document.getElementById(ID_Div).style.top = yMouse + 30 + "px";

        document.getElementById('ieframe').style.left = xMouse - 100 + "px";
        document.getElementById('ieframe').style.top = yMouse + 30 + "px";
    }

}

function tempoCallBackRssInfos(me) {
    anchor = me;
    afficheWait();
    time = setTimeout('affiche()', 250);
}

function affiche() {
    // récupération de la div se trouvant après le lien
    if (anchor.nextSibling != null && anchor.nextSibling.nextSibling != null) {
        var div = anchor.nextSibling.nextSibling;
        document.getElementById('popup_rss').innerHTML = div.innerHTML;
    }
}

function AnnuleRssInfos() {
    _PPcloseLast();
    clearTimeout(time);
}

/***************************************************
Fonction pour le rss de l'aide contextuelle "Rss/zxml.js
****************************************************/
var zXml = { useActiveX: (typeof ActiveXObject != "undefined"), useDom: document.implementation && document.implementation.createDocument, useXmlHttp: (typeof XMLHttpRequest != "undefined") }; zXml.ARR_XMLHTTP_VERS = ["MSXML2.XmlHttp.5.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp", "Microsoft.XmlHttp"]; zXml.ARR_DOM_VERS = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "Microsoft.XmlDom"]; ; function zXmlHttp() { } zXmlHttp.createRequest = function() { if (zXml.useXmlHttp) { return new XMLHttpRequest(); } else if (zXml.useActiveX) { if (!zXml.XMLHTTP_VER) { for (var i = 0; i < zXml.ARR_XMLHTTP_VERS.length; i++) { try { new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]); zXml.XMLHTTP_VER = zXml.ARR_XMLHTTP_VERS[i]; break; } catch (oError) { ; } } } if (zXml.XMLHTTP_VER) { return new ActiveXObject(zXml.XMLHTTP_VER); } else { throw new Error("Could not create XML HTTP Request."); } } else { throw new Error("Your browser doesn't support an XML HTTP Request."); } }; zXmlHttp.isSupported = function() { return zXml.useXmlHttp || zXml.useActiveX; }; function zXmlDom() { } zXmlDom.createDocument = function() { if (zXml.useDom) { var oXmlDom = document.implementation.createDocument("", "", null); oXmlDom.parseError = { valueOf: function() { return this.errorCode; }, toString: function() { return this.errorCode.toString() } }; oXmlDom.__initError__(); oXmlDom.addEventListener("load", function() { this.__checkForErrors__(); this.__changeReadyState__(4); }, false); return oXmlDom; ; } else if (zXml.useActiveX) { if (!zXml.DOM_VER) { for (var i = 0; i < zXml.ARR_DOM_VERS.length; i++) { try { new ActiveXObject(zXml.ARR_DOM_VERS[i]); zXml.DOM_VER = zXml.ARR_DOM_VERS[i]; break; } catch (oError) { ; } } } if (zXml.DOM_VER) { return new ActiveXObject(zXml.DOM_VER); } else { throw new Error("Could not create XML DOM document."); } } else { throw new Error("Your browser doesn't support an XML DOM document."); } }; zXmlDom.isSupported = function() { return zXml.useDom || zXml.useActiveX; }; var oMozDocument = null; if (typeof XMLDocument != "undefined") { oMozDocument = XMLDocument; } else if (typeof Document != "undefined") { oMozDocument = Document; } if (oMozDocument && !window.opera) { oMozDocument.prototype.readyState = 0; oMozDocument.prototype.onreadystatechange = null; oMozDocument.prototype.__changeReadyState__ = function(iReadyState) { this.readyState = iReadyState; if (typeof this.onreadystatechange == "function") { this.onreadystatechange(); } }; oMozDocument.prototype.__initError__ = function() { this.parseError.errorCode = 0; this.parseError.filepos = -1; this.parseError.line = -1; this.parseError.linepos = -1; this.parseError.reason = null; this.parseError.srcText = null; this.parseError.url = null; }; oMozDocument.prototype.__checkForErrors__ = function() { if (this.documentElement.tagName == "parsererror") { var reError = />([\s\S]*?)Location:([\s\S]*?)Line Number(\d+),Column(\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/; reError.test(this.xml); this.parseError.errorCode = -999999; this.parseError.reason = RegExp.$1; this.parseError.url = RegExp.$2; this.parseError.line = parseInt(RegExp.$3); this.parseError.linepos = parseInt(RegExp.$4); this.parseError.srcText = RegExp.$5; } }; oMozDocument.prototype.loadXML = function(sXml) { this.__initError__(); this.__changeReadyState__(1); var oParser = new DOMParser(); var oXmlDom = oParser.parseFromString(sXml, "text/xml"); while (this.firstChild) { this.removeChild(this.firstChild); } for (var i = 0; i < oXmlDom.childNodes.length; i++) { var oNewNode = this.importNode(oXmlDom.childNodes[i], true); this.appendChild(oNewNode); } this.__checkForErrors__(); this.__changeReadyState__(4); }; oMozDocument.prototype.__load__ = oMozDocument.prototype.load; oMozDocument.prototype.load = function(sURL) { this.__initError__(); this.__changeReadyState__(1); this.__load__(sURL); }; Node.prototype.__defineGetter__("xml", function() { var oSerializer = new XMLSerializer(); return oSerializer.serializeToString(this, "text/xml"); }); Node.prototype.__defineGetter__("text", function() { var sText = ""; for (var i = 0; i < this.childNodes.length; i++) { if (this.childNodes[i].hasChildNodes()) { sText += this.childNodes[i].text; } else { sText += this.childNodes[i].nodeValue; } } return sText; }); } function zXslt() { } zXslt.transformToText = function(oXml, oXslt) { if (typeof XSLTProcessor != "undefined") { var oProcessor = new XSLTProcessor(); oProcessor.importStylesheet(oXslt); var oResultDom = oProcessor.transformToDocument(oXml); var sResult = oResultDom.xml; if (sResult.indexOf("<transformiix:result") > -1) { sResult = sResult.substring(sResult.indexOf(">") + 1, sResult.lastIndexOf("<")); } return sResult; ; } else if (zXml.useActiveX) { return oXml.transformNode(oXslt); } else { throw new Error("No XSLT engine found."); } }; function zXPath() { } zXPath.selectNodes = function(oRefNode, sXPath, sXmlNs) { if (typeof XPathEvaluator != "undefined") { oXmlNs = oXmlNs || {}; var nsResolver = function(sPrefix) { return oXmlNs[sPrefix]; }; var oEvaluator = new XPathEvaluator(); var oResult = oEvaluator.evaluate(sXPath, oRefNode, nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); var aNodes = new Array; if (oResult != null) { var oElement = oResult.iterateNext(); while (oElement) { aNodes.push(oElement); oElement = oResult.iterateNext(); } } return aNodes; } else if (zXml.useActiveX) { if (oXmlNs) { var sXmlNs = ""; for (var sProp in oXmlNs) { sXmlNs += "xmlns:" + sProp + "=" + oXmlNs[sProp] + " "; } oRefNode.ownerDocument.setProperty("SelectionNamespaces", sXmlNs); }; return oRefNode.selectNodes(sXPath); } else { throw new Error("No XPath engine found."); } }; zXPath.selectSingleNode = function(oRefNode, sXPath, oXmlNs) { if (typeof XPathEvaluator != "undefined") { ; oXmlNs = oXmlNs || {}; var nsResolver = function(sPrefix) { return oXmlNs[sPrefix]; }; var oEvaluator = new XPathEvaluator(); var oResult = oEvaluator.evaluate(sXPath, oRefNode, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null); if (oResult != null) { return oResult.singleNodeValue; } else { return null; }; } else if (zXML.useActiveX) { if (oXmlNs) { var sXmlNs = ""; for (var sProp in oXmlNs) { sXmlNs += "xmlns:" + sProp + "=" + oXmlNs[sProp] + " "; } oRefNode.ownerDocument.setProperty("SelectionNamespaces", sXmlNs); }; return oRefNode.selectSingleNode(sXPath); } else { throw new Error("No XPath engine found."); } }; function zXMLSerializer() { } zXMLSerializer.prototype.serializeToString = function(oNode) { var sXml = ""; switch (oNode.nodeType) { case 1: sXml = "<" + oNode.tagName; for (var i = 0; i < oNode.attributes.length; i++) { sXml += " " + oNode.attributes[i].name + "=\"" + oNode.attributes[i].value + "\""; } sXml += ">"; for (var i = 0; i < oNode.childNodes.length; i++) { sXml += this.serializeToString(oNode.childNodes[i]); } sXml += "</" + oNode.tagName + ">"; break; case 3: sXml = oNode.nodeValue; break; case 4: sXml = "<![CDATA[" + oNode.nodeValue + "]]>"; break; case 7: sXml = "<?" + oNode.nodevalue + "?>"; break; case 8: sXml = "<!--" + oNode.nodevalue + "-->"; break; case 9: for (var i = 0; i < oNode.childNodes.length; i++) { sXml += this.serializeToString(oNode.childNodes[i]); } break; }; return sXml; };

/***************************************************
Fonction pour la popup bas droit
****************************************************/
function role_desc(el, id, txt) {
    document.getElementById(id).innerHTML = txt;
    document.getElementById(id).innerHTML += "<hr /><input type='button' value='" + var_Langue_FERMER + "' class='PEbouton' onclick='_PPcloseLast(); return false;' />";
    clearTimeoutDroits();
    _PPaffiche(id, el);
}

var _IdTimeoutDroits;
function role_descClose() {
    _IdTimeoutDroits = setTimeout("_PPcloseLast()", 1000);
}

function clearTimeoutDroits() {
    clearTimeout(_IdTimeoutDroits);
}

var valider = 13;
var flecheBas = 40;
var flecheHaut = 38;
var flecheDroite = 39;
var flecheGauche = 37;
var tabulation = 9;
var keySuppr = 46;
var keyBack = 8;
var keyMAJLock = 20;
var keyMAJ = 16;
var keyCtrl = 17;
var keyAlt = 18;
var keyNumLock = 144;

/************************************************************************
Fonction permettant de compter le nombre de caractères dans une textBox
*************************************************************************/
function CheckNbChars(textbox) {
    if (textbox.value.length > 254) {
        alert(var_Langue_Notes_REMARQUE_TROP_LONGUE);
        textbox.value = textbox.value.substr(0, 254);
    }
}

/************************************************************************
Fonction indiquant le nombre de caractères restant dans une textBox
*************************************************************************/
function ShowLbNbChars254(textbox, lbNbCarClientID) {
    if (textbox) {
        var lb = document.getElementById(lbNbCarClientID);

        if (textbox.value.length >= 230) {
            if (lb) {
                lb.style.visibility = 'visible';
                lb.innerHTML = var_Langue_Notes_CARACT_RESTANT1 + (254 - textbox.value.length) + var_Langue_Notes_CARACT_RESTANT2;
            }
        }
    }
}

// Version spécifiques aux remarques des notes
// Note : il faudrait modifier dans la base (table + procédure stockées) et passer toutes les remarques à 255 caractères et non 254 pour pouvoir utiliser la même méthode partout !
function LimitNbChars254(keyCode, textbox, lbNbCarClientID) {
    if (keyCode < 33 || keyCode > 40) {
        if (keyCode != keyAlt && keyCode != keyCtrl && keyCode != keyMAJ && keyCode != keyMAJLock && keyCode != keyNumLock) {
            if (textbox) {
                var lb = document.getElementById(lbNbCarClientID);

                if (textbox.value.length >= 230) {
                    if (textbox.value.length >= 254 && keyCode != keySuppr && keyCode != keyBack) {
                        textbox.value = textbox.value.substr(0, 254);
                    }
                    if (lb) {
                        lb.style.visibility = 'visible';
                        lb.innerHTML = var_Langue_Notes_CARACT_RESTANT1 + (254 - textbox.value.length) + var_Langue_Notes_CARACT_RESTANT2;
                    }
                }
                else {
                    if (lb) {
                        lb.style.visibility = 'hidden';
                    }
                }
            }
        }
    }
}

/************************************************************************
Fonction masquant le nombre de caractères restant dans une textBox
*************************************************************************/
function HideLbNbChars(lbNbCarClientID) {
    var lb = document.getElementById(lbNbCarClientID);
    if (lb) {
        lb.style.visibility = 'hidden';
    }
}

function LimitNbChars(keyCode, textbox, lbNbCarClientID) {
    if (keyCode < 33 || keyCode > 40) {
        if (keyCode != keyAlt && keyCode != keyCtrl && keyCode != keyMAJ && keyCode != keyMAJLock && keyCode != keyNumLock) {
            if (textbox) {
                var lb = document.getElementById(lbNbCarClientID);

                if (textbox.value.length >= 230) {
                    if (textbox.value.length >= 255 && keyCode != keySuppr && keyCode != keyBack) {
                        textbox.value = textbox.value.substr(0, 255);
                    }
                    if (lb) {
                        lb.style.visibility = 'visible';
                        lb.innerHTML = var_Langue_Notes_CARACT_RESTANT1 + (255 - textbox.value.length) + var_Langue_Notes_CARACT_RESTANT2;
                    }
                }
                else {
                    if (lb) {
                        lb.style.visibility = 'hidden';
                    }
                }
            }
        }
    }
}

function ShowLbNbChars(textbox, lbNbCarClientID) {
    if (textbox) {
        var lb = document.getElementById(lbNbCarClientID);

        if (textbox.value.length >= 230) {
            if (lb) {
                lb.style.visibility = 'visible';
                lb.innerHTML = var_Langue_Notes_CARACT_RESTANT1 + (255 - textbox.value.length) + var_Langue_Notes_CARACT_RESTANT2;
            }
        }
    }
}

/************************************************************************
Fonction Ajax utilisé par le projet Controles
*************************************************************************/
function updateProfPrincipal(clientIDClasse, clientIDOutput) {

    var chpsPP;
    var label = document.getElementById(clientIDOutput);
    var classes = $(clientIDClasse).value;
    var tabParam = new Array();
    tabParam = classes.split("-");

    if (tabParam[1] != null && tabParam[0] == 'CLA') {
        chpsPP = FiltreAjax.UpdateProfPrincipal(tabParam[1]).value;
    }

    if (chpsPP != null) {
        label.innerHTML = chpsPP
    }
    else {
        label.innerHTML = "-";
    }
}

/**
* Fonctions utilisées globalement pour afficher puis cacher un indicateur de chargement
* sur postback asynchrone
*/
function RegisterSpinnerOnAsyncDoPostback() {
    if (($('global-async-postback-spinner') != null) && (typeof (Sys) != "undefined")) {
        var __oldDoPostBack = __doPostBack;
        __doPostBack = function(eventTarget, eventArgument) {
            $('global-async-postback-spinner').style.display = "block";
            __oldDoPostBack(eventTarget, eventArgument);
        }

        Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(HideAsyncPostBackSpinner);
    }
}

function HideAsyncPostBackSpinner() {
    if (('global-async-postback-spinner') != null) {
        $('global-async-postback-spinner').hide();
    }
}

function CdtDeletePieceJointe(id) {
    if ($$('input.cdt-delete-attachment-id').size() == 1) {
        hiddenField = $$('input.cdt-delete-attachment-id')[0]

        hiddenField.value = id.toString();
        hiddenField.onchange();
    }
    else {
        alert("Input caché absent !");
    }
}

/**
* Redirection vers les ressources numériques du CNS
*/
function redirectToCns(element) {
    $('cnsForm').submit();
    return (false);
}