//Constantes pour l'alerte pour que lorsqu'un certain nombre de formation est dans le panier
var AlertFormaLimit = 6;
var AlertFormaMessage = 'Attention, nous vous conseillons de ne pas dépasser ' + AlertFormaLimit + ' formations.\r\n Elles représentent déjà 24 heures de travail par semaine.';

//CONSTANTES
var PATH_CATALOGUE = "typo3conf/ext/webead/catalogue/";

//nombre de formation dans le panier
var nbForma = 0;

//AJAX

var xmlHttp = false;

function createHttp() {
	try {
		xmlHttp = new XMLHttpRequest();
    } catch (trymicrosoft) {
      try {
      	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (othermicrosoft) {
        try {
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (failed) {
           xmlHttp = false;
        }  
      }
    }
}

function displayResultTxt() {

	var coRef = trim(document.getElementById("coRef").value);
	var ref = false;
	if (coRef.length > 0) {
		ref = true;
	}
	
	var txt = trim(document.getElementById("txt").value);
	if (!ref && ((txt == null) || (txt.length < 3))) 
	{ 
		alert ("Veuillez entrer au minimum 3 caractères");
		return false;
	}
	var url = PATH_CATALOGUE + "buildHTMLSearchResult";
	if (document.forms["searchFormaTxt"].admin != null)
		url = url + "Admin";
	else
		url = url + "Public";
	url = url + ".php?txt=" + encodeURIComponent(txt) + "&coRef=" + encodeURIComponent(coRef);	
	
	createHttp();
	xmlHttp.onreadystatechange = loadResult;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
	
	return false;
}

function displayResultCritere() {
	$ok = false;
	
	var listDom = document.getElementsByName('listDomaine[]');
	var listDomStr = "";
	for (i=0; i < listDom.length; i++)
	{
       if (listDom[i].checked) //selected)
       {
          listDomStr += "&listDom[]=" + encodeURIComponent(listDom[i].value);
          $ok = true;
       }
    }
 	
	var listNiv = document.getElementsByName('listNiveau[]');
	var listNivStr = "";
	for (i=0; i < listNiv.length; i++)
	{
       if (listNiv[i].checked) //selected)
       {
          listNivStr += "&listNiv[]=" + encodeURIComponent(listNiv[i].value);
          $ok = true;
       }
    }

	var listOb = document.getElementsByName('listObjec[]');
	var listObStr = "";
	for (i=0; i < listOb.length; i++)
	{
       if (listOb[i].checked) //selected)
       {
          listObStr += "&listObj[]=" + encodeURIComponent(listOb[i].value);
          $ok = true;
       }
    }
	
	if (!$ok) {
		//affichage du message "Aucune formation ne correspond à votre recherche"
		document.getElementById("searchResult").innerHTML = "<div id='result_content_block'><p class='result_text'>Aucune formation ne correspond à votre recherche</p></div>";
		return false;
	}

	var url = PATH_CATALOGUE + "buildHTMLSearchResult";
	if (document.forms["searchFormaCri"].admin != null)
		url = url + "Admin";
	else
		url = url + "Public";

	url = url + ".php?" + listDomStr + listNivStr + listObStr;
	
	createHttp();
	xmlHttp.onreadystatechange = loadResult;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
	
	return false;
}

function updateNbForma() {
	createHttp();
	//xmlHttp.onreadystatechange = loadNbForma;
	//alert(nbFormaForAlert + ':' + nbForma);
	xmlHttp.open("GET", PATH_CATALOGUE + "updateNbForma.php", false);
	xmlHttp.send(null);
	var precNbForma = nbForma;
	loadNbForma();
	
	if(AlertFormaLimit > 0 && AlertFormaLimit == nbForma && precNbForma < nbForma)
	{
		//AlertFormaLimit = 0; //pour ne pas afficher plusieurs fois le message
		alert(AlertFormaMessage);
	}
	
	return false;
}

//met à jour le nombre de formation dans la panier en allant voir dans la session
function loadNbForma() {
  if (xmlHttp.readyState == 4) {
  	document.getElementById("nbFormaPanierMenu").innerHTML = xmlHttp.responseText;
  	nbForma = Number(xmlHttp.responseText);
  	if (nbForma == 0) {
  		document.getElementById("havePanier").style.display = 'none'; //enlève le lien "s'inscrire aux formation"
  	}
  	else {
  		document.getElementById("havePanier").style.display = 'inline'; //ajoute le lien "s'inscrire aux formation"
  	}
  }
}

function loadResult() {
  if (xmlHttp.readyState == 4) {
  	document.getElementById("searchResult").innerHTML = xmlHttp.responseText;
  	updateNbForma();
  }
}

//supprime une formation du panier et change l'affichage en fonction
function deleteFormationPanier(idForma, fromPanier) {
	fromPanier = typeof(fromPanier) != 'undefined' ? fromPanier : false;

	if (! isNaN(idForma)) {
		createHttp();
		xmlHttp.open("GET", PATH_CATALOGUE + "deleteFormationPanier.php?idForma=" + encodeURIComponent(idForma), false);
		xmlHttp.send(null);
		
		updateNbForma();		
		if (fromPanier)
		{
			document.getElementById("forma"+idForma).style.display = 'none'; //enlève la formation
		}
		if (nbForma == 0) //enlève les menus concernant le panier et indique qu'il est vide
		{
			document.getElementById("havePanier").style.display = 'none'; //enlève le lien "s'inscrire aux formation"
			if (fromPanier)
			{
				document.getElementById("searchResult").innerHTML = "<br /><br /><p class='result_text'>Votre panier est vide</p>"; //indique que le panier est vide		
				document.getElementById("lienViderPanier").style.display = 'none'; //enlève le lien pour vider le panier
			}
		}
		else
		{
			if (fromPanier)
			{
				document.getElementById("nbFormaPanier").innerHTML = nbForma; //modifie le menu "X formations dans votre panier"
				if (nbForma == 1)
				{
					document.getElementById("s").style.display = 'none'; //n'affiche plus le s				
				}	
			}	
		}
		
		if (!fromPanier) //remet le lien "ajouter au panier" et enlève "supprimer du panier"
		{
			document.getElementById("delFormaLink"+idForma).style.display = 'none';
			document.getElementById("addFormaLink"+idForma).style.display = 'inline';		
		}
	}
	return false;
}

//ajoute une formation au panier et change l'affichage en fonction
function addFormationPanier(idForma) {
	if (! isNaN(idForma)) {
		createHttp();
		xmlHttp.open("GET", PATH_CATALOGUE + "addFormationPanier.php?idForma=" + encodeURIComponent(idForma), false);
		xmlHttp.send(null);
			
		updateNbForma();
		
		if (nbForma == 1) //afficher le menu pour gérer le panier
		{
			document.getElementById("havePanier").style.display = 'inline'; //ajoute le lien "s'inscrire aux formation"
		}		
		document.getElementById("addFormaLink"+idForma).style.display = 'none';
		document.getElementById("delFormaLink"+idForma).style.display = 'inline';
	}
	return false;
}



//vérifie que les champs obligatoires d'une formation soient bien remplit
function checkChampsEditFormation() {
	erreurs = new Array();
	var c = 0;
	var listTmp;
	
	if (trim(document.forms["editForma"].ref.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire une référence';
		c++;
	}
	
	if (trim(document.forms["editForma"].intitu.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire un intitulé';
		c++;
	}
	
	if (document.getElementById('listDomaine').selectedIndex == 0) {
		erreurs[c] = 'Veuillez sélectionner un domaine';
	    c++;
	}
	
	listTmp = document.getElementsByName('listNiveau[]');
    for (i=0; i < listTmp.length; i++)
       if (listTmp[i].checked)
          break;
	if (i == listTmp.length) {
       erreurs[c] = 'Veuillez sélectionner un degré de niveau';
	   c++;
    }
	
	listTmp = document.getElementsByName('listMyObjec[]');
    for (i=0; i < listTmp.length; i++)
       if (listTmp[i].checked)
          break;
	if (i == listTmp.length) {
       erreurs[c] = 'Veuillez sélectionner un de leur objectif';
	   c++;
    }
    
	if (trim(document.forms["editForma"].descri.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire une description';
		c++;
	}
	
	if (trim(document.forms["editForma"].compo.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire une composition';
		c++;
	}
	
	if (trim(document.forms["editForma"].cible.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire un public cible';
		c++;
	}
	
	if (trim(document.forms["editForma"].objec.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire les objectifs';
		c++;
	}
	
	if (trim(document.forms["editForma"].metho.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire une méthodologie';
		c++;
	}
	
	if (trim(document.forms["editForma"].accom.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire un accompagnement';
		c++;
	}
	
	listTmp = document.getElementsByName('listSupport[]');
    for (i=0; i < listTmp.length; i++)
       if (listTmp[i].checked)
          break;
	if (i == listTmp.length) {
       erreurs[c] = 'Veuillez sélectionner un support de communication';
	   c++;
    }          
      
    listTmp = document.getElementsByName('listModOrg[]');
    for (i=0; i < listTmp.length; i++)
       if (listTmp[i].checked)
          break;
	if (i == listTmp.length) {
       erreurs[c] = "Veuillez sélectionner un mode d'organisation";
	   c++;
    }  
    
    if (document.getElementById('listTypeAcces').selectedIndex == 0) {
		erreurs[c] = "Veuillez sélectionner un type d'accès";
	    c++;
	}    
    
	//fais une modification de fichier pdf
	if (trim(document.forms["editForma"].table.value).length > 0) {		
		if (trim(document.forms["editForma"].table.value).length < 7) {
		    erreurs[c] = "Veuillez introduire un chemin d'accès correcte pour le fichier PDF";
			c++;
		}	
			
		if ((trim(document.forms["editForma"].table.value).length - trim(document.forms["editForma"].table.value).lastIndexOf(".pdf")) != 4) {
		    erreurs[c] = 'Veuillez introduire un fichier au format PDF';
			c++;
		}
	}
	
	if (trim(document.forms["editForma"].refCata.value).length < 1) {
	    erreurs[c] = 'Veuillez introduire une référence de catalogue papier';
		c++;
	}
	
    listTmp = document.getElementsByName('listStatut[]');
    for (i=0; i < listTmp.length; i++)
       if (listTmp[i].checked)
          break;
	if (i == listTmp.length) {
       erreurs[c] = 'Veuillez sélectionner un statut';
	   c++;
    }
    
	ShowErrors(erreurs);
	if (c > 0) {		
		return false;
	} 
	else { //aucune erreur
		return true;		
	}
}


//vérifie qu'on ait au moins remplit un critère de recherche
function checkSearchEngineCri()
{
  erreurs = new Array();
  c = 0;
  
  var listTmp = document.getElementsByName('listDomaine[]');
  for (i=0; i < listTmp.length; i++) {
      if (listTmp[i].checked) {
         return true;
      }
   }

  var listTmp = document.getElementsByName('listNiveau[]');
  for (i=0; i < listTmp.length; i++) {
      if (listTmp[i].checked) {
         return true;
      }
   }
  
  var listTmp = document.getElementsByName('listObjec[]');
  for (i=0; i < listTmp.length; i++) {
      if (listTmp[i].checked) {
         return true;
      }
   }   
  
  alert("Veuillez complèter au minimum un critère de recherche");
  return false;
}


//vérifie qu'on ait au moins remplit un critère de recherche
function checkSearchEngineTxt()
{
  if (trim(document.forms["searchFormaTxt"].coRef.value).length < 1 && trim(document.forms["searchFormaTxt"].txt.value).length < 3) {
    alert("Veuillez entrer un mot-clé de minimum 3 caractères ou une référence");
    return false;
  }
  return true;
}


//enlève le texte préalablement tappé dans le moteur de recherche AJAX
function resetSearchEngineTxt() {
	document.forms["searchFormaTxt"].txt.value = "";
	document.forms["searchFormaTxt"].coRef.value = "";
	return false;
}


//enlève les textes préalablement tappés dans le moteur de recherche AJAX
function resetSearchEngineCritere() {
	var listTmp = document.getElementsByName('listDomaine[]');
    for (i=0; i < listTmp.length; i++)
    	listTmp[i].checked = false;
    	
    listTmp = document.getElementsByName('listNiveau[]');
    for (i=0; i < listTmp.length; i++)
    	listTmp[i].checked = false;
    	
    listTmp = document.getElementsByName('listObjec[]');
    for (i=0; i < listTmp.length; i++)
    	listTmp[i].checked = false;
	/*
	document.forms["searchFormaCriList"].listDomaine.selectedIndex = -1;
	document.forms["searchFormaCriList"].listNiveau.selectedIndex = -1;
	document.forms["searchFormaCriList"].listObjec.selectedIndex = -1;
	*/
	return false;
}


//affichage un message d'alerte avant la suppression définitive d'une formation
function warningDelete()
{
  if (confirm('Êtes-vous sûr de vouloir supprimer cette formation ?'))
     return true;
  return false;
}


//ouvre un pop-up
function ouvrirPop(url) {
	ouvpop = window.open(url,"Table des matières en pdf");
}


//enlève les espaces en début et fin de chaine
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


//affiche les erreurs en un bloc
function ShowErrors(erreurs) {	
	if (erreurs.length > 0) {		
		var msg = '';
		for (i = 0; i < erreurs.length; i = i + 1) {
			msg = msg + '\r\n' + erreurs[i];
		}		
		alert(msg);				
	}
}
