// JavaScript Document
function isValidDate(formField)
{
	var result = true;
	if (formField.value!="") {
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{ 			
  			var day = parseInt(elems[0],10);
			var month = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[1]) && (month > 0) && (month < 13) &&
					 allDigits(elems[0]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && (elems[2].length == 4);
 		}
 		
  		if (!result)
 		{
 			alert('SVP entrez une date au format JJ/MM/AAAA .');
			formField.focus();
		}
	} 
	}	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

//Fonction permettant de remplacer les caractères spéciaux dans les champs
//Appel : onBlur="interdireCaractereChamps(1,this)" 
function interdireCaractereChamps(code, champ)
  {
  texteChamps = champ.value;

  switch (code)
    {
    case 1:
      //remplacement des caractères dans les champs de type code
      n=window.event.keyCode;
      switch (n)
        { // caractères interdits
        case 34: window.event.returnValue=false;break; // "
        case 38: window.event.returnValue=false;break; // &
        case 39: window.event.returnValue=false;break; // '
        case 42: window.event.returnValue=false;break; // *
        case 43: window.event.returnValue=false;break; // +
        case 46: window.event.returnValue=false;break; // .
        case 47: window.event.returnValue=false;break; // /
        case 58: window.event.returnValue=false;break; // :
        case 59: window.event.returnValue=false;break; // ; 
        case 60: window.event.returnValue=false;break; // <
        case 61: window.event.returnValue=false;break; // =
        case 62: window.event.returnValue=false;break; // >
        case 63: window.event.returnValue=false;break; // ?
        case 64: window.event.returnValue=false;break; // @
        case 91: window.event.returnValue=false;break; // [
        case 92: window.event.returnValue=false;break; // \
		    case 93: window.event.returnValue=false;break; // ]
        case 124: window.event.returnValue=false;break; // |
        }
      break;
    case 2:
      //remplacement des caractères dans les champs de type libellé
      n=window.event.keyCode;
      switch (n)
        { // caractères interdits
        case 34: window.event.returnValue=false;break; // "
        case 38: window.event.returnValue=false;break; // &
        case 42: window.event.returnValue=false;break; // *
        case 43: window.event.returnValue=false;break; // +
        case 58: window.event.returnValue=false;break; // :
        case 59: window.event.returnValue=false;break; // ; 
        case 60: window.event.returnValue=false;break; // <
        case 61: window.event.returnValue=false;break; // = 
        case 62: window.event.returnValue=false;break; // >
        case 63: window.event.returnValue=false;break; // ?
        case 64: window.event.returnValue=false;break; // @
        case 91: window.event.returnValue=false;break; // [
        case 92: window.event.returnValue=false;break; // \
		    case 93: window.event.returnValue=false;break; // ]
        case 124: window.event.returnValue=false;break; // |
		    default: window.event.returnValue=true;break;
        }
      break;
    case 3:
      //remplacement des caractères dans les autres types de champs
      n=window.event.keyCode;
      switch (n)
        {
        //case 47: window.event.returnValue=false;break;
        //case 92: window.event.returnValue=false;break;
        }
      break;
    case 4:
      //remplacement des caractères dans les types mot de passe
      n=window.event.keyCode;
      switch (n)
        { // caractères interdits
        case 47: window.event.returnValue=false;break; // /
        case 64: window.event.returnValue=false;break; // @
        case 92: window.event.returnValue=false;break; // \
        }
      break;
    case 5:
      //remplacement des caractères dans les types email
      n=window.event.keyCode;
      switch (n)
        { // caractères interdits
        case 34: window.event.returnValue=false;break; // "
        case 38: window.event.returnValue=false;break; // &
        case 39: window.event.returnValue=false;break; // '
        case 42: window.event.returnValue=false;break; // *
        case 43: window.event.returnValue=false;break; // +
        case 47: window.event.returnValue=false;break; // /
        case 58: window.event.returnValue=false;break; // :
        case 59: window.event.returnValue=false;break; // ; 
        case 60: window.event.returnValue=false;break; // <
        case 61: window.event.returnValue=false;break; // = 
        case 62: window.event.returnValue=false;break; // >
        case 63: window.event.returnValue=false;break; // ?
        case 91: window.event.returnValue=false;break; // [
        case 92: window.event.returnValue=false;break; // \
		    case 93: window.event.returnValue=false;break; // ]
        case 124: window.event.returnValue=false;break; // |
        }
      break;
     case 6:
      //remplacement des caractères dans les champs de type libellé (numérique)
      n=window.event.keyCode;
     
      switch (n)
        { // caratères autorisés
       
        case 48: window.event.returnValue=true;break; // 0
        case 49: window.event.returnValue=true;break; // 1
        case 50: window.event.returnValue=true;break; // 2
        case 51: window.event.returnValue=true;break; // 3
        case 52: window.event.returnValue=true;break; // 4
        case 53: window.event.returnValue=true;break; // 5
        case 54: window.event.returnValue=true;break; // 6
        case 55: window.event.returnValue=true;break; // 7
        case 56: window.event.returnValue=true;break; // 8
        case 57: window.event.returnValue=true;break; // 9
        case 47: window.event.returnValue=true;break; // /
        case 46: window.event.returnValue=true;break; // .
        default: window.event.returnValue=false;break;
        }
        break;
      case 7:
      //n° de téléphone ou de télécopie
      n=window.event.keyCode;
      
      switch (n)
        { // caratères autorisés
        case 48: window.event.returnValue=true;break; //0
        case 49: window.event.returnValue=true;break; //1
        case 50: window.event.returnValue=true;break; //2
        case 51: window.event.returnValue=true;break; //3
        case 52: window.event.returnValue=true;break; //4
        case 53: window.event.returnValue=true;break; //5
        case 54: window.event.returnValue=true;break; //6
        case 55: window.event.returnValue=true;break; //7
        case 56: window.event.returnValue=true;break; //8
        case 57: window.event.returnValue=true;break; //9
        case 43: window.event.returnValue=true;break; //+
        case 32: window.event.returnValue=true;break; //space
        case 46: window.event.returnValue=true;break; // .
        case 47: window.event.returnValue=true;break; // /
        case 40: window.event.returnValue=true;break; // (
        case 41: window.event.returnValue=true;break; // )
        default: window.event.returnValue=false;break;
        }
      break;
    case 8:
      //n° de téléphone ou de télécopie abrégé et Code postal
      n=window.event.keyCode;
      switch (n)
        {
        case 48: window.event.returnValue=true;break; //0
        case 49: window.event.returnValue=true;break; //1
        case 50: window.event.returnValue=true;break; //2
        case 51: window.event.returnValue=true;break; //3
        case 52: window.event.returnValue=true;break; //4
        case 53: window.event.returnValue=true;break; //5
        case 54: window.event.returnValue=true;break; //6
        case 55: window.event.returnValue=true;break; //7
        case 56: window.event.returnValue=true;break; //8
        case 57: window.event.returnValue=true;break; //9
		    case 32: window.event.returnValue=true;break; //space
		    case 40: window.event.returnValue=true;break; // (
        case 41: window.event.returnValue=true;break; // )
        default: window.event.returnValue=false;break;
        }
       break;
    case 9:
      //remplacement des caractères dans les champs de type texte
      // cas rajouté pour la ville de Décines.
      n=window.event.keyCode;
      switch (n)
      { // caractères interdits
        case 92: window.event.returnValue=false;break; // \
		    case 124: window.event.returnValue=false;break; // |
      }
      break;
    }
     
    champ.value = texteChamps;
  }
  
// appel : onBlur="isValidMail(this)"
function isValidMail(Field)
{
  var Str = Field.value;
	if (Str != '') {
  	var result = false;
    var AtPos = Str.lastIndexOf("@");
    var DotPos= Str.lastIndexOf(".");
    if((AtPos>0)&&(DotPos>0)&&(AtPos<DotPos))
    {
  	 	var domainExtList='ac.ad.ae.af.ag.ai.al.am.an.ao.aq.ar.as.at.au.aw.az.ba.bb.bd.be.bf.bg.bh.bi.bj.bm.bn.bo.br.bs.bt.bv.bw.by.bz.ca.cc.cd.cf.cg.ch.ci.ck.cl.cm.cn.co.cr.cs.cu.cv.cx.cy.cz.de.dj.dk.dm.do.dz.ec.ee.eg.eh.er.es.et.fi.fj.fk.fm.fo.fr.fx.ga.gb.gd.ge.gf.gg.gh.gi.gl.gm.gn.gp.gq.gr.gs.gt.gu.gw.gy.hk.hm.hn.hr.ht.hu.id.ie.il.im.in.io.iq.ir.is.it.je.jm.jo.jp.ke.kg.kh.ki.km.kn.kp.kr.kw.ky.kz.la.lb.lc.li.lk.lr.ls.lt.lu.lv.ly.ma.mc.md.mg.mh.mk.ml.mm.mn.mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.na.nc.ne.nf.ng.ni.nl.no.np.nr.nt.nu.nz.om.pa.pe.pf.pg.ph.pk.pl.pm.pn.pr.ps.pt.pw.py.qa.re.ro.ru.rw.sa.sb.sc.sd.se.sg.sh.si.sj.sk.sl.sm.sn.so.sr.st.su.sv.sy.sz.tc.td.tf.tg.th.tj.tk.tm.tn.to.tp.tr.tt.tv.tw.tz.ua.ug.uk.um.us.uy.uz.va.vc.ve.vg.vi.vn.vu.wf.ws.ye.yt.yu.za.zm.zr.zw.com.edu.gov.int.mil.net.org.biz.pro.info.aero.name.coop.arpa.nato.museum.EoF';
      var domainExt=domainExtList.split(".");
      var emailExt=Str.substr(DotPos+1);
      emailExt=emailExt.toLowerCase();
      for(i=0;domainExt.length;i++)
      {
  		 if (domainExt[i]=='EoF')  break; //infinite loop else
       if (emailExt==domainExt[i])  {result=true;break;}
      }
    }
  	
  	if (!result)
   	{
   			alert('SVP entrez une adresse mail valide au format utilisateur@serveur.extension .');
  			Field.focus();
  	}
  	return(result);
	}
}
