 
function OnSubmitForm(data)
{
  // Effectue la validation du formulaire 
  if (OnValidateForm())
  {	
    // Création du champ CreationDate pour la date d'envoi du formulaire
//    var now = new Date()
//    _CreateHiddenField("CreationDate",document.forms[0],now)
//    _CreateHiddenField("CreationDate",document.forms[0],now.toLocaleString())
    document.forms[0].action='/web/assura/contenu/contactmanager.nsf/OnSubmitAgent'
    document.forms[0].name='formular'
    document.forms[0].id='formular'
    document.forms[0].method='post'
    document.forms[0].submit()
  }
}
/***************************************************************************************
  Function ValidateField
  ===========================
  Effectue la validation primaire du champ passé en paramètre. 
  IN:  fieldname:String    Nom du champ à faire valider   
       notnull:boolean     Si vrai, check si le champ n'est pas nul
       isnumber:boolean    Si Vrai: test si c'est un nombre 
       minlength:integer   0 = pas de test de longueur minimum, sinon, doit avoir 
				au moins n carractères
	
  OUT:String               vide si champ validé sinon ID du type de validation qui a échoué
/**************************************************************************************/
function ValidateField(fieldname,notnull,isnumber,isalpha,isalphanum,mailcheck,isdate,isminsize,iscustom,minsize)
{
  var ctrl = ctrl = document.getElementById('_FRM_'+fieldname)
  if (ctrl==null) ctrl = document.getElementsByName('_FRM_'+fieldname)[0]
  var msg  =  document.getElementById('_ERRMSG_'+fieldname)
  
  // teste si le champ est vide, si oui, on sort de la fonction 
  if (notnull!="")	if(ShowHideErrorMessage(_isEmpty('_FRM_'+fieldname),notnull,ctrl,msg)) return true
  // teste si le champ est vide, si oui, on sort de la fonction 
  if (iscustom!="")
  {
	if(ShowHideErrorMessage(eval('validate_'+fieldname+'()'),iscustom,ctrl,msg)) return true
  }
  // teste si le champ contient le nombre minimum de carractères
  if (isminsize!="")if(ShowHideErrorMessage(_isMinSize(ctrl.value,minsize) ,isminsize,ctrl,msg,minsize)) return true
  // teste si le champ conteint des valeures numériques sinon on sort de la fonction
  if (isnumber!="")if(ShowHideErrorMessage(_isNumber(ctrl.value) ,isnumber,ctrl,msg)) return true
  // teste si le champ conteint des valeures Alpha (+ espace) sinon on sort de la fonction
  if (isalpha!="")if(ShowHideErrorMessage(_isAlpha(ctrl.value) ,isalpha,ctrl,msg)) return true
  // teste si le champ conteint des valeures alphanumérique sinon on sort de la fonction
  if (isalphanum!="")if(ShowHideErrorMessage(_isAlphaNum(ctrl.value) ,isalphanum,ctrl,msg)) return true
  // teste si le champ conteint un email valide sinon on sort de la fonction
  if (mailcheck!="")if(ShowHideErrorMessage(_CheckEmail(ctrl.value) ,mailcheck,ctrl,msg)) return true
  // teste si le champ contient une date valide sinon on sort de la fonction
  if (isdate!="")if(ShowHideErrorMessage(_isDate(ctrl.value) ,isdate,ctrl,msg)) return true
		
 return false
}
function _isEmpty(ctrlName) 
{ 
  ctrl = document.getElementById(ctrlName)
  if (ctrl!=null)
  {
    switch(ctrl.type)
    {
      case 'checkbox': 
      case 'radio':
      {
  	 ctrl = document.getElementsByName(ctrlName)
        for ( i=0;i<ctrl.length;i++)
        {
          if (ctrl[i].checked==true) return false
        } 
        return true
      }
      case 'text':
      case 'textarea':  
      case 'hidden': 
      {
        if (ctrl.value.length>0)
        {
          return false
        }
        return true
      }
      default: {}
    }
  }
}
function _isMinSize(value,minsize) 
{ 
  if (value.length>0)
  {
    if (value.length<parseInt(minsize)) return true; else return false
  }
}
function _isNumber(value) 
{ 
  if (value.length>0)
  {
    var tab= value.match(new RegExp(/[0-9]/g))
    if (tab!=null) return value!=tab.join(""); else return true
  } else return false
}
function _isAlpha(value) 
{ 
  if (value.length>0)
  {
    var tab= value.match(new RegExp(/[a-zA-ZáÁâÂàÀäÄãÃçéÉèÈêÊëËíÍìÌîÎïÏñÑóÓòÒôÒöÖõÕúÚùÙûÛýÝÿ\s]/g))
    if (tab!=null) return value!=tab.join(""); else return true
  } else return false
}
function _isAlphaNum(value) 
{ 
  if (value.length>0)
  {
    var tab= value.match(new RegExp(/[a-zA-Z0-9áÁâÂàÀäÄãÃçéÉèÈêÊëËíÍìÌîÎïÏñÑóÓòÒôÒöÖõÕúÚùÙûÛýÝÿ\s]/g))
    if (tab!=null) return value!=tab.join(""); else return true
  } else return false
}
function _isDate(value)
{
  if (value.length>0)
  {
    var pivot = 30;
    ctl = /^(\d\d?)(\/|-|\.)(\d\d?)(\/|-|\.)(\d\d)(\d\d)?$/;
    var tab = value.match(ctl);
    if (!tab) 
      return true;
    else 
    {
      if ((tab.length == 6) || (!tab[6]))
        tab[5] = ((tab[5] < pivot) ? 2000 : 1900) + parseInt(tab[5],10);
      else 
        tab[5] = parseInt(tab[5].concat(tab[6]),10);
      var unedate = new Date(tab[5], parseInt(tab[3],10)-1, tab[1]);
      return !((unedate.getFullYear() == tab[5]) && (unedate.getMonth() == tab[3]-1) && (unedate.getDate() == tab[1]));
    }
  }
  return false
}
function _CheckEmail(value)
{
  if (value.length>0)
  {
 	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)éèêëàâäçùûüìîïÉÈÊËÀÂÄÇÙÛÜÏ<>@,;:¦#°§¬|+{}'`´~/!¨$£^*%&=?¢\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=value.match(emailPat);
	if (matchArray==null) return true;
	
	var user=matchArray[1]
	var domain=matchArray[2]	
	
	if (user.match(userPat)==null) return true; 
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++) if (IPArray[i]>255) return true; 
		return false;
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) return true;
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) return true;
	
	if (len<2) return true;
  }
  return false
}
/*
/**/
/***************************************************************************************
  Function _CreateHiddenField
  ===========================
  Crée un champ caché dans un formulaire (ou document) web et le rempli avec un contenu
  IN:  name:      Nom du champs caché (name + ID) et ajoute le "_FRM_xxxxx"
       formname:  Handle du formulaire(document) qui contiendra le champ   
       value:     Valeur contenu dans le champ 
  OUT: n/a
/**************************************************************************************/
function _CreateHiddenField(name,formname,value)
{
	var ctrl = document.createElement("input")
	var attr1 = attr1 = document.createAttribute("name")
	attr1.nodeValue="_FRM_"+name
	ctrl.setAttributeNode(attr1)
	var attr2 = document.createAttribute("id")
	attr2.nodeValue="_FRM_Contactdate"
	ctrl.setAttributeNode(attr2)
	var attr3 = document.createAttribute("type")
	attr3.nodeValue="hidden"
	ctrl.setAttributeNode(attr3)
	var attr4 = document.createAttribute("value")
	attr4.nodeValue=value
	ctrl.setAttributeNode(attr4)
	formname.appendChild(ctrl)
}
function _toggleHighLight(ctrl,toggle)
{
  if (ctrl!=null)
  {
    if(toggle)
    {
       // on ajoute le _REQ à la classe si pas déjà mis 
        if (ctrl.className.indexOf("_REQ")==-1) ctrl.className = ctrl.className+"_REQ"
    }
    else
    {
       // On supprime le _REQ à la classe
       ctrl.className = ctrl.className.replace("_REQ","")
    }
  }
}
// Routine interne pour l'affiche du message d'erreur
function ShowHideErrorMessage(state,action,ctrl,msg,minsize)
{
  if(action!='')
  {
    ctrl_box = document.getElementById(ctrl.name+"_BOX")
    if (state)
    {  
	
      _toggleHighLight(ctrl_box,true)
     
      // Affiche le message d'erreur	
      if (msg!=null) 
      {
        if (action=='ERR_notenoughtchar') 
	   msg.innerHTML=MsgListError[action].replace('%d',minsize)
	 else	
	   msg.innerHTML=MsgListError[action]
        msg.className='ErrMsg'
      }
      if (ctrl.type=='hidden')
      {
	 var ctrlD = document.getElementById(ctrl.name+"_Day")
	 if (ctrlD!=null) { ctrlD.focus(); ctrlD.select();}
      }
      else
      {
        ctrl.focus()
 	 if (ctrl.select) ctrl.select()
      }
    } 
    else
    {
      _toggleHighLight(ctrl_box,false)
      msg.innerHTML=""
      msg.className='NoErrMsg'
    }
   }
   return state
}
function Blur(ctrl,code,seq)
{
  if(code=='d') 
  {   
      // On manipule un champ date 
	if(seq==1) ctrldate = document.getElementById(ctrl.name.replace("_Day",""))
	if(seq==2) ctrldate = document.getElementById(ctrl.name.replace("_Month",""))
	if(seq==3) ctrldate = document.getElementById(ctrl.name.replace("_Year",""))
       
	ctrldate.value= document.getElementById(ctrldate.name+"_Day").value+"."+
			   document.getElementById(ctrldate.name+"_Month").value+"."+
			   document.getElementById(ctrldate.name+"_Year").value
  }
}
function KeyPress(ctrl,event,code,seq)
{
  if(code=='d') 
  { 
     // Key press séquence pour un champ date 
     var keycode
     if (event.which!=null) keycode=event.which; else keycode=event.keyCode
     
     if (keycode==46) 
     {
 	var ctrldate
	if(seq==1) ctrldate = document.getElementById(ctrl.name.replace("_Day","_Month"))
	if(seq==2) ctrldate = document.getElementById(ctrl.name.replace("_Month","_Year"))
       if (ctrldate!=null) 
 	{
	  ctrldate.focus()
 	  ctrldate.select()
	}
       return  false
     }
  }	
  return true
}
