// test la validité des saisies du formulaire
var FillErrorMsg="Veuillez saisir le champ \" @XXX@ \". ";
var checkErrorMsg="Veuillez sélectionner @XXX@.";
var ErrFormatNum="Veuillez saisir un entier dans le champ \" @XXX@ \".";
var ErrNumNot0="Veuillez saisir un entier supérieur à 0 dans le champ \" @XXX@ \".";
var ErrDept="Le numéro de département saisi est inconnu.";
var ErrAtLeastOne="Veuillez renseigner au moins un champ.";
var ErrAtLeastOneNot0="Veuillez saisir un entier supérieur à 0 dans l'un des champs.";
var ErrIsInf="Erreur : La valeur @XXX@ est supérieure @YYY@.";
var ErrIsInfEgal="Erreur : La valeur @XXX@ doit être inférieure @YYY@";

var formIsRequired=new Array;
var formCheckIsRequired = new Array;
var formNum = new Array;
var formNumNot0= new Array;
var formDept= new Array;
var deptList= new Array;
var atLeastOne= new Array;
var atLeastOneNot0= new Array;
var formIsInf=new Array;
var formIsInfEgal=new Array;

function trim(chaine) {
while (chaine.substring(0,1) == ' ') {
    chaine = chaine.substring(1,chaine.length);
  }
  while (chaine.substring(chaine.length-1,chaine.length) == ' ') {
    chaine = chaine.substring(0,chaine.length-1);
  }

  return chaine;
}
//saisie d'au moins un champ
function atLeastOneIsFilled(theFormlist){
	var OneIsFilled=false;
	for (j = 0; j < theFormlist.length; j++)
	{
		var theFormValue;
		if (document.getElementById)
		{
			theFormValue = document.getElementById(theFormlist[j]).value;
		}
		else
		{
			theFormValue = document.forms[0].elements[theFormlist[j]].value;

		}
		if (trim(theFormValue) != ""){
			OneIsFilled=true;
			break;	
		}
	}
	return OneIsFilled;
}
//Au moins un champ a une valeur numérique non nulle
function atLeastOneIsNot0(theFormlist){
	var oneIsNot0=false;
	for (j = 0; j < theFormlist.length; j++)
	{
		
		var theFormValue;
		if (document.getElementById)
		{
			theFormValue = parseInt(document.getElementById(theFormlist[j]).value);
		}
		else
		{
			theFormValue = parseInt(document.forms[0].elements[theFormlist[j]].value);

		}
		if (theFormValue > 0){
			oneIsNot0=true;
			break;	
		}
	}
	return oneIsNot0;
}


// la valeur du champ1 doit être inférieure à la valeur du champ2
function isInf(theForm1, theForm2){
	var isInf=true;
	
	var theForm1Value;
	var theForm2Value;
	if (document.getElementById)
	{
		theForm1Value = parseInt(document.getElementById(theForm1).value);
		theForm2Value = parseInt(document.getElementById(theForm2).value);
	}
	else
	{
		theForm1Value = parseInt(document.forms[0].elements[theForm1].value);
		theForm2Value = parseInt(document.forms[0].elements[theForm2].value);
	}
	
	if (theForm1Value>theForm2Value){
		isInf=false;
	}
	return isInf;
}

// la valeur du champ1 doit être inférieure ou égale à la valeur du champ2
function isInfEgal(theForm1, theForm2){
	var isInfEgal=true;
	var theForm1Value=0;
	var theForm2Value=0;
	if (document.getElementById)
	{
		if (document.getElementById(theForm1))
		{
			theForm1Value = parseInt(document.getElementById(theForm1).value);
		}
		if (document.getElementById(theForm2))
		{
			theForm2Value = parseInt(document.getElementById(theForm2).value);
		}
	
	}
	else
	{
		theForm1Value = parseInt(document.forms[0].elements[theForm1].value);
		theForm2Value = parseInt(document.forms[0].elements[theForm2].value);
	}
	if (theForm1Value>=theForm2Value){
		isInfEgal=false;
	}
	return isInfEgal;
}

// La saisie du 0 est interdite
function numIs0(theFormId){
	var is0=false;
	
	var theFormValue=0;
	if (document.getElementById)
	{
		if (document.getElementById(theFormId))
		{
			theFormValue = parseInt(document.getElementById(theFormId).value);
		}
	}
	else
	{
		theFormValue = parseInt(document.forms[0].elements[theFormId].value);
	}
	if (theFormValue == 0)
	{	
		is0=true;
	}
	
	return is0;
}


// Test sur le format numérique d'un champ
function NumFormatOk(theFormId,nbNumMax){
	var NumFormatOk=true;
	var theFormValue=0;
	if (document.getElementById)
	{
		if (document.getElementById(theFormId))
		{
			theFormValue = document.getElementById(theFormId).value;	
		}
	}
	else
	{
		theFormValue = document.forms[0].elements[theFormId].value;
	}
	if (theFormValue!=""){
		var expReg="^\\d{1,"+nbNumMax+"}$";
		var myReg = new RegExp(expReg);
	   	if ( theFormValue.search( myReg ) == -1 ){
	      		NumFormatOk=false;
	   	}
   	}
   	return NumFormatOk;
}

// Test si le département saisi se trouve dans la liste prédéfinie
function deptIsFound(theFormId){
	var theFormValue="";
	if (document.getElementById)
	{
		if (document.getElementById(theFormId))
		{
			theFormValue = document.getElementById(theFormId).value;	
		}
	}
	else
	{
		theFormValue = document.forms[0].elements[theFormId].value;
	}
	var deptIsFound=false;
	if (theFormValue!=""){
		if (theFormValue.charAt(0)=='0'){
			theFormValue=theFormValue.substring(1);
		}
		
		var j = 0;
		while (j < deptList.length) {
	  		if (deptList[j] == theFormValue) {
	  			deptIsFound=true
	  			break;
	  		}else{
	  			j++;
	  		}
		}
	}
	return deptIsFound;
}


// Affichage de l'erreur d'un des tests de validité
function IsOnError(ErrorMsg)
{	
	if (document.getElementById)
	{
		document.getElementById('divError').innerHTML=ErrorMsg;
		document.getElementById('divError').style.visibility='visible';
	}
	else
	{
		var re = new RegExp ('<br />', 'gi') ;
		ErrorMsg = ErrorMsg.replace(re, '\n') ;
		alert(ErrorMsg);
	}
	return true;
}

// Supprime l'affichage de l'erreur d'un des tests de validité
function IsNotOnError(){
	if (document.getElementById)
	{
		document.getElementById('divError').innerHTML="";
		document.getElementById('divError').style.visibility='hidden';
	}

	return false;
}

// Test sur la saisie obligatoire d'un élément de type radio ou checkbox
function formIsChecked(theFormId, theFormType, documentForm){
	var IsChecked=false;
	for (var i=0;i < documentForm.elements.length;i++)
	{
	        var e = documentForm.elements[i];
	        if ((e.type == theFormType) && (e.name==theFormId))
	        {
	        	IsChecked =e.checked;
	       		if (IsChecked) {break}
	        }
	}    
	return IsChecked;		
}

// Test sur la saisie obligatoire d'un élément de formulaire
function formIsEmpty(theFormId){
	var IsEmpty=false;
	var theFormValue="";
	if (document.getElementById)
	{
		if (document.getElementById(theFormId))
		{
			theFormValue = document.getElementById(theFormId).value;
		}
	}
	else
	{
		theFormValue = document.forms[0].elements[theFormId].value;
	}
	if (trim(theFormValue) == "")
	{	
		IsEmpty=true;
	}
	
	return IsEmpty;
}

function IsValidPage()
{
	var IsValidPage=true;
	// Test pour la saisie obligatoire
	var FullErrorMsg="";

	for (i = 0; i < formIsRequired.length; i++)
	{
		if (formIsEmpty(formIsRequired[i][0]))
		{
			IsValidPage = false;
			var FieldName = /@XXX@/;
			var FinalFillErrorMsg = FillErrorMsg.replace(FieldName, formIsRequired[i][1]) ;
			FullErrorMsg += (FinalFillErrorMsg+"<br />");
		}
	}
	
	for (i = 0; i < formCheckIsRequired.length; i++)
	{
		
		if (!formIsChecked(formCheckIsRequired[i][0],formCheckIsRequired[i][2],formCheckIsRequired[i][3]))
		{
			IsValidPage = false;
			var FieldName = /@XXX@/;
			var FinalCheckErrorMsg = checkErrorMsg.replace(FieldName, formCheckIsRequired[i][1]) ;
			FullErrorMsg += (FinalCheckErrorMsg+"<br />");
			
		}
	
	}
	//champs1 < à champ2
	for (i = 0; i < formIsInf.length; i++)
	{
		
		if (!isInf(formIsInf[i][0],formIsInf[i][1]))
		{
			IsValidPage = false;
			var val1 = /@XXX@/;
			var val2 = /@YYY@/;
			var FinalInfErrorMsgTmp = ErrIsInf.replace(val1, formIsInf[i][2]) ;
			var FinalInfErrorMsg=FinalInfErrorMsgTmp.replace(val2,formIsInf[i][3]) ;
			FullErrorMsg += (FinalInfErrorMsg+"<br />");
			
		}
	
	}
	//champs1 =< à champ2
	for (i = 0; i < formIsInfEgal.length; i++)
	{
		
		if (!isInfEgal(formIsInfEgal[i][0],formIsInfEgal[i][1]))
		{
			IsValidPage = false;
			var val1 = /@XXX@/;
			var val2 = /@YYY@/;
			var FinalInfErrorMsgTmp = ErrIsInfEgal.replace(val1, formIsInfEgal[i][2]) ;
			var FinalInfErrorMsg=FinalInfErrorMsgTmp.replace(val2,formIsInfEgal[i][3]) ;
			FullErrorMsg += (FinalInfErrorMsg+"<br />");
			
		}
	
	}
	//Renseigner au moins un champ
	for (i = 0; i < atLeastOne.length; i++)
	{	
		if (! atLeastOneIsFilled(atLeastOne[i]))
		{
			IsValidPage = false;
			FullErrorMsg += (ErrAtLeastOne+"<br />");
		}		
	}

	//Renseigner au moins un champ dont la valeur est > 0
	for (i = 0; i < atLeastOneNot0.length; i++)
	{
		if (! atLeastOneIsNot0(atLeastOneNot0[i])){
			IsValidPage = false;
			FullErrorMsg += (ErrAtLeastOneNot0+"<br />");
		}
	}
		
	// interdiction de saisie 0
	for (i = 0; i < formNumNot0.length; i++)
	{	
		if (numIs0(formNumNot0[i][0]))
		{
			
			IsValidPage = false;
			var FieldName = /@XXX@/;
			var FinalnumIs0ErrMsg = ErrNumNot0.replace(FieldName, formNumNot0[i][1]) ;
			FullErrorMsg += (FinalnumIs0ErrMsg+"<br />");
		}		
	}
	// Test pour le format numérique
	for (i = 0; i < formNum.length; i++)
	{	
		if (! NumFormatOk(formNum[i][0],formNum[i][2]))
		{
			IsValidPage = false;
			var inconnue1 = /@XXX@/;
			var inconnue2 = /@YYY@/;
			var FinalNumFormatErrorMsg = ErrFormatNum.replace(inconnue1, formNum[i][1]) ;
			FullErrorMsg += (FinalNumFormatErrorMsg+"<br />");
		}		
	}
	// Test pour le département
	for (i = 0; i < formDept.length; i++)
	{	
		
		if (! deptIsFound(formDept[i][0]))
		{
			IsValidPage = false;
			FullErrorMsg += (ErrDept+"<br />");
		}		
	}
	// Affichage ou non des messages d'erreur
	if (!IsValidPage){
		IsOnError(FullErrorMsg);
	}else{
		IsNotOnError();
	}	
	return IsValidPage;
}

/************************** IMPRESSION  *****************************/

function imprime()
{
      // Définit la zone à imprimer
var za = '<table width="580" border="0" cellspacing="0" cellpadding="0"><tr> <td><img src="/images/main_logo.gif" width="244" height="126" border="0"></a></td></tr><tr bgcolor="#6E6E6E"><td colspan="2"><img src="/images/transp.gif" width="1" height="1"></td> </tr></table><img src="images/bando_notaires.gif" width="580" height="50">';
	
      var Headers = '<!DOCTYPE HTML PUBLIC ><HTML><HEAD><link rel="stylesheet" href="style.css" type="text/css" media="print,screen"></HEAD><BODY onload="window.print();window.close();">';
     
      var Footers = "</body></html>";
      zi = document.getElementById("frs_").innerHTML;
     
      // Ouvre une nouvelle fenetre
      var f = window.open("", "zoneImpr", "height=913, width=760,toolbar=0, menubar=0, scrollbars=1, resizable=1, status=0, location=0, left=10, top=10");

      
      // Ajoute les Données
      f.document.write ("" + Headers + za + zi +Footers);
      f.document.close();
      // Imprime et ferme la fenetre
}


