﻿// Les touches de fonction

//EC

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

//FIN EC


var enter = false;
function envoi(champ, formul) 
{
	enter=true; 
	// mémorise le bouton clické dans un champ caché
	document.getElementById("action").value = champ.name;
	// demande l'envoi du formulaire (dont l'ID variable)
	document.getElementById(formul).submit();
}


// Fonction de récupération du type de Request pour le Dom
function xmlhttp()
{
	var xmlhttp = null;

	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   	}
   	catch(e)
   	{
    	try
    	{
        	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      	}
      	catch(e)
      	{
        	xmlhttp = false;
      	}
   	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined')
	{
    	xmlhttp = new XMLHttpRequest();
   	}
	return(xmlhttp);
}
// affiche une boîte de dialogue d'information sur l'expiration imminente de la session utilisateur :
// si l'utilisateur clique sur OK, la page est rechargée pour réinitialiser le chronomètre de session
function rappelSession(minutes)
{
	var msg='Votre session expirera dans '+minutes+' minute';
	if(minutes>1) msg+='s';
	msg+='.\nVoulez-vous recharger la page pour éviter la déconnexion automatique ?';
   	if(confirm(msg)) document.forms[0].submit();
}

// affiche une alerte sur l'expiration de la session et redirige vers une autre page
 
function expirationSession(url)
{
   alert('Votre session a expiré !\nVous êtes déconnecté à présent.');
   location.href=url;
}


// affiche des avertissements sur le délai d'expiration de la session :
// - un premier au bout de (expiration-rappel) minutes (par ex. : 20-3 = 17 minutes)
// - un second au bout de (expiration) minutes (par ex. : 20 minutes)
function session(expiration,rappel,redirection)
{
   // affichage du rappel
   var chronoRappel=setTimeout('rappelSession('+rappel+')', (expiration-rappel)*60*1000);
   
   // une fois le rappel affiché, on avertit uniquement de l'expiration
   var chronoExpiration=setTimeout('expirationSession(\''+redirection+'\')', expiration*60*1000);
}

// Calcul de la position de curseur
var position_x=0;
var position_y=0;
function position (evt) 
{
	if (navigator.appName=="Microsoft Internet Explorer") 
	{
 		position_x = event.x + document.body.scrollLeft+"px";
  		position_y = event.y + document.body.scrollTop+"px";
	}
	else 
	{
		if(!evt) evt = window.event;    
		position_x = evt.clientX + document.body.scrollLeft;
		position_y = evt.clientY + document.body.scrollTop;
	}
	//fShowTable();
}

function fShowTable() 
{		
	alert('x= '+position_x+' ,y= '+position_y);
}

// Fonctions utilisées pour les forfaits de mutuelle
function updateBox()
{
	var id=document.getElementById("chk0");
	enableBox(id.checked);
}

function enableBox(yes)
{
	var id=document.getElementById("id_ayant_droit");
	id.disabled=!yes;
}
		
function onYes()
{
	updateBox();
}

function onNo()
{
	updateBox();
}

// Alternance de couleurs pour les affichages des listes
function ligAlt(couleur1, couleur2, couleur3)
{
	var tables = document.getElementsByTagName("table");
	var len = tables.length;
	
	for (var i = 0; i < len; i++)
	{
		surligne(tables[i], couleur1, couleur2, couleur3);
	}
}

function surligne(elm, couleur1, couleur2, couleur3)
{
	var blen = elm.tBodies.length;
	var transparent = "transparent";
	for (var k = 0; k < blen; k++)
	{
		var n = elm.tBodies[k].rows.length;
	
		for (var i = 0; i < n; i++)
		{
			
			var len = elm.tBodies[k].rows[i].cells.length;
			
			for (var j = 0; j < len; j++)
			{
				if(i>0)
				{
					elm.tBodies[k].rows[i].cells[j].style.backgroundColor = i % 2 ? couleur2 : couleur3;
				}
				else
				{
					elm.tBodies[k].rows[i].cells[j].style.backgroundColor = couleur1;
				}
			}   
		}
	}	
}

// Passage du 1er caractère d'un champ en majuscule
function changeCase(data) 
{
	var index;
	var tmpStr;
	var tmpChar;
	var preString;
	var postString;
	var strlen;
	tmpStr = data.value.toLowerCase();
	strLen = tmpStr.length;
	if (strLen > 0)  
	{
		
				tmpChar = tmpStr.substring(0,1).toUpperCase();
				postString = tmpStr.substring(1,strLen);
				tmpStr = tmpChar + postString;
			
	}
	data.value = tmpStr;
}

// Passage du 1er caractère d'un champ en majuscule
function changeCaseFirst(data) 
{
	var index;
	var tmpStr = data.value;
	var tmpChar;
	var preString;
	var postString;
	var strlen;
	strLen = tmpStr.length;
	if (strLen > 0)  
	{
		
				tmpChar = tmpStr.substring(0,1).toUpperCase();
				postString = tmpStr.substring(1,strLen);
				tmpStr = tmpChar + postString;
			
	}
	data.value = tmpStr;
}

// Passage du 1er caractère de chaque mot en majuscule
function changeCaseAll(data) 
{
	var index;
	var tmpStr;
	var tmpChar;
	var preString;
	var postString;
	var strlen;
	tmpStr = data.value.toLowerCase();
	strLen = tmpStr.length;
	if (strLen > 0)  
	{
		for (index = 0; index < strLen; index++)  
		{
			if (index == 0)  
			{
				tmpChar = tmpStr.substring(0,1).toUpperCase();
				postString = tmpStr.substring(1,strLen);
				tmpStr = tmpChar + postString;
			}
			else 
			{
				tmpChar = tmpStr.substring(index, index+1);
				if (tmpChar == " " && index < (strLen-1))  
				{
					tmpChar = tmpStr.substring(index+1, index+2).toUpperCase();
					preString = tmpStr.substring(0, index+1);
					postString = tmpStr.substring(index+2,strLen);
					tmpStr = preString + tmpChar + postString;
	         	}
	      	}
	   	}
	}
	data.value = tmpStr;
}

// Transforme la virgule en point
function VirguleToPoint(data)
{
	document.getElementById(data).value = document.getElementById(data).value.replace( ',' , '.' );
}

// Copie le libellé court vers le libellé long
function copyLibelCourtLong(libel_court, libel_long) 
{
	document.getElementById(libel_long).value = document.getElementById(libel_court).value;
}

// Arrondir un résultat à 2 décimal
function arrondir(resultat) 
{
    resultat = resultat.toFixed(2);
    return resultat;
}
// Formatage d'un champ en paquet
// La fonction prend trois parametres : nom du formulaire et du champ, nombre de caracteres par paquet, separateur
function formatage(data,nb,separateur) 
{
	// La variable qui stockera la chaine modifiee
	var resultat = '';

	// Un tableau intermediaire pour decouper les paquets
	var tableau = new Array();

	// Suppression des espaces
	var valeur = eval('document.' + data).value.replace(/\s+/g,"");
	
	// Pour chaque caractere saisi
	for ( i = 0; i <= valeur.length; i++ ) 
	{
		// On place le nombre de caractere demandes dans un tableau
		tableau[i] = valeur.substr(i,nb);

		// Suivant le nombre de caractere demandes par paquet, on fait avancer le pointeur
		for ( j = 1; j < nb; j++ ) 
		{
			i++
		}
	}

	// Pour chaque element du tableau renseigne precedemment
	for ( i = 0; i < tableau.length; i++ ) 
	{
		// Si la valeur est renseignee
		if ( tableau[i] != undefined ) 
		{
			// On l'affecte a la variable resultat et on place le separateur
			resultat += tableau[i]+separateur;
		}
	}

	// Si on trouve le separateur en derniere position
	if ( resultat.lastIndexOf(separateur) == resultat.length-1 ) 
	{
		// On coupe la chaine
		resultat = resultat.substring(0,(resultat.length-1));
	}

	// Deuxieme passage
	if ( resultat.lastIndexOf(separateur) == resultat.length-1 ) 
	{
		resultat = resultat.substring(0,(resultat.length-1));
	}

	// On reaffiche la chaine modifiee
	eval('document.' + data).value = resultat;
}

// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
function format(valeur,decimal,separateur) 
{
	var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
	var val=Math.floor(Math.abs(valeur));
	if ((decimal==0)||(deci==Math.pow(10,decimal))) 
	{
		val=Math.floor(Math.abs(valeur)); deci=0;
	}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) 
	{
		if (val>=Math.pow(10,(3*i)))
		{
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal>0) 
	{
		var decim=""; 
		for (var j=0;j<(decimal-deci.toString().length);j++) 
		{
			decim+="0";
		}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(valeur)<0) 
	{
		val_format="-"+val_format;
	}
	return val_format;
}
// Contrôle de base des champs par type
function ValiderPresAlpha(data, message)
{
	if (document.getElementById(data).value == "") 
	{
		alert(message+" Obligatoire.");
		return false;
	}
	else
	{
		return true;
	}
}

function ValiderPresAlphaC(data, message)
{
	if (document.getElementById(data).value == "") 
	{
		if(confirm("Vous n'avez pas saisie de "+message+". Est-ce volontaire ?" ))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return true;
	}
}

function ValiderPresAlphaLong(data, message, longueur)
{
	if (document.getElementById(data).value == "") 
	{
		alert(message+" Obligatoire.");
		return false;
	}
	if (document.getElementById(data).value.length < longueur) 
	{
		alert(message+" : nombre de caractères insufisant.");
		return false;
	}
		return true;
}

function ValiderPresNombre(data, message)
{
	if(document.getElementById(data).value!=0)
	{
		var anum=/(^\d+$)|(^\d+\.\d+$)/
		if (anum.test(document.getElementById(data).value))
		{
			return true;
		}
		else
		{
			alert("Entrez uniquement des chiffres dans "+message)
			return false;
		}
	}
	else
	{
		return true;
	}
}

function ValiderSelect(data, message)
{
	if (document.getElementById(data).value<1) 
	{
		alert(message+" Obligatoire.");
		return false;
	}
	else
	{
		return true;
	}
}

function ValiderSelectC(data, message)
{
	if (document.getElementById(data).value<1) 
	{
		if(confirm("Vous n'avez pas saisie de "+message+". Est-ce volontaire ?" ))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return true;
	}
}

function ValiderDate(data, message) 
{
	if (document.getElementById(data).value == "") return true;
	
	var ladate = (document.getElementById(data).value).split("/")
	var echec = '0';

	if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2])))
	{
		alert(message+" Erronée.");
		return false;
	}
	
	var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))
	
	var annee = unedate.getYear()
	
	if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
	
	if(unedate.getDate() != eval(ladate[0])) echec = '1';
	if(unedate.getMonth() != eval(ladate[1])-1) echec = '1';
	if(annee != eval(ladate[2])) echec = '1';
	if(echec == '1')
	{
		alert(message+" Erronée.");
		return false;
	}
	return true;
}

function ValiderEmail(data, message) 
{
	if (document.getElementById(data).value == "") return true;
	var i;
	
	// Recherche de @
	i = (document.getElementById(data).value).indexOf("@");
	if (i == -1) 
	{
		alert(message+" Erronée.");
		return false;
	}
	
	// Séparation du nom de l'utilisateur et du nom de domaine.
	var username = (document.getElementById(data).value).substring(0, i);
	var domain = (document.getElementById(data).value).substring(i + 1, (document.getElementById(data).value).length)

	// Recherche des espaces au début du nom de l'utilisateur.
	i = 0;
	while ((username.substring(i, i + 1) == " ") && (i < username.length)) 
	{
		i++;
	}
	// Les enlève s'il en trouve.
	if (i > 0) 
	{
		username = username.substring(i, username.length);
	}

	// Recherche d'espaces à la fin du nom de domaine.
	i = domain.length - 1;
	while ((domain.substring(i, i + 1) == " ") && (i >= 0)) 
	{
		i--;
	}
	// Les enlève s'il en trouve.
	if (i < (domain.length - 1)) 
	{
		domain = domain.substring(0, i + 1);
	}

	// Vérifie que le nom de l'utilisateur et du domaine ne soit pas vide.
	if ((username == "") || (domain == "")) 
	{
		alert(message+" Erronée.");
		return false;
	}
	
	// Vérifie s'il n'y a pas de caractères interdits dans le nom de l'utilisateur.
	var ch;
	for (i = 0; i < username.length; i++) 
	{
		ch = (username.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || 
			((ch >= "0") && (ch <= "9")) ||
			(ch == "_") || (ch == "-") || (ch == "."))) 
			{
				alert(message+" Erronée.");
				return false;
		}
	}
	
	// Vérifie s'il n'y a pas de caractères interdits dans le nom de domaine
	for (i = 0; i < domain.length; i++) {
		ch = (domain.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || 
			((ch >= "0") && (ch <= "9")) ||
			(ch == "_") || (ch == "-") || (ch == "."))) 
		{
			alert(message+" Erronée.");
			return false;
		}
	}

// Ajouter ci-dessous de nouveaux noms de domaine.
// Voir tous les noms de domaine sur http://www.toulouse-renaissance.net/c_outils/c-nom-domaine.htm
//
	var aSuffix = new Array("com","co","uk","net","int","aero","biz","museum","name","info","coop","pro","eu","edu","org","gov","mil","bj","dz","de","ad","be","ca","bf","bi","cm","cf","cg","cd","ci","dj","fr","ga","gp","gf","lu","mg","ml","ma","mq","mr","mc","nc","pf","re","pm","sn","ch","td","tf","tn");
	var bFoundSuffix = false;
	i = 0;
	while (i < aSuffix.length) 
	{
		if (("." + aSuffix[i]) == domain.substring(domain.length - aSuffix[i].length - 1, domain.length)) 
		{
			return true;
		}
		i++;
	}
	// Si le nom de domaine est inconnu  : return false
	alert(message+" Erronée.");
	return false;
}

function ValiderDateDebFin(data_deb, data_fin, message)
{
	var echec = '1';
	var tabDate1 = (document.getElementById(data_deb).value).split("/")
	
	tabDate1 = SupZero(tabDate1);
	
	var datTest_Date1 = new Date(parseInt(tabDate1[2]), parseInt(tabDate1[1])-1, parseInt(tabDate1[0]));
	
	var tabDate2 = (document.getElementById(data_fin).value).split('/');
	
	tabDate2 = SupZero(tabDate2);
	
	var datTest_Date2 = new Date(parseInt(tabDate2[2]), parseInt(tabDate2[1])-1, parseInt(tabDate2[0]));
	
	if(datTest_Date2-datTest_Date1==0) echec='0';
	if(datTest_Date2-datTest_Date1<0) echec='-1';
	if(echec=='-1')
	{
		alert(message+" Erronée : Date début > Date fin.");
		return false;
	}
	if(echec=='0')
	{
		alert(message+" Erronée : Date début = Date fin.");
		return false;
	}
	return true; 
}

function ValiderLong(data, mini, maxi, message)
{
    if ( mini != 0 ) 
    {
      	// Si la longueur de la saisie est inférieure au minimum demandé
      	if ( document.getElementById(data).value.length < mini ) 
      	{
        	// Envoi d'une alerte
        	alert(message);
        	return false
      	}
    }
      // Si la longueur de la saisie est supérieure au maximum demandé
    if ( maxi != 0 ) 
    {
      	if ( document.getElementById(data).value.length > maxi ) 
      	{
      	  	alert(message);
        	return false
    	}
   	}
	return true; 
}

function ValiderCP(cp, message)
{
	if (document.getElementById(cp).value.length < 5 && document.getElementById(cp).value.length > 0 )
	{
		alert("Indiquez un code postal à 5 chiffres");
		return false;
	}
	if (document.getElementById(cp).value.length == 0)
	{
		alert("Indiquez un code postal");
		return false;
	}
	if (isNaN(document.getElementById(cp).value) == true)
	{
		alert("Un code postal ne peut pas contenir de lettres");
		return false;
	}
	return true;
}

// Contrôle simple d'une date
function ctrDate(data, message) 
{
	if (data == "") return true;
	
	var ladate = data.split("/")
	var echec = '0';
	
	if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2])))
	{
		alert(message+" Erronée.");
		return false;
	}
	
	var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))
	
	var annee = unedate.getYear()
	
	if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
	
	if(unedate.getDate() != eval(ladate[0])) echec = '1';
	if(unedate.getMonth() != eval(ladate[1])-1) echec = '1';
	if(annee != eval(ladate[2])) echec = '1';
	if(echec == '1')
	{
		alert(message+" Erronée.");
		return false;
	}
	return true;
}  
// Supression du 1er caractère du jour si c'est un 0
function SupZero(data) 
{
	for (i=0; i<data.length; i++)
	data[i] = (data[i].charAt(0)=='0')?data[i].charAt(1):data[i];
	return data;
}
// ========================================================================
// Validation globale de cases à cocher
// conteneur = id du bloc (<div>, <p> ...) contenant les checkbox
// a_faire = '0' pour tout décocher
// a_faire = '1' pour tout cocher
// a_faire = '2' pour inverser la sélection
function GereChkbox(conteneur, a_faire) 
{
	var blnEtat=null;
	var Chckbox = document.getElementById(conteneur).getElementsByTagName('input');
	for (i in Chckbox)
	{
		if (Chckbox[i].nodeName=="INPUT")
		if (Chckbox[i].getAttribute("type")=="checkbox") {
			blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox[i].getAttribute("id")).checked) ? false : true;
			document.getElementById(Chckbox[i].getAttribute("id")).checked=blnEtat;
		}
	}
}

// ==========================================================================
// Gère l'affichage des cases à cocher en fonction de la valeur de l'id_trt
// conteneur = id du bloc (<div>, <p> ...) contenant les checkbox
function GereControle(controleur, conteneur, a_faire) 
{
	// Récupération des cases à cocher et des valeurs d'image
	var Input = document.getElementById(conteneur).getElementsByTagName('input');
	var Chckbox = new Array();
	for (i=0;i<Input.length;i++)
	{
	    if (Input[i].nodeName=="INPUT")
			if (Input[i].getAttribute("type")=="checkbox")
			{
				Chckbox.push(Input[i])
			}
	}
	
	var Image = new Array();
	for (i=0;i<Input.length;i++)
	{
	    if (Input[i].nodeName=="INPUT")
			if (Input[i].getAttribute("type")=="hidden")
			{
				Image.push(Input[i])
			}
	}      
	      
	for (i in Chckbox)
	{
		if (a_faire=='1')
		{
			if(Image[i].value== '5')
			{
				document.getElementById(Chckbox[i].getAttribute("id")).style.visibility=(document.getElementById('reactivdossier').checked==false)?'visible':'hidden';
				document.getElementById(Chckbox[i].getAttribute("id")).style.visibility=(document.getElementById('reactivdossier').checked==true)?'visible':'hidden';
			}
		}
		else
		{
			document.getElementById(Chckbox[i].getAttribute("id")).disabled=(document.getElementById('reactivdossier').checked==true)?false:true;
			document.getElementById(Chckbox[i].getAttribute("id")).disabled=(document.getElementById('reactivdossier').checked==false)?false:true;
		}
	}
}

