/*!\file formulaire.js
 * \brief contient toutes les fonctions de verification de formulaire dynamique
 */

 
function validation() {
	if(document.getElementsByName('nom_ad')[0].value=='')
	{
		alert("Vous devez mettre votre nom !");
		return false;
	}
	if(document.getElementsByName('prenom_ad')[0].value=='')
	{
		alert("Vous devez mettre votre prénom !");
		return false;
	}
	if(document.getElementsByName('nom_et')[0].value=='')
	{
		alert("Vous devez mettre le nom de l'étudiant !");
		return false;
	}
	if(document.getElementsByName('prenom_et')[0].value=='')
	{
		alert("Vous devez mettre le prénom de l'étudiant !");
		return false;
	}
	if( (document.getElementsByName('mail')[0].value=='') || (!(IsEmail(document.getElementsByName('mail')[0].value))) )
	{
		alert("Vous devez mettre une adresse email valide !");
		return false;
	}
	if(document.getElementsByName('mail')[0].value != document.getElementsByName('mail_conf')[0].value)
	{
		alert("Adresses mails non correspondantes !");
		return false;
	}
	if(document.getElementsByName('tel')[0].value=='')
	{
		alert("Vous devez mettre votre numéro de téléphone !");
		return false;
	}
	if( (document.getElementsByName('titre')[0].value=='') )// && (document.getElementsByName('titre')[0].className == 'obligatoire') )
	{
		alert("Vous devez indiquer au moins un titre !");
		return false;
	}
	if( (document.getElementsByName('auteur')[0].value=='') ) //&& (document.getElementsByName('auteur')[0].className == 'obligatoire') )
	{
		alert("Vous devez indiquer au moins un auteur!");
		return false;
	}
	if( (document.getElementsByName('collection')[0].value=='') )// && (document.getElementsByName('collection')[0].className == 'obligatoire') )
	{
		alert("Vous devez indiquer au moins une collection !");
		return false;
	}
	if( (document.getElementsByName('edition')[0].value=='') )// && (document.getElementsByName('edition')[0].className == 'obligatoire') )
	{
		alert("Vous devez indiquer au moins une édition !");
		return false;
	}
	if( (document.getElementsByName('annee')[0].value=='') ) // && (document.getElementsByName('annee')[0].className == 'obligatoire') )
	{
		alert("Vous devez indiquer au moins une année !");
		return false;
	}
}
 
 
/*
 
	if(document.getElementsByName('nom')[0].value=='' && document.getElementsByName('nom')[1].value=='')
	{
		alert("Vous devez cocher une case !");
		return false;
	}
*/
 
 
/*!\fn function valider_formulaire(champ)
 * \param champ : le champ depuis lequel la fonction est appellée
 * \brief verifie que toutes les champs de classe obligatoire sont remplis,
 * s'il ne le sont pas, une action visuelle est faite
 */
function valider_formulaire(champ)
{
	var bool = false;//pour l'instant tous les champs sont remplis, on peux donc activer le bouton de validation
	//pour tous les champs du formulaire
	for (i=0;i<champ.form.length;i++)
	{
		//si la classe du champ est : obligatoire et que le champ est vide
		if ( champ.form[i].className == 'obligatoire' && (champ.form[i].value == '' || (champ.form[i].type == 'checkbox' && champ.form[i].checked==false) ) )
		{
		  //alors tout n'est pas rempli et il faut empecher le validation
		  bool = true;
		  //mettre le champ en rouge
		  champ.form[i].style.borderColor='#ED8117';
		}
		else
		{
		  champ.form[i].style.borderColor='grey';
		}

		// si le champ est un champ submit
		if(champ.form[i].type == 'submit')
		{
		  //on enregistre sa position
		  var submit = i;
		}
	}
	//    alert(document.getElementById("mail").value != document.getElementById("mail_conf").value || !(IsEMail(document.getElementById("mail").value)));
	//verification des champs contenant mail
	//si les mails sont differents    // ou si ce n'est pas un email
	if ( (document.getElementById("mail").value != document.getElementById("mail_conf").value) || (!(IsEMail(document.getElementById("mail").value))) )
	{
		document.getElementById("mail").style.borderColor='#ED8117';
		document.getElementById("mail_conf").style.borderColor='#ED8117';
		//alors tout n'est pas rempli et il faut empecher le validation
		bool = true;
	}

  //on agit sur la possibilité de valider le formulaire
  champ.form[submit].disabled = bool;
  return(!(bool));
}

/*!\fn function afficher_formulaire(champ)
 * \param champ : le champ depuis lequel la fonction est appellée
 * \brief affiche la div d'identifiant 'commande' lorsque le champ est coché
 */
function afficher_formulaire(champ) {
  if(champ.checked == true) {
    document.getElementById("commande").style.display = "block";
      } else {
    document.getElementById("commande").style.display = "none";
      }
}


/*!\fn function afficher_formulaire(champ)
 * \param champ : le champ depuis lequel la fonction est appellée
 * \brief ajoute une ligne au tableau.
 * \remarks reste a trouver comment conserver les valeurs des champs
 */
function ajouter_un_livre() {

     if (document.getElementById)
    {
      document.getElementById("toto").innerHTML = " ";
      document.getElementById("toto").id = "ok";
      var toto = document.getElementById("ajout");

      toto.innerHTML += '<tr><td><input name="titre[]" type="text"/></td><td><input name="auteur[]" type="text"/></td><td><input name="collection[]" type="text"/></td><td><input name="edition[]" type="text"/></td><td><input name="annee[]" type="text"/></td><td id=\"toto\"><a onClick=\"ajouter_un_livre()\" >+</a></td></tr>\n';
    }
  else if (document.all)
    {
      document.all["toto"].innerHTML = " ";
      document.all["toto"].id = "ok";
      var toto = document.all["ajout"];
      toto.innerHTML += '<tr><td><input name="titre[]" type="text"/></td><td><input name="auteur[]" type="text"/></td><td><input name="collection[]" type="text"/></td><td><input name="edition[]" type="text"/></td><td><input name="annee[]" type="text"/></td><td id=\"toto\"><a onClick=\"ajouter_un_livre()\" >+</a></td></tr>\n';
    }
}

function IsEMail(emailStr)
{
	var validDomain=false;
	var AtPos = emailStr.lastIndexOf("@");
	var DotPos= emailStr.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=emailStr.substr(DotPos+1);
		emailExt=emailExt.toLowerCase();
		for(i=0;domainExt.length;i++)
		{
			if (domainExt[i]=='EoF') 
				break; //infinite loop else
			if (emailExt==domainExt[i])
			{
				validDomain=true;
				break;
			}
		}
	}
	return(validDomain);
}
/*
function ajout(){
	document.getElementById("ajout").innerHTML += '<tr>'+
												'<td><input size="20" name="titre[]" type="text"/></td>'+
												'<td><input size="15" name="auteur[]" type="text"/></td>'+
												'<td><input size="15" name="collection[]" type="text"/></td>'+
												'<td><input size="15" name="edition[]" type="text"/></td>'+
												'<td><input size="5" name="annee[]" type="text"/></td>'+
											'</tr>';
}
*/
function ajout(){
$('ajout').insert('<td><input size="20" name="titre[]" type="text"/></td><td><input size="15" name="auteur[]" type="text"/></td><td><input size="15" name="collection[]" type="text"/></td><td><input size="15" name="edition[]" type="text"/></td><td><input size="5" name="annee[]" type="text"/></td></tr>');
}


function finish(executed, xhr){
	if(executed){
		document.getElementById('etablissements').innerHTML = "<option value=\"none\">Tous</option>" + xhr.response;
		xhr.validateRequest();
	}else{
		document.getElementById('etablissements').innerHTML = "<option value=\"none\">Tous</option>";
	}
}

function status(nb, txt){
	if(nb != 200){
		document.getElementById('status').innerHTML = '<em>Chargement en cours</em>';
	}else{
		document.getElementById('status').innerHTML = '';
	}
}
function AjaxRequest(obj){
	if(document.all){
		return new Ajax.Request('relation/AjaxRequest/' + escape(obj.options[obj.selectedIndex].value),
								{
									method: 'get',
									onSuccess: function(xhr){
										$('etablissement').update("<option value=\"none\">Tous</option>" + xhr.responseText);
										$('status').update('');
										$('formuVille').value = obj.options[obj.selectedIndex].value;
										$('formuEta').value = 'none';
										$('formulaire').style.display = 'none';
									},
									onFailure: function(){
										$('etablissements').update("<option value=\"none\">Tous</option>");
										$('formuVille').value = obj.options[obj.selectedIndex].value;
										$('formuEta').value = 'none';
										$('status').update('<em>Erreur de chargement</em>');
									},
									onUninitialized: function(){
										$('etablissements').update("<option value=\"none\">Tous</option>");
										$('formuEta').value = 'none';
										$('formuVille').value = obj.options[obj.selectedIndex].value;
										$('status').update('');
									},
									onLoading: function(){
										$('etablissements').update("<option value=\"none\">Tous</option>");
										$('formuVille').value = obj.options[obj.selectedIndex].value;
										$('formuEta').value = 'none';
										$('status').update('<em>Chargement en cours</em>');
									}
								});
	}else{
		var xhr = new CreateXMLHttpObject();
		xhr.setIndicatorFunction(finish);
		xhr.setInformations(status);
		xhr.getFileGet('relation/AjaxRequest/'+escape(obj.options[obj.selectedIndex].value), []);
		document.getElementById('formuVille').value = obj.options[obj.selectedIndex].value;
		document.getElementById('formuEta').value = 'none';
		document.getElementById('formulaire').style.display = 'none';
	}
}
