/////////////////////////////////////
// Liste des Javascripts du webffn //
/////////////////////////////////////

// Ajout aux favoris uniquement IE
function ajf() {
browserName = navigator.appName; 
browserVer = parseInt(navigator.appVersion); 
	if (browserName == "Microsoft Internet Explorer" && browserVer >= 4) { 
	window.external.AddFavorite(location.href, document.title); 
	}
} 

// --- Changement couleur du fond des cellules
function setPointer(obj, PointerColor) { 
obj.style.backgroundColor=PointerColor
}

// --- Ouverture d'une nouvelle fenêtre
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

//----------------------------//
// Validation des formulaires //
//----------------------------//
function ffnValid(nForm) {
var RdCkOk = false;
var RdMess = "";
var CbMess = "";
var CbCkOk = false;
var msg = ""
var gbr = "The form was not submitted because of the following error.\n";
gbr += "Please correct these error(s) and resubmit.\n";
gbr += "_____________________________________________________________\n\n";
gbr += "The following required field(s) are empty :"
var fra = "Ce formulaire n\'a pas été transmis, vous devez remplir tous les champs\n";
fra += "obligatoire, veuillez corriger et envoyer de nouveau le formulaire. Merci !\n";
fra += "_____________________________________________________________\n\n";
fra += "Vous devez entrer le(s) champ(s) suivant :"

	for (var i=0; i<nForm.elements.length; i++) {
    		if (varValid.indexOf(nForm.elements[i].name) == -1 && nForm.elements[i].type != 'submit' && nForm.elements[i].type != 'reset' && nForm.elements[i].type != 'button' && nForm.elements[i].type != 'hidden') {
      			if (nForm.elements[i].type == 'select-one') {
        			if (nForm.elements[i].selectedIndex == 0) {
          			msg += "\n         " + nForm.elements[i].name;
        			}
      			} else
      			if (nForm.elements[i].type == 'select-multiple') {
        			if (nForm.elements[i].selectedIndex < 0) {
          			msg += "\n         " + nForm.elements[i].name;
        			}
      			} else
      			if (nForm.elements[i].type == 'text') {
        				if (nForm.elements[i].value == '') {
          				msg += "\n         " + nForm.elements[i].name;
        				}
      			} else
      			if (nForm.elements[i].type == 'textarea') {
        			if (nForm.elements[i].value == '') {
          			msg += "\n         " + nForm.elements[i].name;
        			}
      			} else
      			if (nForm.elements[i].type == 'password') {
        			if (nForm.elements[i].value == '') {
          			msg += "\n         " + nForm.elements[i].name;
        			}
   			} else
      			if (nForm.elements[i].type == 'radio') {
        			if (nForm.elements[i].checked) {
            			RdCkOk = true;
            			RdMess = "";
        			}
        			if (RdCkOk == false) {
          			RdMess = "\n         " + nForm.elements[i].name;
        			}
      			} else
      			if (nForm.elements[i].type == 'checkbox'&&CbCkOk == false) {
        			if (nForm.elements[i].checked) {
          			CbCkOk = true;
          			CbMess = "";
        			}
        			if (CbCkOk == false) {
            			CbMess = "\n         " + nForm.elements[i].name;
        			}
      			} 	
    		}
  	}
  	if (msg.length != 0||RdMess.length != 0||CbMess.length != 0) {
    	msg += RdMess + CbMess; 
    	if (nlang=="fr") msg = fra + msg + "\n"; else msg = gbr + msg + "\n";
    	alert(msg);
    	return false;
  	}
}

// --- Validation des formulaire : password()
function ffnCompare_password(nPass1,nPass2) {
// Ajouter ce code dans la saisie du deuxième mot de passe
// onChange=\"ffnCompare_password(this.form.pass1,this);\"
// Noter que le premier mot de passe doit avoir le nom "pass1"
	if (nPass1.value != nPass2.value) {
    	nPass1.value = "";
    	nPass2.value = "";
    	nPass1.focus();
    		if (nlang=="fr") 
      		alert ("\nVous n'avez pas entré le même mot de passe deux foi.\nVeuillez entrer à nouveau le mot de passe..")
    		else 
      		alert ("\nYou did not enter the same new password twice.\nPlease re-enter your password.")
  	} else return true;
}

// --- Validation des formulaire : char()
function ffnValid_char(nChamp,nAccepte,nbr) {
// Ajouter ce code dans la saisie du champs
//  onBlur=\"ffnValid_char(this,'()-0123456789',nbr de char)\"
// Les caractères acceptés peuvent être changés
var ok = "oui";
var min = "oui";
var nChar;
	for (var i=0; i<nChamp.value.length; i++) {
    	nChar = "" + nChamp.value.substring(i, i+1);
    		if (nAccepte.indexOf(nChar) == "-1") ok = "non";
  	}
  	if (ok == "non") {
    		if (nlang=="fr") 
      		alert ("\nEntré invalide!\nSeul ces caractères sont valide:\n "+nAccepte)
    		else 
      		alert("\nInvalid entry!\nOnly this characters are accepted:\n "+nAccepte);
	nChamp.focus();
	nChamp.select();
	}
  	if (nChamp.value.length < nbr&&nChamp.value.length > 0) min = "non";
  	if (min == "non") {
    		if (nlang=="fr")
      		alert("\nSaisie invalide!\nAssurez-vous d'entrer au moins " + nbr + " caractères.");
    		else 
      		alert("\nInvalid entry!\nYou must at least " + nbr + " characters.");
    	nChamp.focus();
    	nChamp.select();
  	}
}

// --- Validation des formulaire : mail()
function ffnValid_mail(nChamp) {
// Ajouter ce code dans la saisie du champs
//  onBlur=\"ffnValid_mail(this)\"
	if (nChamp.value.length > 0) {
    		if ((nChamp.value.lastIndexOf(".") < nChamp.value.indexOf("@")+3 
      		|| nChamp.value.lastIndexOf(".") > nChamp.value.length-3 
      		|| nChamp.value.indexOf("@") < 1 ) 
      		|| nChamp.value.indexOf("@") != nChamp.value.lastIndexOf("@")) {
      			if (nlang=="fr")
        		alert("\nSaisie invalide!\nAssurez-vous d'entrer un format valide de mail \"nn@nn.nn\".");
      			else
        		alert("\nInvalid entry!\nYou must enter a valid email address \"nn@nn.nn\".");
    		nChamp.focus();
    		nChamp.select();
    		}
  	}
}

// --- Validation des formulaire : date()
function ffnValid_date(nDate,nA1,nA2,nFormat) {
// Ajouter ce code dans la saisie du champs date
//  onBlur=\"ffnValid_date(this,1950,2020,'jj/mm/aaaa')\"
// La date valide doit être entre 1950 et 2020.
//    vous pouvez changer l'interval.
// Format valide: (ne pas utiliser d'autre format... jj/mm/aaaa ou mm/jj/aaaa ou aaaa/mm/jj
// Noter que vous devriez indiquer à l'usager le format valide...
var ok = "oui";
var nChar;
var aDate;
var nJ;
var nM;
var nA;
var jMax = 31;
nAccepte = "0123456789/";
	if (nDate.value.length > 0) {
    		if (nDate.value.length < 8 || nDate.value.length > 10) ok = "non";
    			for (var i=0; i<nDate.value.length; i++) {
      			nChar = "" + nDate.value.substring(i, i+1);
      				if (nAccepte.indexOf(nChar) == "-1") ok = "non";
    			}
    			if (ok == "oui") {
      			aDate = nDate.value.split("/");
      				if (nFormat == "jj/mm/aaaa") { 
      				nJ = aDate[0]; nM = aDate[1]; nA = aDate[2];
      				} else if (nFormat == "mm/jj/aaaa") { 
      				nJ = aDate[1]; nM = aDate[0]; nA = aDate[2];
        			} else if (nFormat == "aaaa/mm/jj") {
        			 nJ = aDate[2]; nM = aDate[1]; nA = aDate[0]; 
        			}
      				if ((nJ < 1 || nJ > jMax) || (nM < 1 || nM > 12) || (nA < nA1 || nA > nA2)) ok = "non";
      				else {
        				if (nM == 2) { 
          					if (AnneeBissex(nA) == true) { 
          					jMax = 29 
          					} else {
          					jMax = 28
          					}
        				}
        				if ((nM == 1 || nM == 3 || nM == 5 || nM == 7 || nM == 8 || nM == 10 || nM == 12)) jMax = 31
        				if ((nM == 4 || nM == 6 || nM == 9 || nM == 11)) jMax = 30
        				if (nJ < 1 || nJ > jMax) ok = "non";
      				}
    			}
    			if (ok == "non") {
      			nDate.focus();
      			nDate.select();
      				if (nlang=="fr") 
        			alert ("\nDate invalide!. Veuillez entrer une date valide: "+nFormat+"\nentre "+nA1+" et "+nA2)
      				else 
        			alert ("\nInvalid date. Please re-enter valid date: "+nFormat+"\nbetween "+nA1+" et "+nA2)
    			}
  	}
}

// --- Validation des formulaire : text()
function ffnCompteur_Texte(nTexte, nCompteur, nLimite) {
// Ajouter ce code dans la saisie du champ "textarea"
// onKeyDown=\"ffnCompteur_Texte(this,this.form.compte,2000);\" onKeyUp=\"ffnCompteur_Texte(this,this.form.compte,2000);\" onBlur=\"ffnCompteur_Texte(this.form.description,this.form.compte,2000);\"
// 2000 représente le nombre maximum de caractères accepté
// Vous devez aussi ajouter une boîte de saisie qui
// indique le nombre de caractères restant.
// <input readonly="readonly" type="text" name="compte" value="2000">
	if (nTexte.value.length > nLimite)
    	nTexte.value = nTexte.value.substring(0, nLimite);
  	else 
    	nCompteur.value = nLimite - nTexte.value.length;
}

// --- Imprimer la page
browser=navigator.appName;
release = navigator.appVersion;
function printpage() {   
var version = (navigator.appVersion.charAt(0) < "5") ? true : false
	if((browser.indexOf("Explorer",0)>0) && (!version)) {   // NS4, IE5
	alert("Désolé votre navigateur ne supporte pas cette fonction. Veuillez cliquer sur Imprimer dans le menu Fichier de votre navigateur.");
    	} else {
    	window.print();             
	}
}

// --- Direction vers une page
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

/***********************************************
* Dynamic Countdown script- © Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/

function cdtime(container, targetdate, eventTitre){
if (!document.getElementById || !document.getElementById(container)) return
this.container=document.getElementById(container)
this.currentTime=new Date()
this.targetdate=new Date(targetdate)
this.eventTitre=eventTitre
this.timesup=false
this.updateTime()
}

cdtime.prototype.updateTime=function(){
var thisobj=this
this.currentTime.setSeconds(this.currentTime.getSeconds()+1)
setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
}

cdtime.prototype.displaycountdown=function(baseunit, functionref){
this.baseunit=baseunit
this.formatresults=functionref
this.showresults()
}

cdtime.prototype.showresults=function(){
var thisobj=this


var timediff=(this.targetdate-this.currentTime)/1000 //difference btw target date and current date, in seconds
if (timediff<0){ //if time is up
this.timesup=true
this.container.innerHTML=this.formatresults()
return
}
var oneMinute=60 //minute unit in seconds
var oneHour=60*60 //hour unit in seconds
var oneDay=60*60*24 //day unit in seconds
var dayfield=Math.floor(timediff/oneDay)
var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
hourfield=dayfield*24+hourfield
dayfield="n/a"
}
else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
minutefield=dayfield*24*60+hourfield*60+minutefield
dayfield=hourfield="n/a"
}
else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level
var secondfield=timediff
dayfield=hourfield=minutefield="n/a"
}
// var message = "avant "+this.eventTitre
var message = this.eventTitre
this.container.innerHTML=this.formatresults(dayfield, hourfield, minutefield, secondfield, message)
setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
}

/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

//Create your own custom format function to pass into cdtime.displaycountdown()
//Use arguments[0] to access "Days" left
//Use arguments[1] to access "Hours" left
//Use arguments[2] to access "Minutes" left
//Use arguments[3] to access "Seconds" left
//Use arguments[4] to access "Message" left

//The values of these arguments may change depending on the "baseunit" parameter of cdtime.displaycountdown()
//For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
//For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc


function formatresults(){
if (this.timesup==false && arguments[0]>0){ //if target date/time not yet met
// var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> left until this Christmas"
var displaystring="<span class='styleRebours'>J-"+arguments[0]+"</span>"+" "+arguments[4]
}
else{ //else if target date/time met
var displaystring="" //Don't display any text
// alert("Message d'alerte") //Instead, perform a custom alert
}
return displaystring
}

//----------------//
// Autocompletion //
//----------------//
function ac_return(field, item){
	// on met en place l'expression régulière
	var regex = new RegExp('([0-9]+)-id', 'i');
	// on l'applique au contenu
	var nomimage = regex.exec($(item).innerHTML);
	//on récupère l'id
	id = nomimage[0].replace('-id', '');
	// et on l'affecte au champ caché
	// $(field.name+'_id').value = id;
	$(field.name+'_id').value = id;
	nom = $(item).innerHTML;
	var mots = nom.split("-id</div>");
	$(field.name).value = mots[1];
 	form.onsubmit;
}

//-----------------------------------------------//
// Affichage d'un objet déclaré dans le document //
//-----------------------------------------------//
function afficheObjet() {
var arg = arguments; // Récup liste des arguments passée à la fonction
var obj;
	for(var i = 0; i < arg.length; i++) {
	obj = document.getElementById(arg[i]); // Récup Objet correspondant
		if(obj) {
		obj.style.visibility = "visible";
		//-- Ou autre méthode
		obj.style.display = "";
		}
	}
}

//----------------------------------------------//
// Masquage d'un objet déclaré dans le document //
//----------------------------------------------//
function masqueObjet() {
var arg = arguments; // Récup liste des arguments passée à la fonction
var obj;
	for(var i = 0; i < arg.length; i++) {
	obj = document.getElementById(arg[i]); // Récup Objet correspondant
		if(obj) {
		obj.style.visibility = "hidden";
		// -- Ou autre méthode
		obj.style.display = "none";
		}
	}
}

