/*fonction faite:
tel(champs),CP(champs),prix(champs),obligatoire(tab,F,subm),init(colorObl,tab,F,subm),
verif(tab,F),addhandlers(f,tab),email(champs),defaut(champs).
a faire:
*/
function setObl(namechamps,tab,tab2,value)
{
 for(var i=0;i<tab.length;i++)
 if(tab[i].name==namechamps)
 {
 tab[i].obl=value;
 } 
 for(var i=0;i<tab2.length;i++)
 if(tab2[i].name==namechamps)
 tab2[i].obl=value;
 	

}

function desObl(namechamps,tab,tab2,F,colorLie)
{
 for(var i=0;i<tab2.length;i++)
 {
 setObl(tab2[i].name,tab,tab2,0);
 document.forms[F].elements[tab2[i].name].style.color="black";
 document.forms[F].elements[tab2[i].name].style.backgroundColor="white";
 }
 setObl(namechamps,tab,tab2,2);
  document.forms[F].elements[namechamps].style.color="black";
 document.forms[F].elements[namechamps].style.backgroundColor=colorLie;
}
function reObl(tab,tab2,F,colorLie)
{
for(var i=0;i<tab2.length;i++)
{
setObl(tab2[i].name,tab,tab2,2);
document.forms[F].elements[tab2[i].name].style.color="black";
document.forms[F].elements[tab2[i].name].style.backgroundColor=colorLie;
} 
}

 
function azegroupe(tab2,F,subm,colorObl,tab,colorLie)
{
var result=true;
 for(var i=0;i<tab2.length;i++)
 	  if(!verifgroupe(tab2[i],F,colorObl,tab,colorLie))result=false;
return(result);
		
}

function verifgroupe(tab2,F,colorObl,tab,colorLie)
{
 var res="";
 for(var j=0;j<tab2.length;j++)
 {

 	if(document.forms[F].elements[tab2[j].name].value!="" && tab2[j].obl)
	{
	desObl(tab2[j].name,tab,tab2,F,colorLie);
	 res+=document.forms[F].elements[tab2[j].name].value;
	break;
	}
 																																									
 }
 if(!res){reObl(tab,tab2,F,colorLie);return(false);}
  return(true);
}
function loadSetting(colorObl,tab,F,colorLie)
{
for(var n=0;n<tab.length;n++)
	{if(tab[n].obl==1)
	document.forms[F].elements[tab[n].name].style.backgroundColor=colorObl;
	else
			if(tab[n].obl==2)
			document.forms[F].elements[tab[n].name].style.backgroundColor=colorLie;
			else
					document.forms[F].elements[tab[n].name].style.backgroundColor="white"; 
					document.forms[F].elements[tab[n].name].style.color="black"; 
}
}
function lgt(tab,F)
{
for(i=0;i<tab.length;i++)
lg(document.forms[F].elements[tab[i].name],tab);
}
function retchamps(champs,tab)
{
 for(i=0;i<tab.length;i++)
 if(tab[i].name==champs.name || tab[i].name==champs.id)
  	return(tab[i]);
	
	return(false);
}


 

function autre(champs)
{
 return("OK");
}

function lg(champs,tab)
{
var c=retchamps(champs,tab);
if(c.lg)
if(champs.value.length>c.lg)
{champs.value=champs.value.substr(0,c.lg);return(false);
}
 return(true);
}
function defaut(champs){return("OK");}
function chaine(champs){
if(champs.value)
for(var i = 0; i < champs.value.length;i++)
  { 
   s =	champs.value.charAt(i);	  
   if(!((s >='a') && (s <= 'z')) && !((s >='A') && (s <= 'Z')) && s!=' ' && s!='\'' && s!='.' && s!='-')
	      {
				//champs.style.backgroundColor="red";
				//champs.style.color="white";	
				return(6);
    }
  }
return("OK");
}
function annee(champs)
{
if(champs.value=='')return("OK");


for(var i = 0; i < champs.value.length;i++)
  { 
   s =	champs.value.charAt(i);	  
   if(!((s >=0) && (s <= 9)))
    
    {
		 	//champs.style.backgroundColor="red";
			//champs.style.color="white";			 
      return(7);
    }
  }
  
  return("OK"); 

}

//**********************************email***************************************
function email(champs)
{
if(champs.value.length)
{
	for(var i = 0; i < champs.value.length;i++)
  { 
   s =	champs.value.charAt(i);	  
   if(!((s >=0) && (s <= 9)) && !((s>='a')&& (s<='z')) && !((s>='A')&& (s<='Z')) && s!='@'&& s!='.' && s!='-' && s!="_")
    
    {
      //champs.style.color="white";	
			//champs.style.backgroundColor="red";
			return(5);
    }
  }
	
	
	
		if(champs.value.lastIndexOf('@')==champs.value.length-1)
		{
				//champs.style.color="white";	
				//champs.style.backgroundColor="red";
				return(5);
		}
	
	s=champs.value.split(/@/);
	if(s.length!=2)
	{
		//champs.style.color="white";	
		//champs.style.backgroundColor="red";
		return(5);
	}
	s=s[1].split(/\./)
	if(s.length < 2)
	{
		//champs.style.color="white";	
		//champs.style.backgroundColor="red";
		return(5);
	}	
}
return("OK")
}
//**************************fin de email*********************************************

//**********************************tel*********************************************************
function tel(champs)
{
	if(champs.value=='')return("OK");
///////////////////////////////////////////////////////	
	
	function sep(nb)
{
	text="";
t=nb.split(/ /);
   	for(j=0;j<t.length;j++)
   	text=text+t[j];
   	return(text);
}
/////////////////////////////////////////////////////////

temp=champs.value	;
temp=sep(temp);

	if(temp.length<10)
  {
  	  //	champs.style.color="white";	
			//	champs.style.backgroundColor="red";	
				return(4);
}

prefixe=temp.substr(0,temp.length-8);
temp=temp.substr(prefixe.length,8);		 

    for(var i = 0; i < prefixe.length;i++)
  {

  
    
   s =	prefixe.charAt(i);
	  
    if(	!((s >=	0) && (s <= 9)) && s!='+' && s!='(' && s!=')')
    
    {
        //     champs.style.color="white";	
				//		 champs.style.backgroundColor="red";	
						 return(3);
    }
  }







    for(var i = 0; i < temp.length;i++)
  {

  
    
   s =	temp.charAt(i);
	  
    if(	!((s >=	0) && (s <= 9)))
    
    {
      //champs.style.color="white";	
		//	champs.style.backgroundColor="red";	
			return(2);
    }
  }

  
   return("OK"); 
}
 		

//**************************************************** Prix *******************************************
function prix(champs)
{
	if(champs.value=='')return("OK");
	function sep(nb)
	{
		text="";
		t=nb.split(/ /);
		for(j=0;j<t.length;j++)
		text=text+t[j];
		return(text);
	}
/////////////////////////////////////////////////////////	
	
			 
	for(var i = 0; i < champs.value.length;i++)
	{


		s=champs.value.charAt(i);

		if(s==' ')
			champs.value=sep(champs.value);

		if(	!((s >=	0) && (s <= 9)))
		{
			//						champs.style.color="white";	
		 //							champs.style.backgroundColor="red";	
									return(1);
		}
	}

	//champs.value=make_sep(' ',champs.value);
	
  return("OK"); 
}


function CP(champs)
{
///////////////////////////////////////////////////////////////////////////////////
	
	function sep(nb)
{
	text="";
t=nb.split(/ /);
   	for(j=0;j<t.length;j++)
   	text=text+t[j];
   	return(text);
}

/////////////////////////////////////////////////////////////////////////////////////////
if(champs.value=='')return("OK");

	champs.value=sep(champs.value);
	if(champs.value.length<5)return(0);
	if(champs.value.substr(0,2)==0)
	{
		//champs.style.color="white";	
		//champs.style.backgoundColor="red";	
		return(0);
	}
for(var i = 0; i < champs.value.length;i++)
  { 
   s =	champs.value.charAt(i);	  
   if(!((s >=0) && (s <= 9)))
    
    {
      //champs.style.color="white";	
			//champs.style.backgroundColor="red";	
			return(0);
    }
  }
  
  return("OK"); 
}
/*-------------------------------------------------------------------------
apres avoir charger ce script il faut initialise tab champs
 exemple:
tabchamps=new Array;
tabchamps[0]=new champs("CP",true,20,0,"test","champs");
tabchamps[1]=new champs("CP",true,20,1,"test2","champs2");
tabchamps[2]=new champs("CP",false,20,0,"test3","champs3");


un champs etant de la forme champs(string type,boolean obligatoire,int length,int degre(de validation),string name,string libelle);
il faut un tableau d'erreur si possible fixe donc dans un fichier .js

ensuite il faut recuperer les fonction de verification deja ecrite et renvoye "OK" a la place de true et renvoye l'entree dans le
tableau d'erreur (et enleve le alert)
exemple
			 return(3); si le texte d'erreur est taberreur[3]
			!! tous mes tableaux commence a 0.
			!!penser a renvoyer "OK" si le champ est vide.
il ne reste plus qu'a appeler init(Color colorObl,Array tab,String F,String subm)
--------------------------------------------------------------------------------------------------------------------------------------*/

function Champs(type,obl,lg,dg,name,libelle)
{
this.type=type;
this.obl=obl;
this.lg=lg;
this.dg=dg;
this.name=name;
this.libelle=libelle;
}
function obligatoire(tab,F,subm,tab2,colorObl,colorLie)
{
var result=azegroupe(tab2,F,subm,colorObl,tab,colorLie);
for(var n=0;n<tab.length;n++)
{
if(tab[n].obl==1 && document.forms[F].elements[tab[n].name].value=='')
{
 document.forms[F].elements[subm].disabled=true;
 result=azegroupe(tab2,F,subm,colorObl,tab,colorLie);
	return(false);
}
}
									 
document.forms[F].elements[subm].disabled=false;
if(tab2.length)
{
result=azegroupe(tab2,F,subm,colorObl,tab,colorLie);
document.forms[F].elements[subm].disabled=!result;
return(result);
}
return(true);
}
function form_init(colorObl,tab,F,subm,colorLie,tab2)
{
//pour le debug

if(!document.forms[F])
{
alert("veuillez donner un nom ou un id a votre formulaire");return(false); 
}
//fin de pour le debug
if(!tab2)var tab2=new Array;
addhandlers(document.forms[F],tab,subm,colorObl,tab2,colorLie);
 //document.forms[F].elements[subm].disabled=true;
 loadSetting(colorObl,tab,F,colorLie);
 	setTimeout("document.forms['"+F+"'].click();",10);
//	obligatoire(tab,F,subm);
}
function verif(tab,F)
{
 var erreur=new Array;
 var confirme=new Array;
 var nb=0;
 var nb2=0;
 var fieldsave;
 var test;
 var ln="\n"
 for(var n=0;n<tab.length;n++)
 {
if(tab[n].dg == 0)
		eval("if((test="+tab[n].type+"(document.forms[F].elements[tab[n].name]))!='OK'){erreur[nb++]=tab[n].libelle+':'+ln+taberreur[test];if(nb==1)fieldsave=document.forms[F].elements[tab[n].name];}");	
if(tab[n].dg == 1)										 
 			eval("if((test="+tab[n].type+"(document.forms[F].elements[tab[n].name]))!='OK'){confirme[nb2++]=tab[n].libelle+':'+ln+taberreur[test];if(nb==0 && nb2==1)fieldsave=document.forms[F].elements[tab[n].name];}");
	}		
return(afficheerreur(erreur,confirme));			

}

function afficheerreur(erreur,confirme)
{
var texte='';
for (i=0;i<erreur.length;i++)
texte=texte+erreur[i]+'\n';
if(texte!='')
{
alert(texte);
return(false);
}
texte="Attention!\n";
for (i=0;i<confirme.length;i++)
texte=texte+confirme[i]+'\n';
if(texte!="Attention!\n")
{
texte=texte+"Voulez vous valider le formulaire?";
return(confirm(texte));
}

}
function addhandlers(f,tab,subm,colorObl,tab2,colorLie)
{
 		var onmouseover_handler=function onmouseover(event){obligatoire(tab,f.name,subm,tab2,colorObl,colorLie)};
 		var click_handler = function onclick(event){obligatoire(tab,f.name,subm,tab2,colorObl,colorLie);};
    var change_handler = function onchange(event){alert('aze');};
    var focus_handler = function onfocus(event){this.style.color="black";this.style.backgroundColor="white";};
		    var focusObl_handler = function onfocus(event){this.style.color="black";this.style.backgroundColor=colorObl;};
    var focusLie_handler = function onfocus(event){this.style.color="black";this.style.backgroundColor=colorLie;};
		var blur_handler = function onblur(event){obligatoire(tab,f.name,subm,tab2,colorObl,colorLie);};
		var keyUp_handler = function onkeyup(event){obligatoire(tab,f.name,subm,tab2,colorObl,colorLie);lg(this,tab);};
   
	
    for(var i = 0; i <tab.length; i++) {
        var e = f.elements[tab[i].name];
				if(tab[i].obl==1)
				e.onfocus=focusObl_handler;
				else
						if(tab[i].obl==2)
						e.onfocus=focusLie_handler;
						else
								e.onfocus=focus_handler;
				
        //e.onclick = click_handler;
       // e.onchange = change_handler;
       // e.onfocus = focus_handler;
        e.onblur = blur_handler;
       e.onkeyup=keyUp_handler;
    }
		//f.onsubmit=function onsubmit(event){lgt(tab,f.name);return(verif(tab,f.name));}
		f.onreset=function onreset(event){setTimeout("document.forms['"+f.name+"'].click();",10);};
		
		
		f.onsubmit=function onsubmit(event){lgt(tab,f.name);if(obligatoire(tab,f.name,subm,tab2,colorObl,colorLie))return(verif(tab,f.name));else return(false);};
		f.onclick=click_handler;
		}
