// form validation function //
function validate(form) {
  var civilite = form.civilite.value;
  var nom = form.nom.value;
  var prenom = form.prenom.value;
  var jour_naissance = form.jour_naissance.value;
  var mois_naissance = form.mois_naissance.value;
  var annee_naissance = form.annee_naissance.value;
  var nationalite = form.nationalite.value;
  var adresse = form.adresse.value;
  var code_postal = form.code_postal.value;
  var ville = form.ville.value;
  var mobile = form.mobile.value;
  var domicile = form.domicile.value;
  var email = form.email.value;
  var email2 = form.email2.value;
  var type_etude = form.type_etude.value;
  var classe_bac_general = form.classe_bac_general.value;
  var classe_bac_technologique = form.classe_bac_technologique.value;
  var classe_bts = form.classe_bts.value;
  var niveau_bts = form.niveau_bts.value;
  var specialite_bts = form.specialite_bts.value;
  var classe_dut = form.classe_dut.value;
  var niveau_dut = form.niveau_dut.value;
  var classe_ecole_ingenieur = form.classe_ecole_ingenieur.value;
  var niveau_ecole_ingenieur_post_bac = form.niveau_ecole_ingenieur_post_bac.value;
  var niveau_ecole_ingenieur_post_prepa = form.niveau_ecole_ingenieur_post_prepa.value;
  var niveau_ecole_specialisee = form.niveau_ecole_specialisee.value;
  var classe_ecole_commerce = form.classe_ecole_commerce.value;
  var niveau_ecole_commerce_post_bac = form.niveau_ecole_commerce_post_bac.value;
  var niveau_ecole_commerce_post_prepa = form.niveau_ecole_commerce_post_prepa.value;
  var niveau_iep = form.niveau_iep.value;
  var niveau_iup = form.niveau_iup.value;
  var classe_prepa = form.classe_prepa.value;
  var niveau_universite = form.niveau_universite.value;
  var autre = form.autre.value;
  var choix1 = form.choix1.value;
  var source = form.source.value;
  var numeroRegex = /^[0-9]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
  var messageRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  
  if(civilite == "") {
    inlineMsg('civilite','Veuillez sélécionner votre civilité.',2);
    return false;
  }
  if(nom == "") {
    inlineMsg('nom','Vous devez indiquer votre nom.',2);
    return false;
  }
  if(prenom == "") {
    inlineMsg('prenom','Vous devez indiquer votre prénom.',2);
    return false;
  }
  if(jour_naissance == "") {
    inlineMsg('jour_naissance','Vous devez indiquer votre jour de naissance.',2);
    return false;
  }
  if(mois_naissance == "") {
    inlineMsg('mois_naissance','Vous devez indiquer mois de naissance.',2);
    return false;
  }
  if(annee_naissance == "") {
    inlineMsg('annee_naissance','Vous devez indiquer votre année de naissance.',2);
    return false;
  }
  if(nationalite == "") {
    inlineMsg('nationalite','Vous devez indiquer votre nationalité.',2);
    return false;
  }
  if(adresse == "") {
    inlineMsg('adresse','Vous devez indiquer votre adresse.',2);
    return false;
  }
  if(ville == "") {
    inlineMsg('ville','Vous devez indiquer votre ville.',2);
    return false;
  }
  if(code_postal == "") {
    inlineMsg('code_postal','Vous devez indiquer votre code postal.',2);
    return false;
  }
  if(!code_postal.match(numeroRegex)) {
    inlineMsg('code_postal','<strong>Erreur</strong><br />Code postal invalide.',2);
    return false;
  }
  if(mobile == "") {
    inlineMsg('mobile','Vous devez indiquer votre numéro de téléphone mobile.',2);
    return false;
  }
  if((!mobile.match(numeroRegex)) || (mobile.length != 10)) {
    inlineMsg('mobile','<strong>Erreur</strong><br />Numéro de téléphone mobile invalide (0612345678).',2);
    return false;
  }
  if(email == "") {
    inlineMsg('email','Adresse Email manquant.',2);
    return false;
  }
  if(!email.match(emailRegex)) {
    inlineMsg('email','Adresse Email invalide.',2);
    return false;
  }
  if(email2 == "") {
    inlineMsg('email2','Veuillez confirmer votre Email.',2);
    return false;
  }
  if(!email2.match(emailRegex)) {
    inlineMsg('email2','Adresse Email invalide.',2);
    return false;
  }
  if(email != email2) {
    inlineMsg('email2','<strong>Erreur</strong><br />Adresse Email différent.',2);
    return false;
  }
   if(type_etude == "") {
    inlineMsg('type_etude','Veuillez selectionner votre domaine d\'étude.',2);
    return false;
  }
	switch (type_etude){
	  case "Première":
		if(classe_bac_general == "") {
			inlineMsg('classe_bac_general','Veuillez selectionner votre classe.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "Terminale":
		if(classe_bac_technologique == "") {
			inlineMsg('classe_bac_technologique','Veuillez selectionner votre classe.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "BTS":
		if(classe_bts == "") {
			inlineMsg('classe_bts','Veuillez selectionner votre classe.',2);
			return false;
		}
		if(niveau_bts == "") {
			inlineMsg('niveau_bts','Veuillez selectionner votre niveau.',2);
			return false;
		}
		if(specialite_bts == "") {
			inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "IUT":
		if(classe_dut == "") {
			inlineMsg('classe_dut','Veuillez selectionner votre classe.',2);
			return false;
		}
		if(niveau_dut == "") {
			inlineMsg('niveau_dut','Veuillez selectionner votre niveau.',2);
			return false;
		}
		if(specialite_bts == "") {
			inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "Ecole d'ingénieurs":
		if(classe_ecole_ingenieur == "") {
			inlineMsg('classe_ecole_ingenieur','Veuillez selectionner votre classe.',2);
			return false;
		}
		switch (classe_ecole_ingenieur){
			case "Post Bac":
				if(niveau_ecole_ingenieur_post_bac == "") {
					inlineMsg('niveau_ecole_ingenieur_post_bac','Veuillez selectionner votre niveau.',2);
					return false;
				}
				if(specialite_bts == "") {
					inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
					return false;
				}
		}
		switch (classe_ecole_ingenieur){
			case "Post Prépa":
				if(niveau_ecole_ingenieur_post_prepa == "") {
					inlineMsg('niveau_ecole_ingenieur_post_prepa','Veuillez selectionner votre niveau.',2);
					return false;
				}
				if(specialite_bts == "") {
					inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
					return false;
				}
		}
		break;
	}
	switch (type_etude){
	  case "Ecole spécialisée":
		if(niveau_ecole_specialisee == "") {
			inlineMsg('niveau_ecole_specialisee','Veuillez selectionner votre Niveau d\'étude.',2);
			return false;
		}
		
		if(specialite_bts == "") {
			inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "Ecole de commerce":
		if(classe_ecole_commerce == "") {
			inlineMsg('classe_ecole_commerce','Veuillez selectionner votre classe.',2);
			return false;
		}
		switch (classe_ecole_commerce){
			case "Post Bac":
				if(niveau_ecole_commerce_post_bac == "") {
					inlineMsg('niveau_ecole_commerce_post_bac','Veuillez selectionner votre niveau.',2);
					return false;
				}
				if(specialite_bts == "") {
					inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
					return false;
				}
		}
		switch (classe_ecole_commerce){
			case "Post Prépa":
				if(niveau_ecole_commerce_post_prepa == "") {
					inlineMsg('niveau_ecole_commerce_post_prepa','Veuillez selectionner votre niveau.',2);
					return false;
				}
				if(specialite_bts == "") {
					inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
					return false;
				}
		}
		break;
	}
	switch (type_etude){
	  case "IEP":
		if(niveau_iep == "") {
			inlineMsg('niveau_iep','Veuillez selectionner votre niveau.',2);
			return false;
		}
		if(specialite_bts == "") {
			inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "IUP":
		if(niveau_iup == "") {
			inlineMsg('niveau_iup','Veuillez selectionner votre niveau.',2);
			return false;
		}
		if(specialite_bts == "") {
			inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "Prépas":
		if(classe_prepa == "") {
			inlineMsg('classe_prepa','Veuillez selectionner votre classe.',2);
			return false;
		}
	}
	switch (type_etude){
	  case "Université":
		if(niveau_universite == "") {
			inlineMsg('niveau_universite','Veuillez selectionner votre niveau.',2);
			return false;
		}
		if(specialite_bts == "") {
			inlineMsg('specialite_bts','Veuillez selectionner votre spécialitée.',2);
			return false;
		}
		break;
	}
	switch (type_etude){
	  case "Autre":
		if(autre == "") {
			inlineMsg('autre','Veuillez renseigner votre fillière.',2);
			return false;
		}
		break;
	}
	if(choix1 == "") {
    inlineMsg('choix1','Minimum un choix dois être effectué.',2);
    return false;
  }
  if(source == "") {
    inlineMsg('source','Veuillez renseigner le champ.',2);
    return false;
  }
  return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 40;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 4;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "images/msg_arrow.gif"; 
}