//---------------------------------------------------------------
//--- Tooltips (bases sur la librairie wz_tooltip.js)
//---------------------------------------------------------------

function showText(txt) {
    // la librairie wz_tooltip.js doit etre chagee au prealable dans le <body>
    if(Tip) {
        Tip(txt, LEFT, true, ABOVE, true, SHADOW, true, SHADOWWIDTH, 2, BGCOLOR, '#ffffff', FONTCOLOR, '#6B6963', BORDERCOLOR, '#6B6963', FONTFACE, 'arial,helvetica,clean,sans-serif', FONTSIZE, 'x-small', FADEIN, 200, FADEOUT, 200);
    }
}

// selectionne ou deselectionne tous les checkbox
function doCheck(pCheckbox, pElementsName) {
    var vElements = document.getElementsByName(pElementsName);
    for (i = 0; i < vElements.length; i++) {
        if (pCheckbox.checked) {
            vElements[i].checked = true ;     
        } else {
            vElements[i].checked = false ;
        }
    }
}

//--------------------
// Chaines de caracteres
//-------------------
function encode_utf8(Data) {
    var utf8txt = "";

    // Data = Data.replace(/\r\n/g,"\n");

    for(var n=0; n<Data.length; n++)
        {
        var c=Data.charCodeAt(n);
        // all chars from 0-127 => 1byte
        if (c<128)
            utf8txt += String.fromCharCode(c);
        // all chars from 127 to 2047 => 2byte
        else if((c>127) && (c<2048)) {
            utf8txt += String.fromCharCode((c>>6)|192);
            utf8txt += String.fromCharCode((c&63)|128);
        }
        // all chars from 2048 to 66536 => 3byte
        else {
            utf8txt += String.fromCharCode((c>>12)|224);
            utf8txt += String.fromCharCode(((c>>6)&63)|128);
            utf8txt += String.fromCharCode((c&63)|128);}
        }
    
    return utf8txt;
}

function decode_utf8(utf8txt) {

    //var obj = document.getElementById('src');
    var Data = unescape(utf8txt);

    var plaintxt = "";
    var i=0;
    var c=c1=c2=0;

    while(i<Data.length)    {
        c = Data.charCodeAt(i);
        // all chars from 0-127 => 1byte
        if (c<128) {
            plaintxt += String.fromCharCode(c);
            i++;
        }
        // all chars from 127 to 2047 => 2byte
        else if((c>191) && (c<224)) {
            c2 = Data.charCodeAt(i+1);
            plaintxt += String.fromCharCode(((c&31)<<6) | (c2&63));
            i+=2;
        }
        // all chars from 2048 to 66536 => 3byte
        else {
            c2 = Data.charCodeAt(i+1); c3 = Data.charCodeAt(i+2);
            plaintxt += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
            i+=3;
        }
    }
    
    return plaintxt;
    
}


//---------------------------------------------------------------
//--- Fenetres (dimensionnement, ouvertures de popus, ...)
//---------------------------------------------------------------

function popReOpen(href,name,width,height) {
	try {
	    var parameters = 'resizable=yes,scrollbars=yes,toolbar=no,menubar=yes,statusbar=no,width='+width+',height='+height+',top=5,left=5';
	    var wh = window.open("",name,parameters);
        
        if (document.all) { // ie
            // encodage des accents en utf8 parce qu'ie ne le fait pas (ou mal) pour les url en javascript
            // pour encoder les caracteres speciaux html (ex : &eacute;, &#233;...) il faut d'abord les retransformer en caracteres normaux 
            // pour cela ils sont mis dans un div puis re-recuperes
            if (!document.getElementById('popReopen')) {
                // creation du div 'popReopen' qui n'est pas visible dans la page (grace a la propriete 'display:none')
                var vElement = document.createElement('div');
                vElement.id='popReopen';
                vElement.style.display = 'none';
                
                document.getElementById('page').appendChild(vElement);
            }
            // transformation des caracteres speciaux
            document.getElementById('popReopen').innerHTML = href;
            hrefEncode = encode_utf8(document.getElementById('popReopen').innerHTML);
            
        } else { // ff
            hrefEncode = href;
        }
        
        //wh.resizeTo(width,height);
        wh.location = hrefEncode;
	 } catch(err) {
	 }
}

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 = getRefToDivMod(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 resizeAuto(idOfDiv) {
  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; }
  x.resizeTo( oW + ( ( oW + 200 ) - myW ), oH + ( (oH + 200 ) - myH ) );
}


//---------------------------------------------------------------
//--- CONSO / FACTU
//---------------------------------------------------------------
/* Change le statut de la case cumulé lorsqu'on choisit Histogramme empilé avec un HPHC */
function changeComputeTypeStatus2(form) {
    if(form && form[cumule] && form[graphType]) {
    	// 5 pour la valeur des graphes empil?s
		if(form[graphType].value == 5) {
			form[cumule].checked = ""; // decoche
			form[cumule].disabled = "disabled"; // desactive
		}
		else {
			form[cumule].disabled = ""; // reactive en conservant la coche
		}
	}
}
function changeComputeTypeStatus(graphType, cumule) {
    if(cumule && graphType) {
    	// 5 pour la valeur des graphes empil?s
		if(graphType.value == 5) {
			cumule.checked = ""; // decoche
			cumule.disabled = "disabled"; // desactive
		}
		else {
			cumule.disabled = ""; // reactive en conservant la coche
		}
	}
}

//---------------------------------------------------------------
//--- ADMIN
//---------------------------------------------------------------

//--- FORM ADMIN SEARCH PDL
function checkRadioButtonGroup(form,vSiteAccess,vGroupAccess){
    var f= form;
    
    f[2].checked="true";
    if(!vSiteAccess ){ 
        f[0].disabled="true";
        f[2].disabled="true";
        f[1].checked="true";
    } 
    else if(!vGroupAccess){ 
        f[0].checked="true";
        f[2].disabled="true";
        f[1].disabled="true";
    }
    if(! f[0].checked 
        && ! f[1].checked 
        && ! f[2].checked ){ 
        f[2].checked="true";
    }
}

function resetAccFormAdmin(vSiteAccess,vGroupAccess) {
	form = getElementById("accountSearchForm");
	checkRadioButtonGroup(form,vSiteAccess,vGroupAccess)
    for(i=3;i<15;i++){
        form[i].value="";
    }
} 

function resetAccFormAdminBis() {
    //document.acc_form.elements[1].value="";
    document.acc_form.elements[2].value="";
    document.acc_form.elements[3].value="";
    document.acc_form.elements[4].value="";
    document.acc_form.elements[5].value="";
    document.acc_form.elements[6].value="";
    document.acc_form.elements[7].value="";
    document.acc_form.elements[8].value="";
    document.acc_form.elements[9].value="";
    document.acc_form.elements[10].value="";
    document.acc_form.elements[11].value="";
    document.acc_form.elements[12].value="";
}

function resetAccFormAdminTer() {
    form = document.forms['accountSearchForm0'];
    form[getNetuiTagName('cellogin', this)].value="";
    form[getNetuiTagName('celnom', this)].value="";
    form[getNetuiTagName('celprenom', this)].value="";
    form[getNetuiTagName('celsiren', this)].value="";
    form[getNetuiTagName('celcommune', this)].value="";
    form[getNetuiTagName('celcompteContrat', this)].value="";
    form[getNetuiTagName('celcp', this)].value="";
    form[getNetuiTagName('celraisonSociale', this)].value="";
    form[getNetuiTagName('celid', this)].value="";
    form['celactivite'].value="";
    form[getNetuiTagName('celactautre', this)].value="";
}

function resetAccFormAdminQuattro() {
    document.acc_form.elements[2].value="";
    document.acc_form.elements[3].value="";
    document.acc_form.elements[4].value="";
    document.acc_form.elements[5].value="";
    document.acc_form.elements[6].value="";
    document.acc_form.elements[7].value="";
    document.acc_form.elements[8].value="";
    document.acc_form.elements[9].value="";
    document.acc_form.elements[12].checked="false";
    //document.acc_form.elements[10].checked="false";
    //document.acc_form.elements[11].checked="false";
    //document.acc_form.elements[12].checked="true";
    //document.acc_form.elements[13].checked="false";
    document.acc_form.elements[14].value="";
    document.acc_form.elements[16].value="";
}

// Reset d'un formulaire
function resetForm(pdlId) {   
    vForm = getElementById(pdlId);    
    if (vForm) {
        for(var i = 0; i < vForm.elements.length; i++) {
        
            var vElt = vForm.elements[i];
            if(vElt &&
               vElt.type != "submit" && 
               vElt.type != "reset" &&
               vElt.type != "button" &&
               vElt.disabled != true ) 
            {
                vElt.value="";
            }
        }
    }
}

// Comparer periode
function endCompareShowToolTip() {
    showText('<b>La fin de la p&eacute;riode &agrave; comparer<br>est calcul&eacute;e automatiquement<br>en fonction de la dur&eacute;e de la<br>p&eacute;riode de r&eacute;f&eacute;rence.</b>');
}

///////////////////////////////
// Gerer droits intranautes  //
///////////////////////////////

// variables globales
var gINTRA_PROFIL_ADMIN = true;
function updateForm() {
    
  //var f = document.getElementById('accountForm'); // portal connait pas les ID html !!!!!!
  var f = document.forms[0];
  if(f) {
    var profil = document.getElementById('divAdminProfil');
    var perimetre = document.getElementById('divPerimetre');
    var typeCeL = document.getElementById('divTypeCel');
    var accesReporting = document.getElementById('divAccesReporting');
    
    if(profil) {
      profil = getSelectedRadioIndex(profil);
      if(profil == null){
        document.getElementById('profil5').checked = "checked";
        profil = 0;
      }
     if(profil == 1){ // Admin
        setAdmin(f, true);
      }
      else {
        setAdmin(f,false);
      }
    }
    if(perimetre) {
      perimetre = getSelectedRadioIndex(perimetre);
      if(perimetre == null){
        document.getElementById('perimetre3').checked = "checked";
        perimetre = 0;
      }
    }
    
    if(typeCeL) {
      typeCeL = getSelectedRadioIndex(typeCeL);
      if(typeCeL == null){
        document.getElementById('typeCeL4').checked = "checked";
        typeCeL = 0;
      }
    }
    if(accesReporting) {
      accesReporting = getSelectedRadioIndex(accesReporting);
      if(accesReporting == null){
        document.getElementById('accesReporting4').checked = "checked";
        accesReporting = 0;
      }
      
    }
  
  }
  else {
    //alert('pas de form');
  }
}

function getSelectedRadioIndex2(el_radio){
  if(el_radio && el_radio.length > 0) {
    for(i=0;i<el_radio.length;i++) {
      //alert(el_radio[i].value + '-'+el_radio[i].name);
      if (el_radio[i].checked) {
        return el_radio[i].value;
      }
    }
  }
  return null;
}

function getSelectedRadioIndex(pElt) {
    if (pElt) {
        var vElts = null;
        if (pElt.tags) {
            vElts = pElt.tags('INPUT');
        } else {
            vElts = pElt.getElementsByTagName('INPUT');
        }
        for (var i = 0;i < vElts.length; i++) {
            if (vElts[i].checked) {
                return vElts[i].value;
            }
        }
    }
    return null;
}

function setAdmin(f, admin_mode) {
    var checkboxes = null;    
  var mode = "";
  if(admin_mode)
    mode = "admin";
  if(f) {
    // perimetre
    //var perimetreTag = getNetuiTagName("perimetre",this);
    var perimetre = document.getElementById('divPerimetre');//f.elements[perimetreTag];
    
    ableRadio(perimetre, mode, 0, 2);
    //typeCel
    //var typeCelTag = getNetuiTagName("typeCeL",this);
    var typeCel = document.getElementById('divTypeCel');//f.elements[typeCelTag];
    ableRadio(typeCel, mode, 0, 3);
    
    if(gINTRA_PROFIL_ADMIN) {
        var gererDroitsIntranautesTag = document.getElementById('divGererDroitsIntranautes');//document.getElementById(getNetuiTagName("gererDroitsIntranautes"));
        var gererModelesSynthesesTag = document.getElementById('divGererModelesSyntheses');//document.getElementById(getNetuiTagName("gererModelesSyntheses"));
        var gererDroitsIntranautes = gererDroitsIntranautesTag.getElementsByTagName('INPUT');
        var gererModelesSyntheses = gererModelesSynthesesTag.getElementsByTagName('INPUT');        
        /*
        var gererDroitsIntranautes = f.elements[gererDroitsIntranautesTag];
        var gererModelesSyntheses = f.elements[gererModelesSynthesesTag];
        */
        checkboxes = new Array(gererDroitsIntranautes,gererModelesSyntheses);
        
        //acces reporting
        var accesReporting = document.getElementById('divAccesReporting');//f.elements[accesReportingTag];
        ableRadio(accesReporting, mode, 0, 2);
    }
    else {
        checkboxes = new Array(f.gererDroitsIntranautes,f.gererModelesSyntheses);
    }
    ableCheckboxes(checkboxes, mode);
  }
}

function ableRadio(pElt, mode, admin_val, default_val) {
    var checkedIndex = default_val;
    var disabled = "";
    if(mode == "admin") {
        var checkedIndex = admin_val;
        var disabled = "disabled";
    }
    if (pElt) {
        var vElts = pElt.getElementsByTagName('INPUT');
        for (var i=0;i < vElts.length;i++) {
            if(i==checkedIndex && mode=="admin") {
                vElts[i].checked="checked";
            }
            vElts[i].disabled=disabled;
        }
    }
}

function ableCheckboxes(checkboxes, mode) {
    var checked = "";
    var disabled = "";
    if(mode == "admin") {
        var checked = "checked";
        var disabled = "disabled";
    }
    for(i=0;i<checkboxes.length;i++) {
        if (checkboxes[i]) {
            for (var j=0;j < checkboxes[i].length;j++) {
               if(checkboxes[i][j]) {
                    if (mode == "admin")
                        checkboxes[i][j].checked = checked;
                    checkboxes[i][j].disabled = disabled;
               }
           }
       }
    }
}

/**
 * - Verifie que si un perimetre ou un type de cel est selectionne, le role est different de "aucun"
 * - Verifie que si le role est different de "aucun", un perimetre et un type de cel sont bien selectionnes
 */
function validateDroitsIntraForm() {
    var form_ok = true;
    var msgs = new Array();

    var profil = document.getElementById('profil5').checked;        // profil : aucun
    var perimetre = document.getElementById('perimetre3').checked;  // perimetre : aucun
    var typeCeL = document.getElementById('typeCeL4').checked;      // type de cel : aucun

    if(profil+perimetre+typeCeL <3){
        if(profil) {
            form_ok = false;
            msgs[msgs.length] = "Le choix d'un profil est obligatoire.";
        }
        if(perimetre){
            form_ok = false;
            msgs[msgs.length] = "Le choix d'un p%E9rim%E8tre est obligatoire";
        }
        if(typeCeL) {
            form_ok = false;
            msgs[msgs.length] = "Le choix d'un type de CeL est obligatoire.";
        }
    }
    if(!form_ok) {
        var msg ="V%E9rifier votre saisie.\n";
        for(i=0;i<msgs.length;i++){
            msg+= msgs[i] + "\n";
        }
        alert(unescape(msg));
        return false;
    }
    return true;
}

function testIfAlreadyClicked(){
    if (bAlreadySubmitted){
        alert("Traitement en cours, veuillez patienter.");
        return false;
    }
    bAlreadySubmitted = true;
    return true;
}

function enableButton(){
    var f = document.forms['accountForm'];
    setAdmin(f,false);
}

function initRadioButtonHabilitation() {
    
    var f=document.forms['accountForm'];
    
    var profil = document.getElementById('divAdminProfil');
    var perimetre = document.getElementById('divPerimetre');
    var typeCeL = document.getElementById('divTypeCel');
    var accesReporting = document.getElementById('divAccesReporting');
       
    if(!isButtonRadioChecked(profil)) {
        document.getElementById('profil5').checked = "checked";
    }
    if(!isButtonRadioChecked(perimetre)) {
        document.getElementById('perimetre3').checked = "checked";
    }
    if(!isButtonRadioChecked(typeCeL)) {
        document.getElementById('typeCeL4').checked = "checked";
    }
    if(!isButtonRadioChecked(accesReporting)) {
        document.getElementById('accesReporting4').checked = "checked";
    }
}

function isButtonRadioChecked(pElt) {
    var vElts = pElt.getElementsByTagName('INPUT');
    for (var i = 0;i < vElts.length;i++) {
        if(vElts[i].checked) {
            return true;
        }
    }
}

function disableBox(pElt) {
    document.getElementById(pElt).disabled="disabled";
}

// Admin > CreerCel > Multi > Telephone des gestionnaires de comptes
function setTelGestionnaire() {
    var vForm = document.forms['accountCreerCelForm'];
    if (vForm == undefined) {
        vForm = document.forms['accountModifCelForm'];
    }
    
    // Login du gestionnaire de compte selectionne
    vLogin = vForm[getNetuiTagName('intgestionnaire',this)].value;
    
    // Affectation du numero de telephone du gestionnaire au champ de saisie
    vForm[getNetuiTagName('gesttel',this)].value = aGestTel[vLogin];
}

// Admin > CreerCel > Multi > Export des donnees
function manageDureeHistoOnCLickExportExcel(formName) {
    var form = document.forms[formName];
    
    var vOptionValeur = 1;
    var vOptionLibelle = "1 an";
    var vLength = form[getNetuiTagName('extraduree',this)].length;
    
    if(form[getNetuiTagName('extraexport', this)].checked) {
        //suppression de l'option "1 an"
        form[getNetuiTagName('extraduree',this)].options[0]=null;
        //repositionnement
        form[getNetuiTagName('extraduree', this)].value="3";
    }
    else {
        //ajout de l'option en debut de liste
        var vOption = new Option (vOptionLibelle, vOptionValeur);
        form[getNetuiTagName('extraduree',this)].options[vLength]=vOption;
        trierOptionsDureeHisto(form);
        //repositionnement
        form[getNetuiTagName('extraduree', this)].value="1";
    }
}
function manageDureeHistoOnLoad(formName) {
    var form = document.forms[formName];
    
    if(form[getNetuiTagName('extraexport', this)].checked) {
        //suppression de l'option "1 an"
        form[getNetuiTagName('extraduree',this)].options[0]=null;
    }
}

function trierOptionsDureeHisto(form) {
    var items = form[getNetuiTagName('extraduree',this)].options;
    if (items.length > 1) {
        // Pour tous les éléments à part le dernier
        for (i = 0; i < (items.length - 1); i++) {
            // On réinitialise les valeurs
            smallesttext = '';
            smallestid = -1;
            // On recherche l'indice de la valeur minimale dans le reste de la liste
            for (j = i; j < items.length; j++) {
                text = items[j].text;
                // On regarde si on est au premier élément, ou alors si on a le plus petit
                if ((text < smallesttext) || (smallestid == -1)) {
                    smallestid = j;
                    smallesttext = text;
            }
        }
        // Maintenant qu'on a l'indice de la valeur minimale, on effectue l'échange
        oldvalue = items[i].value;
        oldtext = items[i].text;
        smallestvalue = items[smallestid].value;
        items[i].value = smallestvalue;
        items[i].text = smallesttext;
        items[smallestid].value = oldvalue;
        items[smallestid].text = oldtext;
        }
    } 
}


//Memorisation des elements modifies sur la liste de pdl lors de l'appel d'une recherche
function searchFormSubmit(){
	var myForm = document.getElementById("contactFormRechImpl");
	var content = "";
	var vInputType;
	for(i=0; i<myForm.elements.length; i++) {
		if(myForm.elements[i].type == "checkbox"){ 
			vInputType = "checkbox";
			if(myForm.elements[i].checked == true){
				content += "pdlId=" + myForm.elements[i].value + "&";
			}
		}if(myForm.elements[i].type == "radio"){ 
			vInputType = "radio";
			if(myForm.elements[i].checked == true){
				content += "pdlId=" + myForm.elements[i].value + "&";
			}
		}else if(myForm.elements[i].type == "select" || myForm.elements[i].type == "select-one"){
			content += "pdlUsr=" + myForm.elements[i].options[myForm.elements[i].selectedIndex].value + "&";
		}
	}
	content += "selectionType=" + vInputType;
	myForm = document.getElementById("searchPdlForm");
	var re = new RegExp(/selectedItemContext/);
	for(i = 0; i < myForm.elements.length; i++){
		var m = re.test(myForm.elements[i].id);
		if (m) {
		    myForm.elements[i].value = content;
		}
	}
	document.getElementById("searchPdlForm").submit();
}