window.onload=demarrer;

function demarrer() {
  desactiveSubmit();
	SetFocus();
}
function SetFocus() {
  if (document.forms.length > 0) {
    var field = document.forms[0];
    for (var i=0; i<field.length; i++) {
      if ( (field.elements[i].type != "image") &&
           (field.elements[i].type != "hidden") &&
           (field.elements[i].type != "reset") &&
           (field.elements[i].type != "submit") ) {

        document.forms[0].elements[i].focus();

        if ( (field.elements[i].type == "text") || (field.elements[i].type == "password") ) {
          document.forms[0].elements[i].select();
	        break;
				}
      }
    }
  }
}


var requete1;

// action sur submit
function desactiveSubmit() {
	if(document.forms['form_search_field'])
	document.forms['form_search_field'].elements['submit_search_field'].style.display="none";

  if (document.forms.length > 0) {
				// display none pour les boutons rechercher et reinitialiser
		if(document.getElementById('fieldValues2')) {
			if(document.getElementById('fieldValues2').style.display=="none" || document.getElementById('fieldValues2').innerHTML=="") {
				if(document.getElementById('submit_rechercher')) document.getElementById('submit_rechercher').style.display="none";
				if(document.getElementById('reset_search_field')){
				 	document.getElementById('reset_search_field').style.display="none";
				}
			}
		}
		var nombreForms=document.forms.length;
		for(var j=0; j<nombreForms; j++) {
			var field = document.forms[j];
			var fieldName=field.getAttribute('name');

			for (var i=0; i<field.length; i++) {
				var inputSubmit=field.elements[i];
				var inputSubmitType=inputSubmit.type;
				var inputSubmitName=inputSubmit.name;
				var inputSubmitValue=inputSubmit.value;
			if (inputSubmitType == "submit") 
			// || inputSubmitType == "image") DOM ne lit pas le type image ...
			{
					inputSubmit.onclick=function() 
					//inputSubmit.onmouseout=function(j,i) 
					//inputSubmit.onsubmit=function() 
					{
						activeSubmit();
						var subQueryString="";
						var inputName = this.name;
						var inputValue = this.value;
						var subParent = this.parentNode;
						var formName=subParent.getAttribute('name');
						var subChildren = subParent.childNodes;
						
						// recupérer les input placés dans ce formulaire
						for(var k=0; k<subChildren.length; k++) {
							if(subChildren[k].name) {
								var ceformulaire=this.form;
								var ceformulaireName=ceformulaire.getAttribute('name');
								var ceinputName=subChildren[k].name;
								var ceinputValue=subChildren[k].value;

								var clePrimaireName='';
								if(clePrimaire) clePrimaireName=clePrimaire; 
																	
								switch(ceinputName) {
									case 'cle_primaire' : 
										var clePrimaire = ceinputValue ; 
									break;
									case clePrimaireName : case clePrimaireName+'[]' :
										var clePrimaireValue = ceinputValue ; 
									break;
									case 'table' :
										var Table = ceinputValue ; 
									break;
									case 'envoyer' :
										if(inputName==ceinputName) {
											return verifieJit(ceformulaire);
										}
									break;
									case 'enter_admin' :
										return verifieJit(ceformulaire);
									break;
									case 'annuler': 
										annuler();
										return false;
									break;
									case 'submit_rechercher':
										return true;
									break;
									case 'submit_reset':
										resetSearchField();
										return false;
									break;
									
								}
								subQueryString += subChildren[k].name+"="+subChildren[k].value;
								if(k<subChildren.length) subQueryString += "&";
							}
						}
						while(subQueryString.substr((subQueryString.length)-1,subQueryString.length)=='&') {
							subQueryString=subQueryString.substr(0,(subQueryString.length)-1);
						}
					}
				}
			}
		}
  }
}

function verifieJit(Formulaire) {
	// récupérer les champs du formulaire à vérifier
	var champs = Formulaire.elements;
	var nbre_champs=champs.length;
	//alert("nbre_champs : "+nbre_champs);
	var messageAverts=Array;
	var messageAvert = '';
	var msgErreur = "";
	var j=0;
	for(var i=0; i<nbre_champs; i++) {
		var champNode=champs[i];

		if(champNode.className=='requis') {
			var champType=champNode.type;
			var champName=champNode.name;
			var regExpRecherche = /\[[0-9]+\]$/; // recherche le type Array
			var regExec = regExpRecherche.exec(champName)  ;
			if(regExec!=null) champName=champName.substr(0,champName.indexOf('['));
			//alert('champName : '+champName+' ; regExec : '+regExec);
			var champValue=champNode.value;
			var champLabel='';

			// cas special : language
			if(champName== 'language_name')	
				var champLabel_lang_name= champValue; 
			if(champName== 'language_code')	
				var champLabel_lang_code= champValue; 

			if(champValue=="" || champValue=="0") {
				j++;
			 //alert("----- champType : "+champType+" ; champName : "+champName+" ; champValue : "+champValue+"\n");
			// récupérer le label 
				switch (champName) {
					case 'pseudo' : champLabel = 'votre login';	break;
					case 'pseudo_mail' : champLabel = 'votre courriel'  ;	break;
					case 'mot_de_passe' : champLabel = 'votre mot de passe';	break;
					case 'name' : champLabel =  (champLabel_lang_code && champLabel_lang_code=='en') ? 'your name' : 'votre nom';	break;
					case 'email' : champLabel = (champLabel_lang_code && champLabel_lang_code=='en') ? 'your email' : 'votre courriel';	break;
					case 'enquiry':	champLabel =  (champLabel_lang_code && champLabel_lang_code=='en') ? 'your message' : 'votre message';	break;
					case 'designation':
						// précise le nom du language	
						champLabel = 'le nom '+champLabel_lang_name;
					break;
					case 'auteur': champLabel = 'ton nom'; break;
					case 'commentaire': champLabel = 'ton commentaire'; break;
				}
				messageAverts[j] = champLabel;
			}
			if(champName== 'email') {	
				if(champValue!='') {
					//alert("valeur mail : "+champValue);
					return verifierAdresse(Formulaire, champValue, champLabel_lang_code);
				}	
			}
			
		}
	}
	if(messageAverts.length>0) {
		for(var k=1; k<=j; k++) {
			messageAvert += messageAverts[k];
			messageAvert += k<(j-1) ? ', ' : (k==(j-1) ? ((champLabel_lang_code && champLabel_lang_code=='en') ? ' and ' : ' et ') : '');
		}
	}
	if(messageAvert!='') {
		msgErreur = (champLabel_lang_code && champLabel_lang_code=='en') ? 'Please enter ' : "SVP, renseigner " ;
		msgErreur += messageAvert;
		afficheMsgErreur(Formulaire, msgErreur);
		return false;
	}
	else
		return true;
}

function afficheMsgErreur(Formulaire,msg) {
	var msgErreur = msg;
	var messageErreur = document.getElementById("messageBox");
	var ParentErreur = Formulaire ;
	var ParentForm = Formulaire.parentNode;
	
	if(!messageErreur) {
		var div_messageBox = document.createElement("div");
		div_messageBox.setAttribute("id","messageBox");
		div_messageBox.setAttribute("class","error");
		var messageErreur = ParentForm.appendChild(div_messageBox);
		ParentForm.insertBefore(div_messageBox,Formulaire);
	}
	else {
		messageErreur.innerHTML="";
		messageErreur.style.display="none";
	}
	
	if(messageErreur) {
		messageErreur.innerHTML=msgErreur;
		messageErreur.style.display="block";
	}
	return false;
	//alert('Formulaire : '+Formulaire+' ; msgErreur : '+msgErreur);
}

function activeSubmit() {
	if(document.getElementById("messageBox")) {
		document.getElementById("messageBox").innerHTML="";
		document.getElementById("messageBox").style.display="none";
	}
	var nombreForms=document.forms.length;
	for(var j=0; j<nombreForms; j++) {
		var field = document.forms[j];
		for (var i=0; i<field.length; i++) {
			var inputSubmit=field.elements[i];
			var inputSubmitType=inputSubmit.type;
			var inputSubmitName=inputSubmit.name;
			if (inputSubmitType == "submit") {
				inputSubmit.disabled=false;
			}
		}
	}
}


//////// verification adresse mail /////////////
function verifierAdresse(Formulaire, val, langCode){
	var m = val;
	var msgErreur='';
	if(m == null || m.length == 0 || m.indexOf(".") == -1 || m.indexOf("@") == -1 || m.indexOf(" ") != -1) {
		msgErreur = langCode=='en' ? "The email address is not valid" : "Le courriel n'est pas valide.";
	}
	var regex = /(^\w{2,}\.?\w{2,})@/;
	var _match = regex.exec(m);
	if(_match) {
		user=RegExp.$1;
	}
	else {
		msgErreur = langCode=='en' ? "The email address is not valid" : "Le courriel n'est pas valide.";
	}
	regex = /@(\[\d{1,3}\.d{1,3}\.d{1,3}.\d{1,3}\])$/;
	_match = regex.exec(m);
	if(_match) {
		domain=RegExp.$1;
		return true;
	}
	else {
		regex=/@(\w{2,}\.(\w{2,}\.)?[a-zA-Z]{2,3})$/;
		_match = regex.exec(m);
		if(_match) {
			domain = RegExp.$1;
			//alert("domain : "+domain);
		}
		else {
			//msgErreur += "<br />Le domaine de l'adresse mail contient moins de 2 caractères ou n'est pas valide.";
		}
	}
	if(msgErreur != '') {
		afficheMsgErreur(Formulaire, msgErreur);
		return false;
	}
}
