var maxDateValue = '31/12/2097';

/**
 * Initialise l'élément d'un select elm ayant la valeur elm
 */
function initSelectValue(elm, value) {
    elm = document.getElementById(elm);
    if (typeof elm.options != 'undefined') {
        for (var i = 0; i < elm.options.length; i++) {
            var opt = elm.options[i];
            if (parseInt(opt.value) == value) {
                opt.selected = true;
                break;
            }
        }
    }
}

function placeFocus() {
    if (document.forms.length > 0) {
        var field = document.forms[0];
        for (var i = 0; i < field.length; i++) {
            if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
                document.forms[0].elements[i].focus();
                break;
            }
        }
    }
}

/*
 * Ferme le dialogue avec la centrale
 */
function closeDialog(cs,cc) {
    var url = 'php/AjaxRequests.php5';
    var params = 'cmd=closeVitwoDialog&cs='+cs+'&cc='+cc;
    setAjaxTimeout(10000);
    new Ajax.Request(url, {
        parameters: params,
        method: 'post',

        onSuccess: function(transport,reponse){ }
    });
}

/**
 * Test l'unicité du code gravure
 */
function controleUniciteCodeGravure(oldCodeGravure) {
    var result = false;
    var url = 'php/AjaxRequests.php5';
    var params = 'cmd=checkUniciteCodeGravure&cb='+$('cb').value+'&codegravure='+$('codegravure').value;
    new Ajax.Request(url, {
        parameters: params,
        method: 'post',
        asynchronous: false,
        onSuccess: function(transport,reponse) {
            result = false;
            if (typeof reponse.ok != 'undefined' && reponse.ok == 'true') {
                if (reponse.doublon=='true') {
                    if(confirm(reponse.msg)) {
                        result=true;
                    } else {
                        $('codegravure').value = oldCodeGravure;
                    }
                } else {
                    result=true;
                }
            }
        }
    });
    return result;
}

/**
 * valide une date selon un format
 */
function ValiDate(obj, format, verifMaxDate){

    var dateBits = DateComponents(obj.value, format);
    if (dateBits == null) return false;
    var day = dateBits[0];
    var month = dateBits[1];
    var year = dateBits[2];

    // check month range
    if ((month < 1 || month > 12) || (day < 1 || day > 31)) {
        return false;
    }
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
    }
    // check for february 29th
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day>29 || (day==29 && !isleap)) {
            return false;
        }
    }
    
    if(typeof verifMaxDate != 'undefined' && verifMaxDate && typeof maxDateValue == 'string' && maxDateValue!='') {
        var maxValues = DateComponents(maxDateValue, format);
        if(maxValues && maxValues.length == 3) {
            var maxYear  = parseInt(maxValues[2], 10);
            var maxMonth = parseInt(maxValues[1], 10);
            var maxDay   = parseInt(maxValues[0], 10);
            
            if(maxYear < year) {
                return false;
            }
            if(maxYear == year) {
                if(maxMonth < month) {
                    return false;
                }
                if(maxMonth == month) {
                    if(maxDay < day) {
                        return false;
                    }
                }
            }
        }
    }
    
    return true;
}

/**
 * décompose une date à prtir d'un format
 */
function DateComponents(dateStr, format) {
    var results = new Array();
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
    var matchArray = dateStr.match(datePat);

    if (matchArray == null) return null;
    // parse date into variables
    if (format.charAt(0)=="d"){ //format=dd/mm
        results[0] = matchArray[1];
        results[1] = matchArray[3];
    } else {
        results[1] = matchArray[1];
        results[0] = matchArray[3];
    }
    results[2] = matchArray[4];
    return results;
}

/**
 * valide la date du champ "b_deb_val"
 */
function verifdatepasse1()
{
    document.forms[0].action="PasseV2.php5";
    if (document.forms[0].b_deb_val != null ) {
        if(!ValiDate( document.forms[0].b_deb_val, "dd/mm/yyyy")) {
            alert(FCTJS_FORMATDATEINCORRECT);
            document.forms[0].b_deb_val.focus();
        }
    }
}

//modif lvt 30/08/05
//indique si date1<date2 au format jj/mm/aaaa
function verifordredate(date1,date2) {

    if (date1 == "") {
        alert(FCTJS_DATEDEBVIDE);
        return false;
    }

    if (date2 == "") {
        alert(FCTJS_DATEFINVIDE);
        return false;
    }
    var e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");

    if (!e.test(date1)) {
        alert(FCTJS_DATEDEBERR);
        return false;
    }
    if (!e.test(date2)) {
        alert(FCTJS_DATEFINERR);
        return false;
    }

    // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
    var jdate1 = parseInt(date1.split("/")[0], 10); // jour
    var mdate1 = parseInt(date1.split("/")[1], 10); // mois
    var adate1 = parseInt(date1.split("/")[2], 10); // année
    var jdate2 = parseInt(date2.split("/")[0], 10); // jour
    var mdate2 = parseInt(date2.split("/")[1], 10); // mois
    var adate2 = parseInt(date2.split("/")[2], 10); // année

    //on compare les années
    if (adate1<adate2){
        return true;
    }else if(adate1>adate2){
        alert(FCTJS_ERRDATEDEBSUPDATEFIN);
        return false;
    }else if(mdate1<mdate2){  //adate1==adate2
        return true;
    }else if(mdate1>mdate2){
        alert(FCTJS_ERRDATEDEBSUPDATEFIN);
        return false;
    }else if(jdate1<=jdate2){  //mdate1==mdate2
        return true;
    }else {
        alert(FCTJS_ERRDATEDEBSUPDATEFIN);
        return false;
    }
}

/**
 * valide la date du champ "b_fin_val"
 */
function verifdatepasse2() {

    document.forms[0].action="PasseV2.php5";
    if (document.forms[0].b_fin_val != null) {
        if (!ValiDate( document.forms[0].b_fin_val, "dd/mm/yyyy")) {
            alert (FCTJS_FORMATDATEINCORRECT);
            document.forms[0].b_fin_val.focus();
        }
    }
}


// Compare two options within a list by VALUES
function compareOptionValues(a, b) {
    // Radix 10: for numeric values
    // Radix 36: for alphanumeric values
    var sA = parseInt( a.value, 36 );
    var sB = parseInt( b.value, 36 );
    return sA - sB;
}



// Compare two options within a list by TEXT
function compareOptionText(a, b) {
    // Radix 10: for numeric values
    // Radix 36: for alphanumeric values
    var sA = parseInt( a.text, 36 );
    var sB = parseInt( b.text, 36 );
    return sA - sB;
}


// Dual list move function
function moveDualList( srcList, destList, moveAll ) {

    // Do nothing if nothing is selected
    if (( srcList.selectedIndex == -1 ) && ( moveAll == false )) {
        return false;
    }

    var newDestList = new Array( destList.options.length );
    var len = 0;

    for( len = 0; len < destList.options.length; len++ ) {

        if ( destList.options[ len ] != null ) {
            newDestList[len] = new Option( destList.options[len].text, destList.options[len].value, destList.options[len].defaultSelected, destList.options[len].selected );
        }
    }

    for( var i = 0; i < srcList.options.length; i++ ) {

        // Statements to perform if option is selected
        if ( srcList.options[i] != null && ( srcList.options[i].selected == true || moveAll ) ) {

            // Incorporate into new list
            newDestList[ len ] = new Option( srcList.options[i].text, srcList.options[i].value, srcList.options[i].defaultSelected, srcList.options[i].selected );
            len++;
        }
    }

    // Sort out the new destination list
    newDestList.sort( compareOptionValues );   // BY VALUES
    //newDestList.sort( compareOptionText );   // BY TEXT

    // Populate the destination with the items from the new array
    for ( var j = 0; j < newDestList.length; j++ ) {
        if ( newDestList[ j ] != null ) {
            destList.options[ j ] = newDestList[ j ];
        }
    }

    // Erase source list selected elements
    for( var i = srcList.options.length - 1; i >= 0; i-- ) {
        if ( srcList.options[i] != null && ( srcList.options[i].selected == true || moveAll ) ) {
            // Erase Source
            //srcList.options[i].value = "";
            //srcList.options[i].text  = "";
            srcList.options[i]       = null;
        }
    }
} // End of moveDualList()
//  End -->


function selectall() {
    if(document.forms[0].inpost.value != '-1' ) {
        for(var i=0;i<document.forms[0].listRight.options.length;i++) {
            document.forms[0].listRight.options[i].selected=true;
        }
    }
}

function veriflistesite() {
    if(document.forms[0].listRight.selectedIndex == '-1' ) {
        alert(FCTJS_SELECTONESITE);
        return false;
    } else {
        return true;
    }
}


/**
 * Validation de la page sitesD.php5
 */
function submitmodif3() {
    document.forms[0].action="validationSite.php5";
    document.forms[0].submit();
}


/**
 * vérifie et sélectionne les listes autorisés.
 */
function VerifCreerUser() {

    //invité et utilisateur
    if(document.forms[0].droits[3].checked || document.forms[0].droits[2].checked || document.forms[0].droits[1].checked) {
        selectall();
        document.forms[0].inpost.value = document.forms[0].listRight.selectedIndex;
        document.forms[0].listRight.name='listRight[]';
        if (veriflistesite()==false) return false;
        return true;

    //Administrateur
    } else if(document.forms[0].droits[0].checked) {
        return true;

    } else {
        return false;
    }
}

/**
 * Fonction pour compatibilité avec le framework
 */
function gettext(code) {
    if (typeof window[code] != 'undefined') {
        return window[code];
    }
    
    return '** '+code;
}

function verifModifUser() {

    if(document.forms[0].droits[1].checked || document.forms[0].droits[2].checked || document.forms[0].droits[3].checked) {
        for(var i=0;i<document.forms[0].listRight.options.length;i++)
        {
            document.forms[0].listRight.options[i].selected=true;
        }
        if (veriflistesite()==false) return false;
        document.forms[0].listRight.name='listRight[]';
        return true;
    } else if(document.forms[0].droits[0].checked) {
        return true;
    }
    return false;
}


function FormatStr(Num,nbcar) {
    var res = Num.toString();
    var lg = res.length;
    for(var i=lg+1; i<=nbcar; i++) {
        res = '0' + res;
    }
    return res;
}

function Calcul_Code_Combine(Combine,TypePlatine)
{
    if (TypePlatine == 0)
    {
        if(document.forms[0].formatage!=undefined)
            document.forms[0].formatage.value="%03d";
        NbFormat = 3;
    }
    else
    {
        if(document.forms[0].formatage!=undefined)
            document.forms[0].formatage.value="%04d";
        NbFormat = 4;
    }
    strCombine = Combine.toString();
    if (strCombine.length < 3)
    {
        switch(TypePlatine)
        {
            case 0 :
                if (Combine > 640)
                    strCombine = 'INVALIDE';
                else
                    strCombine = FormatStr(Combine+1,NbFormat);
                break;
            case 1 :
                if (Combine < 16)
                    strCombine = '00' + FormatStr(Combine+1,2);
                else
                    strCombine = '0101';
                break;
            case 2 :
                if (Combine < 4)
                    strCombine = '00' + FormatStr(Combine+1,2);
                else
                    strCombine = '0101';
                break;
            default :
                break;
        }
    }
    else
    {
        strCombine = FormatStr(Combine,4);
        l_CodeCombine = parseInt(strCombine.slice(2,4),10) ;
        switch(TypePlatine)
        {
            case 0 :
                if (Combine > 640)
                    strCombine = 'INVALIDE';
                else
                    strCombine = FormatStr(Combine+1,NbFormat);
                break;
            case 1 :
                if (l_CodeCombine < 16)
                {
                    if (parseInt(strCombine.slice(0,2),10) < 32)
                        strCombine = strCombine.slice(0,2) + FormatStr(l_CodeCombine+1,2);
                    else
                        strCombine = 'INVALIDE' ;
                }
                else
                {
                    if (parseInt(strCombine.slice(0,2),10)+1 < 32)
                        strCombine = FormatStr(parseInt(strCombine.slice(0,2),10)+1,2) + '01';
                    else
                        strCombine = 'INVALIDE' ;
                }
                break;
            case 2 :
                if (l_CodeCombine < 4)
                {
                    if (parseInt(strCombine.slice(0,2),10) < 64)
                        strCombine = strCombine.slice(0,2) + FormatStr(l_CodeCombine+1,2);
                    else
                        strCombine = 'INVALIDE' ;
                }
                else
                {
                    if (parseInt(strCombine.slice(0,2),10)+1 < 64)
                        strCombine = FormatStr(parseInt(strCombine.slice(0,2),10)+1,2) + '01';
                    else
                        strCombine = 'INVALIDE';
                }
                break;
            default :
                break;
        }
    }
    return strCombine;
}


function getkey(e)
{
    if (window.event)
        return window.event.keyCode;
    else if (e)
        return e.which;
    else
        return null;
}

function popup(page, width, height) {

    if(!width) {
        width='520';
    }
    if(!height) {
        height='260';
    }
    // ouvre une fenetre sans barre d'etat, ni d'ascenceur
    window.open(page,'popup','width='+width+',height='+height+',toolbar=false,scrollbars=false,left='+((screen.width-400)/2)+',top='+((screen.height-200)/2));
}

////////////////////////////////////////////////////
// fonctions standard chaînes de caractères alex
////////////////////////////////////////////////////
function trim(s) {
    if(s.length>0) {
        while(s.charAt(0)==" ") {
            s=s.substring(1);
        }
        while(s.charAt(s.length-1)==" ") {
            s=s.substr(0,s.length-1);
        }
    }
    return s;
}

function decalDroite(id_texte,longueur)
{
    tmpTxt = document.getElementById(id_texte);
    tmpTxt.value = trim(tmpTxt.value);
    tmpTxt.style.textAlign = 'right';
}

function decalGauche(id_texte,longueur)
{
    tmpTxt = document.getElementById(id_texte);
    tmpTxt.value = trim(tmpTxt.value);
    tmpTxt.style.textAlign = 'left';
}

function decalCentre(id_texte,longueur)
{
    tmpTxt = document.getElementById(id_texte);
    tmpTxt.value = trim(tmpTxt.value);
    tmpTxt.style.textAlign = 'center';
}

function Autotab(box, longueur, texte)
{
    toucheOk = (window.event.keyCode < 37) || (window.event.keyCode > 40);
    if (texte.length == longueur && toucheOk) {
        document.getElementById('L'+box).focus();
    }
}

function entreeEntier(event)
{
    // Compatibilité IE / Firefox
    if(!event&&window.event) {
        event=window.event;
    }

    // IE
    if(event.keyCode < 48 || event.keyCode > 57) {
        event.returnValue = false;
        event.cancelBubble = true;
    }

    // DOM
    if (typeof event.preventDefault != 'undefined' && typeof event.stopPropagation != 'undefined') {
        if(event.keyCode < 48 || event.keyCode > 57) {
            event.preventDefault();
            event.stopPropagation();
        }
    }
}

/**
 * Limite les caractère saisie à ceux vérifiant l'expression limite
 *
 * ex : entreeLimite(event, /[0-9A-Z]/) pour les caractère 0 à 9 et A à Z en majuscule
 */
function entreeLimite(event, limit) {

    // Compatibilité IE et FireFox
    if(!event && window.event) {
        event=window.event;
        var keyPressCode = event.keyCode;

    } else if(event.keyCode>0) {
        var keyPressCode = event.keyCode;
        var navigateur = navigator.appName;

        // Vérifie si le navigateur est firefox
        if(navigateur.indexOf("Firefox",0)!==-1){
            // évite les flèches et del
            if(keyPressCode==8 || keyPressCode==9 || keyPressCode==37 || keyPressCode==39)
                return true;
        }

    } else if(event.charCode) {
        var keyPressCode = event.charCode;
    }

    if (typeof limit == 'undefined')
        limit = /.*/;

    var charIn = String.fromCharCode(keyPressCode);
    if (!charIn.match(limit)) {
        // IE
        event.returnValue = false;
        event.cancelBubble = true;

        // DOM
        if (typeof event.preventDefault != 'undefined')
            event.preventDefault();
        if (typeof event.stopPropagation != 'undefined')
            event.stopPropagation();
    }
}

function entreeCode(event) {

    // Compatibilité IE / Firefox
    if(!event&&window.event){
        event=window.event;
    }

    if(event.keyCode>=97 && event.keyCode<=102) {
        event.keyCode = event.keyCode-32;
    }

    entreeLimite(event, /[0-9A-F]/);
}

function entreeMsgLigne(event)
{
    entreeLimite(event, /[a-zA-Z0-9_ .-]/);
}

function entreeAdresseIP(event)
{
    entreeLimite(event, /[0-9.]/);
}

function VerifAdresseIP(edtIP)
{
    var adrIP = edtIP.value;
    if(adrIP.length>0) {
        var tabIP = adrIP.split(".");
        if(tabIP.length!=4) {
            alert(FUNCJS_ADRIPFORME);
            edtIP.focus();
            return false;
        }
        for(var i=0; i<tabIP.length; i++) {
            if(tabIP[i]=="") {
                tabIP[i] = 0;
            }
            if(tabIP[i]>255) {
                alert(FUNCJS_ADRIPVALEUR);
                edtIP.focus();
                return false;
            }
        }
        edtIP.value = tabIP.join('.');
    }
    return true;
}

function verifNomDomaine(edtDNS)
{
    if(edtDNS.value.length>0) {
        if(!edtDNS.value.match(/^[0-9A-Za-z.-]+\.[a-z]{2,4}$/)) {
            alert(FUNCSJS_ADRDNSVALEUR);
            edtDNS.focus();
            return false;
        }
    }
    return true;
}

function VerifEntreeLimite(entree, limit) {
    if (typeof limit == 'undefined')
        limit = /.*/;

    for(var i=0; i<entree.length; i++)
    {
        var charIn = entree.charAt(i);
        if (!charIn.match(limit))
            return false;
    }
    return true;
}

////////////////////////////////////////////////////
// Fonctions Graphique             alex
////////////////////////////////////////////////////

// barre d'attente
function BarreAttente() {

    if(ind > 10)
    {
        ind = 1;
        if(fermeFenetre == 1) {
            window.close();
        }
    }
    if(bloc = document.getElementById("td"+ind)) {
        bloc.bgColor = '#3B4E77';
    }
    switch(ind) {
        case 1:
            if(bloc = document.getElementById("td8")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 2:
            if(bloc = document.getElementById("td9")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 3:
            if(bloc = document.getElementById("td10")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 4:
            if(bloc = document.getElementById("td1")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 5:
            if(bloc = document.getElementById("td2")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 6:
            if(bloc = document.getElementById("td3")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 7:
            if(bloc = document.getElementById("td4")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 8:
            if(bloc = document.getElementById("td5")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 9:
            if(bloc = document.getElementById("td6")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
        case 10:
            if(bloc = document.getElementById("td7")) {
                bloc.bgColor = '#9EBFE8';
            }
            break;
    }
    ind = parseInt(ind) + 1;
}

function BarreProgression(min,pos,max,nbPlots)
{
    if(parseInt(min)=='NaN' || parseInt(pos)=='NaN' || parseInt(max)=='NaN' || parseInt(nbPlots)=='NaN') {
        return false;
    }
    if((pos<min) || (pos>max) || (min==max)) {
        return false;
    }
    var Bpos = parseInt(((pos-min)*nbPlots)/(max-min));
    alert('1 _ position ='+Bpos);
    for(var i=1; i<=Bpos; i++)
    {
        if(bloc = document.getElementById("td"+i)) {
            alert('2 _ position ='+Bpos);
            bloc.bgColor = '#3B4E77';
        }
    }
}


function callInProgress (xmlhttp) {
    switch (xmlhttp.readyState) {
        case 1: case 2: case 3:
            return true;
            break;
        // Case 4 and 0
        default:
            return false;
            break;
    }
}

/**
 * Initialise un timeout sur l'objet Ajax
 * Attention la fonction a une portée globale
 */
function setAjaxTimeout(timems) {
    if (typeof timems == 'undefined')
        timems = 5000; //5 seconds

    if (typeof Ajax != 'undefined' && typeof Ajax.Responders!= 'undefined')
        Ajax.Responders.register({
            onCreate: function(request) {
                request['timeoutId'] = window.setTimeout(
                    function() {
                        // If we have hit the timeout and the AJAX request is active, abort it and let the user know
                        if (callInProgress(request.transport)) {
                            request.transport.abort();

                            // Run the onFailure method if we set one up when creating the AJAX object
                            if (request.options['onFailure']) {
                                request.options['onFailure'](request.transport, request.json);
                            }
                        }
                    },
                    timems // seconds
                    );
            },
            onComplete: function(request) {
                // Clear the timeout, the request completed ok
                window.clearTimeout(request['timeoutId']);
            }
        });
}

/**
 * Disable all buttons on windows
 */
function disableAllButtons() {
    var buttons = $$('input[type="button"]');
    for(var i=0; i<buttons.length; i++) {
        if (!Element.hasClassName(buttons[i], 'noDisable'))
            buttons[i].disabled = true;
    }
}

/**
 * Enable al lbuttons on window
 */
function enableAllButtons() {
    var buttons = $$('input[type="button"]');
    for(var i=0; i<buttons.length; i++) {
        buttons[i].disabled = false;
    }
}

/**
 * cancel global
 */
function Cancel() {
    document.forms[0].reset();
    if($('nouv') && $('nouv').value==1) {
        if (parent && parent.Up && parent.Up.previousPage) {
            window.location = parent.Up.previousPage.replace(/&DoEncode=1/,"").replace(/&estEncode=1/,"");
        }
        else {
            window.history.back();
        }
    }
    else {
        if(window.location.href.search(/DoEncode=1/)!=-1) {
            window.location = window.location.href.replace(/&DoEncode=1/,"");
        }
        else {
            if(window.location.href.search(/estEncode=1/)!=-1) {
                window.location = window.location.href.replace(/&estEncode=1/,"");
            }
            else {
                setTimeout(function(){
                    window.location.reload();
                },100);
            }
        }
    }
}


function entreeDate(event,edt_entree)
{
    // Compatibilité IE / Firefox
    if(!event&&window.event)
        event=window.event;

    if(event.keyCode < 47 || event.keyCode > 57) {
        // IE
        event.returnValue = false;
        event.cancelBubble = true;
        // DOM
        if (typeof event.preventDefault != 'undefined')
            event.preventDefault();
        if (typeof event.stopPropagation != 'undefined')
            event.stopPropagation();
    }

    if((edt_entree.value.length!=2||edt_entree.value.length!=5) && event.keyCode == 47)
    {
        // IE
        event.returnValue = false;
        event.cancelBubble = true;
        // DOM
        if (typeof event.preventDefault != 'undefined')
            event.preventDefault();
        if (typeof event.stopPropagation != 'undefined')
            event.stopPropagation();
    }
    if((edt_entree.value.length==2||edt_entree.value.length==5) && event.keyCode < 58)
    {
        edt_entree.value = edt_entree.value+'/';
    }
}

function progressBar(item, max, msg) {
    if (typeof msg == 'undefined') {
        msg = '';
    }

    var div = $('_progressBar');
    if (!div) {
        div = document.createElement('div');
        document.body.appendChild(div);
        div.id = '_progressBar';
        div.style.width = "200px";
        div.style.height= "30px";
        div.style.zIndex= 99;

        var divtxt = document.createElement('div');
        div.appendChild(divtxt);
        divtxt.id = div.id+'_txt';
        divtxt.style.textAlign = "center";
        divtxt.style.zIndex = 10;
        divtxt.style.height = "50%";
        divtxt.style.color = "black";
        divtxt.style.fontWeight = "bold";
        divtxt.innerHTML = msg;

        var divpbx = document.createElement('div');
        div.appendChild(divpbx);
        divpbx.style.zIndex = 10;
        divpbx.style.height = "50%";
        divpbx.style.padding = "2px";
        divpbx.style.backgroundColor = "white";
        divpbx.style.border="1px solid black";

        var divpb = document.createElement('div');
        divpbx.appendChild(divpb);
        divpb.id = div.id+'_pb';
        divpb.style.cssFloat = "left";
        divpb.style.zIndex = 1;
        divpb.style.height = "100%";
        divpb.style.backgroundColor = "blue";

    }
    $('_progressBar_pb').style.width = Math.round((item/max)*100)+"%";
    $('_progressBar_txt').innerHTML = msg+$('_progressBar_pb').style.width;

    div.style.display = (max>0) ? '' : 'none';
    centerToScreen(div);
}

function loadToolip(){
    try{
        //mise à jour des tooltip
        $$(".help").each( function(element) {
            if(element.title=='') {
                return false;
            }
            if(element.readAttribute('attachHelp')) {
                new Tooltip(element, {
                    backgroundColor: "#FC9",
                    borderColor: "#C96",
                    textColor: "#000",
                    opacity: .95
                });
            } else {
                var saveTitle=element.title;
                element.title='';
                //creation de la petite icone en bas à droite
                //pour les div geré differemment car ie marche pas....
                if(element.tagName!="DIV"){
                    var cont = new Element('div', {
                        'style': 'position: relative;'
                    });
                    element.parentNode.replaceChild(cont, element);
                    cont.appendChild(element);
                    var icon = new Element('img', {
                        'src':  getRootUrl()+'images/help.png',
                        'title':saveTitle,
                        'height':'22',
                        'width':'22'
                    });
                    new Tooltip(icon, {
                        backgroundColor: "#FC9",
                        borderColor: "#C96",
                        textColor: "#000",
                        opacity: .95
                    });
                    Element.setStyle(icon, {
                        'position': 'absolute',
                        'right':'-5px',
                        'bottom': '-5px',
                        'z-index':'50'
                    });
                    cont.appendChild(icon);
                }else{
                    Element.setStyle(element, {
                        'position': 'relative'
                    });
                    var icon = new Element('img', {
                        'src':  getRootUrl()+'images/help.png',
                        'title':saveTitle,
                        'height':'22',
                        'width':'22'
                    });
                    new Tooltip(icon, {
                        backgroundColor: "#FC9",
                        borderColor: "#C96",
                        textColor: "#000",
                        opacity: .95
                    });
                    Element.setStyle(icon, {
                        'position': 'absolute',
                        'right':'-5px',
                        'bottom': '-5px',
                        'z-index':'50'
                    });
                    element.appendChild(icon);
                }
            }
        });
    }catch(e){
        alert(e.message);
    }
}

function datePC() {
    var d = new Date();
    var H = d.getHours().toString(10);
    if(H.length==1) {
        H = '0'+H;
    }
    var M = d.getMinutes().toString(10);
    if(M.length==1) {
        M = '0'+M;
    }
    var date=d.getDate();
    if(date.length==2) {
        date='0'+date;
    }
    var month=(d.getMonth()+1);
    if(month.length==2) {
        month='0'+month;
    }
    return d.getFullYear()+'-'+month+'-'+date+' '+H+':'+M;
}

if (typeof Event != 'undefined' && typeof parent != 'undefined' && parent.Up) {
    //alert(window.location.href+"\n"+parent.Up.currentPage+"\n"+parent.Up.previousPage);
    if (parent.Up.currentPage && parent.Up.currentPage!=window.location.href) {
        parent.Up.previousPage = parent.Up.currentPage;
    }
    parent.Up.currentPage = window.location.href;
}

function setDialogOptions(opts) {
    var createButton = function (oData) {
        var oButton = $(document.createElement("button"));
        oButton.appendChild(document.createTextNode(oData.label));
        oButton.observe("click", function (e) {
            e.preventDefault();
            (oData.action || Prototype.emptyFunction)();
        });

        return oButton;
    }

    var options = Object.extend({
        "title": "Title",
        "buttons": []
    }, opts || {});

    var oDialogDiv = $("divShowOverlay");
    var oTitle     = oDialogDiv.select(".dialogTitle")[0];
    var oButtons   = oDialogDiv.select(".buttonsContainer")[0];

    // Supprime les boutons présents
    while (oButtons.firstChild) {
        Element.remove(oButtons.firstChild);
    }

    oTitle.update(options.title);
    oTitle.show();

    // Travaillons comme des porcs...
    if (Prototype.Browser.IE7) {
        var x = '<table><tr>';
        var i = 0, m = options.buttons.length;
        for (; i < m; i++) {
            if (m > 1 && i == 0) {
                x += '<td class="first-child">';
            }
            else if (m > 1 && i == m - 1) {
                x += '<td class="last-child">';
            }
            else {
                x += '<td>';
            }
            x += '</td>';
        }
        x += '</tr></table>';

        oButtons.innerHTML = x;
        oButtons.show();
        var aCells = oButtons.select("td");
        options.buttons.each(function (oData, i) {
            var oButton = createButton(oData);
            aCells[i].appendChild(oButton);
        });
    }
    else {
        var oTable = document.createElement("table");
        oButtons.appendChild(oTable);
        var oRow = document.createElement("tr");
        oTable.appendChild(oRow);
        options.buttons.each(function (oData) {
            var oCell = document.createElement("td");
            oCell.appendChild(createButton(oData));
            oRow.appendChild(oCell);
        });

        if (oRow.childNodes.length > 1) {
            oRow.firstChild.className = "first-child";
            oRow.lastChild.className  = "last-child";
        }
    }

    oButtons.show();
}

function showOverlay(url, width, height, opts) {
    modalBackground(true);
    if (!width) {
        width = "520";
    }
    if (!height) {
        height = "200";
    }

    var options = {};
    Object.extend(options, opts || {});

    // création de l'objet DOM
    var oDialogDiv = $("divShowOverlay");
    if (!oDialogDiv) {
        oDialogDiv = document.createElement("div");
        oDialogDiv.setAttribute("id", "divShowOverlay");
        oDialogDiv.style.display = "none";
        document.body.appendChild(oDialogDiv);

        var oTitle = document.createElement("div");
        oTitle.className = "dialogTitle";
        oTitle.style.display = "none";
        oDialogDiv.appendChild(oTitle);

        var oButtons = document.createElement("div");
        oButtons.className = "buttonsContainer";
        oButtons.style.display = "none";
        oDialogDiv.appendChild(oButtons);
    }

    oDialogDiv.style.width = width + 'px';
    oDialogDiv.style.height = height + 'px';
    if (options["className"]) {
        oDialogDiv.className = options.className;
    }
    else {
        oDialogDiv.removeAttribute("class");
    }
    centerToScreen(oDialogDiv);

    // Chargement du contenu dans une iframe
    if (options["iframe"]) {
        var oFrame = $("dialogFrame");
        if (oFrame) {
            // retire l'élément de la page (et supprime les événements)
            oFrame.parentNode.removeChild(oFrame);
        }
        else {
            oFrame = document.createElement("iframe");
            oFrame.setAttribute("id", "dialogFrame");
            oFrame.setAttribute("frameBorder", "0"); // spécifique à IE
        }

        oFrame.setAttribute("src", url);

        if (options.onSuccess) {
            if (oFrame.attachEvent) {
                oFrame.attachEvent("onload", options.onSuccess);
            }
            else {
                oFrame.addEventListener("load", options.onSuccess);
            }
        }

        oDialogDiv.appendChild(oFrame);
    }
    // chargement du contenu en AJAX
    else {
        new Ajax.Updater(oDialogDiv, url, options);
    }

    oDialogDiv.style.display = '';
}

function closeOverlay(){
    var oDialogDiv = $("divShowOverlay");
    if (oDialogDiv) {
        oDialogDiv.remove();
        modalBackground(false);
    }
}

function getRootUrl() {
    var e = new RegExp("php");
    if (/[\/\\]php[\/\\]/i.test(window.location.pathname)) {
        return '../';
    }
    return '';
}

/**
 * Affiche une chaîne de caractères comme la suite du code hexa de chacun de ses
 * caractères/
 *
 * @param  sString string
 * @param  bPretty boolean
 * @return string
 */
function hexString(sString, bPretty) {
    bPretty = !!bPretty;

    var a = [];
    var i = 0, m = sString.length;
    var sPrefix = bPretty ? "0x" : "";
    var sGlue   = bPretty ? ", " : "";
    for (; i < m; i++) {
        a.push(sPrefix + (sString.charCodeAt(i) & 0xFF).toString(16));
    }

    return a.join(sGlue);
}

/**
 * Retourne la valeur d'un entier comme s'il était codé sur le nombre
 * d'octets donné par iSize
 */
function recodeInteger(iValue, iSize) {
    if (undefined == iSize) {
        iSize = 1;
    }

    var iLength = Math.pow(2, iSize * 8);
    iValue = iValue % iLength;

    if (iValue < 0) {
        iValue += iLength;
    }

    return iValue;
}
