//  Fonctions de vérification de champs
//  Fonction de vérification de saisie code postal
function verif_cp(cp)
{
//var reg_cp = /^[0-9]{5}$/
var reg_cp = /^(0[1-9]|[1-9][0-9])[0-9]{3}$/
//code postal francais ^(0[1-9]|[1-9][0-9])[0-9]{3}$
// code postal belge ^(F-[0-9]{4,5}|B-[0-9]{4})$
if (!(reg_cp.exec(cp)!=null))
	return(false);

return(true);
}

//  Fonction de vérification de saisie d'email au bon format
function verif_mail(email)
{
if (email!='')
{
	var reg_mail = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/;
	
	if (!(reg_mail.exec(email)!=null))
		return(false);
		
	return(true);
}
return(false);
}

// Fonction de vérification de numéro de tél (basique)
function verif_tel(tel) {
if (tel!='') {
	var reg_tel = /^[0-9]+([0-9]|[.-]|\s)+$/;
	if (!(reg_tel.exec(tel)!=null))
		return(false);
		
	return(true);
}
return(false);
}

function ok_formulaire() {
  zone_invisible('message_erreur');
}

function erreur_formulaire(message) {
  document.getElementById('message_erreur').innerHTML=
'					<div class="bloc_creux_orange671_haut"></div>'+
'					<div class="bloc_creux_orange671_bas">'+
'					'+
'						<p>'+message+'</p>'+
'					</div>';
  zone_visible('message_erreur');
}

// Changement style d'une zone
// false -> erreur, true -> ok
function change_style_zone(type,targetId, zone_valide)
{
if (zone_valide) {
  if (type=='text' || type=='textarea' || type=='select-one'
  		|| type=='select-multiple') {
  	endroit=document.getElementById(targetId).className.indexOf("champ_erreur");
  	if (endroit!=-1) {
  		nvlleclasse=document.getElementById(targetId).className.substring(0, endroit-1);
    	document.getElementById(targetId).className=nvlleclasse;
    }  		
  } else if (type=='radio' || type=='checkbox') {
   	endroit=document.getElementById(targetId).className.indexOf("rad_err");
  	if (endroit!=-1) {
  		//alert(document.getElementById(targetId).className);
  		nvlleclasse=document.getElementById(targetId).className.substring(0, endroit-1);
    	document.getElementById(targetId).className=nvlleclasse;
    }
  }
} else {
  if (type=='text' || type=='textarea' || type=='select-one'
  		|| type=='select-multiple') {
  		if (document.getElementById(targetId).className.indexOf("champ_erreur")==-1)
    		document.getElementById(targetId).className=document.getElementById(targetId).className+' champ_erreur';
  } else if (type='radio' || type=='checkbox') {
    if (document.getElementById(targetId).className!=null && document.getElementById(targetId).className!="") {
    	if (document.getElementById(targetId).className.indexOf("rad_err")==-1)
    		document.getElementById(targetId).className=document.getElementById(targetId).className+' rad_err';	
    } else
    	document.getElementById(targetId).className='rad_err';	
}
}
}

function getSelectedRadioValue(radiobutton){
 var returnValue = "";

 if ( radiobutton.length == 1){
  returnValue = radiobutton.value;
 } else {
  for (i=0;i<radiobutton.length;i++){
   if (radiobutton[i].checked==true) {
    returnValue=radiobutton[i].value;
   }
  }
 }
 return returnValue;
}

function getCheckboxstatus(checkbox) {
coche='';
for (i=0; i<checkbox.length; i++) {
    if (checkbox[i].checked)
      coche='oui';
}
return coche;
}

function getSelectstatus(selection) {
coche='';
for (i=0; i<selection.length; i++) {
    if (selection[i].selected)
      coche='oui';
}

return coche;
}

function verif_champ(bo, targetId, exclu) {
var targetName=bo+"."+targetId;
if (bo == 'custo') targetName=targetId;
if (document.getElementsByName(targetName)[0]==null)
  return(1);
  
var type=document.getElementsByName(targetName)[0].type;

if (type=='text' || type=='hidden' || type=='select-one' || type=='textarea') {
  var valeur=document.getElementById(targetId).value;
} else if (type=='radio') {
  var valeur=getSelectedRadioValue(document.getElementsByName(targetName));
} else if (type=='checkbox') {
  var valeur=getCheckboxstatus(document.getElementsByName(targetName));
} else if (type=='select-multiple') {
  var valeur=getSelectstatus(document.getElementById(targetId));
}
//alert(valeur);
if (valeur==null || valeur=="") {
    change_style_zone(type,targetId, false);
    retour=0;
  } else {
    change_style_zone(type,targetId, true);
    
    if (exclu!=null && valeur==exclu) {
      change_style_zone(type,targetId, false);
      retour=0;
    } else retour=1;
  }
  
  return(retour);
}

function verif_champ_data(bo, targetId, typeData) {
var targetName=bo+"."+targetId;
if (document.getElementsByName(targetName)[0]==null)
  return(1);
  
var type=document.getElementsByName(targetName)[0].type;

if (type=='text' || type=='hidden' || type=='select-one' || type=='textarea') {
  var valeur=document.getElementById(targetId).value;
} else if (type=='radio') {
  var valeur=getSelectedRadioValue(document.getElementsByName(targetName));
} else if (type=='checkbox') {
  var valeur=getCheckboxstatus(document.getElementsByName(targetName));
} else if (type=='select-multiple') {
  var valeur=getSelectstatus(document.getElementById(targetId));
}

if (valeur!=null && valeur!="") {
	if (typeData=='file') return(1);
	
	if (typeData=='cp') {
		if (verif_cp(valeur)) {
			change_style_zone('text',targetId, true);
			return(1);
		} else {
			change_style_zone('text',targetId, false);
			return(0);
		}
	}
	
	if (typeData=='tel') {
		if (verif_tel(valeur)) {
			change_style_zone('text',targetId, true);
			return(1);
		} else {
			change_style_zone('text',targetId, false);
			return(0);
		}
	}
	
	if (typeData=='email') {
		if (verif_mail(valeur)) {
			change_style_zone('text',targetId, true);
			return(1);
		} else {
			change_style_zone('text',targetId, false);
			return(0);
		}
	}	
}
return(1);
}

//  Soumission du formulaire
function verification_generale(val, message) {
// Partie Tel
if (val=='contact_tel') {
	if(check_cp('tel_cp'))
		return(1);
	else
		return(0);
}

var oksubmit=1;

var bo='contactBO';

// Champs paramétrables
oksubmit=oksubmit & verif_champs(bo);

oksubmit=oksubmit & verif_champ(bo, 'mail_dejaclient', null);

if (document.getElementById('isclient').value=='true')
	internautebo='clientBO';
else
	internautebo='prospectBO';

oksubmit=oksubmit & verif_champ(internautebo, 'nom', null);
oksubmit=oksubmit & verif_champ(internautebo, 'prenom', null);
oksubmit=oksubmit & verif_champ(internautebo, 'adresse', null);
oksubmit=oksubmit & verif_champ(internautebo, 'code_postale', null);
oksubmit=oksubmit & verif_champ_data(internautebo, 'code_postale', 'cp');

oksubmit=oksubmit & verif_champ(internautebo, 'telephone_fixe', null);
oksubmit=oksubmit & verif_champ_data(internautebo, 'telephone_fixe', 'tel');

if (document.getElementById('isclient').value=='true') {
	oksubmit=oksubmit & verif_champ(bo, 'mail_inscription', null);
	oksubmit=oksubmit & verif_champ(internautebo, 'email', null);
	oksubmit=oksubmit & verif_champ_data(internautebo, 'email', 'email');
	oksubmit=oksubmit & verif_champ(internautebo, 'commune', null);
} else {
	oksubmit=oksubmit & verif_champ(internautebo, 'email', null);
	oksubmit=oksubmit & verif_champ_data(internautebo, 'email', 'email');
	oksubmit=oksubmit & verif_champ(internautebo, 'id_commune_prospect', null);
}

oksubmit=oksubmit & verif_champ(bo, 'blocOptinClientPartenaire', null);
oksubmit=oksubmit & verif_champ(bo, 'blocOptinProspectPartenaire', null);

if (oksubmit==1) ok_formulaire();
else erreur_formulaire(message);

return(oksubmit);
}

function fsubmit(val, verifications, message) {
	if (verifications) {
		resu=verification_generale(val, message);
	} else {
		resu=1;
	}
	
	if (resu==1) {
		if (val == 'contact_mail') {
			if (document.getElementsByName('contactBO.mail_message')[0]!=null) {
				replaceCrLf('mail_message');
			}
		}
		if(val == 'contact_tel'){
			getCommuneLayer(document.getElementById("tel_cp").value,'contact_tel');
		}else{
			if(document.getElementById('desactiver_contact')!= null){
   				document.getElementById("desactiver_contact").removeAttribute("href");
   			}
			document.forms[val].submit();
		}
	}
}

// Checks intermédiaires
function check_email(targetId) {
	var email=document.getElementById(targetId).value;
	if (verif_mail(email)) {
		change_style_zone('text',targetId, true);
		ok_formulaire();
		return(true);
	} else {
		change_style_zone('text',targetId, false);
		erreur_formulaire("Merci de v&eacute;rifier l'email saisi.");
		return(false);
	}
}

function check_cp(targetId) {
	var valeur=document.getElementById(targetId).value;
	if (verif_cp(valeur)) {
		change_style_zone('text',targetId, true);
		ok_formulaire();
		return(true);
	} else {
		change_style_zone('text',targetId, false);
		erreur_formulaire("Merci de v&eacute;rifier le code postal saisi.");
		return(false);
	}
}

function check_tel(targetId) {
	var valeur=document.getElementById(targetId).value;
	if (verif_tel(valeur)) {
		change_style_zone('text',targetId, true);
		ok_formulaire();
		return(true);
	} else {
		change_style_zone('text',targetId, false);
		erreur_formulaire("Merci de v&eacute;rifier le num&eacute;ro de t&eacute;l&eacute;phone saisi.");
		return(false);
	}
}

function zone_visible(baliseId){
  if (document.getElementById && document.getElementById(baliseId) != null)
    {
    document.getElementById(baliseId).style.visibility='visible';
    document.getElementById(baliseId).style.display='block';
    }
}

function zone_invisible(baliseId){
  if (document.getElementById && document.getElementById(baliseId) != null)
    {
    document.getElementById(baliseId).style.visibility='hidden';
    document.getElementById(baliseId).style.display='none';
    }
}

function testvis(button, thingId) {
var targetElement=document.getElementById(button);
    	if(targetElement.checked==true)
    		zone_visible(thingId);
    		else
    		zone_invisible(thingId);
}

function dejaclientoui(client) {
  alert("Client déjà identifié ou authentification requise ...");
  zone_visible('client_groupama');
  testvis('mail_inscription_oui', 'inscription_espace_client');
}

function dejaclientnon() {
  zone_visible('inscription_espace_client');
  zone_invisible('client_groupama');
  zone_visible('bt_mail');
}

function connect(){		
   	document.getElementById('loginrequired').value='true';
   	if(document.getElementById('desactiver_contact')!= null){
   		document.getElementById("desactiver_contact").removeAttribute("href");
   	}
	document.forms['contact_mail'].submit();
}	

function force_champs(baseurl,civilite,codepostal,codeinsee,pays) {
  	if (codepostal!=null && codepostal!="") {
  		if (codeinsee!=null && codeinsee!="")
			var url=baseurl+"?ACTION=getVilleByCodeInsee&codePostal="+codepostal+"&codeInsee="+codeinsee;
		else
			var url=baseurl+"?ACTION=getVilles&codePostal="+codepostal;
			
		if (document.getElementById('commune')!=null)
  			requete_ajax(url, 'commune', codeinsee);
  		else
  			requete_ajax(url, 'id_commune_prospect', codeinsee);
  	}
  	
  	if (pays!=null && pays!="")
  	  document.getElementById('pays').value=pays;
}

// AJAX fonctions génériques
function regenerer_liste(targetId,transport,parDefaut){    

  json = eval(transport.responseText);

  $(targetId).length = 0;
  
  var j = 0;
  document.getElementById(targetId).options[j]=new Option(' - Choisissez - ','');
  j++;
  /*@w:correction*/
  for (i = 0; i < json.length; i++)
  {
    if(parDefaut != null && parDefaut!='' && json[i].code == parDefaut ){
   		document.getElementById(targetId).options[j]=new Option(json[i].libelle,json[i].code,true,true);
    } else {
    	document.getElementById(targetId).options[j]=new Option(json[i].libelle,json[i].code);
    }
    j++;
  }
   //rendre les champs à nouveau éditables
  fieldsUnblocker();
}

function requete_ajax(url, idTarget, parDefaut) {

	var request = new Ajax.Request
				(
					url,
  					{
    					method: 'get',
    					onSuccess: function(transport) { regenerer_liste(idTarget,transport, parDefaut); },
    					asynchronous: false
  					}
  				)
}

function callInProgress (xmlhttp) {
	switch (xmlhttp.readyState) {
		case 1: case 2: case 3:
		return true;
		break;
		// Case 4 and 0
		default:
		return false;
		break;
	}
}

function requete_ajax_commune(url, idTarget, parDefaut) {
	var request = new Ajax.Request
				(
					url,
  					{
    					method: 'get',
    					onCreate: function(request) {
    												//création d'un timeout
													request['timeoutId'] = window.setTimeout(
														function() {
																	// Si on a atteint le timeout et que la requête Ajax est active...
																	if (callInProgress(request.transport)) {
																		//stopper la requête
																		request.transport.abort();
																		 //rendre les champs à nouveau éditables
																		fieldsUnblocker();
																		}
																	},
													4000 // 4 secondes
													);
													},
						onSuccess: function(transport) { 
												regenerer_liste(idTarget,transport, parDefaut); 
												},
    					onFailure: function()	{ 
    											console.log('Le serveur a envoyé une réponse dont le code est autre que 2xx (donc échec de la requête).');	
												},
    					onComplete: function() { 
    											//rendre les champs à nouveau éditables
												fieldsUnblocker();
    											},
    					onException: function(exception) { 
    											console.log('Exception: '+exception);
    											// Si la requête Ajax est active...
												if (callInProgress(request.transport)) {
														//stopper la requête
														request.transport.abort();
												}
    											//rendre les champs à nouveau éditables
												fieldsUnblocker();
    											}
    					
  					}
  				);

}

// Ajax fonctions dediees
function maj_commune(baseurl, targetId) { 
	if (check_cp('code_postale')==true) {
		var cp=document.getElementById('code_postale').value;
		var url=baseurl+"?ACTION=getVilles&codePostal="+cp;
		//empêcher les champs d'être modifiés tant que la requête Ajax qui suit n'est pas terminée
		fieldsBlocker();
  		requete_ajax_commune(url, targetId, null);
  	}
  	//renseigner le champ libelle commune
	setLibelleCommune("h_"+targetId,targetId);
}

function maj_communeSinistre(baseurl, targetId) { 
	if (check_cp('code_postale')==true) {
		var cp=document.getElementById('code_postale').value;
		var url=baseurl+"?ACTION=getVilles&codePostal="+cp;
		if(document.getElementById("code_communename")!= null && document.getElementById("code_communename").value != ''){
			requete_ajax(url, targetId, document.getElementById("code_communename").value);
		}
		else{
  			requete_ajax(url, targetId, null);
  		}
  	}
  	//renseigner le champ libelle commune
	//setLibelleCommune("h_"+targetId,targetId);
}

function maj_communeSinistre2(baseurl, targetId) { 
	if (check_cp('idCodePostalSiNonDomicile')==true) {
		var cp=document.getElementById('idCodePostalSiNonDomicile').value;
		var url=baseurl+"?ACTION=getVilles&codePostal="+cp;
  		if(document.getElementById("code_communenamesinistre")!= null && document.getElementById("code_communenamesinistre").value != ''){
			requete_ajax(url, targetId, document.getElementById("code_communenamesinistre").value);
		}
		else{
  			requete_ajax(url, targetId, null);
  		}
  	}
  	//renseigner le champ libelle commune
	//setLibelleCommune("h_"+targetId,targetId);
}

/*ajout wal */
function maj_commune40(baseurl, targetId,ville) { 
	if (check_cp('code_postale')==true) {
		var cp=document.getElementById('code_postale').value;
		var url=baseurl+"?ACTION=getVilles&codePostal="+cp;
		//alert(ville);
  		requete_ajax(url, targetId, ville);
  	}
  	//renseigner le champ libelle commune
	setLibelleCommune("h_"+targetId,targetId);
}

function maj_agence(baseurl) { 
	var cp=document.getElementById('mail_cpagence').value;
	if (verif_cp(cp, 'mail_cpagence')==true) {
		var url=baseurl+"?ACTION=getAgences&codePostal="+cp;
  		requete_ajax(url, 'mail_agence', null);
  	}
}

function maj_listpays(baseurl) {
		var url=baseurl+"?ACTION=getPays";
  		requete_ajax(url, 'pays', null);
}

function maj_listprofession(baseurl) {
		var cp = document.getElementById('code_postale').value;
		//var cpinsee="1";
		if( document.getElementById('cpinsee') != null)var cpinsee =  document.getElementById('cpinsee').value;
		if( document.getElementById("codeCommune") != null){
			
			var ville_choose=document.getElementById("codeCommune").selectedIndex;
			var cpinsee = document.getElementById("codeCommune").options[ville_choose].value;	
			/*var cpinsee =  document.getElementById('commune2').value;*/
		}
		
		//alert("profession a jour");
		var url=baseurl+"?ACTION=getProfession&codePostal="+cp+"&codeInsee="+cpinsee;
  		if( document.getElementById('professionName') != null && document.getElementById('professionName').value != ""){
  			requete_ajax(url, 'profession',  document.getElementById('professionName').value);
  		}else{
  			requete_ajax(url, 'profession', null);
  		}
}






function test(){
	listVilles = eval(request.transport.responseText);	
				
			document.getElementById('lbl_horaire_ouverture').innerHTML = "";
				
			var content = "<select id='"+idtarget+"' name='"+champTarget+"'>";
				
			for(var i=0; i<listVilles.size(); i++) {		
				content += "<option value='"+listVilles[i]+"'>"+listVilles[i]+"</option>";
			}
				
			content += "</select>";
			document.getElementById(idtarget).innerHTML = content;
}



// RemontÃ©e automatique en fermeture de page
// <body onUnload="WCBdef();">
function remwcb(url) {if (!bloc) openwcb(url);}




// Autorise que les chiffres
function ValidSaisieNombre(champ){
   var chiffres = new RegExp("[0-9]"); //var chiffres = new RegExp("[0-9\.\,]");
   var verif;
   //var points = 0; /* Supprimer cette ligne */
   for(i=0; i<champ.value.length; i++)
   {
	  verif = chiffres.test(champ.value.charAt(i));
	  //if(champ.value.charAt(i) == "." || champ.value.charAt(i) == ","){points++;} /* Supprimer cette ligne */
	  //if(points > 1){verif = false; points = 1;} /* Supprimer cette ligne */
	  if(verif == false){champ.value = champ.value.substr(0,i) + champ.value.substr(i+1,champ.value.length-i+1); i--;}
   }
}


// Verification champs avant post du formulaire
// onSubmit="return check(this);"
// onSubmit="return check(this,'champ');" pour les champs intÃ©grÃ©s
function checkwcb(form,type) {

// On recupere l'url de provenance (tout ce qui est aprÃ¨s le ?)
// Puis on passe la valeure au champ EVTCOM pour post du formulaire de WCB
query=window.location.search.substring(1);
form.EVTCOM.value = query;

var messageErreur="";
if (isNaN(form.TELEPHONE.value) || form.TELEPHONE.value.length != 10 || form.TELEPHONE.value.substr(0,1)!="0" || form.TELEPHONE.value.substr(1,1)=="0" || form.TELEPHONE.value.substr(1,1)=="7")
	{
	messageErreur += '- Num\351ro de t\351l\351phone erron\351.\n';
	}
if (messageErreur != "") {
	alert(messageErreur);
	return false;
} else if (type=='champ'){
	openwcb("http://client.linkeo.com/blank.htm");
}
// Si tout est ok, on post le formulaire d'appel.
return true;
}

function fieldsBlocker(){
	var inputFields=document.getElementsByTagName('input');
	var selectFields=document.getElementsByTagName('select');
	for(i=0; i<inputFields.length; i++){
		inputFields[i].disabled="disabled";
	}
	for(i=0; i<selectFields.length; i++){
		if (selectFields[i].name!="prospectBO.codeCommune"){
			selectFields[i].disabled="disabled";
		}
	}
}

function fieldsUnblocker(){
	var inputFields=document.getElementsByTagName('input');
	var selectFields=document.getElementsByTagName('select');
	for(i=0; i<inputFields.length; i++){
		inputFields[i].disabled="";
	}
	for(i=0; i<selectFields.length; i++){
			selectFields[i].disabled="";
	}
}







