/**
* @desc 	Fonctions javascript de l'application OSIRELE
* @author 	Benjamin Mourgues <benjamin.mourgues@pimentic.com>
* @author	Fabien Caillot <fabien.caillot@pimentic.com>
* @date 	27/07/2007
* @version 	1.0
*/

var infoIsVisible=false;
var saisieModif=false;
var saveValeurs=false;
var isLoc=true;

/**
 * @desc	restore les images d'origines apres roll out
 * @param	aucun 
 * @return	aucun 
 */
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;
}

/**
 * @desc	preload les images necessaires pour les effets de roll
 * @param	liste des urls d'images a preloader 
 * @return	aucun 
 */
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];}}
}

/**
 * @desc	recherche d'objets pour les effets de roll over
 * @param	nom de l'objet, 
 * @return	élément recherché
 */
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;
}

/**
 * @desc	effet de roll over sur les images
 * @param	nom de l'image a modifier, , fichier source,
 * @return	aucun
 */
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];}
}

/**
 * @desc	soumait le formulaire de login verifie la validitée des champs
 * @param	aucun
 * @return	aucun
 */
function login(form){
	var log=document.getElementById("inputLogin");
	var pwd=document.getElementById("inputPwd");
	var formulaire=document.getElementById(form);
	var msg = "Veuillez remplir : \n";
	var isError=false;
	
	if(log.value==""){
		isError=true;
		msg = msg+"\t -le champs de login \n"
	}
	if(pwd.value==""){
		isError=true;
		msg = msg+"\t -le champs de mot de passe \n"
	}	
	if(isError){
		alert(msg);
	}else{
		formulaire.submit();
	}
}



/**
 * @desc	verifie qu'un formulaire est bien saisie
 * NOTE 	Si les champs sont saisis le formulaire est soumis sinon les champs vides changent de classe CSS pour indiquer leur invalidité  
 * @param	objet champ 
 * @return	true : le champ est vide  false : le champ est rempli
 */
function isEmptyField(obj){
	if(obj.value==""){
		obj.className="champFaux";
		return true;
	}else{
		obj.className="champ";
		return false;
	}
}



/**
 * @desc	ferme ou ouvre les parties de l apge d'accueil  
 * @param	objet img 
 * @return	rien
 */
function openPartAccueil(obj){
	var idDiv="part"+obj.name.split("_")[1];
	
	var i=1;
	while(document.getElementById("part"+i)){
		document.getElementById("part"+i).style.display="none";
		i++;
	}
	divToClose=document.getElementById(idDiv).style.display="block";
}


/**
 * @desc	ferme ou ouvre un formulaire et change la classe CSS de la div d'entete  
 * @param	objet div de tete 
 * @return	rien
 */
function changeOpenState(obj){
	var idTab=obj.className.split("_")[1]+"_"+obj.className.split("_")[2];
	

	var tab = document.getElementById(idTab);
	
	var barClass = obj.className;
	var newBarClass = obj.className.split("_")[0]+"_"+idTab;
	
	
	if(barClass.split("_")[3]=="Open"){
		newBarClass = newBarClass+"_Close";
		tab.style.display="none";
	}else{
		newBarClass = newBarClass+"_Open";
		tab.style.display="block";
	}
	
	obj.className = newBarClass;
}

/**
 * @desc	inhibe la saisie de caracteres autres que numérique  
 * @param	srcObj : objet qui envois l'evenent onclick   evt : evenement
 * @return	true : le caractere est numérique   false : le caractere n'est pas numérique
 */
function verifSaisie(srcObj,evt){
	

	if(window.event){
		keyCode = window.event.keyCode;
		evt = window.event;
	}else if (evt) keyCode = evt.which;
	else return true;
	
	if (keyCode==44 || keyCode==46)
	{
		//On autorise l'insertion du point uniquement s'il est unique
		if (srcObj.value.indexOf('.')==-1 && srcObj.value.indexOf(',')==-1 ){
			return;
		}
		
	}
	
	
	document.getElementById(srcObj.id.split("_")[0]+"_modif").style.visibility="visible";
	saisieModif = true;

	
	if (((keyCode>=48) && (keyCode<=57)) || keyCode == 0 || keyCode == 8)
	{
		evt.returnValue = true;
		return true;
	}else{
		evt.returnValue = false;
		return false;
	}
}

/**
 * @desc	inhibe la saisie de caracteres autres que numérique  
 * @param	srcObj : objet qui envois l'evenent onclick   evt : evenement
 * @return	true : le caractere est numérique   false : le caractere n'est pas numérique
 */
function verifSaisieNombre(srcObj,evt){
	

	if(window.event){
		keyCode = window.event.keyCode;
		evt = window.event;
	}else if (evt) keyCode = evt.which;
	else return true;
	
	if (keyCode==44 || keyCode==46)
	{
		//On autorise l'insertion du point uniquement s'il est unique
		if (srcObj.value.indexOf('.')==-1 && srcObj.value.indexOf(',')==-1 ){
			return;
		}
		
	}
	
	
// 	document.getElementById(srcObj.id.split("_")[0]+"_modif").style.visibility="visible";
// 	saisieModif = true;

	
	if (((keyCode>=48) && (keyCode<=57)) || keyCode == 0 || keyCode == 8)
	{
		evt.returnValue = true;
		return true;
	}else{
		evt.returnValue = false;
		return false;
	}
}


/**
 * @desc	verifie que la somme des chiffres d'une colonne est égal a un autre chiffre  
 * @param	srcObj : objet qui envois l'evenent onclick   evt : evenement
 * @return	true : le caractere est numérique   false : le caractere n'est pas numérique
 */
function verifSommeColonneParam(srcObj,somme){
	//srcObj.id => formF_Y_X
	id1=srcObj.id.split("_")[0];
	id2=srcObj.id.split("_")[2];
	
	sommeColonne(id1,id2,somme);
	
}



/**
 * @desc	verifie que la somme des chiffres d'une colonne est égal a un autre chiffre  
 * @param	srcObj : objet qui envois l'evenent onclick   evt : evenement
 * @return	true : le caractere est numérique   false : le caractere n'est pas numérique
 */
function sommeColonne(form,col,somme){
	//srcObj.id => formF_Y_X
	id1=form;
	id2=col;
	
	var ligne=1;
	sommeCol = 0
	listeChamps="";
	
	while(document.getElementById(id1+"_"+ligne+"_"+id2)){
		listeChamps+=id1+"_"+ligne+"_"+id2+"\n";
		sommeCol += parseFloat(document.getElementById(id1+"_"+ligne+"_"+id2).value);
		ligne++;
	}
	
	
	document.getElementById(id1+"_total_"+id2).innerHTML = sommeCol;
	if(sommeCol>somme){
		ligne = 1;
		//alert("SUP");
		//alert(listeChamps+"\n\nsomme des valeurs de la colonne est égale à "+sommeCol+" supérieure a "+somme+" !");
		while(document.getElementById(id1+"_"+ligne+"_"+id2)){
			document.getElementById(id1+"_"+ligne+"_"+id2).style.border="1px solid #EE0000";
			document.getElementById(id1+"_"+ligne+"_"+id2).style.background="#EEDEDE";
			document.getElementById(id1+"_total_"+id2).style.color="#EE0000";
			ligne++;
		}
	}else if(sommeCol<somme){
		ligne = 1;
		//alert("INF");
		//alert(listeChamps+"\n\nsomme des valeurs de la colonne est égale à "+sommeCol+" supérieure a "+somme+" !");
		while(document.getElementById(id1+"_"+ligne+"_"+id2)){
			document.getElementById(id1+"_"+ligne+"_"+id2).style.border="1px solid #0068AA";
			document.getElementById(id1+"_"+ligne+"_"+id2).style.background="#DEDEEE";
			document.getElementById(id1+"_total_"+id2).style.color="#0068AA";
			ligne++;
		}
	}else{
		ligne = 1;
		//alert("EGAL");
		//alert(listeChamps+"\n\nsomme des valeurs de la colonne est égale à "+sommeCol+" supérieure a "+somme+" !");
		while(document.getElementById(id1+"_"+ligne+"_"+id2)){
			document.getElementById(id1+"_"+ligne+"_"+id2).style.border="1px solid #B7B7B7";
			document.getElementById(id1+"_"+ligne+"_"+id2).style.background="#DEDEDE";
			document.getElementById(id1+"_total_"+id2).style.color="#555555";
			ligne++;
		}
	}
}




/**
 * @desc	remplace les virgules dans les champs de saisie par des .   
 * @param	srcObj : objet correspondant au champ en cours de saisie
 * @return	: rien
 */
function virguleRemplace(srcObj)
{
	if (srcObj.value.indexOf(",") != -1) {
		srcObj.value = (srcObj.value.split(",")[0] + "." + srcObj.value.split(",")[1]);
	}
	if (srcObj.value.indexOf(".") == 0) {
		//srcObj.value = "blop";
		srcObj.value = "0" + srcObj.value;
	}
	deleteZero(srcObj);
}


/**
 * @desc : supprime les 0 qui sont en debut de chaine pour eviter les problemes de calculs   
 * @param	srcObj : objet correspondant au champ en cours de saisie
 * @return	: rien
 */
function deleteZero(srcObj)
{
	if (srcObj.value.indexOf("0") == 0 && srcObj.value.indexOf(".") != 1 && srcObj.value.length>1) {
		srcObj.value = srcObj.value.substring(1,srcObj.value.length);
	}
}



/*
* +-------------------------------------+
* Number.prototype.nombreFormate
* +-------------------------------------+
* Params (facultatifs):
* - Int decimales: nombre de decimales (exemple: 2)
* - String signe: le signe precedent les decimales (exemple: "," ou ".")
* - String separateurMilliers: comme son nom l'indique
* Returns:
* - String chaine formatee
*/
Number.prototype.nombreFormate = function (decimales, signe, separateurMilliers) {
	var _sNombre = String(this), i, _sRetour = "", _sDecimales = "";
	if (decimales == undefined) decimales = 2;
	if (signe == undefined) signe = '.';
	if (separateurMilliers == undefined) separateurMilliers = ' ';
	
	function separeMilliers (sNombre) {
		var sRetour = "";
		while (sNombre.length % 3 != 0) {
			sNombre = "0"+sNombre;
		}
		for (i = 0; i < sNombre.length; i += 3) {
			if (i == sNombre.length-1) separateurMilliers = '';
			sRetour += sNombre.substr(i, 3)+separateurMilliers;
		}
		while (sRetour.substr(0, 1) == "0") {
			sRetour = sRetour.substr(1);
		}
		return sRetour.substr(0, sRetour.lastIndexOf(separateurMilliers));
	}
	
	if (_sNombre.indexOf('.') == -1) {
		for (i = 0; i < decimales; i++) {
			_sDecimales += "0";
		}
		_sRetour = separeMilliers(_sNombre)+signe+_sDecimales;
	} else {
		var sDecimalesTmp = (_sNombre.substr(_sNombre.indexOf('.')+1));
		if (sDecimalesTmp.length > decimales) {
			var nDecimalesManquantes = sDecimalesTmp.length - decimales;
			var nDiv = 1;
			for (i = 0; i < nDecimalesManquantes; i++) {
				nDiv *= 10;
			}
			if( decimales > 0 ){
				_sDecimales = Math.round(Number(sDecimalesTmp) / nDiv);
			}else{
				_sDecimales = '';
			}
		}
		_sRetour = separeMilliers(_sNombre.substr(0, _sNombre.indexOf('.')))+String(signe)+_sDecimales;
	}
	
	if(_sRetour==""){
		_sRetour="0";
	}
	
	return _sRetour;
}



/**
 * @desc	verifie la saisie dans les cases contenant des pourcentages  
 * @param	srcObj : objet qui envois l'evenent onclick   evt : evenement
 * @return	true : la saisie est ok   false : elle ne l'est pas
 */
function verifPourcent(srcObj)
{
	// Variables annexes
	var i,somme=0,ch_current,base,i_srcObj;
	var mes = "La somme des pourcentages d'une ligne n'est pas correcte. \nElle dépasse 100% ou certain pourcentages sont inférieur à 0. \n\nNous alons ajuster votre dernière saisie afin que le total des pourcentages soit conforme.";
	var isFalse = false;
	// On verifie que la saisie est bien comprise entre 0 et 100 (%ages), sinon on corrige
	if (srcObj.value<0) srcObj.value=0;
	//else if (srcObj.value>100) srcObj.value=100;
	
	// On verifie aussi que la somme des champs ne depasse 100%, sinon on corrige
	i=1;
	base = srcObj.id.split("_")[0] + "_" + srcObj.id.split("_")[1] + "_"; // base des noms de champs
	i_srcObj= srcObj.id.split("_")[2]; // On evite d'appeler la fonction dans la boucle, indice champs actif
	
	
	while (i<9) 
	{
		ch_current = base + i; // construit la chaine nom du cham en cours
		if( i!=3 && i!=i_srcObj && document.getElementById(ch_current).value != "") 
		{

			somme = parseFloat(document.getElementById(ch_current).value) + somme;
			
			if (parseFloat(document.getElementById(ch_current).value) < 0) {
				// Cas théoriquement impossible sauf sur copier coller, on cherche des valeurs negatives
				// dans toutes les cases a chaque modif et si on en trouve, on les met a 0
				document.getElementById(ch_current).value = 0;
				isFalse=true;
			}

		}
		i++;
	}
	if (srcObj.value>(100-somme) && 100-somme>=0) {
		srcObj.value = (100-somme);
		isFalse=true;
	}
	else if(100-somme<0){
		srcObj.value = 0; // Cas theoriquement impossible, sauf si copier coller (somme depassant 100%)
		isFalse=true;
	}
	if(isFalse){
		//srcObj.value = 0;
		alert (mes);
		
	}
}

/**
 * @desc	verifie la saisie dans les cases contenant des pourcentages dan sle module 2 
 * @param	srcObj : objet qui envois l'evenent onclick   evt : evenement
 * @return	true : la saisie est ok   false : elle ne l'est pas
 */
function verifMod2Pourcent(srcObj)
{
	var i,somme=0,ch_current,base,i_srcObj;
	var mes = "La somme des pourcentages d'une ligne n'est pas correcte. \n Elle dépasse 100% ou certain pourcentages sont inférieur à 0";
	var isFalse = false;
	// On verifie que la saisie est bien comprise entre 0 et 100 (%ages), sinon on corrige
	if (srcObj.value<0) srcObj.value=0;
	//else if (srcObj.value>100) srcObj.value=100;
	
	// On verifie aussi que la somme des champs ne depasse 100%, sinon on corrige
	i=1;
	base = srcObj.id.split("_")[0] + "_" + srcObj.id.split("_")[1] + "_"; // base des noms de champs
	i_srcObj= srcObj.id.split("_")[2]; // On evite d'appeler la fonction dans la boucle, indice champs actif
	
	var max=5;
	
	
	if(srcObj.id.split("_")[1]=="6"){
		max=3;
	}
	if(srcObj.id.split("_")[1]=="7"){

		max=2;
	}
	
	while (i<max) 
	{
		ch_current = base + i; // construit la chaine nom du cham en cours
		//alert(srcObj.id+" -> "+ch_current);
		if( i!=i_srcObj && document.getElementById(ch_current).value != "") 
		{
			somme = parseFloat(document.getElementById(ch_current).value) + somme;
			
			if (parseFloat(document.getElementById(ch_current).value) < 0) {
				// Cas théoriquement impossible sauf sur copier coller, on cherche des valeurs negatives
				// dans toutes les cases a chaque modif et si on en trouve, on les met a 0
				document.getElementById(ch_current).value = 0;
				isFalse=true;
			}
		}
		i++;
	}
	if (srcObj.value>(100-somme) && 100-somme>=0) {
		//srcObj.value = (100-somme);
		isFalse=true;
	}
	else if(100-somme<0){
		//srcObj.value = 0; // Cas theoriquement impossible, sauf si copier coller (somme depassant 100%)
		isFalse=true;
	}
	if(isFalse){
		//srcObj.value = 0;
		alert (mes);
		
	}
}
/**
 * @desc	calcule, ou recalcule les champs lié a la somme des employés  
 * @param	champ : objet qui envois l'evenent onkeyup
 * @return	rien
 */
function updateVals(champ){
	var champTotal = document.getElementById("total");
	var champLocal = document.getElementById("local");
	var champExterne = document.getElementById("externe");
	
	switch (champ.name){//en fonction du champ qui appelle
		case "total":
			if (champLocal.value != ""){
				champExterne.value = parseFloat(champTotal.value)-parseFloat(champLocal.value);
			}else if(champExterne.value != ""){
				champLocal.value = parseFloat(champTotal.value)-parseFloat(champExterne.value);
			}
			break;
		case "local":
			if (champTotal.value != ""){
				champExterne.value = parseFloat(champTotal.value)-parseFloat(champLocal.value);
			}else if(champExterne.value != ""){
				champTotal.value = parseFloat(champLocal.value)+parseFloat(champExterne.value);
			}
			break;
		case "externe":
			if (champTotal.value != ""){
				champLocal.value = parseFloat(champTotal.value)-parseFloat(champExterne.value);
			}else if(champLocal.value != ""){
				champTotal.value = parseFloat(champLocal.value)+parseFloat(champExterne.value);
			}
			break;
	}
	
}

/**
 * @desc	appelle l'initialisation des toutes les moyennes du module
 * @param	aucun 
 * @return	rien
 */
function initToutesMoyennes(isExpert,isFirst){
	var numMoyenne = 1;
	var numForm = 2;
	//boucle sur tous les champs
	//alert("form2_moyenne_1_1"+"   ---   "+"form"+numForm+"_moyenne_"+numMoyenne+"_1");
	
	while(document.getElementById("form"+numForm+"_moyenne_"+numMoyenne+"_1")){
		
		while(document.getElementById("form"+numForm+"_moyenne_"+numMoyenne+"_1")){
			if(!isExpert){
				document.getElementById("form"+numForm+"_moyenne_"+numMoyenne+"_1").style.display="none";
				document.getElementById("form"+numForm+"_moyenne_"+numMoyenne+"_2").style.display="none";
			}
			
			initMoyenne(numMoyenne.toString(),numForm,isFirst);
			
			
			numMoyenne++;
		}
		numMoyenne=1;
		numForm++;
	}
	
}

/**
 * @desc	initialise une moyenne
 * @param	obj : objet div dans lequel est inscrit la moyenne
 * @return	rien
 */
function initMoyenne(obj,form,isFirst){
	//definition des sous chaines 
	
	var idVal="form"+form+"_";
	var moyenne1=0;
	var moyenne2=0;
	
	var num1=1;
	var num2=1;
	
	
	
	
	//calcul du nombre de valeur pour la moyenne locale
	while (checkB=document.getElementById(idVal+obj+"_1-"+num1)){
		if(checkB.checked){
			moyenne1++;
		}
		num1++;
	}
	num1--;
	
	//calcul du nombre de valeur pour la moyenne departementale
	while (checkB=document.getElementById(idVal+obj+"_2-"+num2)){
		if(checkB.checked){
			moyenne2++;
		}
		num2++;
	}
	num2--;
	
	//calcul des moyennes
	moyenne1=moyenne1/num1;
	moyenne2=moyenne2/num2;
	
	//resultat avec 2 chiffres apres la virgule
	if(moyenne1>0 && moyenne1<1){
		moyenne1=moyenne1.toPrecision(2);
	}
	if(moyenne2>0 && moyenne2<1){
		moyenne2=moyenne2.toPrecision(2);
	}
	
	//affectation des valeur aux div pour affichage
	document.getElementById("form"+form+"_moyenne_"+obj+"_1").innerHTML=moyenne1;
	document.getElementById("form"+form+"_moyenne_"+obj+"_2").innerHTML=moyenne2;
	
	

}

/**
 * @desc	update une moyenne d'apres la checkbox modifiée
 * @param	obj : objet inpiut checkbox qui vien d'etre modifié
 * @return	rien
 */
function updateMoyenne(obj){
	
	//definition des sous chaines 
	var tabName=obj.id.split("_");
	//alert(tabName.length);
	var num=1;

	document.getElementById(tabName[0]+"_"+"modif").style.visibility = "visible";
	saisieModif = true;

	var moyenne=0;
	//calcul du nombre de valeur
	
	while (checkB=document.getElementById(tabName[0]+"_"+tabName[1]+"_"+tabName[2].split("-")[0]+"-"+num)){
		if(checkB.checked){
			moyenne++;
		}
		num++;
	}
	num--;
	
	
	moyenne=moyenne/num;
	
	//resultat avec 2 chiffres apres la virgule
	if(moyenne>0 && moyenne<1){
		moyenne=moyenne.toPrecision(2);
	}
	
	document.getElementById(tabName[0]+"_moyenne_"+tabName[1]+"_"+tabName[2].split("-")[0]).innerHTML=moyenne;


}


/**
 * @desc	calcule le total des employés de l'entreprise par rapport aux deux champs 
 * @param	rien
 * @return	rien
 */
function calculeTotalSalarie(){
	var nbSalSP=0;
	var nbSalExt=0;
	
	if(document.getElementById("form1_2_1").value != ""){
		nbSalSP=parseInt(document.getElementById("form1_2_1").value);
	}
	
	if(document.getElementById("form1_3_1").value != ""){
		nbSalExt=parseInt(document.getElementById("form1_3_1").value);
	}

	

	

	
	var inputTotal = document.getElementById("form1_1_1");
	
	inputTotal.innerHTML=nbSalSP+nbSalExt;
}

/**
 * @desc	calcul le CA en Euro depuis une donnée en K€
 * @param	rien
 * @return	rien
 */
function calculeCa(obj){

	if(obj.value != ""){
		if (obj.id == "form1_2_2"){
			val = parseFloat(document.getElementById("form1_2_2").value);
			val = val / 1000;
// 			val = ""+val;
// 			posVirg = val.indexOf(".");
// 			val = val.substring(0,posVirg+2);
			
			document.getElementById("form1_1_2").value=val;
		}else if (obj.id == "form1_1_2"){
			val = parseFloat(document.getElementById("form1_1_2").value);
			val = val * 1000;
			document.getElementById("form1_2_2").value=val;
		}
	}else{
		document.getElementById("form1_1_2").value=0;
		document.getElementById("form1_2_2").value=0;
	}
	
}



/**
 *fonction formulaire inscription
 */


/**
 * @desc : fonction qui verifie les champs de l'inscription et qui fait la soumission du formulaire
 * @param : rien
 * @return : rien	 	 
 */	 	
function submitIncription(){
	var toReturn = true;
	var champEmail = 9;
	var champPwd = 11;
	var msg = "Les champs suivants sont incorrect ou vides : \n\n";
	var i = 1; 
	while(document.getElementById("ch_"+i)){
		if(document.getElementById("ch_"+i).value==""){
			msg += "\t- "+document.getElementById("ch_"+i).name+"\n";
			toReturn=false;
		}else{
			if(i==champEmail){
				if(!verifEmail(document.getElementById("ch_"+i))){
					msg += "\t- email incorrect\n";
					toReturn=false;
				}
			}
			if(i==champPwd){
				if(!verifIdentique(document.getElementById("ch_"+i),document.getElementById("ch_"+(i+1)))){
					msg += "\t- les mots passes ne correspondent pas \n";
					toReturn=false;
				}
			}
		}
		i++;
	}
	
	if(!toReturn){
		alert(msg);
	}
	
	return (toReturn);
}


/**
 * @desc : fonction qui verifie les champs de l'inscription et qui fait la soumission du formulaire
 * @param : rien
 * @return : rien	 	 
 */	 	
function submitAdminUtil(){
	var toReturn = true;
	var champEmail = 9;
	var champPwd = 11;
	var msg = "Les champs suivants sont incorrect ou vides : \n\n";
	var i = 1; 
	while(document.getElementById("ch_"+i)){
		if(document.getElementById("ch_"+i).value==""){
			msg += "\t- "+document.getElementById("ch_"+i).name+"\n";
			toReturn=false;
		}else{
			if(i==champEmail){
				if(!verifEmail(document.getElementById("ch_"+i))){
					msg += "\t- email incorrect\n";
					toReturn=false;
				}
			}
			
		}
		i++;
	}
	
	if(!toReturn){
		alert(msg);
	}
	
	return (toReturn);
}

/**
 * @desc : fonction qui verifie les champs des données générales et qui fait la soumission du formulaire
 * @param : rien
 * @return : rien	 	 
 */	 	
function submitLostpwd(){
	if(champ = document.getElementById("email")){
		valeur = champ.value;
		if(!verifEmail(document.getElementById("email"))){
			alert("l'adresse email est invalide");
			return (false);
		}
		return (true);
	}
}

/**
 * @desc : fonction qui verifie les champs des données générales et qui fait la soumission du formulaire
 * @param : rien
 * @return : rien	 	 
 */	 	
function submitAdminGen(){
	var toReturn = true;
	var msg = "Les champs suivants sont incorrect ou vides : \n\n";
	var i = 1; 
	while(document.getElementById("ch_"+i)){
		if(document.getElementById("ch_"+i).value==""){
			msg += "\t- "+document.getElementById("ch_"+i).name+"\n";
			toReturn=false;
		}else{
			
			
		}
		i++;
	}
	
	if(!toReturn){
		alert(msg);
	}
	
	return (toReturn);
}

/**
 * @desc : fonction qui verifie le champ E-mail du formulaire d'inscription
 * @param : un element HTML champ
 * @return : rien	 	 
 */
function verifEmail(srcObj){
	toReturn=true;
	if (srcObj.value.indexOf("@")<1){
		return(false);
	}
	if (srcObj.value.split("@")[1].indexOf(".")<1){
		return(false);
	}
	if (srcObj.value.indexOf(".")==srcObj.value.length-1){
		return(false);
	}
	return(true);
}


/**
 * @desc : fonction qui verifie si 2 champs son identiques
 * @param : 2 elements HTML champs à comparer
 * @return : rien	 	 
 */
function verifIdentique(srcObj1,srcObj2){
	toReturn=true;
	if (srcObj1.value!=srcObj2.value){
		toReturn=false;
	}
	return(toReturn);
}
	
/**
 * formulaire de contact
 */ 

	
/**
 * @desc : fonction qui verifie les champs du contact et qui fait la soumission du formulaire
 * @param : rien
 * @return : rien	 	 
 */	 	
function submitContact(){
	var toReturn = true;
	var champEmail = 9;
	var champNom = 1;
	var champPrenom = 2;
	var champPwd = 11;
	var msg = "Les champs suivants sont incorrect ou vides : \n\n";
	var i = 1; 
	while(document.getElementById("ch_"+i)){
		if(document.getElementById("ch_"+i).value=="" ){
			if(i == champNom || i==champPrenom || i==champEmail){
				msg += "\t- "+document.getElementById("ch_"+i).name+"\n";
				toReturn=false;
			}
			
		}else{
			if(i==champEmail){
				if(!verifEmail(document.getElementById("ch_"+i))){
					msg += "\t- email incorrect\n";
					toReturn=false;
				}
			}
			if(i==champPwd){
				if(!verifIdentique(document.getElementById("ch_"+i),document.getElementById("ch_"+(i+1)))){
					msg += "\t- les mots passes ne correspondent pas \n";
					toReturn=false;
				}
			}
		}
		i++;
	}
	
	if(!toReturn){
		alert(msg);
	}
	
	return (toReturn);
}
	
	
/**
 *fonction formulaire module 3
 */ 

/**
 * @desc	met a jour de l'ensemble des valeurs des champs du formulaires du module 3
 * @param	rien
 * @return	rien
 */
function updateValMod3Form(srcObj)
{

	// Initialisation des variables de sasie a 0
	// --- Formulaire 1
	var mod3_coutAmenFonc_SurfAmen = 0;
	var mod3_coutAmenFonc_coutViabPrim = 0;
	var mod3_coutAmenFonc_coutViabSec = 0;
	var mod3_coutAmenFonc_taux_com = 0;
	var mod3_coutAmenFonc_taux_comcom = 0;
	var mod3_coutAmenFonc_taux_CG = 0;
	var mod3_coutAmenFonc_taux_CReg = 0;
	var mod3_coutAmenFonc_taux_etat = 0;
	var mod3_coutAmenFonc_taux_UE = 0;
	var mod3_coutAmenFonc_taux_RegPart = 0;
	var mod3_coutAmenFonc_prixTerrainM2 = 0;
	var mod3_coutAmenFonc_prixTerrainM2Rep_com = 0;
	var mod3_coutAmenFonc_prixTerrainM2Rep_comcom = 0;
	// --- Formulaire 2
	var mod3_coutBati_SurfAmen = 0;
//	var mod3_coutBati_SHONBati = 0;
	var mod3_coutBati_coutAmenBati = 0;
	var mod3_coutBati_repartition_com = 0;
	var mod3_coutBati_repartition_comcom = 0;
	var mod3_coutBati_repartition_CG = 0;
	var mod3_coutBati_repartition_CReg = 0;
	var mod3_coutBati_repartition_etat = 0;
	var mod3_coutBati_repartition_UE = 0;
	var mod3_coutBati_repartition_RegPart = 0;
	var mod3_coutBati_repartition_ent = 0;		
		
	// Recuperation des valeurs quand les champs de saisie sont remplis
	// --- Formulaire 1
	if(document.getElementById("form1_1_1").value != "") {
		mod3_coutAmenFonc_SurfAmen = parseFloat(document.getElementById("form1_1_1").value);
	}
	if(document.getElementById("form1_2_1").value != "") {
		mod3_coutAmenFonc_coutViabPrim = parseFloat(document.getElementById("form1_2_1").value);
	}
	if(document.getElementById("form1_3_1").value != "") {
		mod3_coutAmenFonc_coutViabSec = parseFloat(document.getElementById("form1_3_1").value);
	}
	if(document.getElementById("form1_6_1").value != "") {
		mod3_coutAmenFonc_taux_com = parseFloat(document.getElementById("form1_6_1").value);
	}
	if(document.getElementById("form1_6_2").value != "") {
		mod3_coutAmenFonc_taux_comcom = parseFloat(document.getElementById("form1_6_2").value);
	}
	if(document.getElementById("form1_6_4").value != "") {
		mod3_coutAmenFonc_taux_CG = parseFloat(document.getElementById("form1_6_4").value);
	}
	if(document.getElementById("form1_6_5").value != "") {
		mod3_coutAmenFonc_taux_CReg = parseFloat(document.getElementById("form1_6_5").value);
	}
	if(document.getElementById("form1_6_6").value != "") {
		mod3_coutAmenFonc_taux_etat = parseFloat(document.getElementById("form1_6_6").value); 
	}
	if(document.getElementById("form1_6_7").value != "") {
		mod3_coutAmenFonc_taux_UE = parseFloat(document.getElementById("form1_6_7").value);
	}
	if(document.getElementById("form1_6_8").value != "") {
		mod3_coutAmenFonc_taux_RegPart = parseFloat(document.getElementById("form1_6_8").value);
	}
	if(document.getElementById("form1_8_1").value != "") {
		mod3_coutAmenFonc_prixTerrainM2 = parseFloat(document.getElementById("form1_8_1").value);
	}
	if(document.getElementById("form1_9_1").value != "") {
		mod3_coutAmenFonc_prixTerrainM2Rep_com = parseFloat(document.getElementById("form1_9_1").value);
	}
	if(document.getElementById("form1_9_2").value != "") {
		mod3_coutAmenFonc_prixTerrainM2Rep_comcom = parseFloat(document.getElementById("form1_9_2").value);
	}
	// --- Formulaire 2
		if(document.getElementById("form2_2_1").value != "") {
		mod3_coutBati_SurfAmen = parseFloat(document.getElementById("form2_2_1").value);
	}
//	if(document.getElementById("form2_2_1").value != "") {
//		mod3_coutBati_SHONBati = parseFloat(document.getElementById("form2_2_1").value);
//	}
	if(document.getElementById("form2_3_1").value != "") {
		mod3_coutBati_coutAmenBati = parseFloat(document.getElementById("form2_3_1").value);
	}
	if(document.getElementById("form2_5_1").value != "") {
		mod3_coutBati_repartition_com = parseFloat(document.getElementById("form2_5_1").value);
	}
	if(document.getElementById("form2_5_2").value != "") {
		mod3_coutBati_repartition_comcom = parseFloat(document.getElementById("form2_5_2").value);
	}
	if(document.getElementById("form2_5_4").value != "") {
		mod3_coutBati_repartition_CG = parseFloat(document.getElementById("form2_5_4").value);
	}
	if(document.getElementById("form2_5_5").value != "") {
		mod3_coutBati_repartition_CReg = parseFloat(document.getElementById("form2_5_5").value);
	}
	if(document.getElementById("form2_5_6").value != "") {
		mod3_coutBati_repartition_etat = parseFloat(document.getElementById("form2_5_6").value);
	}
	if(document.getElementById("form2_5_7").value != "") {
		mod3_coutBati_repartition_UE = parseFloat(document.getElementById("form2_5_7").value);
	}
	if(document.getElementById("form2_5_8").value != "") {
		mod3_coutBati_repartition_RegPart = parseFloat(document.getElementById("form2_5_8").value);
	}
	if(document.getElementById("form2_5_9").value != "") {
		mod3_coutBati_repartition_ent = parseFloat(document.getElementById("form2_5_9").value);
	}
	
	// Calcul des valeurs pour les champs d'affichage
	
	//nombreFormate(0, '', ' ')
	
	// --- Formulaire 1
	var val_form1_4_1 = mod3_coutAmenFonc_coutViabPrim + mod3_coutAmenFonc_coutViabSec;
	var val_form1_5_1 = mod3_coutAmenFonc_SurfAmen * val_form1_4_1;
	var val_form1_6_3 = mod3_coutAmenFonc_taux_com + mod3_coutAmenFonc_taux_comcom;
	var val_form1_7_1 = val_form1_5_1 * (mod3_coutAmenFonc_taux_com/100);
	var val_form1_7_2 = val_form1_5_1 * (mod3_coutAmenFonc_taux_comcom/100);
	var val_form1_7_3 = val_form1_7_1 + val_form1_7_2;
	var val_form1_7_4 = val_form1_5_1 * (mod3_coutAmenFonc_taux_CG/100);
	var val_form1_7_5 = val_form1_5_1 * (mod3_coutAmenFonc_taux_CReg/100);
	var val_form1_7_6 = val_form1_5_1 * (mod3_coutAmenFonc_taux_etat/100);
	var val_form1_7_7 = val_form1_5_1 * (mod3_coutAmenFonc_taux_UE/100);
	var val_form1_7_8 = val_form1_5_1 * (mod3_coutAmenFonc_taux_RegPart/100);
	var val_form1_8_9 = mod3_coutAmenFonc_SurfAmen * mod3_coutAmenFonc_prixTerrainM2;
	var val_form1_9_3 = mod3_coutAmenFonc_prixTerrainM2Rep_com + mod3_coutAmenFonc_prixTerrainM2Rep_comcom;
	
	//affectation des valeurs pour les maitres d'oeuvres
	if(document.getElementById("MO1").checked){
		document.getElementById("form1_9_1").value=val_form1_8_9;
		document.getElementById("form1_9_2").value=0;
	}else if(document.getElementById("MO2").checked){
		document.getElementById("form1_9_2").value=val_form1_8_9;
		document.getElementById("form1_9_1").value=0;
	}

	
	
	// Les calculs sont absents du fichier excel pour ces dernieres variables : initialisation a 0 en attendant
	var val_form1_9_4 = 0;
	var val_form1_9_5 = 0;
	var val_form1_9_6 = 0;
	var val_form1_9_7 = 0;
	var val_form1_9_8 = 0;
	// --- Formulaire 2
	var val_form2_4_1 = mod3_coutBati_SurfAmen * mod3_coutBati_coutAmenBati;
	
	
	
	var val_form2_5_3 = mod3_coutBati_repartition_com + mod3_coutBati_repartition_comcom;
	var val_form2_6_1 = val_form2_4_1 * (mod3_coutBati_repartition_com/100);
	var val_form2_6_2 = val_form2_4_1 * (mod3_coutBati_repartition_comcom/100);
	var val_form2_6_3 = val_form2_6_1 + val_form2_6_2;
	var val_form2_6_4 = val_form2_4_1 * (mod3_coutBati_repartition_CG/100);
	var val_form2_6_5 = val_form2_4_1 * (mod3_coutBati_repartition_CReg/100);
	var val_form2_6_6 = val_form2_4_1 * (mod3_coutBati_repartition_etat/100);
	var val_form2_6_7 = val_form2_4_1 * (mod3_coutBati_repartition_UE/100);
	var val_form2_6_8 = val_form2_4_1 * (mod3_coutBati_repartition_RegPart/100);
	var val_form2_6_9 = val_form2_4_1 * (mod3_coutBati_repartition_ent/100);
	// --- Formulaire 3
	var val_form3_1_1 = val_form1_5_1 + val_form2_4_1;
	// --- Formulaire 4
	var val_form4_1_1 = val_form1_7_1 - mod3_coutAmenFonc_prixTerrainM2Rep_com;	
	var val_form4_1_2 = val_form1_7_2 - mod3_coutAmenFonc_prixTerrainM2Rep_comcom;
	var val_form4_1_3 = val_form4_1_1 + val_form4_1_2;
	var val_form4_1_4 = val_form1_7_4 - val_form1_9_4;
	var val_form4_1_5 = val_form1_7_5 - val_form1_9_5;
	var val_form4_1_6 = val_form1_7_6 - val_form1_9_6;
	var val_form4_1_7 = val_form1_7_7 - val_form1_9_7;
	var val_form4_1_8 = val_form1_7_8 - val_form1_9_8;
	var val_form4_1_9 = val_form1_8_9;
	var val_form4_2_1 = val_form2_6_1;
	var val_form4_2_2 = val_form2_6_2;
	var val_form4_2_3 = val_form4_2_1 + val_form4_2_2;
	var val_form4_2_4 = val_form2_6_4;
	var val_form4_2_5 = val_form2_6_5;
	var val_form4_2_6 = val_form2_6_6;
	var val_form4_2_7 = val_form2_6_7;
	var val_form4_2_8 = val_form2_6_8;
	var val_form4_2_9 = val_form2_6_9;
	var val_form4_3_1 = val_form4_1_1 + val_form4_2_1;
	var val_form4_3_2 = val_form4_1_2 + val_form4_2_2;
	var val_form4_3_3 = val_form4_1_3 + val_form4_2_3;
	var val_form4_3_4 = val_form4_1_4 + val_form4_2_4;
	var val_form4_3_5 = val_form4_1_5 + val_form4_2_5;
	var val_form4_3_6 = val_form4_1_6 + val_form4_2_6;
	var val_form4_3_7 = val_form4_1_7 + val_form4_2_7;
	var val_form4_3_8 = val_form4_1_8 + val_form4_2_8;
	var val_form4_3_9 = val_form4_1_9 + val_form4_2_9;
	
	
	
	//formatage des résultats
	//nombreFormate(0, '', ' ')
	document.getElementById("form1_4_1").innerHTML = val_form1_4_1.nombreFormate(0, '', ' ') + " &euro;/m<sup>2</sup>";
	document.getElementById("form1_5_1").innerHTML = val_form1_5_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_6_3").innerHTML = val_form1_6_3.nombreFormate(0, '', ' ') + " %";
	document.getElementById("form1_7_1").innerHTML = val_form1_7_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_2").innerHTML = val_form1_7_2.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_3").innerHTML = val_form1_7_3.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_4").innerHTML = val_form1_7_4.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_5").innerHTML = val_form1_7_5.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_6").innerHTML = val_form1_7_6.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_7").innerHTML = val_form1_7_7.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_7_8").innerHTML = val_form1_7_8.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_8_9").innerHTML = val_form1_8_9.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_9_3").innerHTML = val_form1_9_3.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_9_4").innerHTML = val_form1_9_4.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_9_5").innerHTML = val_form1_9_5.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_9_6").innerHTML = val_form1_9_6.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_9_7").innerHTML = val_form1_9_7.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form1_9_8").innerHTML = val_form1_9_8.nombreFormate(0, '', ' ') + " &euro;";
	
	// --- Formulaire 2
	document.getElementById("form2_4_1").innerHTML = val_form2_4_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_5_3").innerHTML = val_form2_5_3.nombreFormate(0, '', ' ') + " %";
	document.getElementById("form2_6_1_res").innerHTML = val_form2_6_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_2").innerHTML = val_form2_6_2.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_3").innerHTML = val_form2_6_3.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_4").innerHTML = val_form2_6_4.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_5").innerHTML = val_form2_6_5.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_6").innerHTML = val_form2_6_6.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_7").innerHTML = val_form2_6_7.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_8").innerHTML = val_form2_6_8.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form2_6_9").innerHTML = val_form2_6_9.nombreFormate(0, '', ' ') + " &euro;";
	
	// --- Formulaire 3
	document.getElementById("form3_1_1").innerHTML = val_form3_1_1.nombreFormate(0, '', ' ') + " &euro;";
	


	// --- Formulaire 4
	document.getElementById("form4_1_1").innerHTML = val_form4_1_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_2").innerHTML = val_form4_1_2.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_3").innerHTML = val_form4_1_3.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_4").innerHTML = val_form4_1_4.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_5").innerHTML = val_form4_1_5.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_6").innerHTML = val_form4_1_6.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_7").innerHTML = val_form4_1_7.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_8").innerHTML = val_form4_1_8.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_1_9").innerHTML = val_form4_1_9.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_1").innerHTML = val_form4_2_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_2").innerHTML = val_form4_2_2.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_3").innerHTML = val_form4_2_3.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_4").innerHTML = val_form4_2_4.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_5").innerHTML = val_form4_2_5.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_6").innerHTML = val_form4_2_6.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_7").innerHTML = val_form4_2_7.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_8").innerHTML = val_form4_2_8.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_2_9").innerHTML = val_form4_2_9.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_1").innerHTML = val_form4_3_1.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_2").innerHTML = val_form4_3_2.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_3").innerHTML = val_form4_3_3.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_4").innerHTML = val_form4_3_4.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_5").innerHTML = val_form4_3_5.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_6").innerHTML = val_form4_3_6.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_7").innerHTML = val_form4_3_7.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_8").innerHTML = val_form4_3_8.nombreFormate(0, '', ' ') + " &euro;";
	document.getElementById("form4_3_9").innerHTML = val_form4_3_9.nombreFormate(0, '', ' ') + " &euro;";
	
	
	//changeMaitreOuvrage();


}

/**
 * @desc	affiche le nombre voulu de décimales apres la virgule pour un float, avec ou sans les 0
 * @param	valeur : le nombre, decimales : le nombre de decimales, zeros : booleen, afficher ou non les 0
 * @return	le nombre reformaté, sous forme d'une chaine de caracteres
 */
function formatage_reel(valeur,decimales,zeros)
{
	// variables annexes
	var coef,i,zero_to_add;
	
	// Arrondi a n chiffres significatifs
	coef = Math.pow(10,decimales);
	valeur = Math.round(valeur*coef)/coef;
	
	// ajoute les 0 pour completer si param3 = true
	if(zeros == true)
	{
		valeur = "" + valeur;
		if(	valeur.indexOf('.')==-1 ) // pas de . dans le nombre
		{
			valeur += ".";
			for(i=1;i<=decimales;i++) valeur += "0";
		} 
		else if ( valeur.length-(valeur.indexOf('.')+1) < decimales)
		{
			zero_to_add = decimales - (valeur.length-(valeur.indexOf('.')+1));
			//alert(zero_to_add);
			while (zero_to_add > 0)
			{
				valeur += "0";
				zero_to_add--;
			}
		}
	}
	
	// Renvoie le nombre reformaté, en float
	return valeur;
}

/**
 * @desc	récupère toutes les valeurs des form de la page, les stocke et construit  un formulaire masqué pour les envoyer a la base de données
 * @param	rien
 * @return	rien
 */
function submitModule(idSauv)
{

	numForm = 1;
	infoShow('Sauvegarde en cour !','save');
	while(document.getElementById("form"+numForm)){
		//alert("form"+numForm);
		submitForm(numForm,idSauv);
		numForm++;
	}
	submitForm("save",idSauv);
	return(true);
}

/**
 * @desc	récupère les valeurs d'un formulaire et l'envoie a une page php
 * @param	numero du formulaire concerné
 * @return	rien
 */
function submitForm(numForm,idSauv)
{
	/* 
		variables de parcours
			l = ligne en cours
			c = colonne en cours
			s = section (special checkboxes)
		Initialisées a 1 a chaque entrée de boucle pour etre sur le premier element
	*/
	var toReturn=true;
	var l,c,s;
	
	infoShow('Sauvegarde en cour !','save');
	// Autres variables
	var varToSend = ""; // Contiendra le code du formulaire caché
	var idCourant = ""; // Id du champ en cours de traitement
	var nomCourant = ""; // Nom du champ en cours de traitement
	var checkB; // Checkbox en cours de traitement
	var hiddenForm; // Formulaire caché a construire
	
	// --- Partie de traitement des champs de saisie --- //
	// parcours des lignes
	l=1;
	//	varToSend+="'";
	
	while ( document.getElementById("form" + numForm + "_" + l + "_1") )
	{
		while ( document.getElementById("form" + numForm + "_" + l + "_1") )
		{
			// parcours des colonnes
			c=1;
			while ( document.getElementById("form" + numForm + "_" + l + "_" + c) )
			{
				idCourant = "form" + numForm + "_" + l + "_" + c;
				valCourant = document.getElementById(idCourant).value;
				if ( valCourant != "" && valCourant != undefined )
				{
					nomCourant = document.getElementById(idCourant).name;
					if(varToSend.length>1){
						varToSend += "&";
						
					}
					varToSend += (nomCourant+"="+valCourant);
					//alert(nomCourant+" - "+valCourant);
				}
				c++;
			}
			l++;
		}
		
	}
	

	
	// --- Partie des checkboxes (speciale pour le module 2) --- //
	// Deuxieme boucle : parcours des sections
	s=1;

	while ( document.getElementById("form" + numForm + "_" + s + "_1-1") )
	{
		// Troisieme boucle : parcours des lignes
		l=1;
		while ( document.getElementById("form" + numForm + "_" + s + "_1-" + l) )
		{
			// Quatrieme boucle : parcours des colonnes
			c=1;
			while ( document.getElementById("form" + numForm + "_" + s + "_" + c + "-" + l) )
			{
				idCourant = "form" + numForm + "_" + s + "_" + c + "-" + l;
				// Si checkbox cochée : 1, si décochée : 0
				if ( checkB = document.getElementById(idCourant).checked ) valCourant = 1;
				else valCourant = 0;
				
				nomCourant = document.getElementById(idCourant).name;
				
				if(varToSend.length>1){
					varToSend += "&";
				}
				varToSend += (nomCourant+"="+valCourant);
				
				c++;
			}
			l++;
		}
		s++;
	}

	// --- Traitement des données --- //
	
	// Affiche un ecran de chargement
// 	document.getElementById("chargement").innerHTML = "Enregistrement en cours...";
// 	document.getElementById("chargement").style.display = "block";
	infoShow('Enregistrement en cours...','save');
	// Creation objet, ouverture connexion
	var xhr;
	if (window.XMLHttpRequest)
	{ 
    	xhr = new XMLHttpRequest(); //  Firefox, Safari, ...
		//netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
	} 
	else if (window.ActiveXObject) //  Version Active
   {
      xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer 
   }
   // Attente de la réponse
   xhr.onreadystatechange = function()
   { 
   		// instructions de traitement de la réponse };
		if (xhr.readyState == 4) // Message reçu
		{
			
			//document.getElementById("chargement").innerHTML =  xhr.responseText;
			setTimeout("infoShow('"+xhr.responseText+"','save');",1000);
			
			if(xhr.responseText.split(" ")[0] == "Donn&eacute;es"){	
				document.getElementById("form"+numForm+"_modif").style.visibility="hidden";
				saisieModif = false;
				
			}else{
				toReturn=false;
			}
			// Ferme l'ecran de chargement
		
			setTimeout("saveValeurs=false;infoHide();",4000);
			
			//document.getElementById("chargement").style.display = "none";
		}
		else
		{
			//a voir si on retourne un evenement

		}
		
	};
	varToSend += "&idSauvegarde="+idSauv;
		
	if(numForm=="save"){
		
		varToSend = "idSauvegarde="+idSauv;
		
		//alert("sauvegarde : "+varToSend);
		
		xhr.open("POST", "sauvegardeSave.php",  true); 
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    xhr.setRequestHeader("Content-length", varToSend.length);
	    xhr.setRequestHeader("Connection", "close");
		xhr.send(varToSend); 
	}else{
// 		if(numForm==2){
// 			alert("validation : "+varToSend);
// 		}
		xhr.open("POST", "sauvegardeForm.php",  true); 
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    xhr.setRequestHeader("Content-length", varToSend.length);
	    xhr.setRequestHeader("Connection", "close");
		xhr.send(varToSend); 
	}
	
	return(toReturn);
	
}


/**
 * @desc	récupère les valeurs d'un formulaire de parametre et l'envoie a une page php
 * @param	numero du formulaire concerné
 * @return	rien
 */
function submitFormParam(numForm,idUtil)
{


	/* 
		variables de parcours
			l = ligne en cours
			c = colonne en cours
			s = section (special checkboxes)
		Initialisées a 1 a chaque entrée de boucle pour etre sur le premier element
	*/
	var l,c,s;
	
	// Autres variables
	var varToSend = ""; // Contiendra le code du formulaire caché
	var idCourant = ""; // Id du champ en cours de traitement
	var nomCourant = ""; // Nom du champ en cours de traitement
	var checkB; // Checkbox en cours de traitement
	var hiddenForm; // Formulaire caché a construire
	
	// --- Partie de traitement des champs de saisie --- //
	// parcours des lignes
	l=1;
	//	varToSend+="'";
	

	while ( document.getElementById("form" + numForm + "_" + l + "_1") )
	{
		// parcours des colonnes
		c=1;
		while ( document.getElementById("form" + numForm + "_" + l + "_" + c) )
		{
			idCourant = "form" + numForm + "_" + l + "_" + c;
			valCourant = document.getElementById(idCourant).value;
			if ( valCourant != "" && valCourant != undefined )
			{
				nomCourant = document.getElementById(idCourant).name;
				if(varToSend.length>1){
					varToSend += "&";
					
				}
				varToSend += (nomCourant+"="+valCourant);
			}
			c++;
		}
		l++;
	}
		
	

// --- Traitement des données --- //
	
	// Affiche un ecran de chargement
// 	document.getElementById("chargement").innerHTML = "Enregistrement en cours...";
// 	document.getElementById("chargement").style.display = "block";
	
	infoShow('Enregistrement en cours...','save');
	
	// Creation objet, ouverture connexion
	var xhr;
	if (window.XMLHttpRequest)
	{ 
    	xhr = new XMLHttpRequest(); //  Firefox, Safari, ...
		//netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
	} 
	else if (window.ActiveXObject) //  Version Active
   {
      xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer 
   }
   // Attente de la réponse
   xhr.onreadystatechange = function()
   { 
   		// instructions de traitement de la réponse };
		if (xhr.readyState == 4) // Message reçu
		{
			//document.getElementById("chargement").innerHTML =  xhr.responseText;
			setTimeout("infoShow('"+xhr.responseText+"','save');",1000);
			if(xhr.responseText.split(" ")[0] == "Donn&eacute;es"){	
				document.getElementById("form"+numForm+"_modif").style.visibility="hidden";
				saisieModif = false;
				setTimeout('saveValeurs=false;infoHide();',3000);
				return (true);
			}else{
				setTimeout('saveValeurs=false;infoHide();',3000);
				return (false);
			}
			// Ferme l'ecran de chargement
			
			
			
			
			//document.getElementById("chargement").style.display = "none";
		}
		else
		{
			//a voir si on retourne un evenement

		}
		
	};
	varToSend += "&idUtil="+idUtil;
		
// 	if(numForm=="save"){
// 		
// 		varToSend = "idUtil="+idUtil;
// 		
// 		//alert("sauvegarde : "+varToSend);
// 		
// 		xhr.open("POST", "paramSave.php",  true); 
// 		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// 	    xhr.setRequestHeader("Content-length", varToSend.length);
// 	    xhr.setRequestHeader("Connection", "close");
// 		xhr.send(varToSend); 
// 	}else{
// 		if(numForm==2){
// 			alert("validation : "+varToSend);
// 		}
		xhr.open("POST", "paramForm.php",  true); 
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");

	    xhr.setRequestHeader("Content-length", varToSend.length);
	    xhr.setRequestHeader("Connection", "close");
		xhr.send(varToSend); 
// 	}

}



/**
 * @desc	récupère les valeurs d'un formulaire de parametre et l'envoie a une page php
 * @param	numero du formulaire concerné
 * @return	rien
 */
function submitFullParam(numForm,idUtil)
{
	numForm = 1;
	while(document.getElementById("form"+numForm)){
		//alert("form"+numForm);
		submitForm(numForm,idSauv);
		numForm++;
	}
	return (true);
}


// test affichage du splash
function test()
{
	var i=0;
	var p;
	
	//document.getElementById("chargement").style.display = "block";
	//document.getElementById("chargement").style.display = "none";
}

/**
 * @desc	ferme ou ouvre un menu de resultats
 * @param	objet lien de tete 
 * @return	rien
 */
function changeOpenStateMenu(obj){
	if(document.getElementById(obj.id+"_List").style.display == "none"){
		document.getElementById(obj.id+"_List").style.display = "block";
		document.getElementById(obj.id+"_img").src = "img/menuResMoins.gif";
	}else{
		document.getElementById(obj.id+"_List").style.display = "none";
		document.getElementById(obj.id+"_img").src = "img/menuResPlus.gif";
	}
}

/**
* @desc : place l'info bulle en fonction du curseur de la souris
* @param
* @return rien
*/
function position(e){
// 	x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
// 	y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
	
	if(navigator.appName.substring(0,3) == "Net"){
		x = e.pageX;
		y = e.pageY;
	}else{
		//alert(document.body.scrollTop);
		x = event.x+document.documentElement.scrollLeft;
		y = event.y+document.documentElement.scrollTop;
	}

	//if(document.getElementById("infoBulle")){
		
		divInfo = document.getElementById("infoBulle");
		//divInfo.innerHTML = document.getElementById("infoBulle").style.margin-top;
		//if(infoIsVisible){
			divInfo.style.top = y+15+"px";
			divInfo.style.left = x+15+"px";
		//}else{
			//divInfo.style.top = "0px";
			//divInfo.style.left = "0px";
		//}
		
	//}
}

/**
* @desc : Affiche l'info bulle
* @param msg : message à afficher
* @return rien
*/
function infoShow(){
	infoIsVisible=true;

	a = infoShow.arguments;
	msg="";
	divInfo = document.getElementById("infoBulle");
	if(a[0]){
		msg=a[0];
	}
	
	
	
	switch (a[1]){
		case "note":
			
			if(!saveValeurs){
				divInfo.innerHTML = msg;
				divInfo.className="infoBulle1";
				document.body.style.cursor="help";
				divInfo.style.display = "block";
				divInfo.style.visibility = "visible";
			}
			break;
		case "warning":
			if(saisieModif && !saveValeurs){
				divInfo.innerHTML = msg;
				divInfo.className="infoBulle2";
				document.body.style.cursor="help";
				divInfo.style.display = "block";
				divInfo.style.visibility = "visible";
			}
			
			break;
		case "warningRes":
			if(saisieModif && !saveValeurs){
				divInfo.innerHTML = msg;
				divInfo.className="infoBulle3";
				document.body.style.cursor="help";
				divInfo.style.display = "block";
				divInfo.style.visibility = "visible";
			}
			break;
		case "save":
			//if(saisieModif){
			saveValeurs = true;
			divInfo.innerHTML = msg;
			divInfo.className="infoBulle4";
			//document.body.style.cursor="help";
			divInfo.style.display = "block";
			divInfo.style.visibility = "visible";
			//}
			break;
		case "system":
				if(!saveValeurs){
				divInfo.innerHTML = msg;
				divInfo.className="infoBulle5";
				document.body.style.cursor="help";
				divInfo.style.display = "block";
				divInfo.style.visibility = "visible";
			}
			break;
		default :
			divInfo.innerHTML = msg;
			divInfo.className="infoBulle";
			divInfo.style.display = "block";
			divInfo.style.visibility = "visible";
			
		
	}
// 	if(a[1]=="note"){
// 		divInfo.className="infoBulle1";
// 		document.body.style.cursor="help";
// 	}else{
// 		divInfo.className="infoBulle";
// 	}
	
	
}

/**
* @desc : Cache l'info bulle
* @param
* @return rien
*/
function infoHide(){
	if(!saveValeurs){
		infoIsVisible=false;
		
		divInfo = document.getElementById("infoBulle");
		divInfo.innerHTML = "";
		divInfo.style.display = "none";
		divInfo.style.visibility = "hidden";
		
		document.body.style.cursor="auto";
	}
}


/**
 * @desc	récupère les valeurs d'un formulaire et l'envoie a une page php
 * @param	numero du formulaire concerné
 * @return	rien
 */
function submitParamsTotal(idSauv){
  i=1;
  while(formParam=document.getElementById("form"+i)){
    submitFormParam(i,idSauv);
    i++;
  }
	return(true);
}




/**
* @desc : Fonction qui coche toutes les checkbox d'une colonne
* @param numForm : numero du formulaire
* 		 col     : numero de la colonne cochée
* 		 nbGrp   : nombre de groupe dans le formulaire
* @return : rien
*
* @acces : public
* @date creation : 25.09.07
* @date revision : 25.09.07
*/
function cocher_colonne(numForm,col,nbGrp,isExpert){
	// numero de laligne
	var line = 0;
	
	// debut du nom des checkbox
	var nom_checkBox = "form"+numForm+"_";
	
	// parcours de tous les groupes de checkbox du formulaire numForm
	for(i=1;i<=nbGrp;i++){
		line = 1;
		
		// parcours des checkbox du groupe tant qu'il y en a
		while(checkBox = document.getElementById(nom_checkBox+i+"_"+col+"-"+line)){
			
			// test si la colonne cochée est la colonne "local"
			if(col == 1){
				checkBox.checked = document.getElementById(nom_checkBox+"loc").checked;
				
				// test si les deux colonnes sont cochées pour cocher les checkbox des groupes
				if(document.getElementById(nom_checkBox+"dep").checked && document.getElementById(nom_checkBox+"loc").checked)
					document.getElementById("form"+numForm+"_grp"+i).checked = true;
				else
					document.getElementById("form"+numForm+"_grp"+i).checked = false;
					
			// test si la colonne cochée est la colonne "département"
			}else{
				checkBox.checked = document.getElementById(nom_checkBox+"dep").checked;
				
				// test si les deux colonnes sont cochées pour cocher les checkbox des groupes
				if(document.getElementById(nom_checkBox+"dep").checked && document.getElementById(nom_checkBox+"loc").checked)
					document.getElementById("form"+numForm+"_grp"+i).checked = true;
				else
					document.getElementById("form"+numForm+"_grp"+i).checked = false;
			}
			line++;
		}
	}
	document.getElementById("form"+numForm+"_"+"modif").style.visibility = "visible";
	saisieModif = true;

	initToutesMoyennes(isExpert);
}

/**
* @desc : Fonction qui coche toutes les checkbox d'un groupe
* @param numForm : numero du formulaire
* 		 numGrp : numero du groupe de checkbox
* @return : rien
*
* @acces : public
* @date creation : 25.09.07
* @date revision : 25.09.07
*/
function cocher_groupe(numForm,numGrp,isExpert){
	var line=1;
	var nom_checkBox = "form"+numForm+"_"+numGrp+"_";
	for(i=1;i<=2;i++){
		line=1;
		while(checkBox = document.getElementById(nom_checkBox+i+"-"+line)){
			checkBox.checked = document.getElementById("form"+numForm+"_grp"+numGrp).checked;
			line++;
		}
	}
	
	document.getElementById("form"+numForm+"_"+"modif").style.visibility = "visible";
	saisieModif = true;
	
	initToutesMoyennes(isExpert)
}

/**
* @desc : Fonction qui coche actualise les valeurs de maitres d'ouvrage module 3
* @param numForm : objet qui apelle
* 		 numGrp : numero du groupe de checkbox
* @return : rien
*
* @acces : public
* @date creation : 05.10.07
* @date revision : 05.10.07
*/
function changeMaitreOuvrage(structure){
	updateValMod3Form();
	//alert(structure);
	if (structure==undefined){
		if(document.getElementById("MO1").checked){
			structure = "com";
		}else if (document.getElementById("MO2").checked){
			structure = "comcom";
		}else if (document.getElementById("MO3").checked){
			structure = "dep";
		}
	}
	switch(structure){
		case "com":
			document.getElementById("MO1").checked=true;
			document.getElementById("form1_9_1_res").innerHTML=document.getElementById("form1_8_9").innerHTML;
			document.getElementById("form1_9_2_res").innerHTML="0 €";
			break;
		case "comcom":
			document.getElementById("MO2").checked=true;
			document.getElementById("form1_9_2_res").innerHTML=document.getElementById("form1_8_9").innerHTML;
			document.getElementById("form1_9_1_res").innerHTML="0 €";
			break;
		case "dep":
			document.getElementById("MO3").checked=true;
			break;
		
	}
	updateValMod3Form();
}

/**
* @desc : Fonction qui coche le bon radio bouton pour désigner le maire d'oeuvre
* @param numForm : objet qui apelle
* 		 numGrp : numero du groupe de checkbox
* @return : rien
*
* @acces : public
* @date creation : 05.10.07
* @date revision : 05.10.07
*/
function initMaitreOuvrage(){
	//updateValMod3Form();
	//alert(structure);

	if(document.getElementById("form1_9_1").value!="0"){
		document.getElementById("MO1").checked=true;
		document.getElementById("form1_9_1_res").innerHTML=document.getElementById("form1_8_9").innerHTML;
		document.getElementById("form1_9_2_res").innerHTML="0 €";

	}else if(document.getElementById("form1_9_2").value!="0"){
		document.getElementById("MO2").checked=true;
		document.getElementById("form1_9_2_res").innerHTML=document.getElementById("form1_8_9").innerHTML;
		document.getElementById("form1_9_1_res").innerHTML="0 €";

	}
	
}

/**
* @desc : Fonction qui active ou désactive la champ de répartition du cout d'aménagement du batiment pour l'entreprise
* @param numForm : objet qui apelle
* 		 numGrp : numero du groupe de checkbox
* @return : rien
*
* @acces : public
* @date creation : 05.10.07
* @date revision : 05.10.07
*/
function changeLocProp(state){

	champ = document.getElementById("form2_5_9");
	
	switch(state){
		case "1" :
			champ.parentNode.style.visibility="hidden";
			champ.value = "0"
			break;
		case "0" :
			champ.parentNode.style.visibility="visible";
			break;
		default :
			changeLocProp("1");
			break;
	}
	
}

 

 function popup(url, titre, largeur, hauteur, scroll)
  {
  window.open(url, titre, 'width=' + largeur + ', height=' + hauteur + ', scrollbars=' + scroll);
  }


function display_flash(id, url, largeur, hauteur)
{
	var idElement = id;
	if( document.getElementById(idElement)) {
		var sUrl = url; // "../demo/anim_teasing.swf"
		var sName = idElement;
		var iWidth = largeur;
		var iHeight = hauteur;
		var sLink = "";
		var so = new SWFObject(sUrl,sName,iWidth + "px",iHeight + "px","8","#FFFFFF","","");
		
		so.write(sName);
	}
}
//evenement du document

if(navigator.appName.substring(0,3) == "Net")
	document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = position;
