// JavaScript Document
//=============================================================================================
//=============================================================================================
// Change l'image du lien reçu
 function changerImage(achanger,nom) {
    document.images[aChanger].src=nom;   
  }  
//=============================================================================================
function sortir_iframe()
// Lors d'une erreur dans un iframe renvoi à la page principale pour afficher.
	{
	if (parent.frames.length > 0) 
		{
        window.top.location.href = location.href;
		}
	}
//=============================================================================================
// Parcoure les éléments d'un form et cache ou rend visible les liste select
// sens = 0 on cache, = 1 on montre
function cacher_select(MonForm,sens)
 {
	if(sens==1) alert('close'); else alert('open');alert(document.forms['frm_choix'].elements.length);
 var NbElements = document.forms['frm_choix'].elements.length;
 // Boucle tous les éléments du formulaire
 for (var l = 0; l < NbElements; l++)
	 { 
	 if(document.forms['frm_choix'].elements[l].type == 'select-one') VisibleF(document.forms['frm_choix'].elements[l].name,sens);
	 }
 }
//=============================================================================================
// Créer un iframe sur un div pour obliger IE à afficher le div au dessus de la select
/*function putFrame(nom_iframe, nom_div){
var f    = document.createElement(nom_iframe);
var d    = document.getElementById(nom_div);

with(f.style){
position= "absolute";
 width    = d.offsetWidth+"px";
  height= d.offsetHeight+"px";;
 top= d.offsetTop+"px";
  left= d.offsetLeft+"px";
   zIndex= "1";
}

document.body.appendChild(f);
}*/
function putFrame(){
              var f = document.getElementById("TheFrMess");
              if (f) {
                  f.parentNode.removeChild(f);
              } else {
                  f    = document.createElement("TheFrMess");
                  f.id = "TheFrMess";
                  var d_V    = document.getElementById("erreur");
                  with(f.style){
                      position    = "absolute";
                      width       = d_V.offsetWidth+"px";
                      height      = d_V.offsetHeight+"px";;
                      top         = d_V.offsetTop+"px";
                      left        = d_V.offsetLeft+"px";
                      zIndex      = "1";
                  	  }
                document.body.appendChild(f);
                }
            }
//=============================================================================================
function efface(form,name,valeur)
// Efface la valeur du champs form.name si sa valeur = valeur reçue en paramètres
	{
	eval ( that = window.document [form] [name]);
	if ( that.value == valeur )
		{ 	that.value = ''; }
	else return false;
	}
//=============================================================================================
function vide(champs,num)
// Idem fonction précédente mais reçoit un pointeur sur le champs depuis le formulaire
	{
	if(champs.value==num) champs.value='';
	}
//=============================================================================================
 function active_ch(champs)
// Entoure le champs champs d'un filet rouge d'une bordure de 1 pixel
 	{
	champs.style.border='1px outset #FF0000';
	}
//=============================================================================================
 function desactive_ch(champs)
// Enlève la bordure autour du champs spécifié
 	{
	champs.style.border='0px';
	}
//=============================================================================================
function DoPlop(str) 
// Vérifie et formatte str pour qu'il soit de la forme X.XX
{
		tmp = str.split("." );
		   if (tmp.length == 2) { 			// Il y a un seul point puisqu'on a deux chaines résultantes
			 	if (tmp[1].length >= 2) {   // tout est ok le second terme a au moins deux caractères
			  								return str;
			 							}
		   		if (tmp[1].length == 1) { // Un seul caractère donc manque un 0
			 							return tmp[0]+"."+tmp[1]+"0";
										}
		  		// tmp[1].length==0
		  return tmp[0]+".00"; 			// rien , on ajoute .00 à la str reçue
		  }
	return str+".00";
  }
//=============================================================================================
function UpperText(elem)
// Passe la valeur de l'elem reçu en majuscule
	{
		// voir à remplacer par document.getElementById(Champ).value dans les trois suivantes
	var tempo = FormatText (document.INFOS.elements[elem].value);
	document.INFOS.elements[elem].value = tempo.toUpperCase();
	}
//=============================================================================================
function UpperPrenom(elem)
// Passe la première lettre de la valeur de l'elem reçu en majuscule
	{
	var tempo = FormatText (document.INFOS.elements[elem].value);
	var init = tempo.substr(0,1);
	var reste = tempo.substr(1, tempo.length-1);
	document.INFOS.elements[elem].value=init.toUpperCase()+reste.toLowerCase();
	}
//=============================================================================================
function upperlettre(elem)
// Passe la première lettre de la  chaine elem reçu en majuscule
	{
	var tempo = FormatText (elem);
	var init = tempo.substr(0,1);
	var reste = tempo.substr(1, tempo.length-1);
	return(init.toUpperCase()+reste.toLowerCase());
	}
//=============================================================================================
function FormatText(texte)
// Formatte la chaine texte en remplaçant les caractères , / _ et ' par des espaces
	{
	var tex;
	var i=0;
	while ( i < texte.length-1)
		{
		if ( (texte.charAt(i) == ",") || (texte.charAt(i) == "/") || (texte.charAt(i) == "_") || (texte.charAt(i) == "'") )
			{
			tex = texte.substring(0,i) + " " + texte.substring(i+1, texte.length);
			texte = tex;
			}
		else i++;
		}
	return(texte);
	}
//=============================================================================================
function remplacer(charA,charB,Chaine)
// Remplace le caractere charA par le caractère charB dans la chaine Chaine
	{
	var  tmp;
	tmp = "";
	for (var i = 0; i < Chaine.length; i++)
		{
		tmp = tmp + Chaine.charAt(i);
		if( Chaine.charAt(i) == charA) tmp = tmp.replace(charA,charB);
		}
	return(tmp);
	}
//=============================================================================================
function NonKeyDown() 
// Empêche le clic droit de la souris pour sélectionner une partie de la page
	{
	var flag;
    	 	if ( (event.altKey) || ((event.keyCode == 8) && 
    	 			(event.srcElement.type != "text" &&
    	 			event.srcElement.type != "textarea" &&
    	 			event.srcElement.type != "password")) || 
    	 			((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82)) ) ||	
    	 			(event.keyCode == 116) ) flag=1;
					
					if(flag==1)
						{
    	 				event.keyCode = 0;
    	 				event.returnValue = false;
    	 				}
    	 }
//=============================================================================================
function remplacer_chaine(chaine,a,b)
// Remplace la chaine a par la chaine b dans la chaine chaine
		{
		var i=0;
		while(i!=-1)
			{
			i=chaine.indexOf(a,i);
			if(i>=0)
				{
				chaine = chaine.substring(0,i)+b+chaine.substring(i+a.length);
				i+=b.length;
				}
			}
		return chaine;
		}
//=============================================================================================
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function ferme()
	{
		self.close();
	}
//=============================================================================================
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
//=============================================================================================
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//=============================================================================================
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//=============================================================================================
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//=============================================================================================
function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
//=============================================================================================
function changeloc(fic)
// Ouvre une nouvelle fenêtre de nom telechargement avec le fichier fic
	{
	MM_openBrWindow(fic,"telechargement")
	}
//=============================================================================================
 function swap_calques(c1,c2)
// cache le calque c1 et affiche le calque c2
 	{
	document.getElementById(c1).style.visibility="visible";
	document.getElementById(c1).style.display='block';
	document.getElementById(c2).style.visibility="hidden";
	document.getElementById(c2).style.display='none';
	}
//=============================================================================================
function explode(symb,string,size)
// sépare la string selon le symb reçu et retourne une chaine de longueur maxi size
	{ 
    if(symb == ''){ return false; } 		// si string vide, on retourne
    var texte = string; 
    var tru = true; 						//Variable drapeau 
    var flag = false; 						//Variable drapeau 
    var plast = 0; 
    var num = 0; 
    var last; 
    var llast = texte.lastIndexOf(symb);	// Dernière occurence de symb dans string 
    var ordr = new Array(); 
    var len = texte.length; 
     
    while(tru == true){ 
        last = texte.indexOf(":",plast); 
        if(flag == true){ 
            tru = false; 
            last = len; 
        } 
        ordr[num] = texte.substring( plast , last ); 
         
        if(size){ 
            if(ordr.length == size){ 
                ordr[num] += texte.substring( last , len ); 
                tru = false; 
            } 
        } 
        num++; 
        plast = last+1; 
        if(last == llast){ 
            flag = true 
        } 
    } 
    return ordr; 
}
//=============================================================================================
function implode(symb,array){ 
    var len = array.length; 
    var fin = ''; 
    for(i = 0; i < len;i++){ 
        if(i){ 
            fin += symb; 
        } 
        fin +=array[i]; 
    } 
    return fin; 
} 
//=============================================================================================
function virgule(texte,Champ) {
// Vérifie la présence d'une virgule dans le champs Champ et la remplace par un point le cas échéant
    if (texte.substr(texte.length-1,1) == ",") {
        document.getElementById(Champ).value=texte.substr(0,texte.length-1)+ "." ;
    }
}
//=============================================================================================
function Valide_char(nChamp,nAccepte,nbr) {
// Regarde si le champs nChamps n'est composé que des caractères donnés dans la chaine nAccepte
// Sinon renvoi une erreur. le champs CONSO AN est spécifique à @tout proposition
//  onBlur="Valide_char(this,'()-0123456789')"
// Les caractères acceptés peuvent être changés
  if(nChamp.value == 'Saisir semaines' || nChamp.value == 'Planning joint') return;
  var ok = "oui";
  var min = "oui";
  var nChar;
  var retour=1;
  for (var i=0; i<nChamp.value.length; i++) {
    					nChar = "" + nChamp.value.substring(i, i+1);
    					if (nAccepte.indexOf(nChar) == "-1") { ok = "non";retour = false; }
 											 }
  if( nbr != -1)   if (nChamp.value.length < nbr&&nChamp.value.length > 0) 
  										{ min = "non";retour = false; }
  if (min == "non") alert("\nSaisie invalide!\nAssurez-vous d'entrer au moins " + nbr + " caractères.");
  if (ok == "non")  alert ("\nEntrée invalide!\nSeuls ces caractères sont valides :\n "+nAccepte)	
  //utiliser && nchamp.name == pour faire auguillage supp
 if(retour==1 && nChamp.name == 'CONSO_AN') offretype(nChamp.value);
 		else if(min == "non" || ok == "non"){ nChamp.focus();
			  nChamp.select(); }
return(retour);
}
//=============================================================================================
function okval(nChamp,val)
// Vérifie que la valeur du champs nChamps ne soit pas supérieure à val, sinon affiche une erreur et donne le focus au champs
	{
	if(nChamp.value > val) {
							alert ("\nErreur : la valeur ne peut être supérieur à "+val);
							nChamp.focus();
							nChamp.select();
							} 
	}
//=============================================================================================
// recherche des checkBox sélectionné
function getValueFromChk(obj) {
	if(obj.checked){
		return obj.value;
		 }else{
		return '';
		}
	}
//=============================================================================================
// recherche des valeurs sélectionnés dans une liste déroulante
function getSelectValue(select) {
	var value="";
	for (var i=0; true; i++) {
		if (select[i]) {
			if (select[i].selected) {
				value += select[i].value + ",";
				}
			} else {
			return value.substr(0, value.length-1);
			}
		}
	}
//=============================================================================================
//=============================================================================================
// retourne true si la variable est un nombre entier ou float
function verif_numeric(variable)
 {
 var exp = new RegExp("^[0-9.]+$","g");
 return exp.test(variable);
 } 
//=============================================================================================
//=============================================================================================
// affiche ou cache le champs de formulaire en inversant son état
function Visible(champs) {  
	var Obj = document.getElementById(champs);  
	if (Obj.style.visibility == 'hidden') {  
	Obj.style.visibility = 'visible';}  
	else {  
	Obj.style.visibility = 'hidden';}  
}  
//=============================================================================================
// affiche ou cache le champs de formulaire selon le flag
function VisibleF(champs,flag) {  
	var Obj = document.getElementById(champs);  
	if (flag==1) {  
	Obj.style.visibility = 'visible';}  
	else {  
	Obj.style.visibility = 'hidden';}  
}  
//=============================================================================================
//=============================================================================================
// active désactive le champs de formulaire en inversant son état
function Disabled(champs) {  
	var Obj = document.getElementById(champs);  
	if (Obj.disabled == false) {  
	Obj.disabled = true;}  
	else {  
	Obj.disabled = false;}  
}  
//=============================================================================================
// active désactive le champs de formulaire selon le flag
function DisabledF(champs,flag) {  
	var Obj = document.getElementById(champs);  
	if (flag==0) {  
	Obj.disabled = true;}  
	else {  
	Obj.disabled = false;}  
}  
//=============================================================================================
//=============================================================================================
//=============================================================================================
// équivalent à escape php pour les apostrophes
function addslashes(ch) {
	ch = ch.replace(/\\/g,"\\\\");
	ch = ch.replace(/\'/g,"\\'");
	ch = ch.replace(/\"/g,"\\\"");
	return ch;
	}
//=============================================================================================
//=============================================================================================
// assigne le champs et le sens de recherche pour un formulaire et construire une requête
function valeur_de_tri(champs,ordre)
	{	
	var objForm = document.frm_choix;
	if(objForm.CH.value == champs || !objForm.CH.value)//c'est la même colonne
		{
		objForm.CH.value = champs;
		if(ordre == 'ASC') objForm.OR.value='DESC';
			else if(ordre == 'DESC') objForm.OR.value='N';
				else objForm.OR.value='ASC';
		}
	if(objForm.CH.value != champs)//c'est une autre colonne
		{
		objForm.CH.value=champs;
		objForm.OR.value='ASC';
		}
	objForm._flag_bouton.value='mes_affaires';
	objForm.submit();
	}
//=============================================================================================
//=============================================================================================
// assigne les valeurs pour la pagination et envoi le formulaire
function pagine(nb,pg)
	{	
	var objForm = document.frm_choix;
	objForm.debut.value = nb;
	objForm.pg.value = pg;
	objForm._flag_bouton.value='mes_affaires';
	objForm.submit();
	}

