// JavaScript Document
<!--

/*---------------CONTROLES DE FORMULAIRE----------------*/

	//Modifie la casse -> maj
	function ucfirst(string) {
    	return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase();
    }
	
	//Modifie la casse pour le premier caractère
	function strtoupper(string) {
    	return string.toUpperCase();
    }
	
	//Date valide ? avec gestion des année bissextiles
	function checkDateValide(a,m,j){ 
		m-=1;
		d=new Date(a,m,j);
		var rep= (d.getFullYear()!=a || d.getMonth()!=m) ? "invalide" : "valide";
		if(rep=="invalide")	return false;	else	return true; 
	}
	
	/* Jours fériés */
	/*var Ferie=new Array("01/01","01/05","08/05","14/07","15/08","01/11","11/11","25/12");	
	var DernierJour = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	
	function Compare_Dates(valeur_date1, valeur_date2){
		var tabDate1 = valeur_date1.split('/');		
		var maDate1 = tabDate1[1]+"/"+tabDate1[0]+"/"+tabDate1[2];
		var datTest_Date1 = new Date(maDate1 + " 00:00:00");
	 
		var tabDate1 = valeur_date2.split('/');		
		var maDate2 = tabDate1[1]+"/"+tabDate1[0]+"/"+tabDate1[2];
		var datTest_Date2 = new Date(maDate2 + " 00:00:00");
	 
		if (datTest_Date1 > datTest_Date2)
		 {   
		   return true;
		 }
		 else{
			return false;
		 }
	}
 
	function isWeekEnd(D) {
		if(D.getDay() == 0 || D.getDay()==6){
			return true;
		}
		else{
			 return false;
		} 
	}
	
	function isPaques(an){
 
 
		var b=an-1900; 
		var c=an%19; 
		var d=Math.floor((7*c+1)/19);
		var e=(11*c+4-d)%29;		
		var f=Math.floor(b/4); 
		var g=(b+f+31-e)%7;
		var date=25-e-g;
		var mois;
 
		if (date>0) {mois = 4}
		else	{date=31+date; mois=3};
		date = ( (date<10)? '0'+date:date);
		Ferie.push( ((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); // Dimanche de Paques
 
		date+=1;
		if ( (date>31) && (mois=3)) {date=1;mois+=1}
		Ferie.push(((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); //Lundi de Paques 
 
		date+=38;
		while (date>31) {var tt=0; date-=DernierJour[mois-1+tt]; tt++ ; mois+=1}
		Ferie.push(((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); // Jeudi de l'ascencion
 
		date+=10;
		while (date>31) {var tt=0; date-=DernierJour[mois-1+tt]; mois+=1}
		Ferie.push(((date<10)? '0'+date:date)+'/'+((mois<10)?'0'+mois:mois)); // Pentecote
 
	}
 
	function isFerie(j,m) { 
		var i=0
		for(var i in Ferie) { 
			if ( test=(((j<10)?'0'+j:j)+'/'+((m<10)?'0'+m:m)) == Ferie[i++]) return true;
		}
		return false;
	}
	
	function checkDateFree(mydate){
		var d=eval(mydate).value;
		var separateur="/"; // separateur entre jour/mois/annee
      	var j=(d.substring(0,2));
      	var m=(d.substring(3,5));
      	var a=(d.substring(6));
		
		
		var tsdate = new Date();
		tsdate.setFullYear(a);
		tsdate.setMonth(m);
		tsdate.setDate(j);
		tsdate.setHours(0);
		tsdate.setMinutes(0);
		tsdate.setSeconds(0);
		tsdate.setMilliseconds(0);


		if(isWeekEnd(tsdate.getTime())){
			alert("La date saisie est un jour de week-end");
			return false;
		}
		isPaques(a); 
		if(!isFerie(j,m)){
			alert("Le jour saisi est un jour ferié");
			return false;
		}
	}*/

	 

	
	function checkDate(df) {
      // Cette fonction verifie le format JJ/MM/AAAA saisi et la validite de la date.
      // Le separateur est defini dans la variable separateur
      var d=eval(df).value;
	  var amin=1999; // annee mini
      var amax=2070; // annee maxi
      var separateur="/"; // separateur entre jour/mois/annee
      var j=(d.substring(0,2));
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      var ok=true;
	  var tmpMsg="\nLa date doit etre au format jj\/mm\/aaaa.";
      if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==true) ) {
         alert("Le jour n'est pas correct."+tmpMsg); eval(df).focus();ok=false;
      }
      if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==true) ) {
         alert("Le mois n'est pas correct."+tmpMsg); eval(df).focus();ok=false;
      }
      if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==true) ) {
         alert("L'année n'est pas correcte."+tmpMsg); ok=false;eval(df).focus();
      }
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==true) ) {
         alert("Les séparateurs doivent être des "+separateur+tmpMsg);eval(df).focus(); ok=false;
      }
      if (ok==true) {
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getFullYear();
         if (a2<=100) {a2=1900+a2}
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date "+d+" n'existe pas !");
			eval(df).focus();
            ok=false;
         }
      }
      return ok;
   }
   
   function checkHour(hour,msg,obli) {
      
		
		var myh = trim(eval(hour).value);
		
		if((myh.length==0)&&(obli==0))	return true;	//Si champ non obligatoire
		
		var i=0;
		var telF="";
		
		myh=trim(myh);
		
		
		
		var verif="";
	
		verif     = /^[0-9]{2}:[0-9]{2}$/		//heure au format hh:mm
		
		if (verif.exec(myh) == null){
			alert(msg);
			eval(hour).focus();
			eval(hour).select();
			return false;
		}else{
			
			var heure = myh.substring(0,2);
			var minute = myh.substring(3,5);

			if(heure<0 || heure>23){
				alert('L\'heure est incorrecte');	
				return false;
			}
			if(minute<0 || minute>59){
				alert('L\'heure est incorrecte');	
				return false;
			}
			return true;
		} 
	}

	/*
	tel : champ de formulaire
	type : Téléphone Fixe (F), Portable (P) ou les deux (T)
	msg : 'telephone', 'portable', 'fax', etc...
	obli : Saisie obligatoire(1) ou facultative (0)
	*/
	function checkFormTel(tel,type,msg,obli){
		var ntel = trim(eval(tel).value);
		ntel = ntel.replace(/[^0-9]/gi,"");
		
		if((ntel.length==0)&&(obli==0))	return true;	//Si champ non obligatoire
		
		var i=0;
		var telF="";
		
		if(ntel.length==10){
			while(i<10)   { 
				telF=telF + ntel.substr(i, 2) + " "; 
				i=i+2;
			} 
		}
		
		telF=trim(telF);
		
		var verif="";
		//0-25/56+23 8_4_4
	
		switch (type){
			case "F" :
				verif     = /^0[1-5789]( [0-9]{2}){4}$/	//Num de tel fixe
				break;
			case "P" :
				verif     = /^0[6-7]( [0-9]{2}){4}$/		//Num de tel portable
				break;
			default :
				verif     = /^0[1-9]( [0-9]{2}){4}$/	//Num de tel fixe et portable
				break;
		}
		
		
		if (verif.exec(telF) == null){
			alert(msg + " est incorrect");
			eval(tel).focus();
			eval(tel).select();
			return false;
		}else{
			eval(tel).value=telF;
			return true;
		} 
	}
	
	
	function trim(str) {
	   return str.replace(/(^\s*)|(\s*$)/g,"")
	}

	//teste le champ de formulaire : doit contenir un nombre décimal
	function checkFormNombreDecimal(nb, libelle,obli){
		var re = /^\d+[.]?\d{0,2}$/;
		var val=trim(eval(nb).value);
		
		val=val.replace(",","."); //Remplace les virgules par des points
		eval(nb).value=val;
		
		/*if(val==""){
			val=0;
			eval(nb).value=0;
		}	*/
		if((val==0)&&(obli==0))	return true;	//Si champ non obligatoire
		if((val==0)&&(obli==1))	{
			alert(libelle + " est  obligatoire!");
			return false;	//Si champ obligatoire
		}
		if(!re.test(val)){
			alert(libelle + " doit être un nombre!");
			eval(nb).value=0;
			eval(nb).focus();
			return false;
		}
		return true;
	}
	

	function checkFormNombre(nb, libelle,obli) {
		var verif     = /^[0-9]+$/ 
		var val     = trim(eval(nb).value);
		if(val==""){
			val=0;
			eval(nb).value=0;
		}	
		if((val==0)&&(obli==0))	return true;	//Si champ non obligatoire
		if((val==0)&&(obli==1))	{
			alert(libelle + " est obligatoire!");
			return false;	//Si champ obligatoire
		}
		if (verif.exec(val) == null){
			alert(libelle + " doit être un nombre!");
			eval(nb).value=0;
			eval(nb).focus();
			return false;
		}else{
			return true;
		} 
	}
	
	//function pour tester si c'est un nombre entier positif
	function CheckNombreEntier(nb) {
	   var re = /^\d+$/;
	   if(!re.test(nb)) return false;
	   else return true;
	}
	
	//function pour tester si c'est un nombre entier positif ou négatif
	function CheckNombreEntierNegPos(nb) {
	   var re = /^-?\d+$/;
	   if(!re.test(nb)) return false;
	   else return true;
	}

	//teste le champ de formulaire : doit contenir un nombre entier positif
	function checkFormNombreNegPos(nb, libelle){
		var re = /^-?\d+$/;
		if(!re.test(eval(nb).value)){
			alert(libelle + " doit être un nombre entier!");
			eval(nb).value="";
			eval(nb).focus();
			return false;
		}
		return true;
	}
	
	//teste le champ de formulaire : non vide (nom de champ de formulaire, libelle
	function checkFormTexte(txt, libelle,len){
		if(trim(eval(txt).value).length<len){
			alert(libelle + " est obligatoire!");
			eval(txt).focus();
			return false;
		}
		return true;
	}
	
	//teste la validite d'une adresse mail (si obli = 1, la saisie est obligatoire sinon obli = 0)
	function verifmail(email,obli){
		var verif = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,5}$/
		if((obli==1)||((obli==0) && (eval(email).value!=""))){
			if (verif.exec(eval(email).value) == null){
				alert("L'email est incorrect!");
				eval(email).focus();
				return false;
			}
		}
		return true;
	}

	/*La déclaration du formulaire crée un groupe de radio-boutons liés : Si le nom du groupe est os, alors le paramêtres est document.form1.os.
	La fonction javascript a comme paramêtre le groupe des radio-boutons.
	Une boucle parcourt la liste des boutons du groupe. On repère le bouton qui a la propriété checked à true 
	et on affiche alors la valeur correspondante*/
	function testerRadio(radio,txt) {
		var sel=false;
		if(eval(radio).length==undefined){	//un seul radiobutton
			if (eval(radio).checked)	sel=true;
		}else{	//plusieurs radiobutton
			for (var i=0; i<eval(radio).length;i++) {
				 if (eval(radio)[i].checked) {
					sel=true;
				 }
			}
		}
		if(sel==false){
			alert(txt);
		}
		return sel;
	}

	/*
	function testerRadio(radio,txt) {
		var sel=false;
		for (var i=0; i<eval(radio).length;i++) {
			 if (eval(radio)[i].checked) {
				sel=true;
			 }
		}
		if(sel==false){
			alert(txt);
		}
		return sel;
	}
	*/
	
	//Limiter le nombre de caractères en saisie dans un textarea
	//maxlength_textarea('textarea_1','carac_reste_textarea_1',150);
	function maxlength_textarea(id, crid, max){
		var txtarea = document.getElementById(id);
		document.getElementById(crid).innerHTML=(max-txtarea.value.length);
		txtarea.onkeypress=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
		txtarea.onblur=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
		txtarea.onkeyup=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
		txtarea.onkeydown=function(){eval('v_maxlength("'+id+'","'+crid+'",'+max+');')};
	}
	function v_maxlength(id, crid, max){
		var txtarea = document.getElementById(id);
		var crreste = document.getElementById(crid);
		var len = txtarea.value.length;
		if(len>max){
			txtarea.value=txtarea.value.substr(0,max);
		}
		len = txtarea.value.length;
		crreste.innerHTML=max-len;
	}
	
	//Calcul de la différence entrre 2 dates
	function datediff(deb,fin){ //date de la forme 17/02/2012
		//En fait on passe l'année, le mois - 1, le jour a la fonction Date() sinon ça ne marche pas!
		var n_debut = new Date (deb.substring(6,10),parseInt(deb.substring(3,5))-1,deb.substring(0,2));
		var n_fin = new Date (fin.substring(6,10),parseInt(fin.substring(3,5))-1,fin.substring(0,2));
		
		var difference = n_fin - n_debut; //En millisecondes
		var diff_jour = (difference / (86400000)); //1000*60*60*24 - jour en millisecondes
		return Math.round(diff_jour);
	} 
	
	//Calcul de la différence entrre 2 dates
	function heurediff(hdeb,mdeb,hfin,mfin){ //hmm (ex: 345 pour 3h45 ou 1645 pour 16h45)
		
		var n_debut = hdeb+mdeb;
		var n_fin = hfin+mfin;
		
		var difference = n_fin - n_debut; //En millisecondes
		//alert(n_fin + " - " + n_debut + " " + difference);
		return Math.round(difference);
		
		
	} 
	
	
	

	

	

	/****************************************************************************************************
	FONCTIONS AJAX
	****************************************************************************************************/
	
	//Ajax
	function file(fichier){
	
		if(window.XMLHttpRequest) // FIREFOX
		xhr_object = new XMLHttpRequest();
		else if(window.ActiveXObject) // IE
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		else
		return(false);
		xhr_object.open("GET", fichier, false);
		xhr_object.send(null);
		if(xhr_object.readyState == 4) return(xhr_object.responseText);
		else return(false);
	}
	
	
	//AJAX Vérifie si une date est fériée et si la date souhaitée de réception respecte le délai de préparation
	function ajax_preparation4(date,nbrJrs){	
		if(date != ''){
			if(texteRes = file('ajax_preparation4.php?mdate='+escape(date)+'&nbrJrs='+escape(nbrJrs))){
				if(texteRes==1){
					alert("- La date limite de validation de l\264action doit intervenir "+nbrJrs+" jours ouvr\351s avant la date souhait\351e de r\351ception.\r\n");
				}else if(texteRes==2){
					alert("- La date de r\351ception ne doit pas \352tre un dimanche ou un jour f\351ri\351.\r\n");	
				}else if(texteRes==3){
					alert("- La date de r\351ception doit \352tre ult\351rieure \340 la date du jour et tenir compte du d\351lai de pr\351paration.\r\n");	//> a la date du jour
				}else{
					//alert(texteRes);
					$("#dDateRecept").slideDown();
					$("#sDateRecept").text(texteRes);
					$("#p_dateLimit").val(texteRes);
					return true;
				}
				/*if(texteRes == "ok"){
					return true;
				}else{
					alert('La date doit correspondre \340 un jour ouvr\351 !');
					return false;
				}*/
			}
		}
	}
	
	//AJAX Vérifie les plages de dates de l'action
	function ajax_preparation5(dateDeb,dateFin){	
		if(dateDeb != ''){
			if(texteRes = file('ajax_preparation4.php?mdate='+escape(date)+'&nbrJrs='+escape(nbrJrs))){
				if(texteRes==1){
					alert("- La date limite de validation de l\264action doit intervenir "+nbrJrs+" jours ouvr\351s avant la date souhait\351e de r\351ception.\r\n");
				}else if(texteRes==2){
					alert("- La date de r\351ception ne doit pas \352tre un dimanche ou un jour f\351ri\351.\r\n");	
				}else if(texteRes==3){
					alert("- La date de r\351ception doit \352tre ult\351rieure \340 la date du jour et tenir compte du d\351lai de pr\351paration.\r\n");	//> a la date du jour
				}else{
					//alert(texteRes);
					$("#dDateRecept").slideDown();
					$("#sDateRecept").text(texteRes);
					$("#p_dateLimit").val(texteRes);
					return true;
				}
				/*if(texteRes == "ok"){
					return true;
				}else{
					alert('La date doit correspondre \340 un jour ouvr\351 !');
					return false;
				}*/
			}
		}
	}
	
	//AJAX Vérifie si une date est fériée
	function ajax_isDateFree(date){	
		if(date != ''){
			if(texteRes = file('ajax_isDateFree.php?mdate='+escape(date))){
				if(texteRes == "ok"){
					return true;
				}else{
					alert('La date doit correspondre \340 un jour ouvr\351 !');
					return false;
				}
			}
		}
	}
	
	//AJAX Accepte les conditions générales d'utilisation a la premiere connexion sur le site monopé
	function accept_cgu(iscgu){	
		if(texteRes = file('ajax_acceptcgu.php?iscgu='+escape(iscgu))){
			if(texteRes == "ok"){
				//alert(texteRes);
				return true;
			}else{
				return false;
			}
		}
	}
	
	//AJAX Accepte les conditions générales d'utilisation a la premiere connexion sur le site monopé
	function ajax_preparation1(){	
		if(texteRes = file('ajax_preparation1.php?liba='+escape(document.frmPrepa1.p_nomAction.value))){
			if(texteRes == "ok"){
				//alert(texteRes);
				return true;
			}else{
				//alert(texteRes);
				alert('Ce nom d\'action a déj\340 été utilisé par votre concession.\nMerci de le modifier !');
				return false;
			}
		}
	}
	
	
	/*
	//AJAX Vérifie l'existence du login pour les utilisateurs
	function checkLoginUserExists(login,oldlogin){	//Teste si le login existe (avec oldlogin en modif)
		if(login != ''){
			if(texteRes = file('verif.php?login='+escape(login)+'&oldlogin='+escape(oldlogin))){
				if(texteRes == "pasok"){
					alert("Attention ! \nCe login est déja utilisé.");
					return false;
				}else{
					return true;
				}
			}
		}
	*/
	
	/* Function in_array */
	Array.prototype.inArray = function(p_val) {
		return (this.indexOf(p_val) > -1);
	}
	
	/* IndexOf ne fonctionne pas sous ie7 */ 
	Array.prototype.indexOf = function(obj, start) {
		 for (var i = (start || 0), j = this.length; i < j; i++) {
			 if (this[i] === obj) { return i; }
		 }
		 return -1;
	}
	  
	/* Fonction de contrôle excel avant upload */
	function checkfile(sender) {
		
		var validExts = new Array(".xls", ".xlsx", ".ods");
		var fileExt = sender.value;
		//alert(fileExt);
		fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
		fileExt = fileExt.toLowerCase();
		//alert(fileExt);
		//if(validExts.inArray(fileExt))	alert('oui');	else	alert('non');
		if (validExts.indexOf(fileExt) < 0) {
		  alert("Le fichier selectionné est invalide, veuillez selectionner un fichier de type : " +
				   validExts.toString());
		  return false;
		}
		else return true;
		
		/*if(validExts.inArray(fileExt)){
			return true;
		}else{
			alert("Le fichier selectionné est invalide, veuillez selectionner un fichier de type : " +
			validExts.toString());
			return false;
		}*/
		
	}
	
	/* Contrôle si le fichier est un excel avant upload pour le ciblage */
	function ciblage_selectionner(){
		
		mysender = document.frmCiblageUtiliser1.c_file;
		if(checkfile(mysender)){
			
			document.frmCiblageUtiliser1.submit();
		}
	}
	
	/* Contrôle si le fichier est un excel avant upload pour la relance */
	function relance_selectionner(){
		
		mysender = document.frmRelanceUp.c_file;
		if(checkfile(mysender)){
			
			document.frmRelanceUp.submit();
		}
	}
	
	//Fonction AGCO
	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}
	
	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}
	
	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}
	

	



-->