PageSourceSearch

https://www.saint-maurice.ch/js/mandatory.js?_v=5

js saint-maurice.ch collected 2026-10-02 11:49:49 UTC 8,094 bytes, 306 lines download raw bytes

1/* Function qui check les champs obligatoires selon le nom des styles mandatory et mandatoryFailed 
2myCallBack: 
3fonction de callback appelée à la fin des checks globals, ce parametre est optionnel.
4Elle sert à faire des check spécifiquer au champs.
5Si un fonction de callback est défini elle doit renvoyer un boolean.
6La fonction de callback ne peut pas recevoir de parametre.
7Pour passer une fonction en parametre, il suffit de passer le nom de la fonction sans les parenthèses (et pas entre guillmet, ce n'est pas un string) 
8
9Si on a des champs obligatoire, mais on veut pas passer dans le checkMandatoryGlobal
10il faut utiliser les style: mandatoryCustom et mandatoryCustomFailed (meme style, mais non traité en global)
11*/
12/* MOBILE ADAPTED */
13function checkMandatoryGlobal(oForm, plugID, myCallBack)
14{
15	var oMultilang = getMultilangObject(plugID);//Recupere l'objet mutlilang, si il existe
16	var flagInput = checkMandatoryGlobalByType(oForm, oMultilang, "input");
17	var flagTextArea = checkMandatoryGlobalByType(oForm, oMultilang, "textarea");
18	var canSubmit = (flagInput && flagTextArea);
19	
20	//Si il y a une fonction de callback, je l'appelle
21	if(myCallBack)
22	{
23		var flag = myCallBack(canSubmit, oForm, plugID);
24		//Pas de retour (true ou false) à la fonction de callback --> check en ajax --> Post pas le form (c'est la fct ajax qui doit s'en charger)
25		if(isNaN(flag))
26			return false;
27		//Sinon determine le can submit
28		canSubmit = (canSubmit && flag);
29	}
30	
31	if(!canSubmit) /* MOBILE ADAPTED */
32	{
33		var evt = arguments.callee.caller.arguments[0];
34		if(evt)
35		{
36			evt.preventDefault();
37			evt.stopPropagation();
38		}
39		openboxReady();
40	}
41
42	return canSubmit;
43}
44
45//Lance le test de tous les champs avec les styles defini
46function checkMandatoryGlobalByType(oForm, oMultilang, sType)
47{
48	var canSubmit = true;
49	//Si j'ai pas la method sur le form, je prends le document (cas htmlEditeur)
50	if(!oForm.getElementsByTagName)
51		oForm = window.document;
52	var objs = oForm.getElementsByTagName(sType);
53	
54	for(i=0;i<objs.length; i++)
55	{
56		var obj = objs[i];
57		if(obj.className=="mandatory" || obj.className=="mandatoryFailed")
58		{
59			var flag = null;
60			//Si c'est un champs multilang
61			if(oMultilang)
62				if(oMultilang.hasField(obj.id))
63					flag = oMultilang.checkMandatory(obj.id);	
64					
65			//Si ce n'était pas un champs multilang
66			if(flag == null)
67				flag = checkMandatoryGlobalField(obj);
68			
69			//Met les erreurs
70			if(flag)
71				setMandatoryGlobalError(obj, "mandatory", "none");
72			else
73				setMandatoryGlobalError(obj, "mandatoryFailed", "");
74			
75			//Redefini le canSubmit	
76			canSubmit = (canSubmit && flag);
77		}
78	}
79		
80	return canSubmit;
81}
82
83//Check si un champs est rempli
84function checkMandatoryGlobalField(obj)
85{
86	return !(obj.value.trim() == "");
87}
88
89//Configure l'erreur avec les parametre
90function setMandatoryGlobalError(obj, style, display, numError)
91{
92	var idObj = "";
93	//Si c'est un tableau d'element (pour radio avec meme id)
94	if(obj.length >
94 0 && !obj.options) //évite de passer là pour les cbo
95	{
96		for(i=0;i<obj.length;i++)
97		{
98			obj[i].className = style;	
99			idObj = obj[i].id; 
100		}
101	}
102	else
103	{
104		obj.className = style;
105		idObj = obj.id;
106	}
107	
108	if(!numError)
109		numError="";
110		
111	//Affiche du message d'erreur si il existe
112	var error = document.getElementById(idObj + "_error" + numError);
113	if(error)
114		error.style.display = display;
115}	
116
117
118//Recuperation de l'objet multilang si il y en a un
119function getMultilangObject(plugID)
120{
121	try 
122	{
123		oMultilang = eval(plugID + "Multilang");
124		return oMultilang;
125	}
126	catch (err) 
127	{
128		return null;
129    }
130}
131
132//Fonction pour facilier la mise en place des styles et affichage des spand'erreur depuis les fct custom
133function setMandatoryCustomError(obj, noError, numError)
134{
135	if(noError)
136		setMandatoryGlobalError(obj, "mandatoryCustom","none",numError);
137	else
138		setMandatoryGlobalError(obj, "mandatoryCustomFailed","",numError);
139}
140
141/******************* AUTRE FONCTION POUR LE CHIKITA *************************/
142//Gestion des mots clés obligatoires pour les pages (met en global car peut etre utiliser par page, news...)
143function checkMandatoryKeyword()
144{
145	var checkMandatory = document.getElementsByName("aKeyword[]");
146	//Si j'ai pas de mot clé, je retourne true
147	if(checkMandatory.length==0)
148		return true;
149	
150	//Boucle pour tester les checked
151	var flag = false;
152	for(i=0;i<checkMandatory.length;i++)	
153		flag = (flag || checkMandatory[i].checked);
154	
155	//Je lance l'affichage de l'erreur
156	setMandatoryCustomError(checkMandatory, flag);	
157	
158	return flag;
159}
160
161//Gestion des email pour le send a friend
162function checkMandatorySendAFriend()
163{
164	
165	var mail = document.getElementById("aSend[mailto]");
166	var flagTo = checkEmailFormat(mail.value);
167	
168	//Si le test est ok, je regarde qu'il y a bien un seul mail
169	if(flagTo)
170	flagTo = checkOnlyOneMail(mail.value);
171	
172	setMandatoryCustomError(mail, flagTo);
173
174	mail = document.getElementById("aSend[mailfrom]");
175	var flagFrom = checkEmailFormat(mail.value);
176	
177	//Si le test est ok, je regarde qu'il y a bien un seul mail
178	if(flagFrom)
179		flagFrom = checkOnlyOneMail(mail.value);
180		
181	setMandatoryCustomError(mail, flagFrom);
182
183	return (flagTo && flagFrom); 	
184}
185
186function checkOnlyOneMail(mail)
187{
188	var chaine= mail;
189	var reg=new RegExp("[@]+", "g");
190	var tableau=chaine.split(reg);
191	
192	if(tableau.length !=2)
193		return false;
194	else
195		return true;	
196	
197}
198
199/*Fonction pour checker les raccourcis*/
200function checkRaccourci(bParentFlag, oForm)
201{
202	//Variable
203	var aEl = new Array();
204	var cpt=0;
205	var param = "";
206	var bMatch = true;
207	
208	//Recup les input et extrait les type text qui ont une valeur
209	var aTmp = oForm.getElementsByTagName("input");	
210	for(i in aTmp)
211	{
212		if(aTmp[i].type=="text")
213		{
214			//J'enleve les precedent message d'erreur et trim la valeur du champs
215			setMandatoryGlobalError(aTmp[i], "","none", "1");	
216			setMandatoryGlobalError(aTmp[i], "","none", "2");
217			setMandatoryGlobalError(aTmp[i], "","none", "3");
218			aTmp[i].value = aTmp[i].value.trim(); //trim la valeur
219			
220			//rempli le aEl si j'ai une valeur dans le champs
221			if(aTmp[i].value != "")
222			{ 
223				aEl[cpt] =  aTmp[i];
224				cpt++;
225			}
226		}
227	}
228	
229	//Check si pas de caractere illegal
230	for(i in aEl)
231	{
232		//Si le contenu a des caractere speciaux, je met l'erreur 1
233		var bTmp = aEl[i].value.match(/[^a-z0-9_-]/g);
234		bMatch = (bMatch && !bTmp);
235		if(bTmp) 
236			setMandatoryCustomError(aEl[i], false,"1");
237		else
238		{
239			//je check si il y a une valeur identique, alors je met l'erreur 2
240			bTmp = true
241			for(j in aEl)
242			{
243				if(aEl[i].id!=aEl[j].id && aEl[i].value == aEl[j].value)
244				{
245					setMandatoryCustomError(aEl[i], false,"2");
246					bTmp = false;
247					break;
248				}
249			}
250			
251			bMatch = (bMatch && bTmp);
252			if(bTmp) //Si tous les test sont passer je met dans param pour envoyer à la DB
253				param += "&" + aEl[i].id + "=" + aEl[i].value;
254		}
255	}
256	
257	//Si j'ai eu des erreur, je retourne false
258	if(!bMatch) 
259		return false;
260	
261	//Si le param est vide, tous est vide donc return true
262	if(param=="") 
263		return true;
264		
265
266	//Sinon je check en AJAX si raccourci unique
267	var xhr = getAjaxRequest();
268	xhr.onreadystatechange=function()
269	{
270		if(xhr.readyState == 4)
271			if(xhr.status == 200)
272			{
273				var xml = xhr.responseXML;
274				var nodes = xml.getElementsByTagName('html')[0]; 
275				var result = nodes.firstChild.nodeValue.trim();
276				if(result == 1) //Si ok, je poste le formulaire
277					oForm.submit(); //document.getElementById("formEditRaccourci").submit();
278				else
279				{
280					//Met les erreurs
281					aExistingValue = result.split(";");
282					var aInError = new Array();
283					for(i in aEl)
284					{
285						for(j=0; j<aExistingValue.length; j++)
286						{
287							if(aEl[i].value == aExistingValue[j])
288							{
289								setMandatoryCustomError(aEl[i], false, "3");	
290								break;
291							}
292						}
293					}
294							
295					//Enleve la rondelle d'attente
296					openboxReady();
297				}
298		    }
299	}
300	
301	var url = window.location.href + "?plugin=ajaxmanager-plug-page-fct-isRaccourciUnique" + encodeURI(param);
302	
303	//Appelle Ajax 
304	xhr.open("get", url, true);
305	xhr.send(null);  //PAS DE RETOUR A LA FONCTION DE CALLBACK POUR PAS POSTER LE FORM
306}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.