pv_project/site/js/fonctions.js
2025-07-17 10:15:19 +02:00

660 lines
18 KiB
JavaScript

// 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];}
}
-->