/****************************************************************************************
SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV

Version 0.9.9

Copyright (C) 2006-2009  Sylvain FATOME
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; 
either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program
(in the directory docs); 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
Boston, MA  02110-1301, USA.

Contact : galawa@free.fr

Web : http://smitst.homelinux.com
****************************************************************************************/

// Scripts permettant les contrôles et modifs de champs de formulaires

/****************************************************/
/* MAJ zone de texte en fonction sélection multiple */
/****************************************************/

function utxtfromselm(idsel,idtxt)
{
	var selectBox=document.getElementById(idsel);
	// var selectedList = new Array();
	var txt = "";
	var txtfinal = "";
	for (var i=1; i<selectBox.options.length; i++)
	{
		if (selectBox.options[i].selected) 
		{
			txt += selectBox.options[i].value+"_";
		} 
	}
	txtfinal = txt.substring(0,txt.length-1);
	var selectTxt=document.getElementById(idtxt);
	selectTxt.value=txtfinal;
}

/******************************/
/* Contrôles pour les exports */
/******************************/

function aff_depex()
{
	var selectedList = new Array();
	var selectBox = document.exp_maj.dep; 
	var txtdep = "";
	var txtdepfinal = "";
	for (var i=1; i<selectBox.options.length; i++) { 
	  if (selectBox.options[i].selected) 
	  {
		txtdep += selectBox.options[i].value+"_";
	  } 
	}
	txtdepfinal = txtdep.substring(0,txtdep.length-1);
	window.document.exp_maj.deptxt.value=txtdepfinal;
}

function aff_famex()
{
	var selectedList = new Array();
	var selectBox = document.exp_maj.fam; 
	var txtfam = "";
	var txtfamfinal = "";
	for (var i=1; i<selectBox.options.length; i++) { 
	  if (selectBox.options[i].selected) 
	  {
		txtfam += selectBox.options[i].value+"_";
	  } 
	}
	txtfamfinal = txtfam.substring(0,txtfam.length-1);
	window.document.exp_maj.famtxt.value=txtfamfinal;
}

/************************************/
/* Contrôles pour les interventions */
/************************************/

// Contrôle de la zone forfait
function verif_forfait()
{
	var objet=document.getElementById("forfait");
	
	if (objet)
	{
		var objet2 = document.getElementById("impcli");
		if (objet2)
		{
			var forfait = parseFloat(objet.value);
			if (forfait>0)
			{
				objet2.style.display = 'inline';
			}
			else
			{
				objet2.style.display = 'none';
			}
		}
	}
}

// Contrôle de la zone N° de facture en fonction du choix de garantie
function verif_gar(valgar)
{
  switch (valgar)
  {
	// non, pas besoin de numéro de facture
	case '0' :
		document.int_maj.fgar.value='';
		break;
	// oui, on ne fait rien
	case '1' :
		if (document.int_maj.fgar.value == '')
		{
			alert ("Il faut impérativement saisir une référence de facture.\nSinon la garantie ne sera pas validée.");
			document.int_maj.fgar.focus();
		}
		break;
	default :
		return '';
		break;
  }
}

// Contrôle de la zone N° de facture en fonction du choix de garantie (ordres)
function verif_gar2(valgar)
{
  switch (valgar)
  {
	// non, pas besoin de numéro de facture
	case '0' :
		document.ot_maj.fgar.value='';
		break;
	// oui, on ne fait rien
	case '1' :
		if (document.ot_maj.fgar.value == '')
		{
			alert ("Il faut impérativement saisir une référence de facture.\nSinon la garantie ne sera pas validée.");
			document.ot_maj.fgar.focus();
		}
		break;
	default :
		return '';
		break;
  }
}

// Contrôle de la zone garantie oui/non en fonction de la zone de références facture
function verif_fgar(valfgar)
{
  with (document.int_maj)
  {
	  if (valfgar == "")
	  {
		gar.selectedIndex = '0';
	  }
	  else
	  {
		gar.selectedIndex = '1';
	  }
  }
}

// Contrôle de la zone garantie oui/non en fonction de la zone de références facture (ordres)
function verif_fgar2(valfgar)
{
  with (document.ot_maj)
  {
	  if (valfgar == "")
	  {
		gar.selectedIndex = '0';
	  }
	  else
	  {
		gar.selectedIndex = '1';
	  }
  }
}

// Contrôle de la zone lieu d'intervention si date de RDV
function warn_rdv()
{
	alert ("Pensez à vérifier le lieu d'intervention et l'heure de rendez-vous (si nécessaire).");
	document.int_maj.codelieu.focus();
	return true;
}

// Contrôle de la zone lieu d'intervention si date de RDV (ordres)
function warn_rdv2()
{
	alert ("Pensez à vérifier le lieu d'intervention et l'heure de rendez-vous (si nécessaire).");
	document.ot_maj.codelieu.focus();
	return true;
}

// Contrôle que la date de traitement et le détail sont remplis, si le technicien est choisi
function verif_tecr()
{
	var champok = true;
	var messerr = 'Rappel important :\n';
	
	if ((document.int_maj.codetec.options[document.int_maj.codetec.selectedIndex].value != '') && (document.int_maj.codetec.options[document.int_maj.codetec.selectedIndex].value != '-1'))
	{
		if (document.int_maj.fait.value == '')
		{
			messerr += "\nPensez à saisir le détail du travail effectué.";
			document.getElementById("f_fait").className = 'rubfrmrelief';
			document.int_maj.fait.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_fait").className = 'rubfrm';
		}
		if (document.int_maj.tect.value == '')
		{
			messerr += "\nPensez à saisir le détail des horaires et les techniciens traitants.";
			document.getElementById("f_tect").className = 'rubfrmrelief';
			document.getElementById("f_duree").className = 'rubfrmrelief';
			document.int_maj.duree.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_tect").className = 'rubfrm';
		}
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	else
	{
		var objet=document.getElementById('nbot');
		if (objet)
		{
			var nbot=parseInt(objet.value);
			if (nbot!=0)
			{
				messerr += "\nIl y a déjà des des bons de travail sous-traitants saisis.";
			}
		}
		if (document.int_maj.tect.value != '')
		{
			messerr += "\nIl y a déjà des détails horaires et des techniciens traitants.";
			document.getElementById("f_tect").className = 'rubfrm';
			document.getElementById("f_duree").className = 'rubfrm';
			document.getElementById("f_codetec").className = 'rubfrmrelief';
			document.int_maj.codetec.focus();
			champok = false;
		}
		if (document.int_maj.fait.value != '')
		{
			messerr += "\nIl y a déjà eu du travail effectué saisi.";
			document.getElementById("f_fait").className = 'rubfrm';
			document.getElementById("f_codetec").className = 'rubfrmrelief';
			document.int_maj.codetec.focus();
			champok = false;
		}
	}
	if (champok == false)
	{
		alert (messerr);
	}
	return champok
}

// Contrôle que la date de traitement et le détail sont remplis, si le technicien est choisi (ordres)
function verif_tec2()
{
	var champok = true;
	var messerr = 'Rappel important :\n';
	
	if ((document.ot_maj.codetec.options[document.ot_maj.codetec.selectedIndex].value != '') && (document.ot_maj.codetec.options[document.ot_maj.codetec.selectedIndex].value != '-1'))
	{
		if (document.ot_maj.fait.value == '')
		{
			messerr += "\nPensez à saisir le détail du travail effectué.";
			document.getElementById("f_fait").className = 'rubfrmrelief';
			document.ot_maj.fait.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_fait").className = 'rubfrm';
		}
		if (document.ot_maj.tect.value == '')
		{
			messerr += "\nPensez à saisir le détail des horaires et les techniciens traitants.";
			document.getElementById("f_tect").className = 'rubfrmrelief';
			document.getElementById("f_duree").className = 'rubfrmrelief';
			document.ot_maj.duree.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_tect").className = 'rubfrm';
		}
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	else
	{
		if (document.ot_maj.tect.value != '')
		{
			messerr += "\nIl y a déjà des détails horaires et des techniciens traitants.";
			document.getElementById("f_tect").className = 'rubfrm';
			document.getElementById("f_duree").className = 'rubfrm';
			document.getElementById("f_codetec").className = 'rubfrmrelief';
			document.ot_maj.codetec.focus();
			champok = false;
		}
		if (document.ot_maj.fait.value != '')
		{
			messerr += "\nIl y a déjà eu du travail effectué saisi.";
			document.getElementById("f_fait").className = 'rubfrm';
			document.getElementById("f_codetec").className = 'rubfrmrelief';
			document.ot_maj.codetec.focus();
			champok = false;
		}
	}
	if (champok == false)
	{
		alert (messerr);
	}
	return champok
}

// Contrôle que la date de traitement est remplie et le technicien choisi, si le détail est rempli
function verif_fait()
{
	var champok = true;
	var messerr = 'Erreur de validation du détail du travail effectué :\n';
	
	if (document.int_maj.fait.value!='')
	{
		if (document.int_maj.tect.value == '')
		{
			messerr += "\nVous devez saisir un détail horaire et les techniciens traitants.";
			document.getElementById("f_tect").className = 'rubfrmrelief';
			document.getElementById("f_duree").className = 'rubfrmrelief';
			document.int_maj.duree.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_tect").className = 'rubfrm';
			document.getElementById("f_duree").className = 'rubfrm';
		}
		if ((document.int_maj.codetec.value == '') || (document.int_maj.codetec.value == '-1'))
		{
			messerr += "\nVous devez choisir un technicien responsable du dossier.";
			document.getElementById("f_codetec").className = 'rubfrmrelief';
			document.int_maj.codetec.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_codetec").className = 'rubfrm';
		}
		if (champok == false)
		{
			alert (messerr);
		}
	}
	else
	{
		document.getElementById("f_fait").className = 'rubfrm';
		document.getElementById("f_tect").className = 'rubfrm';
		document.getElementById("f_duree").className = 'rubfrm';
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	return champok
}

// Contrôle que la date de traitement est remplie et le technicien choisi, si le détail est rempli (ordres)
function verif_fait2()
{
	var champok = true;
	var messerr = 'Erreur de validation du détail du travail effectué :\n';
	
	if (document.ot_maj.fait.value!='')
	{
		if (document.ot_maj.tect.value == '')
		{
			messerr += "\nVous devez saisir un détail horaire et les techniciens traitants.";
			document.getElementById("f_tect").className = 'rubfrmrelief';
			document.getElementById("f_duree").className = 'rubfrmrelief';
			document.ot_maj.duree.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_tect").className = 'rubfrm';
			document.getElementById("f_duree").className = 'rubfrm';
		}
		if ((document.ot_maj.codetec.value == '') || (document.ot_maj.codetec.value == '-1'))
		{
			messerr += "\nVous devez choisir un technicien responsable du dossier.";
			document.getElementById("f_codetec").className = 'rubfrmrelief';
			document.ot_maj.codetec.focus();
			champok = false;
		}
		else
		{
			document.getElementById("f_codetec").className = 'rubfrm';
		}
		if (champok == false)
		{
			alert (messerr);
		}
	}
	else
	{
		document.getElementById("f_fait").className = 'rubfrm';
		document.getElementById("f_tect").className = 'rubfrm';
		document.getElementById("f_duree").className = 'rubfrm';
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	return champok
}

// Contrôle que la date de traitement est remplie,le technicien choisi, et le détail remplis, 
// si la date d'appel client est remplie -->
function verif_dprev()
{
	var champok = true;
	var messerr = 'Erreur de validation de la date appel :\n';
	
	if (document.int_maj.fait.value == '')
	{
		messerr += "\nVous devez saisir un détail du travail effectué.";
		document.getElementById("f_fait").className = 'rubfrmrelief';
		document.int_maj.fait.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_fait").className = 'rubfrm';
	}
	if (document.int_maj.tect.value == '')
	{
		messerr += "\nVous devez saisir un détail horaire et les techniciens traitants.";
		document.getElementById("f_tect").className = 'rubfrmrelief';
		document.getElementById("f_duree").className = 'rubfrmrelief';
		document.int_maj.duree.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_tect").className = 'rubfrm';
		document.getElementById("f_duree").className = 'rubfrm';
	}
	if ((document.int_maj.codetec.value == '') || (document.int_maj.codetec.value == '-1'))
	{
		messerr += "\nVous devez choisir un technicien responsable du dossier.";
		document.getElementById("f_codetec").className = 'rubfrmrelief';
		document.int_maj.codetec.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	if (champok == false)
	{
		document.int_maj.dateprevf.value = '';
		alert (messerr);
	}
	return champok;
}

// Contrôle que la date de traitement est remplie,le technicien choisi, et le détail remplis, 
// si la date d'appel client est remplie (ordres) -->
function verif_dprev2()
{
	var champok = true;
	var messerr = 'Erreur de validation de la date appel :\n';
	
	if (document.ot_maj.fait.value == '')
	{
		messerr += "\nVous devez saisir un détail du travail effectué.";
		document.getElementById("f_fait").className = 'rubfrmrelief';
		document.ot_maj.fait.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_fait").className = 'rubfrm';
	}
	if (document.ot_maj.tect.value == '')
	{
		messerr += "\nVous devez saisir un détail horaire et les techniciens traitants.";
		document.getElementById("f_tect").className = 'rubfrmrelief';
		document.getElementById("f_duree").className = 'rubfrmrelief';
		document.ot_maj.duree.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_tect").className = 'rubfrm';
		document.getElementById("f_duree").className = 'rubfrm';
	}
	if ((document.ot_maj.codetec.value == '') || (document.ot_maj.codetec.value == '-1'))
	{
		messerr += "\nVous devez choisir un technicien responsable du dossier.";
		document.getElementById("f_codetec").className = 'rubfrmrelief';
		document.ot_maj.codetec.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	if (champok == false)
	{
		document.ot_maj.dateprevf.value = '';
		alert (messerr);
	}
	return champok;
}

// Contrôle que les dates traitement et appel, le détail réparation, et le technicien sont remplis, 
//	 si la date de fin est remplie -->
function verif_dfin()
{
	var champok = true;
	var messerr = 'Erreur de validation de la date de fin :\n';
	modereg = document.int_maj.codereg.options[document.int_maj.codereg.selectedIndex].value;
	
	if ((modereg == 'EC') || (modereg == ''))
	{
		messerr += "\nVous devez d\'abord saisir un mode de règlement.";
		document.getElementById("f_codereg").className = 'rubfrmrelief';
		document.int_maj.codereg.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_codereg").className = 'rubfrm';
	}
	if (document.int_maj.dateprevf.value == '')
	{
		messerr += "\nVous devez d\'abord saisir une date d\'appel client.";
		document.getElementById("f_dateprevf").className = 'rubfrmrelief';
		document.int_maj.dateprevf.focus();
		champok = false;
	}
	else
	{
		var tab_datep=document.int_maj.dateprevf.value.split('-');
		datep = new Date();
		datep.setDate(tab_datep[0]);
		datep.setMonth(tab_datep[1]-1);
		datep.setFullYear(tab_datep[2]); 
		var tab_datef=document.int_maj.datefinf.value.split('-');
		datef = new Date();
		datef.setDate(tab_datef[0]);
		datef.setMonth(tab_datef[1]-1);
		datef.setFullYear(tab_datef[2]);
		if (datef.getTime()<datep.getTime())
		{
			messerr += "\nLa date de fin est inférieure à la date où le client a été prévenu";
			champok=false;
		}
		document.getElementById("f_dateprevf").className = 'rubfrm';
	}
	if (document.int_maj.fait.value == '')
	{
		messerr += "\nVous devez d\'abord remplir le descriptif du travail effectué.";
		document.getElementById("f_fait").className = 'rubfrmrelief';
		document.int_maj.fait.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_fait").className = 'rubfrm';
	}
	if (document.int_maj.tect.value == '')
	{
		messerr += "\nVous devez saisir un détail horaire et les techniciens traitants.";
		document.getElementById("f_tect").className = 'rubfrmrelief';
		document.getElementById("f_duree").className = 'rubfrmrelief';
		document.int_maj.duree.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_tect").className = 'rubfrm';
		document.getElementById("f_duree").className = 'rubfrm';
	}
	tecresp = document.int_maj.codetec.value ;
	if ((tecresp == '') || (tecresp == '-1'))
	{
		messerr += "\nVous devez d\'abord choisir un technicien responsable du dossier.";
		document.getElementById("f_codetec").className = 'rubfrmrelief';
		document.int_maj.codetec.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	if (champok == false)
	{
		document.int_maj.datefinf.value = '';
		alert (messerr);
	}
	return champok;
}

// Contrôle que les dates traitement et appel, le détail réparation, et le technicien sont remplis, 
//	 si la date de fin est remplie (ordres) -->
function verif_dfin2()
{
	var champok = true;
	var messerr = 'Erreur de validation de la date de fin :\n';
	modereg = document.ot_maj.codereg.options[document.ot_maj.codereg.selectedIndex].value;
	
	if ((modereg == 'EC') || (modereg == ''))
	{
		messerr += "\nVous devez d\'abord saisir un mode de règlement.";
		document.getElementById("f_codereg").className = 'rubfrmrelief';
		document.ot_maj.codereg.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_codereg").className = 'rubfrm';
	}
	if (document.ot_maj.dateprevf.value == '')
	{
		messerr += "\nVous devez d\'abord saisir une date d\'appel client.";
		document.getElementById("f_dateprevf").className = 'rubfrmrelief';
		document.ot_maj.dateprevf.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_dateprevf").className = 'rubfrm';
	}
	if (document.ot_maj.fait.value == '')
	{
		messerr += "\nVous devez d\'abord remplir le descriptif du travail effectué.";
		document.getElementById("f_fait").className = 'rubfrmrelief';
		document.ot_maj.fait.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_fait").className = 'rubfrm';
	}
	if (document.ot_maj.tect.value == '')
	{
		messerr += "\nVous devez saisir un détail horaire et les techniciens traitants.";
		document.getElementById("f_tect").className = 'rubfrmrelief';
		document.getElementById("f_duree").className = 'rubfrmrelief';
		document.ot_maj.duree.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_tect").className = 'rubfrm';
		document.getElementById("f_duree").className = 'rubfrm';
	}
	tecresp = document.ot_maj.codetec.value ;
	if ((tecresp == '') || (tecresp == '-1'))
	{
		messerr += "\nVous devez d\'abord choisir un technicien responsable du dossier.";
		document.getElementById("f_codetec").className = 'rubfrmrelief';
		document.ot_maj.codetec.focus();
		champok = false;
	}
	else
	{
		document.getElementById("f_codetec").className = 'rubfrm';
	}
	if (champok == false)
	{
		document.ot_maj.datefinf.value = '';
		alert (messerr);
	}
	return champok;
}

<!-- Fonction pour vérifier si résumé contrat doit être affiché -->
function tst_res_cocl(index)
{
	if (index>0)
	{
		display('res','block');
		display('pas_res','none');
		display('choixsiteoui','block');
		display('choixsitenon','none');
	}
	else
	{
		display('res','none');
		display('pas_res','block');
		display('choixsiteoui','none');
		display('choixsitenon','block');
	}
}

<!-- Fonction pour vérifier si demande de report/déduction doit être affichée dans intervention -->
function tst_rep_cocl(index)
{
	if (index>0)
	{
		display('rep1','block');
		display('pas_rep1','none');
		display('rep2','block');
		display('pas_rep2','none');
	}
	else
	{
		display('rep1','none');
		display('pas_rep1','block');
		display('rep2','none');
		display('pas_rep2','block');
	}
}

<!-- Fonction pour remettre à zéro la zone des sites si on choisi un contrat -->
function aff_scli_cocl(index,premier)
{
	if (premier==false)
	{
		if (index>0)
		{
			if (parseInt(document.int_maj.nbsites.value)>0)
			{
				document.int_maj.idsite.value='';
				document.getElementById('nomsite').innerHTML='';
				display('choixsiteoui','block');
				display('choixsitenon','none');
			}
			else
			{
				document.int_maj.idsite.value='0';
				document.getElementById('nomsite').innerHTML='<strong>Site principal</strong>';
				display('choixsiteoui','none');
				display('choixsitenon','block');
			}
		}
		else
		{
			document.int_maj.idsite.value='0';
			document.getElementById('nomsite').innerHTML='<strong>Site principal</strong>';
			if (parseInt(document.int_maj.nbsites.value)>0)
			{
				display('choixsiteoui','block');
				display('choixsitenon','none');
			}
			else
			{
				display('choixsiteoui','none');
				display('choixsitenon','block');
			}
		}
	}
	else
	{
		if (parseInt(document.int_maj.nbsites.value)>0)
		{
			display('choixsiteoui','block');
			display('choixsitenon','none');
		}
		else
		{
			display('choixsiteoui','none');
			display('choixsitenon','block');
		}
	}
}

<!-- Fonction pour vérifier si le temps offert doit être affiché -->
function tst_aff_tpsoff(valoff)
{
	if (valoff)
	{
		if (valoff!='')
		{
			var tab_heure = valoff.split(':');
			var nbsec = (Number(tab_heure[0])*3600)+(Number(tab_heure[1])*60);
			if (nbsec>0)
			{
				display('affoffoui','block');
				display('affoffnon','none');
			}
			else
			{
				display('affoffoui','none');
				display('affoffnon','block');
			}
		}
		else
		{
			display('affoffoui','none');
			display('affoffnon','block');
		}
	}
}

<!-- Fonction pour vérifier les ordres de sous-traitance -->
function verif_txtot(nbot,nbotactifs)
{
	var objet = window.opener.document.getElementById('strot');
	if (objet)
	{
		if (nbot>0)
		{
			var texte='<span class="annot_petit_it">';
			texte+='(Actuellement : '+nbot+' bon';
			if (nbot>1)
				texte+='s';
			texte+=' de travail';
			if (nbotactifs>0)
				texte+=', dont '+nbotactifs+' non termin&eacute;';
			if (nbotactifs>1)
				texte+='s';
			texte+=')';
			texte+='</span>';
			objet.innerHTML=texte;
			objet.style.visibility = 'visible';
		}
		else
			objet.style.visibility = 'hidden';
	}
	var objet = window.opener.document.getElementById('nbot');
	if (objet)
	{
		objet.value=nbot;
	}
}

/************************************************/
/* Contrôles pour les historiques interventions */
/************************************************/

<!-- Fonction pour mettre à jour la fiche intervention  -->
function maj_int(duree,dureeoff,ntect)
{
	window.opener.document.int_maj.duree.value=duree;
 	window.opener.document.int_maj.dureeoff.value=dureeoff;
 	window.opener.document.int_maj.tect.value=ntect;

  	var objet1 = window.opener.document.getElementById("affoffoui");
	var objet2 = window.opener.document.getElementById("affoffnon");
	var tab_duree = dureeoff.split(":");
	nbsec = (Number(tab_duree[0])*3600)+(Number(tab_duree[1])*60);

	if (nbsec>0)
	{
		objet1.style.display = 'block';
		objet2.style.display = 'none';
	}
	else
	{
		objet1.style.display = 'none';
		objet2.style.display = 'block';
	}
}

// Affichage (ou pas) de la zone de détail déplacement en fonction du lieu d'intervention
function verif_lieu(codelieu)
{
	var objet=document.getElementById("_"+codelieu);
	if (objet)
	{
		var objet2=document.getElementById("det_depl");
		if (objet2)
		{
			var depl=Number(objet.value);
			if (depl==1)
			{
				objet2.style.display="block";
			}
			else
			{
				objet2.style.display="none";
				var objet3=document.getElementById("a_mt");
				objet3.value='';
				var objet3=document.getElementById("a_heured");
				objet3.value='';
				var objet3=document.getElementById("a_heuref");
				objet3.value='';
				var objet3=document.getElementById("a_km");
				objet3.value='';
				var objet3=document.getElementById("a_cd");
				objet3.value='';
				var objet3=document.getElementById("a_fa");
				objet3.value='';
				var objet3=document.getElementById("a_fad");
				objet3.value='';
				var objet3=document.getElementById("r_mt");
				objet3.value='';
				var objet3=document.getElementById("r_heured");
				objet3.value='';
				var objet3=document.getElementById("r_heuref");
				objet3.value='';
				var objet3=document.getElementById("r_km");
				objet3.value='';
				var objet3=document.getElementById("r_cd");
				objet3.value='';
				var objet3=document.getElementById("r_fa");
				objet3.value='';
				var objet3=document.getElementById("r_fad");
				objet3.value='';
			}
		}
	}
}

/*****************************************/
/* Contrôles pour les historiques ordres */
/*****************************************/

<!-- Fonction pour mettre à jour la fiche ordre  -->
function maj_ot(duree,dureeoff,ntect)
{
	window.opener.document.ot_maj.duree.value=duree;
 	window.opener.document.ot_maj.dureeoff.value=dureeoff;
 	window.opener.document.ot_maj.tect.value=ntect;

  	var objet1 = window.opener.document.getElementById("affoffoui");
	var objet2 = window.opener.document.getElementById("affoffnon");
	var tab_duree = dureeoff.split(":");
	nbsec = (Number(tab_duree[0])*3600)+(Number(tab_duree[1])*60);

	if (nbsec>0)
	{
		objet1.style.display = 'block';
		objet2.style.display = 'none';
	}
	else
	{
		objet1.style.display = 'none';
		objet2.style.display = 'block';
	}
}

/***************************************/
/* Contrôles pour les contrats clients */
/***************************************/

// Contrôle de la zone N° de facture en fonction du choix de garantie
function verif_renouv(valrenouv)
{
  switch (valrenouv)
  {
	// non, pas besoin de numéro de facture
	case '0' :
		document.cocl_maj.num.value='';
		break;
	// oui, on ne fait rien
	case '1' :
		if (document.int_maj.num.value == '')
		{
			alert ("Il faut impérativement saisir une référence de contrat.\nSinon le renouvellement ne sera pas effectif.");
			document.int_maj.num.focus();
		}
		break;
	default :
		return '';
		break;
  }
}

// Contrôle de la zone renouvelé oui/non en fonction de la zone de numéro de contrat
function verif_num(valnum)
{
  with (document.cocl_maj)
  {
	  if (valnum == "")
	  {
		renouv.selectedIndex = '0';
	  }
	  else
	  {
		renouv.selectedIndex = '1';
	  }
  }
}

// Contrôle que le délai est rempli si la périodicité est à la demande
function verif_delai()
{
	var champok = true;
	var messerr = 'Rappel important :\n\n';

	var txt_sel = document.cocl_maj.cope.options[document.cocl_maj.cope.selectedIndex].text;
	var exist_str = txt_sel.indexOf('demande',0);

	if (exist_str >= 0)
	{
		if ((document.cocl_maj.delai.value == '') || (document.cocl_maj.delai.value == '0'))
		{
			messerr += "\nPensez à choisir un délai d\'intervention.";
			document.getElementById("f_delai").className = 'rubfrmrelief';
			champok = false;
		}
		else
		{
			document.getElementById("f_delai").className = 'rubfrm';
		}
	}
	else
	{
		document.cocl_maj.delai.value = '';
		document.getElementById("f_delai").className = 'rubfrm';
	}

	if (champok == false)
	{
		alert (messerr);
		document.getElementById("delai").focus();
	}
	return champok;
}

/*****************************************************/
/* Contrôles pour les taxes parafiscales & pénalités */
/*****************************************************/

// Contrôle de la valeur en fonction du paramètre 'A saisir'
function verif_valeur(valasaisir,popup)
{
  var objet = document.getElementById("valeur");
  switch (valasaisir)
  {
	// non, on peut saisir une valeur
	case 'Non' :
		objet.value='0.00';
		objet.disabled=false;
		break;
	// oui, on ne peut pas saisir de valeur
	case 'Oui' :
		if ((objet.value != '') && (popup==true))
		{
			alert ("Pas de valeur possible si 'A saisir'.");
		}
		objet.value='';
		objet.disabled=true;
		break;
	default :
		break;
  }
}

// Contrôle de la valeur de 'global' en fonction du paramètre 'TVA'
function verif_global(valtva)
{
  switch (valtva)
  {
	// -1, soit 'TVA de l'article, on ne peut pas être global
	case '-1' :
		if (document.tpf_maj.global.value == 'Oui')
		{
			alert ("'Global' impossible si 'TVA de l\'article'.");
		}
		document.tpf_maj.global.value='Non';
		break;
	default :
		break;
  }
}

// Contrôle de la valeur de 'global' en fonction du paramètre 'Forfaitaire'
function verif_global2(valtypmt)
{
  switch (valtypmt)
  {
	// Non, soit un montant proportionnel, on ne peut pas être global
	case 'Oui' :
		if (document.tpf_maj.global.value == 'Oui')
		{
			alert ("'Global' impossible si 'Montant proportionnel'.");
		}
		document.tpf_maj.global.value='Non';
		break;
	default :
		break;
  }
}

// Contrôle de la valeur de 'tva' en fonction du paramètre 'Global'
function verif_tva(valglobal)
{	
  switch (valglobal)
  {
	// Oui, si 'TVA' est à -1, soit 'TVA de l'article : problème
	case 'Oui' :
		if (document.tpf_maj.tva.value == '-1')
		{
			alert ("'TVA de l\'article' impossible si 'Global'.");
		}
		document.tpf_maj.tva.value='';
		break;
	default :
		break;
  }
}

// Contrôle de la valeur de 'Montant forfaitaire' en fonction du paramètre 'Global'
function verif_forf(valglobal)
{	
  switch (valglobal)
  {
	// Oui, si 'Forfait' est à Non : problème
	case 'Oui' :
		if (document.tpf_maj.typmt.value == 'Non')
		{
			alert ("'Montant proportionnel' impossible si 'Global'.");
		}
		document.tpf_maj.typmt.value='Oui';
		break;
	default :
		break;
  }
}

// Contrôle de la valeur de 'Base Pourcentage' en fonction du paramètre 'Global'
function verif_basepour(valglobal)
{	
  switch (valglobal)
  {
	// Oui, si 'Base' est à accessible, sinon, non
	case 'Oui' :
		document.tpf_maj.basepour.disabled=false;
		break;
	default :
		document.tpf_maj.basepour.disabled=true;
		break;
  }
}

// Fonction pour afficher le symbole '%'
function tst_pour(valpour)
{
	switch (valpour)
	{
	// Oui, on affiche
	case 'Oui' :
		document.getElementById('txtpour2').style.display='block';
		document.getElementById('pas_txtpour2').style.display='none';
		document.getElementById('sympour').style.visibility='visible';
		document.getElementById('pas_sympour').style.visibility='hidden';
		break;
	default :
		document.getElementById('txtpour2').style.display='none';
		document.getElementById('pas_txtpour2').style.display='block';
		document.getElementById('sympour').style.visibility='hidden';
		document.getElementById('pas_sympour').style.visibility='visible';
		break;
	}
}

/******************************/
/* Contrôles pour les clients */
/******************************/

<!-- Fonction pour vérifier si une icône pour les sites doit être affichée -->
function tst_sites_client(texte)
{
	if (texte!="")
	{
		display('site','block');
		display('pas_site','none');
	}
	else
	{
		display('site','none');
		display('pas_site','block');
	}
}

/******************************/
/* Contrôles pour les relevés */
/******************************/

<!-- Fonction pour afficher ou pas des champs en fonction du mode IP -->
function tst_modeip(mode)
{
	if (mode==0)
	{
		document.getElementById('sdhcp').style.backgroundColor='#CCCCCC';
		document.getElementById('sdhcp').style.color='#000000';
		document.getElementById('sdhcp').disabled=false;
		var valsdhcp = document.getElementById('sdhcp').value;
		if (valsdhcp=="Oui")
		{
			document.getElementById('ip1').style.backgroundColor='#CCCCCC';
			document.getElementById('ip1').style.color='#000000';
			document.getElementById('ip1').disabled=false;
			document.getElementById('ip2').style.backgroundColor='#CCCCCC';
			document.getElementById('ip2').style.color='#000000';
			document.getElementById('ip2').disabled=false;
			document.getElementById('mdhcp').style.backgroundColor='#CCCCCC';
			document.getElementById('mdhcp').style.color='#000000';
			document.getElementById('mdhcp').disabled=false;
		}
		else
		{
			document.getElementById('ip1').style.backgroundColor='#FFFFFF';
			document.getElementById('ip1').style.color='#CCCCCC';
			document.getElementById('ip1').value='';
			document.getElementById('ip1').disabled=true;
			document.getElementById('ip2').style.backgroundColor='#FFFFFF';
			document.getElementById('ip2').style.color='#CCCCCC';
			document.getElementById('ip2').value='';
			document.getElementById('ip2').disabled=true;
			document.getElementById('mdhcp').style.backgroundColor='#FFFFFF';
			document.getElementById('mdhcp').style.color='#CCCCCC';
			document.getElementById('mdhcp').value='';
			document.getElementById('mdhcp').disabled=true;
		}
		document.getElementById('ip').style.backgroundColor='#CCCCCC';
		document.getElementById('ip').style.color='#000000';
		document.getElementById('ip').disabled=false;
		document.getElementById('masq').style.backgroundColor='#CCCCCC';
		document.getElementById('masq').style.color='#000000';
		document.getElementById('masq').disabled=false;
		document.getElementById('pass').style.backgroundColor='#CCCCCC';
		document.getElementById('pass').style.color='#000000';
		document.getElementById('pass').disabled=false;
	}

	if (mode==1)
	{
		document.getElementById('sdhcp').style.backgroundColor='#FFFFFF';
		document.getElementById('sdhcp').style.color='#CCCCCC';
		document.getElementById('sdhcp').options[1].selected=true;
		document.getElementById('sdhcp').disabled=true;
		document.getElementById('ip1').style.backgroundColor='#FFFFFF';
		document.getElementById('ip1').style.color='#CCCCCC';
		document.getElementById('ip1').value='';
		document.getElementById('ip1').disabled=true;
		document.getElementById('ip2').style.backgroundColor='#FFFFFF';
		document.getElementById('ip2').style.color='#CCCCCC';
		document.getElementById('ip2').value='';
		document.getElementById('ip2').disabled=true;
		document.getElementById('mdhcp').style.backgroundColor='#FFFFFF';
		document.getElementById('mdhcp').style.color='#CCCCCC';
		document.getElementById('mdhcp').value='';
		document.getElementById('mdhcp').disabled=true;
		document.getElementById('ip').style.backgroundColor='#FFFFFF';
		document.getElementById('ip').style.color='#CCCCCC';
		document.getElementById('ip').value='';
		document.getElementById('ip').disabled=true;
		document.getElementById('masq').style.backgroundColor='#FFFFFF';
		document.getElementById('masq').style.color='#CCCCCC';
		document.getElementById('masq').value='';
		document.getElementById('masq').disabled=true;
		document.getElementById('pass').style.backgroundColor='#FFFFFF';
		document.getElementById('pass').style.color='#CCCCCC';
		document.getElementById('pass').value='';
		document.getElementById('pass').disabled=true;
	}
}

<!-- Fonction pour afficher ou pas des champs si serveur DHCP -->
function tst_sdhcp(valsdhcp)
{
	if (valsdhcp=="Oui")
	{
		document.getElementById('ip1').style.backgroundColor='#CCCCCC';
		document.getElementById('ip1').style.color='#000000';
		document.getElementById('ip1').disabled=false;
		document.getElementById('ip2').style.backgroundColor='#CCCCCC';
		document.getElementById('ip2').style.color='#000000';
		document.getElementById('ip2').disabled=false;
		document.getElementById('mdhcp').style.backgroundColor='#CCCCCC';
		document.getElementById('mdhcp').style.color='#000000';
		document.getElementById('mdhcp').disabled=false;
	}
	else
	{
		document.getElementById('ip1').style.backgroundColor='#FFFFFF';
		document.getElementById('ip1').style.color='#CCCCCC';
		document.getElementById('ip1').value='';
		document.getElementById('ip1').disabled=true;
		document.getElementById('ip2').style.backgroundColor='#FFFFFF';
		document.getElementById('ip2').style.color='#CCCCCC';
		document.getElementById('ip2').value='';
		document.getElementById('ip2').disabled=true;
		document.getElementById('mdhcp').style.backgroundColor='#FFFFFF';
		document.getElementById('mdhcp').style.color='#CCCCCC';
		document.getElementById('mdhcp').value='';
		document.getElementById('mdhcp').disabled=true;
	}
}

/********************/
/* Contrôles divers */
/********************/

// Contrôle la puissance d'un mot de passe
function verif_pw(valpw,warn,idimg)
{
	var nivpw=0;	// Niveau calculé
	var messerr='';
	var mess1="Vous pouvez renforcer ce mot de passe :";

	if ((valpw) && (valpw!=""))
	{
		// Vérification longueur
		if (valpw.length>=7)
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En saisissant au moins 7 caractères.";
		}

		// Vérification majuscules
		if (valpw.match(/[A-Z]/))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En insérant au moins une majuscule.";
		}

		// Vérification minuscules
		if (valpw.match(/[a-z]/))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En insérant au moins une minuscule.";
		}

		// Vérification si caractères numériques
		if (valpw.match(/\d/))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En insérant au moins un chiffre.";
		}

		// Vérification présence caractère souligné
		if (valpw.indexOf("_") > -1) 
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En insérant au moins le caractère souligné ('_').";
		}

		// Il doit y avoir un caractère spécial
		if (valpw.match(/[\-\#\@\%\!\$\*\&\<\>]/))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En insérant au moins un caractère spécial ('-,#,@,%,!,$,*,&,<,>').";
		}

		// Il doit y avoir une parenthèse spéciale
		if (valpw.match(/[\{\}\[\]]/))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En insérant au moins une parenthèse spéciale ('[,],{,}').";
		}

		//  Il vaut mieux commencer avec une lettre
		if (valpw.match(/^[a-zA-Z]+/))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- En commencant au moins par une lettre.";
		}

		// Les espaces ne sont pas recommandés
		var invalide = " ";
		if (!(valpw.indexOf(invalide) > -1))
		{
			nivpw++;
		}
		else
		{
			if (messerr=='')
			{
				messerr=mess1;
			}
			messerr += "\n-- Il n'est pas recommandé d'entrer des espaces.";
		}

		if ((idimg) && (idimg!=""))
		{
			var champimg=document.getElementById(idimg);

			if (champimg)
			{
				champimg.innerHTML='<img src="../img/niv'+nivpw+'.jpg" title="Niveau mot de passe '+nivpw+'" align="absmiddle">';
			}
		}
		
		if ((warn) && (warn==true))
		{
			switch (nivpw)
			{
				case 0 :
				case 1 :
				case 2 :
					var txterr="Puissance de mot de passe : "+nivpw+" (mauvais)\n\n"+messerr;
					break;
				case 3 :
				case 4 :
				case 5 :
					var txterr="Puissance de mot de passe : "+nivpw+" (moyen)\n\n"+messerr;
					break;
				case 6 :
				case 7 :
					var txterr="Puissance de mot de passe : "+nivpw+" (correct)\n\n"+messerr;
					break;
				case 8 :
				case 9 :
					var txterr="Puissance de mot de passe : "+nivpw+" (bon)\n\n"+messerr;
					break;
			}
			alert(txterr);
		}

	}
	else
	{
		if ((idimg) && (idimg!=""))
		{
			var champimg=document.getElementById(idimg);

			if (champimg)
			{
				champimg.innerHTML='<img src="../img/niv0.jpg" title="Puissance mot de passe : 0" align="absmiddle">';
			}
		}
	}
}


// Contrôle un pourcentage et affiche une image en rapport
// typimg : type d'image à afficher typimgpourxx.png
function verif_pour(valpour,idimg,typimg)
{
	var champimg=document.getElementById(idimg);
	if ((valpour) && (valpour!=''))
	{
		if ((idimg) && (idimg!=''))
		{
			var type_img = parseInt(typimg);
			if ((type_img!=1) && (type_img!=2))
			{
				type_img=1;
			}
			if (parseInt(valpour)%10==0)
			{
				if (champimg)
				{
					champimg.innerHTML='<img src="../img/'+typimg+'pour'+valpour+'.png" title="'+valpour+'%" align="absmiddle">';
				}
			}
			else
			{
				if (champimg)
				{
					champimg.innerHTML='<img src="../img/none.gif" title="Niveau non affichable" align="absmiddle">';
				}
			}
		}
	}
	else
	{
		if (champimg)
		{
			champimg.innerHTML='<img src="../img/none.gif" title="Niveau non affichable" align="absmiddle">';
		}
	}
}

// Contrôle un pourcentage et affiche une image en rapport
// Dans un document mère
// typimg : type d'image à afficher typimgpourxx.png
function verif_pour_mere(valpour,idimg,typimg)
{
	var champimg=window.opener.document.getElementById(idimg);
	if ((valpour) && (valpour!=''))
	{
		if ((idimg) && (idimg!=''))
		{
			var type_img = parseInt(typimg);
			if ((type_img!=1) && (type_img!=2))
			{
				type_img=1;
			}
			if (parseInt(valpour)%10==0)
			{
				if (champimg)
				{
					champimg.innerHTML='<img src="../img/'+typimg+'pour'+valpour+'.png" title="'+valpour+'%" align="absmiddle">';
				}
			}
			else
			{
				if (champimg)
				{
					champimg.innerHTML='<img src="../img/none.gif" title="Niveau non affichable" align="absmiddle">';
				}
			}
		}
	}
	else
	{
		if (champimg)
		{
			champimg.innerHTML='<img src="../img/none.gif" title="Niveau non affichable" align="absmiddle">';
		}
	}
}


// Contrôle une différence entre 2 champs et affiche une image en rapport
function verif_switch(val1,val2,idimg)
{
	var champimg=document.getElementById(idimg);
	if (val1 && val2)
	{
		if ((idimg) && (idimg!=''))
		{
			if (val1!=val2)
			{
				if (champimg)
				{
					champimg.innerHTML='<img src="../img/switch.png" title="Valeur changée" align="absmiddle">';
				}
			}
			else
			{
				if (champimg)
				{
					champimg.innerHTML='<img src="../img/none.gif" title="Valeur inchangée" align="absmiddle">';
				}
			}
		}
	}
	else
	{
		if (champimg)
		{
			champimg.innerHTML='<img src="../img/none.gif" title="Valeur inchangée" align="absmiddle">';
		}
	}
}


// Contrôle si une date est dépassée
function verif_dout(valdte,idtxt,typalert)
{
	if ((idtxt) && (idtxt!=""))
	{
		var champtxt=document.getElementById(idtxt);

		if (champtxt)
		{
			if ((valdte) && (valdte!=""))
			{
				var tab_date = valdte.split("-");
				jour=Number(tab_date[0]);
				mois=Number(tab_date[1]);
				annee=Number(tab_date[2]);
		
				var datetst = new Date(annee, Number(mois-1), jour);
		
				var aujourdhui = new Date();
				var jour=aujourdhui.getDate();
				var mois=aujourdhui.getMonth();
				var annee=aujourdhui.getFullYear();
				var datea = new Date(annee, mois, jour);
				
				if (datetst.getTime()<datea.getTime())
				{
					var valtxt='<span class="alerte1">';
					switch (parseInt(typalert))
					{
						// Echéance dépassée
						case 0 : 
							valtxt+="Ech&eacute;ance d&eacute;pass&eacute;e";
							break;
						// Validité dépassée
						case 1 :
							valtxt+="Validit&eacute; d&eacute;pass&eacute;e";
							break;
						// Garantie dépassée
						case 2 :
							valtxt+="Plus sous garantie";
							break;
					}
					valtxt+='</span>';
					champtxt.innerHTML=valtxt;
				}
				else
				{
					champtxt.innerHTML='';
				}
			}
			else
			{
				champtxt.innerHTML='';
			}
		}
	}
}

// Contrôle si un maximum est atteint ou dépassé
function verif_max(valeur,idtxt,maxi)
{
	if ((idtxt) && (idtxt!=""))
	{
		var champtxt=document.getElementById(idtxt);

		if (champtxt)
		{
			if ((valeur) && (valeur!=""))
			{
				if ((maxi) && (maxi!=""))
				{
					if (parseInt(valeur)>=parseInt(maxi))
					{
						var valtxt='<span class="alerte1">';
	
						if (parseInt(valeur)>parseInt(maxi))
						{
							valtxt+="Maximum d&eacute;pass&eacute;";
						}
						else
						{
							valtxt+="Maximum atteint";
						}
						valtxt+='</span>';
						champtxt.innerHTML=valtxt;
					}
					else
					{
						champtxt.innerHTML='';
					}
				}
				else
				{
					champtxt.innerHTML='';
				}
			}
			else
			{
				champtxt.innerHTML='';
			}
		}
	}
}

// Formate un champ décimal à 'nbdeci' chiffres après la virgule
function formatedeci(idchamp,nbdeci)
{
	if ((idchamp) && (idchamp!=""))
	{
		var champ=document.getElementById(idchamp);
		if (champ)
		{
			var expr = new RegExp("^[0-9]*$","gi");
			if (expr.test(nbdeci))
			{
				if  (champ.value!='')
				{
					if (isNaN(champ.value))
					{
						var newval=0;
					}
					else
					{
						var newval=parseFloat(champ.value);
					}
				}
				else
				{
					var newval=0;
				}
				champ.value=newval.toFixed(parseInt(nbdeci));
			}
		}
	}
}

// Calcule un nouveau montant en fonction d'un montant existant et d'un pourcentage
function nval_from_mtpour(idmt,idvaltx,idnval,nbdeci)
{
	if ((idmt) && (idmt!="") && (idvaltx) && (idvaltx!="") && (idnval) && (idnval!="") && (nbdeci) && (nbdeci!=""))
	{
		var champmt=document.getElementById(idmt);
		if (champmt)
		{
			var champvaltx=document.getElementById(idvaltx);
			if (champvaltx)
			{
				var champnval=document.getElementById(idnval);
				if (champnval)
				{
					var valtx=champvaltx.value;
					if (valtx!='')
					{
						if (isNaN(valtx))
						{
							var taux=0;
						}
						else
						{
							var taux=parseFloat(valtx);
						}
					}
					else
					{
						var taux=0;
					}
					var nouv_montant=parseFloat(champmt.value)*(1+(taux/100));
					champnval.value=nouv_montant.toFixed(parseInt(nbdeci));
				}
			}
		}
	}
}

// Calcule un nouveau taux en fonction d'un montant existant et d'un nouveau montant
function ntx_from_exvalnval(idmt,idvaltx,idnval,nbdeci)
{
	if ((idmt) && (idmt!="") && (idvaltx) && (idvaltx!="") && (idnval) && (idnval!="") && (nbdeci) && (nbdeci!=""))
	{
		var champmt=document.getElementById(idmt);
		if (champmt)
		{
			var champvaltx=document.getElementById(idvaltx);
			if (champvaltx)
			{
				var champnval=document.getElementById(idnval);
				if (champnval)
				{
					if (champnval.value!='')
					{
						if (isNaN(valtx))
						{
							var nval=0;
						}
						else
						{
							var nval=parseFloat(champnval.value);
						}
					}
					else
					{
						var nval=0;
					}
					var nouv_taux=((parseFloat(nval)-parseFloat(champmt.value))/parseFloat(champmt.value))*100;
					champvaltx.value=nouv_taux.toFixed(parseInt(nbdeci));
				}
			}
		}
	}
}

// Calcule un montant TTC en fonction d'un montant HT et d'un taux de TVA
// (le taux étant dans une liste select dont l'id est donné par idvaltx)
// Le résultat est injecté dans le champ "idchampttc"
function ttc_from_ht(valht,idvaltx,idchampttc,nbdeci)
{
	if ((valht) && (valht!="") && (idvaltx) && (idvaltx!="") && (idchampttc) && (idchampttc!="") && (nbdeci) && (nbdeci!=""))
	{
		var expr = new RegExp("^[\+\-]?[0-9]+(\.[0-9]{0,})?$","gi");
		if (expr.test(valht))
		{
			var champvaltx=document.getElementById(idvaltx);
			if (champvaltx)
			{
				var champttc=document.getElementById(idchampttc);
				if (champttc)
				{
					var expr = new RegExp("^[0-9]*$","gi");
					if (expr.test(nbdeci))
					{
						var codetx=champvaltx.value;
						if ((codetx!='-1') && (codetx!=''))
						{
							var champtaux=document.getElementById(codetx);
							if (champtaux)
							{
								var valtx=champtaux.value;
								if (isNaN(valtx))
								{
									var taux=0;
								}
								else
								{
									var taux=parseFloat(valtx);
								}
								var montant_ttc=parseFloat(valht)*(1+(taux/100));
								champttc.value=montant_ttc.toFixed(parseInt(nbdeci));
							}
						}
						else
						{
							champttc.value=valht;
						}
					}
				}
			}
		}
	}
}

// Calcule un montant HT en fonction d'un montant TTC et d'un taux de TVA
// (le taux étant dans une liste select dont l'id est donné par idvaltx)
// Le résultat est injecté dans le champ "idchampttc"
function ht_from_ttc(valttc,idvaltx,idchampht,nbdeci)
{
	if ((valttc) && (valttc!="") && (idvaltx) && (idvaltx!="") && (idchampht) && (idchampht!="") && (nbdeci) && (nbdeci!=""))
	{
		var expr = new RegExp("^[\+\-]?[0-9]+(\.[0-9]{0,})?$","gi");
		if (expr.test(valttc))
		{
			var champvaltx=document.getElementById(idvaltx);
			if (champvaltx)
			{
				var champht=document.getElementById(idchampht);
				if (champht)
				{
					var expr = new RegExp("^[0-9]*$","gi");
					if (expr.test(nbdeci))
					{
						var codetx=champvaltx.value;
						if ((codetx!='-1') && (codetx!=''))
						{
							var champtaux=document.getElementById(codetx);
							if (champtaux)
							{
								var valtx=champtaux.value;
								if (isNaN(valtx))
								{
									var taux=0;
								}
								else
								{
									var taux=parseFloat(valtx);
								}
								var montant_ht=parseFloat(valttc)/(1+(taux/100));
								champht.value=montant_ht.toFixed(parseInt(nbdeci));
							}
						}
						else
						{
							champht.value=valttc;
						}
					}
				}
			}
		}
	}
}

// Calcule une somme de 2 champs et l'injecte dans un 3ème champ
// 'externe' permet d'appeler depuis la fenêtre mère ou depuis la fenêtre fille
function somme(idval1,idval2,idresult,nbdeci,externe)
{
	if ((idval1) && (idval2) && (idresult) && (nbdeci) && (nbdeci!="") && ((parseInt(externe)==0) || (parseInt(externe)==1))) 
	{
		if (parseInt(externe)==0)
		{
			var champval1=document.getElementById(idval1);
			var champval2=document.getElementById(idval2);
			var champresult=document.getElementById(idresult);
		}
		else
		{
			var champval1=window.opener.document.getElementById(idval1);
			var champval2=window.opener.document.getElementById(idval2);
			var champresult=window.opener.document.getElementById(idresult);
		}
		if ((champval1) && (champval2) && (champresult))
		{
			var expr = new RegExp("^[0-9]*$","gi");
			if (expr.test(nbdeci))
			{
				var val1=champval1.value;
				if (isNaN(val1))
				{
					var val1=0;
				}
				var val2=champval2.value;
				if (isNaN(val2))
				{
					var val2=0;
				}
				var result=parseFloat(val1)+parseFloat(val2);
				champresult.value=result.toFixed(parseInt(nbdeci));
			}
		}
	}
}

/******************************/
/* Contrôles pour les retours */
/******************************/

// Contrôle du bordereau en fonction du choix de mode d'envoi
// (Envoi des retours)
function verif_bord1(valcodeme)
{
  switch (valcodeme)
  {
	// Sans objet, pas besoin de numéro de bordereau
	case '-1' :
		document.rete_maj.bord.value='';
		break;
	default :
		return '';
		break;
  }
}

// Contrôle du bordereau en fonction du choix de mode d'envoi
// (Traitements des retours)
function verif_bord2(valcodeme)
{
  switch (valcodeme)
  {
	// Sans objet, pas besoin de numéro de bordereau
	case '-1' :
		document.retr_maj.bord.value='';
		break;
	default :
		return '';
		break;
  }
}

/*******************************************/
/* Contrôles pour les périodes de location */
/*******************************************/

// Contrôle du numéro de jour 1
function verif_jour1(jour1)
{
  switch (jour1)
  {
	// Indifférent, le 2nd jour est aussi indifférent
	case '-1' :
		document.perloc_maj.jourd2.value='-1';
		break;
	default :
		if ((Number(jour1)>Number(document.perloc_maj.jourd2.value)) && (document.perloc_maj.jourd2.value!='-1'))
		{
			alert('Le premier jour doit être inférieur ou égal au second');
			document.perloc_maj.jourd1.value='-1';
			document.perloc_maj.jourd2.value='-1';
		}
		return '';
		break;
  }
}

// Contrôle du numéro de jour 2
function verif_jour2(jour2)
{
  switch (jour2)
  {
	// Indifférent, le 1er jour est aussi indifférent
	case '-1' :
		document.perloc_maj.jourd1.value='-1';
		break;
	default :
		if (Number(jour2)<Number(document.perloc_maj.jourd1.value))
		{
			alert('Le second jour doit être supérieur ou égal au second');
			document.perloc_maj.jourd1.value='-1';
			document.perloc_maj.jourd2.value='-1';
		}
		return '';
		break;
  }
}

/******************************************/
/* Contrôles pour les barêmes de location */
/******************************************/

// Contrôle si les dates saisies sont cohérentes
function verif_dates()
{
	var date1=document.getElementById('dateval1f').value;
	var date2=document.getElementById('dateval2f').value;
	var messerr = '';

	if ((date1) && (date1!=''))
	{
		if ((date2) && (date2!=''))
		{
			var tab_date1 = date1.split("-");
			jour1=Number(tab_date1[0]);
			mois1=Number(tab_date1[1]);
			annee1=Number(tab_date1[2]);

			var datetst1 = new Date(annee1, Number(mois1-1), jour1);

			var tab_date2 = date2.split("-");
			jour2=Number(tab_date2[0]);
			mois2=Number(tab_date2[1]);
			annee2=Number(tab_date2[2]);
	
			var datetst2 = new Date(annee2, Number(mois2-1), jour2);
	
			if (datetst1.getTime()>datetst2.getTime())
			{
				messerr = 'Dates non cohérentes\nLa première date doit être inférieure ou égale à la seconde';
				document.barloc_maj.dateval1f.value='';
				document.barloc_maj.dateval2f.value='';
			}

			var aujourdhui = new Date();
			var jour=aujourdhui.getDate();
			var mois=aujourdhui.getMonth();
			var annee=aujourdhui.getFullYear();
			var datea = new Date(annee, mois, jour);
			
			if (datetst2.getTime()<datea.getTime())
			{
				if (messerr!='')
				{
					messerr+='\n';
				}
				messerr+= 'Date de fin inférieure à la date du jour';
				document.barloc_maj.dateval2f.value='';
			}
		}
	}
	else
	{
		if ((date2) && (date2!=''))
		{
			messerr = 'Dates non cohérentes\nIl ne peut pas y avoir de date de fin sans date de début';
			document.barloc_maj.dateval2f.value='';
		}
	}

	if (messerr!='')
	{
		alert(messerr);
	}
}

// Contrôle de l'assurance obligatoire
function verif_assobl()
{
	var val=document.getElementById('mtass').value;
	switch (Number(val))
	{
		// Montant nul, ce n'est donc pas obligatoire
		case 0 :
			document.barloc_maj.assobl.value='Non';
			break;
		default :
			break;
	}
}

/********************************************/
/* Contrôles pour les locations de produits */
/********************************************/

// Contrôle le choix du type de consommable
function verif_ucons(ncons)
{
	var ucons=document.getElementById('ucons'+ncons).value;
	if (ucons && ((ucons=='-2') || (ucons=='-1')))
	{
		switch (ucons)
		{
			case '-2' :
				document.getElementById('idxcons'+ncons).value='0';
				document.getElementById('tvacons'+ncons).value='';
				break;
			case '-1' :
				document.getElementById('idxcons'+ncons).value='0';
				document.getElementById('tvacons'+ncons).value='-1';
				break;
		}
	}
}


// Recalcule le montant de la location
// typcalc : 0 = HT / 1 = TTC / 2 = Exonéré
function calcul_location(typcalc,sym_monnaie)
{
	// On vérifie la quantité
	var qte=parseFloat(document.getElementById('qte').value);
	if (qte<=0)
	{
		document.getElementById('qte').value="1";
		qte=1;
	}
	var lng = document.getElementById("affqteloc").firstChild.length;
	document.getElementById("affqteloc").firstChild.replaceData(0, lng, qte.toFixed(2));
	var lng = document.getElementById("affqteass").firstChild.length;
	document.getElementById("affqteass").firstChild.replaceData(0, lng, qte.toFixed(2));
	var objet=document.getElementById('affqtecons1');
	if (objet)
	{
		var lng = document.getElementById("affqtecons1").firstChild.length;
		document.getElementById("affqtecons1").firstChild.replaceData(0, lng, qte.toFixed(2));
	}
	var objet=document.getElementById('affqtecons2');
	if (objet)
	{
		var lng = document.getElementById("affqtecons2").firstChild.length;
		document.getElementById("affqtecons2").firstChild.replaceData(0, lng, qte.toFixed(2));
	}

	/** Calcul du tableau de tarification **/
	// On calcule le coût de la location
	var pvht=parseFloat(document.getElementById('pvht').value);
	var totht=qte*pvht;
	totht=parseFloat(totht.toFixed(2));
	var pvttc=parseFloat(document.getElementById('pvttc').value);
	var totttc=qte*pvttc;
	totttc=parseFloat(totttc.toFixed(2));
	var lng = document.getElementById("afftotloc").firstChild.length;
	switch (typcalc)
	{
		case 0 :
		case 2 :
			document.getElementById("afftotloc").firstChild.replaceData(0, lng, totht.toFixed(2)+sym_monnaie);
			break;
		case 1 :
			document.getElementById("afftotloc").firstChild.replaceData(0, lng, totttc.toFixed(2)+sym_monnaie);
			break;
	}
	var tottva=totttc-totht;
	tottva=parseFloat(tottva.toFixed(2));
	// On calcule le coût de la caution
	var cautionht=parseFloat(document.getElementById('caution').value);
	cautionht=parseFloat(cautionht.toFixed(2));
	var cautionttc=parseFloat(document.getElementById('cautionttc').value);
	cautionttc=parseFloat(cautionttc.toFixed(2));
	var lng = document.getElementById("afftotcaut").firstChild.length;
	switch (typcalc)
	{
		case 0 :
		case 2 :
			document.getElementById("afftotcaut").firstChild.replaceData(0, lng, cautionht.toFixed(2)+sym_monnaie);
			break;
		case 1 :
			document.getElementById("afftotcaut").firstChild.replaceData(0, lng, cautionttc.toFixed(2)+sym_monnaie);
			break;
	}
	var tottvacaut=cautionttc-cautionht;
	tottvacaut=parseFloat(tottvacaut.toFixed(2));

	// On vérifie l'assurance
	var val=parseFloat(document.getElementById('assobl').value);
	var totassht=0;
	var totassttc=0;
	var totasstva=0;
	switch (val)
	{
		// 'NON', ce n'est donc pas obligatoire
		case 0 :
			var lng = document.getElementById("affpuass").firstChild.length;
			document.getElementById("affpuass").firstChild.replaceData(0, lng, "-");
			var lng = document.getElementById("afftvaass").firstChild.length;
			document.getElementById("afftvaass").firstChild.replaceData(0, lng, "-");
			var lng = document.getElementById("afftotass").firstChild.length;
			document.getElementById("afftotass").firstChild.replaceData(0, lng, "-");
			break;
		default :
			var mtass=parseFloat(document.getElementById('mtass').value);
			var mtassttc=parseFloat(document.getElementById('mtassttc').value);
			var totassht=qte*mtass;
			totassht=parseFloat(totassht.toFixed(2));
			var totassttc=qte*mtassttc;
			totassttc=parseFloat(totassttc.toFixed(2));
			var lng = document.getElementById("affpuass").firstChild.length;
			switch (typcalc)
			{
				case 0 :
				case 2 :
					document.getElementById("affpuass").firstChild.replaceData(0, lng, mtass.toFixed(2)+sym_monnaie);
					break;
				case 1 :
					document.getElementById("affpuass").firstChild.replaceData(0, lng, mtassttc.toFixed(2)+sym_monnaie);
					break;
			}
			var lng = document.getElementById("afftvaass").firstChild.length;
			var txtvaass=parseFloat(document.getElementById('txtvaass').value)*100;
			document.getElementById("afftvaass").firstChild.replaceData(0, lng, parseFloat(txtvaass).toFixed(2)+'%');
			var lng = document.getElementById("afftotass").firstChild.length;
			switch (typcalc)
			{
				case 0 :
				case 2 :
					document.getElementById("afftotass").firstChild.replaceData(0, lng, totassht.toFixed(2)+sym_monnaie);
					break;
				case 1 :
					document.getElementById("afftotass").firstChild.replaceData(0, lng, totassttc.toFixed(2)+sym_monnaie);
					break;
			}
			var totasstva=totassttc-totassht;
			break;
	}
	totasstva=parseFloat(totasstva.toFixed(2));

	// On vérifie le consommable n°1
	var totconsht1=0;
	var totconsttc1=0;
	var tottvacons1=0;
	var objet=document.getElementById('affqtecons1');
	if (objet)
	{
		var consht1=parseFloat(document.getElementById('mtcons1').value);
		consht1=parseFloat(consht1.toFixed(2));
		totconsht1=qte*consht1;
		totconsht1=parseFloat(totconsht1.toFixed(2));
		consttc1=parseFloat(document.getElementById('mtconsttc1').value);
		consttc1=parseFloat(consttc1.toFixed(2));
		totconsttc1=qte*consttc1;
		totconsttc1=parseFloat(totconsttc1.toFixed(2));
		var lng = document.getElementById("afftotconsi1").firstChild.length;
		switch (typcalc)
		{
			case 0 :
			case 2 :
				document.getElementById("afftotconsi1").firstChild.replaceData(0, lng, totconsht1.toFixed(2)+sym_monnaie);
				break;
			case 1 :
				document.getElementById("afftotconsi1").firstChild.replaceData(0, lng, totconsttc1.toFixed(2)+sym_monnaie);
				break;
		}
		tottvacons1=totconsttc1-totconsht1;
	}
	tottvacons1=parseFloat(tottvacons1.toFixed(2));

	// On vérifie le consommable n°2
	var totconsht2=0;
	var totconsttc2=0;
	var tottvacons2=0;
	var objet=document.getElementById('affqtecons2');
	if (objet)
	{
		var consht2=parseFloat(document.getElementById('mtcons2').value);
		consht2=parseFloat(consht2.toFixed(2));
		totconsht2=qte*consht2;
		totconsht2=parseFloat(totconsht2.toFixed(2));
		consttc2=parseFloat(document.getElementById('mtconsttc2').value);
		consttc2=parseFloat(consttc2.toFixed(2));
		totconsttc2=qte*consttc2;
		totconsttc2=parseFloat(totconsttc2.toFixed(2));
		var lng = document.getElementById("afftotconsi2").firstChild.length;
		switch (typcalc)
		{
			case 0 :
			case 2 :
				document.getElementById("afftotconsi2").firstChild.replaceData(0, lng, totconsht2.toFixed(2)+sym_monnaie);
				break;
			case 1 :
				document.getElementById("afftotconsi2").firstChild.replaceData(0, lng, totconsttc2.toFixed(2)+sym_monnaie);
				break;
		}
		tottvacons2=totconsttc2-totconsht2;
	}
	tottvacons2=parseFloat(tottvacons2.toFixed(2));

	// On calcule le total général HT/TTC et le total TVA
	var totalgenht=parseFloat((totht+cautionht+totassht+totconsht1+totconsht2).toFixed(2));
	var totalgenttc=parseFloat((totttc+cautionttc+totassttc+totconsttc1+totconsttc2).toFixed(2));
	var totalgentva=parseFloat((tottva+tottvacaut+totasstva+tottvacons1+tottvacons2).toFixed(2));
	// Total HT
	var lng = document.getElementById("afftotalgenht").firstChild.length;
	document.getElementById("afftotalgenht").firstChild.replaceData(0, lng, totalgenht.toFixed(2)+sym_monnaie);
	// Total TVA
	var lng = document.getElementById("afftotalgentva").firstChild.length;
	document.getElementById("afftotalgentva").firstChild.replaceData(0, lng, totalgentva.toFixed(2)+sym_monnaie);
	// Total TTC
	var lng = document.getElementById("afftotalgenttc").firstChild.length;
	document.getElementById("afftotalgenttc").firstChild.replaceData(0, lng, totalgenttc.toFixed(2)+sym_monnaie);

}

// Contrôle le choix du type de barême dans les pénalités
function verif_tbar()
{
	var tbar=document.getElementById('tbar').value;
	var objet1=document.getElementById('detpenbar');
	var objet2=document.getElementById('addbp');
	var objet3=document.getElementById('valeur');
	var objet4=document.getElementById('asaisir');
	var objet5=document.getElementById('prop');
	var objet6=document.getElementById('sympour');
	var objet7=document.getElementById('pas_sympour');
	var objet8=document.getElementById('txtpour2');
	var objet9=document.getElementById('pas_txtpour2');
	var objet10=document.getElementById('pour');
	if (tbar)
	{
		switch (tbar)
		{
			case '0' :
				if (objet1) {
					objet1.style.display = 'none'; }
				if (objet2) {
					objet2.style.display = 'none'; }
				if (objet3) {
					objet3.disabled=false;
				}
				if (objet4) {
					objet4.disabled=false;
				}
				if (objet5) {
					objet5.disabled=false;
				}
				if (objet6) {
					objet6.style.visibility='hidden';
				}
				if (objet7) {
					objet7.style.visibility='visible';
				}
				if (objet8) {
					objet8.style.display='none';
				}
				if (objet9) {
					objet9.style.display='block';
				}
				if (objet10) {
					objet10.disabled=false;
				}
				break;
			case '1' :
				if (objet1) {
					objet1.style.display = 'block'; }
				if (objet2) {
					objet2.style.display = 'block'; }
				if (objet3) {
					objet3.value = '0';
					objet3.disabled=true;
				}
				if (objet4) {
					objet4.value = 'Non';
					objet4.disabled=true;
				}
				if (objet5) {
					objet5.value = 'Non';
					objet5.disabled=true;
				}
				if (objet6) {
					objet6.style.visibility='hidden';
				}
				if (objet7) {
					objet7.style.visibility='hidden';
				}
				if (objet8) {
					objet8.style.display='none';
				}
				if (objet9) {
					objet9.style.display='block';
				}
				if (objet10) {
					objet10.disabled=true;
				}
				break;
		}
	}
}

// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function verif_dateret(from,dater,masque)
{
	switch (parseInt(from))
	{
		case 0 :
			var dateprev=document.getElementById('df').value;
			var objet=document.getElementById('addpen');
			break;
		case 1 :
			var dateprev=window.opener.document.getElementById('df').value;
			var objet=window.opener.document.getElementById('addpen');
			break;
	}
	if (Date1_sup_Date2(dater,dateprev,masque)==true)
	{
		objet.style.visibility = 'visible';
	}
	else
	{
		// Date pas dépassée...heure dépassée ?
		switch (parseInt(from))
		{
			case 0 :
				var heureprev=document.getElementById('hf').value;
				var heureret=document.getElementById('hret').value;
				break;
			case 1 :
				var heureprev=window.opener.document.getElementById('hf').value;
				var heureret=window.opener.document.getElementById('hret').value;
				break;
		}
		if (Heure1_sup_Heure2(heureret,heureprev)==true)
		{
			objet.style.visibility = 'visible';
		}
		else
		{
			objet.style.visibility = 'hidden';
		}
	}
}

// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function verif_indexes(from)
{
	switch (parseInt(from))
	{
		case 0 :
			var objdidx1=document.getElementById('didx1');
			var objdidx2=document.getElementById('didx2');
			var objridx1=document.getElementById('ridx1');
			var objridx2=document.getElementById('ridx2');
			var objqci1=document.getElementById('qci1');
			var objqci2=document.getElementById('qci2');
			var objbidx=document.getElementById('addidx');
			break;
		case 1 :
			var objdidx1=window.opener.document.getElementById('didx1');
			var objdidx2=window.opener.document.getElementById('didx2');
			var objridx1=window.opener.document.getElementById('ridx1');
			var objridx2=window.opener.document.getElementById('ridx2');
			var objqci1=window.document.getElementById('qci1');
			var objqci2=window.document.getElementById('qci2');
			var objbidx=window.opener.document.getElementById('addidx');
			break;
	}
	var didx1=-1;
	if (objdidx1)
	{
		didx1=parseInt(objdidx1.value);
	}
	var didx2=-1;
	if (objdidx2)
	{
		didx2=parseInt(objdidx2.value);
	}
	var ridx1=-1;
	if (objridx1)
	{
		ridx1=parseInt(objridx1.value);
	}
	var ridx2=-1;
	if (objridx2)
	{
		ridx2=parseInt(objridx2.value);
	}
	var qci1=0;
	if (objqci1)
	{
		qci1=parseInt(objqci1.value);
	}
	var qci2=0;
	if (objqci2)
	{
		qci2=parseInt(objqci2.value);
	}
	if (((didx1!=-1) && (ridx1!=-1)) || ((didx2!=-1) && (ridx2!=-1)))
	{
		var affbut=false;
		if ((ridx1-didx1)>qci1)
		{
			affbut=true;
		}
		if ((ridx2-didx2)>qci2)
		{
			affbut=true;
		}
		if (affbut==true)
		{
			if (objbidx)
			{
				objbidx.style.visibility = 'visible';
			}
		}
		else 
		{
			if (objbidx)
			{
				objbidx.style.visibility = 'hidden';
			}
		}
	}
}

<!-- Fonction afficher/cacher le lien de modif des contacts -->
// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function verif_contacts(from,idobjet,nbctact)
{
	if (parseInt(from)==0)
	{
		var objet = document.getElementById(idobjet);
	}
	else
	{
		var objet = window.opener.document.getElementById(idobjet);
	}
	if (objet)
	{
		if (parseInt(nbctact)==0)
		{
			objet.style.display = 'none';
		}
		else
		{
			objet.style.display = 'inline';
		}
	}
}


<!-- Fonction afficher/cacher le lien d'ajout de contacts -->
// En fonction valeur de champ 'idtst'
// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function verif_lnk_addctact(from,idtst,idobjet)
{
	if (parseInt(from)==0)
	{
		var objet = document.getElementById(idobjet);
	}
	else
	{
		var objet = window.opener.document.getElementById(idobjet);
	}
	if (objet)
	{
		if (parseInt(from)==0)
		{
			var objet2 = document.getElementById(idtst);
		}
		else
		{
			var objet2 = window.opener.document.getElementById(idtst);
		}
		if (objet2.value=='')
		{
			objet.style.display = 'none';
		}
		else
		{
			objet.style.display = 'inline';
		}
	}
}

<!-- Fonction afficher/cacher le lien de modif des sites web marques -->
// 'from' : 0=depuis le formulaire, 1=depuis formulaire dans fenêtre appelante
function verif_wmque(from,idobjet,nbwmque)
{
	if (parseInt(from)==0)
	{
		var objet = document.getElementById(idobjet);
	}
	else
	{
		var objet = window.opener.document.getElementById(idobjet);
	}
	if (objet)
	{
		if (parseInt(nbwmque)==0)
		{
			objet.style.display = 'none';
		}
		else
		{
			objet.style.display = 'inline';
		}
	}
}

/**********************/
/* Dossiers de suivi */
/*********************/

// Affichage (ou pas) de la zone de détail déplacement en fonction du type d'action
function verif_ta(codeta)
{
	var objet=document.getElementById("_"+codeta);
	if (objet)
	{
		var objet2=document.getElementById("det_depl");
		if (objet2)
		{
			var depl=Number(objet.value);
			if (depl==1)
			{
				objet2.style.display="block";
			}
			else
			{
				objet2.style.display="none";
				var objet3=document.getElementById("a_mt");
				objet3.value='';
				var objet3=document.getElementById("a_heured");
				objet3.value='';
				var objet3=document.getElementById("a_heuref");
				objet3.value='';
				var objet3=document.getElementById("a_km");
				objet3.value='';
				var objet3=document.getElementById("a_cd");
				objet3.value='';
				var objet3=document.getElementById("a_fa");
				objet3.value='';
				var objet3=document.getElementById("a_fad");
				objet3.value='';
				var objet3=document.getElementById("r_mt");
				objet3.value='';
				var objet3=document.getElementById("r_heured");
				objet3.value='';
				var objet3=document.getElementById("r_heuref");
				objet3.value='';
				var objet3=document.getElementById("r_km");
				objet3.value='';
				var objet3=document.getElementById("r_cd");
				objet3.value='';
				var objet3=document.getElementById("r_fa");
				objet3.value='';
				var objet3=document.getElementById("r_fad");
				objet3.value='';
			}
		}
	}
}

<!-- Fonction afficher/cacher le warning de champ obligatoire dans détail dossier -->
function verif_aff_obl()
{
	var objet = document.getElementById('clore');
	if (objet)
	{
		var i=0;
		var ok=true;
		while (ok==true)
		{
			i++;
			var objet2 = document.getElementById('obl'+i);
			if (objet2)
			{
				if (objet.checked==false)
				{
					objet2.style.display = 'none';
				}
				else
				{
					objet2.style.display = 'inline';
				}
			}
			else
			{
				ok=false;
			}
		}
		if (objet.checked==true)
		{
			alert('Vérifiez que vous avez saisi une synthèse\net une conclusion, un intervenant,\nainsi que les nouveaux paramètres du dossier');
		}

	}
}

/*******************************************/
/* Contrôles pour les moyens de transports */
/*******************************************/

// Contrôle si coût forfaitaire saisi
function verif_coutf()
{
	var objet=document.getElementById('coutf');
	if (objet)
	{
		if (Number(objet.value)>0)
		{
			var objet2=document.getElementById('coutas');
			if (objet2)
			{
				objet2.checked='';
			}
		}
	}
}

// Contrôle si coût forfaitaire à saisir
function verif_coutas()
{
	var objet=document.getElementById('coutas');
	if (objet)
	{
		if (objet.checked==true)
		{
			var objet2=document.getElementById('coutf');
			if (objet2)
			{
				objet2.value='0.00';
			}
		}
	}
}

// Contrôle si kilométrage saisi
function verif_km()
{
	var objet1=document.getElementById('kmi');
	var objet2=document.getElementById('kms');
	if (objet1 && objet2)
	{
		if ((Number(objet1.value)>0) || (Number(objet2.value)>0))
		{
			var objet3=document.getElementById('kmill');
			if (objet3)
			{
				objet3.checked='';
			}
		}
	}
}

// Contrôle si kilométrage illimité
function verif_kmill()
{
	var objet=document.getElementById('kmill');
	if (objet)
	{
		if (objet.checked==true)
		{
			var objet2=document.getElementById('kmi');
			if (objet2)
			{
				objet2.value='0.00';
			}
			var objet2=document.getElementById('kms');
			if (objet2)
			{
				objet2.value='0.00';
			}
		}
	}
}

// Contrôle du mode interne
function verif_interne(force)
{
	var objet=document.getElementById('coutk');
	if (objet)
	{
		switch (force)
		{
			case '0' :
				var val=objet.value;
				// Il y a un montant de saisi, on doit donc désactiver le mode "sous-traité"
				if (Number(val)>0)
				{
					var img=document.getElementById('chx1');
					img.style.display='inline';
					var img=document.getElementById('chx2');
					img.style.display='none';
					var objet2=document.getElementById('coutf');
					if (objet2)
					{
						objet2.value='0.00';
						objet2.readOnly=true;
					}
					var objet21=document.getElementById('coutas');
					if (objet21)
					{
						objet21.checked="";
						objet21.readOnly=true;
					}
					var objet3=document.getElementById('kmi');
					if (objet3)
					{
						objet3.value='0.00';
						objet3.readOnly=true;
					}
					var objet4=document.getElementById('kmill');
					if (objet4)
					{
						objet4.checked="";
						objet4.readOnly=true;
					}
					var objet5=document.getElementById('kms');
					if (objet5)
					{
						objet5.value='0.00';
						objet5.readOnly=true;
					}
					var i=0;
					var ok=true;
					while (ok==true)
					{
						i++;
						var objet7 = document.getElementById('obl1'+i);
						if (objet7)
						{
							objet7.style.display = 'inline';
						}
						else
						{
							ok=false;
						}
					}
					var i=0;
					var ok=true;
					while (ok==true)
					{
						i++;
						var objet7 = document.getElementById('obl2'+i);
						if (objet7)
						{
							objet7.style.display = 'none';
						}
						else
						{
							ok=false;
						}
					}
					var objet2=document.getElementById('mt');
					if (objet2)
					{
						objet2.value='0';
					}
				}
				else
				{
					var img=document.getElementById('chx1');
					img.style.display='inline';
					var img=document.getElementById('chx2');
					img.style.display='inline';
					var objet2=document.getElementById('coutf');
					if (objet2)
					{
						objet2.readOnly=false;
					}
					var objet2=document.getElementById('coutas');
					if (objet2)
					{
						objet2.readOnly=false;
					}
					var objet2=document.getElementById('kmi');
					if (objet2)
					{
						objet2.readOnly=false;
					}
					var objet2=document.getElementById('kmill');
					if (objet2)
					{
						objet2.readOnly=false;
					}
					var objet2=document.getElementById('kms');
					if (objet2)
					{
						objet2.readOnly=false;
					}
					var i=0;
					var ok=true;
					while (ok==true)
					{
						i++;
						var objet7 = document.getElementById('obl1'+i);
						if (objet7)
						{
							objet7.style.display = 'inline';
						}
						else
						{
							ok=false;
						}
					}
					var i=0;
					var ok=true;
					while (ok==true)
					{
						i++;
						var objet7 = document.getElementById('obl2'+i);
						if (objet7)
						{
							objet7.style.display = 'inline';
						}
						else
						{
							ok=false;
						}
					}
					var objet2=document.getElementById('mt');
					if (objet2)
					{
						objet2.value='-1';
					}
				}
				break;
			case '1' :
				var img=document.getElementById('chx1');
				img.style.display='inline';
				var img=document.getElementById('chx2');
				img.style.display='none';
				objet.readOnly=false;
				var objet2=document.getElementById('coutf');
				if (objet2)
				{
					objet2.value='0.00';
					objet2.readOnly=true;
				}
				var objet21=document.getElementById('coutas');
				if (objet21)
				{
					objet21.checked="";
					objet21.readOnly=true;
				}
				var objet3=document.getElementById('kmi');
				if (objet3)
				{
					objet3.value='0.00';
					objet3.readOnly=true;
				}
				var objet4=document.getElementById('kmill');
				if (objet4)
				{
					objet4.checked="";
					objet4.readOnly=true;
				}
				var objet5=document.getElementById('kms');
				if (objet5)
				{
					objet5.value='0.00';
					objet5.readOnly=true;
				}
				var i=0;
				var ok=true;
				while (ok==true)
				{
					i++;
					var objet7 = document.getElementById('obl1'+i);
					if (objet7)
					{
						objet7.style.display = 'inline';
					}
					else
					{
						ok=false;
					}
				}
				var i=0;
				var ok=true;
				while (ok==true)
				{
					i++;
					var objet7 = document.getElementById('obl2'+i);
					if (objet7)
					{
						objet7.style.display = 'none';
					}
					else
					{
						ok=false;
					}
				}
				var objet2=document.getElementById('mt');
				if (objet2)
				{
					objet2.value='0';
				}
				break;
		}
	}
}

// Contrôle du mode externe
function verif_externe(force)
{
	var objet1=document.getElementById('coutf');
	if (objet1)
	{
		var val1=objet1.value;
	}
	var objet11=document.getElementById('coutas');
	if (objet11)
	{
		var val11=objet11.checked;
	}
	var objet2=document.getElementById('kmi');
	if (objet2)
	{
		var val2=objet2.value;
	}
	var objet3=document.getElementById('kmill');
	if (objet3)
	{
		var val3=objet3.checked;
	}
	var objet4=document.getElementById('kms');
	if (objet4)
	{
		var val4=objet4.value;
	}

	switch (force)
	{
		case '0' :
			// Il y a un montant de saisi, on doit donc désactiver le mode "interne"
			if ((Number(val1)>0) || (val11==true) || (Number(val2)>0) || (val3==true) || (Number(val4)>0))
			{
				var img=document.getElementById('chx1');
				img.style.display='none';
				var img=document.getElementById('chx2');
				img.style.display='inline';
				var objet6=document.getElementById('coutk');
				if (objet6)
				{
					if (Number(objet6.value)>0)
					{
						affalert=true;
					}
					objet6.value='0.00';
					objet6.readOnly=true;
				}
				var i=0;
				var ok=true;
				while (ok==true)
				{
					i++;
					var objet7 = document.getElementById('obl1'+i);
					if (objet7)
					{
						objet7.style.display = 'none';
					}
					else
					{
						ok=false;
					}
				}
				var i=0;
				var ok=true;
				while (ok==true)
				{
					i++;
					var objet7 = document.getElementById('obl2'+i);
					if (objet7)
					{
						objet7.style.display = 'inline';
					}
					else
					{
						ok=false;
					}
				}
				var objet2=document.getElementById('mt');
				if (objet2)
				{
					objet2.value='1';
				}
			}
			else
			{
				var img=document.getElementById('chx1');
				img.style.display='inline';
				var img=document.getElementById('chx2');
				img.style.display='inline';
				var affalert=false;
				var objet6=document.getElementById('coutk');
				if (objet6)
				{
					objet6.readOnly=false;
				}
				var i=0;
				var ok=true;
				while (ok==true)
				{
					i++;
					var objet7 = document.getElementById('obl1'+i);
					if (objet7)
					{
						objet7.style.display = 'inline';
					}
					else
					{
						ok=false;
					}
				}
				var i=0;
				var ok=true;
				while (ok==true)
				{
					i++;
					var objet7 = document.getElementById('obl2'+i);
					if (objet7)
					{
						objet7.style.display = 'inline';
					}
					else
					{
						ok=false;
					}
				}
				var objet2=document.getElementById('mt');
				if (objet2)
				{
					objet2.value='-1';
				}
			}
			break;
		case '1' :
			var img=document.getElementById('chx1');
			img.style.display='none';
			var img=document.getElementById('chx2');
			img.style.display='inline';
			objet1.readOnly=false;
			objet11.readOnly=false;
			objet2.readOnly=false;
			objet3.readOnly=false;
			objet4.readOnly=false;
			var objet6=document.getElementById('coutk');
			if (objet6)
			{
				objet6.value='0.00';
				objet6.readOnly=true;
			}
			var i=0;
			var ok=true;
			while (ok==true)
			{
				i++;
				var objet7 = document.getElementById('obl1'+i);
				if (objet7)
				{
					objet7.style.display = 'none';
				}
				else
				{
					ok=false;
				}
			}
			var i=0;
			var ok=true;
			while (ok==true)
			{
				i++;
				var objet7 = document.getElementById('obl2'+i);
				if (objet7)
				{
					objet7.style.display = 'inline';
				}
				else
				{
					ok=false;
				}
			}
			var objet2=document.getElementById('mt');
			if (objet2)
			{
				objet2.value='1';
			}
			break;
	}
}

// Vérification zone "frais annexes" aller
function verif_fa(radic)
{
	var objet=document.getElementById(radic+"_fa");
	if (objet)
	{
		var objet2=document.getElementById(radic+"_fad");
		if (objet2)
		{
			if (Number(objet.value)==0)
			{
				objet2.value='';
			}
			else
			{
				if (objet2.value=='')
				{
					alert('Pensez à saisir un détail des frais');
					objet2.focus();
				}
			}
		}
	}
}

/*******************************************/
/* Contrôles pour le suivi de facturation  */
/*******************************************/

<!-- Fonction afficher/cacher le warning de champ obligatoire dans le suivi de facturation -->
function verif_aff_oblsf()
{
	var objet = document.getElementById('fnulle');
	if (objet)
	{
		var i=0;
		var ok=true;
		while (ok==true)
		{
			i++;
			var objet2 = document.getElementById('obl'+i);
			if (objet2)
			{
				if (parseInt(objet.value)==1)
				{
					objet2.style.display = 'none';
				}
				else
				{
					objet2.style.display = 'inline';
				}
			}
			else
			{
				ok=false;
			}
		}
		if (parseInt(objet.value)==1)
		{
			var objet2=document.getElementById('datefacf');
			if (objet2)
			{
				objet2.value='';
				objet2.readOnly=true;
			}
			var objet2=document.getElementById('numf');
			if (objet2)
			{
				objet2.value='';
				objet2.readOnly=true;
			}
			var objet2=document.getElementById('nomf');
			if (objet2)
			{
				objet2.value='';
				objet2.readOnly=true;
			}
			var objet2=document.getElementById('codeme');
			if (objet2)
			{
				objet2.value='';
				objet2.disabled=true;
			}
			var objet2=document.getElementById('creme');
			if (objet2)
			{
				objet2.style.display = 'none';
			}
		}
		else
		{
			var objet2=document.getElementById('datefacf');
			if (objet2)
			{
				objet2.readOnly=false;
			}
			var objet2=document.getElementById('numf');
			if (objet2)
			{
				objet2.readOnly=false;
			}
			var objet2=document.getElementById('nomf');
			if (objet2)
			{
				objet2.readOnly=false;
			}
			var objet2=document.getElementById('codeme');
			if (objet2)
			{
				objet2.disabled=false;
			}
			var objet2=document.getElementById('creme');
			if (objet2)
			{
				objet2.style.display = 'inline';
			}
		}
	}
}

