/*
 * layout.js
 *
 * Fonctions pour mise en page
 *
 * @(#) $Id: layout.js,v 1.6 2009/06/05 17:16:06 dcantau Exp $
 *
 */

var fen1,fen2,fen3,fen4,fen5,fen6,fen7,fen8,fen9,fen10,fen11,fen12;
function fenetres_au_dessus(){
if ((window.fen0) && (!fen0.closed)) fen0.focus();
if ((window.fen1) && (!fen1.closed)) fen1.focus();
if ((window.fen2) && (!fen2.closed)) fen2.focus();
if ((window.fen3) && (!fen3.closed)) fen3.focus();
if ((window.fen4) && (!fen4.closed)) fen4.focus();
if ((window.fen5) && (!fen5.closed)) fen5.focus();
if ((window.fen6) && (!fen6.closed)) fen6.focus();
if ((window.fen7) && (!fen7.closed)) fen7.focus();
if ((window.fen8) && (!fen8.closed)) fen8.focus();
if ((window.fen9) && (!fen9.closed)) fen9.focus();
if ((window.fen10) && (!fen10.closed)) fen10.focus();
if ((window.fen11) && (!fen11.closed)) fen11.focus();
if ((window.fen12) && (!fen12.closed)) fen12.focus();
}
function fermer_les_fenetres(){
if ((window.fen0) && (!fen0.closed)) fen0.close();
if ((window.fen1) && (!fen1.closed)) fen1.close();
if ((window.fen2) && (!fen2.closed)) fen2.close();
if ((window.fen3) && (!fen3.closed)) fen3.close();
if ((window.fen4) && (!fen4.closed)) fen4.close();
if ((window.fen5) && (!fen5.closed)) fen5.close();
if ((window.fen6) && (!fen6.closed)) fen6.close();
if ((window.fen7) && (!fen7.closed)) fen7.close();
if ((window.fen8) && (!fen8.closed)) fen8.close();
if ((window.fen9) && (!fen9.closed)) fen9.close();
if ((window.fen10) && (!fen10.closed)) fen10.close();
if ((window.fen11) && (!fen11.closed)) fen11.close();
if ((window.fen12) && (!fen12.closed)) fen12.close();
}

// fonctions php -> javascript

function if_then_else(condition, val_true, val_false)
{
    if (condition) return val_true; else return val_false;
}

// somme
function sum(val1, val2)
{
    val1 = val1 + "";
    val2 = val2 + "";
    // remplacer la virgule par le point
    if (val1.indexOf(",") >= 0)
        val1 = value.replace(",", ".");
    if (val1.indexOf(" ") >= 0)
        val1 = value.replace(" ", "");
    if (val2.indexOf(",") >= 0)
        val2 = value.replace(",", ".");
    if (val2.indexOf(" ") >= 0)
        val2 = value.replace(" ", "");
    // convertir en décimal
    val1 = parseFloat(val1);
    if (val1 == NaN) val1 = 0;
    val2 = parseFloat(val2);
    if (val2 == NaN) val2 = 0;
    // somme
    var val3 = val1 + val2;
    // convertir la somme en chaine
    val3 = val3 + "";
    // remplacer le point par une virgule
    val3 = val3.replace(".", ",");
    return val3;
}

// arrondi avec reformatage
// affichage systematique de 2 decimals sauf
// si Ne_pas_Forcer_zero vaut 1
function round(number, X, Ne_pas_Forcer_zero)
{
    number = number + "";
    if (number.indexOf(",") >= 0)
        number = number.replace(",", ".");
    if (number.indexOf(" ") >= 0)
        number = number.replace(" ", "");
    if (number.indexOf("%2C") >= 0)
        number = number.replace("%2C", ".");
    number = parseFloat(number);
    if (number == NaN) number = 0;
    X = (!X ? 2 : X);
    var Y = Math.round(number * Math.pow(10, X)) / Math.pow(10, X);
    Y = Y + "";
    Y = Y.replace(".", ",");
    // deux chiffres après la virgule
    if (Y.indexOf(",") > 0) {
        var p = Y.indexOf(",");
        var s = Y.substring(p+1);
        if (s.length < 2)
            Y = Y +"0";
    }
    else {
        if ( Ne_pas_Forcer_zero) return Y;
        Y = Y +",00";
    }
    return Y;
}

// arrondi standard sans reformatage (pour calcul)
// ne pas remplacer le point par une virgule
function round_dec(number, X)
{
    number = number + "";
    if (number.indexOf(",") >= 0)
        number = number.replace(",", ".");
    if (number.indexOf(" ") >= 0)
        number = number.replace(" ", "");
    if (number.indexOf("%2C") >= 0)
        number = number.replace("%2C", ".");
    number = parseFloat(number);
    if (number == NaN) number = 0;
    X = (!X ? 2 : X);
    Y = Math.round(number * Math.pow(10, X)) / Math.pow(10, X);
    return Y;
}


function ereg(pattern, str)
{
    var reg = new RegExp(pattern);
    if (reg.test(str)) return true;
    if (reg.test(unescape(str))) return true;
    return false;
}

// fonctions utilitaires

function function_exists(function_name)
{
    var f;
    try {
        eval('f='+function_name);
        if (typeof(f)=="function") {
            return true;
        }
    }
    catch (ex) {
        return false;
    }
    return false;
}

function id2element(id) {
    if (document.getElementById)
        return document.getElementById(id);
    if (document.all)
        return eval("document.all." + id);
    return null;
}

function getSafeFicheValue(value)
{
    if (!value) return value;

    // valeur décimale avec , au lieu de .
    var value2 = value + "";
    if (value2.indexOf(",") >= 0)
        value2 = value2.replace(",", ".");
    if (value2.indexOf(" ") >= 0)
        value2 = value2.replace(" ", "");
    if (value2.indexOf("%2C") >= 0)
        value2 = value2.replace("%2C", ".");
    // valeur décimale avec un espace
    if (value2.indexOf("%20") >= 0)
        value2 = value2.replace("%20", "");
    // est-ce un nombre ?
    if (isNaN(value2) == false) return parseFloat(value2);
    return value;
}

function getFicheValue(field_name, form_name)
{
    var obj = id2element("lib_"+field_name);
    if (obj) return getSafeFicheValue(obj.innerHTML);
    if (form_name > '')
         var fiche = eval("document."+form_name+"."+field_name);
    else var fiche = eval("document.form_validation."+field_name);
    if (!fiche) return null;
    if (!fiche.value && !fiche.type) {
        for(var i = 0; i < fiche.length; i++) {
            if (fiche[i].checked) return fiche[i].value;
        }
    }
    else {
        if (fiche.type=='checkbox') {
            if (fiche.checked) return fiche.value;
            return null;
        }
        return getSafeFicheValue(fiche.value);
    }
    return null;
}

function setFicheValue(form_name, field_name, value)
{
    var obj = id2element("lib_"+field_name);
    if (obj) obj.innerHTML = value;

    var fiche = eval("document."+form_name+"."+field_name);
    if (!fiche) return;
    if (!fiche.value && !fiche.type) {
        for(var i = 0; i < fiche.length; i++) {
            fiche[i].checked = (fiche[i].value == value);
        }
    }
    else {
        if (fiche.type=='checkbox') {
            fiche.checked = (fiche.value == value);
        }
        else
            fiche.value = value;
    }
}

function set_label_button(button_id, label)
{
    var button = id2element(button_id);
    if (button) button.value = label;
}

function set_label_field(label_id, txt)
{
    var label = id2element('lbl_'+label_id);
    if (label) label.innerHTML = txt;
    return true;
}

function set_visible_button(button_id, flag)
{
    var button = id2element(button_id);
    if (!button) return;
    if (flag) {
        button.style.display = "";
    } else {
        button.style.display = "none";
    }
}

// fonctions pour mettre à jour le layout

function display_fiche(fname, style)
{
    // cellules a,b,c,d
    var a = id2element('div_'+fname+'a');
    var b = id2element('div_'+fname+'b');
    var c = id2element('div_'+fname+'c');
    var d = id2element('div_'+fname+'d');
    if (a) a.style.display = style;
    if (b) b.style.display = style;
    if (c) c.style.display = style;
    if (d) d.style.display = style;

    // décorations e,f,g,h,i,j
    var e = id2element('div_'+fname+'e');
    if (e) {
        e.style.display = style;
        var f = id2element('div_'+fname+'f');
        if (f) {
            f.style.display = style;
            var g = id2element('div_'+fname+'g');
            if (g) {
                g.style.display = style;
                var h = id2element('div_'+fname+'h');
                if (h) {
                    h.style.display = style;
                    var i = id2element('div_'+fname+'i');
                    if (i) {
                        i.style.display = style;
                        var j = id2element('div_'+fname+'j');
                        if (j) {
                            j.style.display = style;
                        }
                    }
                }
            }
        }
    }

    // maj du groupe
    if (function_exists('show_'+fname))
        eval('show_'+fname+'()');
}

function visible_fiche(fname)
{
    var a = id2element('div_'+fname+'a');
    if (!a) return false;
    return (a.style.display == "");
}

function set_visible_fiche(fname, flag)
{
    if (flag) {
        display_fiche(fname, "");
    } else {
        display_fiche(fname, "none");
    }
}

function show_groupe(t,p)
{
    if (!p) p = "";
    var id = 'div_'+p+'fiche_'+t[0]+'a';
    var cond = (id2element(id).style.display == "none");
    for(var i = 1; i < t.length; i++) {
        id = 'div_'+p+'fiche_'+t[i]+'a';
        if (id2element(id))
            cond = (cond && (id2element(id).style.display == "none"));
    }
    for(var i = 0; i < t.length; i++) {
        id = 'div_'+p+'groupe_'+t[0]+ String.fromCharCode(97 + i)
        if (id2element(id))
            id2element(id).style.display = (cond == true) ? "none" : "";
    }
}

// redimensionnement auto des popups

function getRefToDivMod( divID, oDoc ) {
    if( !oDoc ) { oDoc = document; }
    if( document.layers ) {
        if( oDoc.layers[divID] ) { return oDoc.layers[divID]; } else {
            for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) {
                y = getRefToDivNest(divID,oDoc.layers[x].document); }
            return y; } }
    if( document.getElementById ) { return oDoc.getElementById(divID); }
    if( document.all ) { return oDoc.all[divID]; }
    return document[divID];
}

function autoResize() {
    var idOfDiv = "myPopupID";
    var oH = getRefToDivMod( idOfDiv ); if( !oH ) { return false; }
    var oW = oH.clip ? oH.clip.width : oH.offsetWidth;
    var oH = oH.clip ? oH.clip.height : oH.offsetHeight; if( !oH ) { return false; }
    var x = window;
    x.resizeTo( oW + 200, oH + 200 );
    var myW = 0, myH = 0, d = x.document.documentElement, b = x.document.body;
    if( x.innerWidth ) { myW = x.innerWidth; myH = x.innerHeight; }
    else if( d && d.clientWidth ) { myW = d.clientWidth; myH = d.clientHeight; }
    else if( b && b.clientWidth ) { myW = b.clientWidth; myH = b.clientHeight; }
    if( window.opera && !document.childNodes ) { myW += 16; }
    var scH = screen.availHeight ? screen.availHeight : screen.height;
    var w = 1 + oW + ( ( oW + 200 ) - myW );
    var h = oH + ( (oH + 200 ) - myH );
    if (scH > h) { x.resizeTo(w , h); }
    else {
        if (!document.all  || window.opera) w += 16;
        x.resizeTo(w, scH - 200);
    }
    return true;
}

function openPerfectPopup(oW,oTitle,oContent) {
    var oH = getRefToDivMod( 'myPopupID', x.document ); if( !oH ) { return false; }
    var oH = oH.clip ? oH.clip.height : oH.offsetHeight; if( !oH ) { return false; }
    x.resizeTo( oW + 200, oH + 200 );
    var myW = 0, myH = 0, d = x.document.documentElement, b = x.document.body;
    if( x.innerWidth ) { myW = x.innerWidth; myH = x.innerHeight; }
    else if( d && d.clientWidth ) { myW = d.clientWidth; myH = d.clientHeight; }
    else if( b && b.clientWidth ) { myW = b.clientWidth; myH = b.clientHeight; }
    if( window.opera && !document.childNodes ) { myW += 16; }
    x.resizeTo( oW + ( ( oW + 200 ) - myW ), oH + ( (oH + 200 ) - myH ) );
    if( x.focus ) { x.focus(); }
    return false;
}
function point2virgule(value)
{
    value = value + "";
    if (value.indexOf(".") >= 0)
        value = value.replace(".", ",");
    return value;
}
function virgule2point(value)
{
    value = value + "";
    if (value.indexOf(",") >= 0)
        value = value.replace(",", ".");
    if (value.indexOf(" ") >= 0)
        value = value.replace(" ", "");
    return value;
}

var iframe_open_instances = 0;

function iframe_open(url) {
    iframe_open_instances++;
    var iframe = document.createElement("IFRAME");
    iframe.src = url;
    iframe.id = "ifo" + iframe_open_instances;
    iframe.style.border="none";
    iframe.style.width="0px";
    iframe.style.height="0px";
    iframe.style.visbility="hidden";
    document.body.appendChild(iframe);
    iframe.onload = function() {
        var response = iframe.contentDocument.body.innerHTML;
        var agent = navigator.userAgent.toLowerCase();
        var is_firefox = (agent.indexOf('firefox') != -1);
        if (!is_firefox)
            document.body.removeChild(iframe);
    };
}

function remote_change(obj,prefixe)
{
    var url = "/prg/remote_change.php";
    try
    {
        // recherche du code ecran
        var objForm = obj.form;
        var code_ecran = eval("objForm." + prefixe + "code_ecran.value");
        // recherche du nom du champ
        var name = obj.name.substring(prefixe.length);
        // recherche de la valeur du champ
        if (obj.value || obj.value == '') {
            if (obj.type=='checkbox') {
                if (obj.checked) {
                    var value = obj.value;
                }
                else {
                    var value = null;
                }
            } else {
                var value = obj.value;
            }
        }
        else {
            for(var i = 0; i < obj.length; i++) {
                if (obj[i].checked)  {
                    var value = obj[i].value;
                    break;
                }
            }
        }
        // construction de l'url
        var d = new Date();
        var tc = d.getTime();
        url = window.location.protocol + "//" + window.location.host + url;
        url = url + '?code_ecran=' + code_ecran;
        url = url + '&name=' + name;
        url = url + '&value=' + escape(value);
        url = url + '&tc=' + tc;
        iframe_open(url);
        return true;
    }
    catch (ex)
    {
        return false;
    }
}

function remote_total(obj, prefixe)
{
   var url = "/prg/remote_total.php";
    try
    {
        // recherche du code ecran
        var objForm = obj.form;
        var code_ecran = eval("objForm." + prefixe + "code_ecran.value");
        // construction de l'url
        var d = new Date();
        var tc = d.getTime();
        url = window.location.protocol + "//" + window.location.host + url;
        url = url + '?code_ecran=' + code_ecran;
        url = url + '&rechm_array=' + arraySerialize(rechmArray);
        url = url + '&tc=' + tc;
        jQuery.getScript(url);
        return true;
    }
    catch (ex)
    {
        return false;
    }
}

function griser_page()
{
  var obj = id2element("thepage");
  if (obj) {
    if (window.opera) {
        obj.style.visibility = "hidden";
    }
    else {
        // effet de transparence pour IE et Firefox
        obj.style.opacity = 0.4;
        obj.style.filter = "alpha(opacity=40)";
    }
  }
}
// --------------------
// Helpers pour layout
// --------------------

// positions des scrollbars
function getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}
function date(date_du_jour){
    var olddt = date_du_jour;
    if (date_du_jour == 'Y-m-d' || date_du_jour == 'd/m/Y') {
        dt= new Date();
    }
    else {
        var dt=date_du_jour;
    }
    var Y=dt.getFullYear();
    var M=dt.getMonth()+1;
    if (M<10) {M="0"+M;}
    var D=dt.getDate();
    if (D<10) {D="0"+D;}
    if (olddt.indexOf("-") >= 0)
         return Y+"-"+M+"-"+D;
    else return D+"/"+M+"/"+Y;
}

function number_format(number, decimals, dec_point, thousands_sep) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // +      input by: Amirouche
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'
    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    // *    example 13: number_format('1 000,50', 2, '.', ' ');
    // *    returns 13: '100 050.00'
    number = (number+'').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

