PageSourceSearch

https://www.gddinstruments.com/components/com_proforms/js/evaluation.js

js gddinstruments.com collected 2026-10-04 13:23:54 UTC 14,727 bytes, 587 lines download raw bytes

1// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2// @license: Mad4Media Javascipt License - copyright Mad4Media - Fahrettin Kutyol - All rights reserved    ++
3// (re-) publishing or forking for any purpose of commercial or non-commercial use is not allowed.		   ++
4// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5
6function comparisonDummy(){}; 
7
8comparisonDummy.prototype = {
9	equals: function(){return this},
10	lower: function(){return this},
11	lowerOrEqual: function(){return this},
12	higher: function(){return this},
13	higherOrEqual: function(){return this},
14	errorTextIfNot: function(){return this}
15};
16
17/**
18 * 
19 */
20function MCompare(element){
21	this.element = element;
22	this.name = "compare";
23}
24
25MCompare.prototype = {
26		equals : function(el){
27			this.element2 = el;
28			this.action = "==";
29			return this;
30		},
31
32		lower : function(el){
33			this.element2 = el;
34			this.action = "<";
35			return this;
36		},
37
38		lowerOrEqual : function(el){
39			this.element2 = el;
40			this.action = "<=";
41			return this;
42		},
43
44		higher : function(el){
45			this.element2 = el;
46			this.action = ">";
47			return this;
48		},
49
50		higherOrEqual : function(el){
51			this.element2 = el;
52			this.action = ">=";
53			return this;
54		},
55
56		errorTextIfNot : function(text){
57			this.onError = text;
58			return this;
59		},
60	
61		lowerThan: function(el){return this.lower(el);},
62		higherThan: function(el){return this.higher(el);},
63		
64		deleteHandle : function(){
65	
66			var w1 = (this.node1.formType != "checkbox") ? this.node1 : this.node1.parentNode;
67			var w2 = (this.node2.formType != "checkbox") ? this.node2 : this.node2.parentNode;
68			
69			if(this.node1.validationError){
70				this.node1.bubbleInfo = this.node1.bubbleInfo.replace("<br>"+this.onError,"").replace(this.onError,"");
71			}else{
72				m4jKillBubbleHandle(w1, this.node1);
73			}
74			
75			if(this.node2.validationError){
76				this.node2.bubbleInfo = this.node2.bubbleInfo.replace("<br>"+this.onError,"").replace(this.onError,"");
77			}else{
78				m4jKillBubbleHandle(w2, this.node2);
79			}
80			
81			dojo.disconnect(this.node1.compareOnChangeHandle);
82			this.node1.compareOnChangeHandle = undefined;
83			dojo.disconnect(this.node2.compareOnChangeHandle);
84			this.node2.compareOnChangeHandle = undefined;
85		},
86
87		checkCondition : function(){
88				var isError = 0;
89				var el1 = _byName("m4j-"+this.element);
90				var el2 = _byName("m4j-"+this.element2);
91				if( el1 == undefined ||  el2 == undefined  ) return 0 ;
92				this.node1 = el1;
93				this.node2 = el2;		
94				
95				switch (this.action) {
96				case "==":
97					if (!(el1.value == el2.value ) ) isError = 1;
98					break;
99					
100				case "<":
101					if (!(el1.value < el2.value ) ) isError = 1;
102					break;
103					
104				case ">":
105					if (!(el1.value > el2.value ) ) isError = 1;
106					break;
107		
108				case "<=":
109					if (!(el1.value <= el2.value ) ) isError = 1;
110					break;
111					
112				case ">=":
113					if (!(el1.value >= el2.value ) ) isError = 1;
114					break;
115					
116				default:
117					return 0;
118					break;
119				}
120		
121				if(el1.compare == undefined) el1.compare = this;
122				if(el2.compare == undefined) el2.compare = this;
123		
124				if(! el1.compareOnChangeHandle){
125					el1.compareOnChangeHandle = dojo.connect(el1,"onchange", compareOnChange);
126				}
127				
128				if(! el2.compareOnChangeHandle){
129					el2.compareOnChangeHandle = dojo.connect(el2,"onchange", compareOnChange);
130				}
131				
132				if(isError){
133					var w1 = (el1.formType != "checkbox") ? el1 : el1.parentNode;
134					var w2 = (el2.formType != "checkbox") ? el2 : el2.parentNode;
135					
136					if(! w1.errorOverHandle && m4jShowTooltip){
137						el1.errorOverHandle = dojo.connect(el1,"onmouseover", showErrorTooltip);
138						el1.errorOutHandle = dojo.connect(el1,"onmouseout", hideErrorTooltip);
139						el1.bubbleInfo = this.onError;
140						m4jHighliteError(w1, el1);
141					}else{
142						if(el1.bubbleInfo.indexOf(this.onError) == -1){
143							el1.bubbleInfo += "<br>"+this.onError;
144						}
145					}
146					
147					if(! w2.errorOverHandle && m4jShowTooltip){
148						el2.errorOverHandle = dojo.connect(el2,"onmouseover", showErrorTooltip);
149						el2.errorOutHandle = dojo.connect(el2,"onmouseout", hideErrorTooltip);
150						el2.bubbleInfo = this.onError;
151						m4jHighliteError(w2, el2);
152					}else{
153						if(el2.bubbleInfo.indexOf(this.onError) == -1){
154							el2.bubbleInfo += "<br>"+this.onError;
155						}
156					}
157				}//EOF isError
158				
159				return isError;
160		}
161}//EOF extending MCompare
162
163function compareOnChange(e){
164	if(this.compare == undefined) return true;
165	var isError =  this.compare.checkCondition();
166	if(!isError){
167		this.compare.deleteHandle();
168	}
169	return true;
170}
171
172function m4jHighliteError(node,el){
173	switch(node.formType){
174		case "select":
175			if(_Browser.IE && _Browser.IEVersion() < 8){
176				el.parentNode.style.border = "1px solid " + errorColor;
177			}else{
178				el.style.borderColor = errorColor;
179			}
180		break;
181	
182		case "checkbox":
183			el.style.border = "1px solid " + errorColor;
184		break;
185		
186		default:
187			el.style.borderColor = errorColor;
188		break;
189	}
190}
191
192function m4jKillBubbleHandle(node,el){
193	switch(node.formType){
194		case "select":
195			if(_Browser.IE && _Browser.IEVersion() < 8){
196				el.parentNode.style.border = "";
197			}else{
198				el.style.borderColor = "";
199			}
200		break;
201		
202		case "checkbox":
203			el.style.border = "";
204			bubbleWrap.style.left = "-9999em";
205		break;
206		
207		default:
208			el.style.borderColor = "";
209		break;
210	}
211	
212	el.validationError = 0; 
213	dojo.disconnect(el.errorOverHandle);
214	dojo.disconnect(el.errorOutHandle);
215	el.errorOverHandle = undefined;
216	el.errorOutHandle = undefined;
217}
218
219
220var m4jAllowSubmission = false;
221var m4jCancelSubmit = false;
222
223function validateField(node){
224	var error = false;
225	var rError = false;
226	var validateType = node.validateType;
227	var errorText = "";
228
229	var el = (node.formType != "checkbox") ? node : node.parentNode;
230	
231	el.bubbleInfo = "";
232	
233	
234	
235	// Check Required
236	if(validateType >999){
237		validateType -= 1000;
238		
239		switch(node.formType){
240			case "select":
241			case "textarea":
242			case "field":
243				if(node.value == ""){
244					rError = true;
245					el.bubbleInfo = MText.required+"<br/>";
246				}else{
247
248					el.bubbleInfo = el.bubbleInfo.replace(MText.required+"<br/>","");
249				}
250			break;
251			
252			case "checkbox":
253				if(node.checked == ""){
254					rError = true;
255					el.bubbleInfo = MText.required+"<br/>";
256				}else{
257					el.bubbleInfo = el.bubbleInfo.replace(MText.required+"<br/>","");
258				}
259			break;	
260		}
261	}
262	
263	switch (validateType) {
264	case 1:
265		if(checkRegEx(node.value, "[^\\D\\s]") || rError){
266			error = true;
267			el.bubbleInfo += MText.alphabetic;
268		}
269		errorText = MText.alphabetic;
270		break;
271
272	case 2:
273		if(checkRegEx(node.value, "[^0-9\.]") || rError){
274			error = true;
275			el.bubbleInfo += MText.numeric;
276		}
277		errorText = MText.numeric;
278		break;	
279
280	case 3:
281		if(checkRegEx(node.value, "[^0-9]") || rError){
282			error = true;
283			el.bubbleInfo += MText.integer;
284		}
285		errorText = MText.integer;
286		break;	
287
288	case 4:
289		var filter = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,6})$/;		
290		if(!filter.test(node.value) && node.value.length != 0 || rError){
291			error = true;
292			el.bubbleInfo += MText.email;
293		}
294		errorText = MText.email;
295		break;	
296
297	case 5:
298		var filter = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/;		
299		if(!filter.test(node.value) && node.value.length != 0 || rError){
300			error = true;
301			el.bubbleInfo += MText.url;
302		}
303		errorText = MText.url;
304		break;	
305		
306	case 6:
307		if(checkRegEx(node.value, "[^A-Za-z0-9\\s]") || rError){
308			error = true;
309			el.bubbleInfo += MText.alphanumeric;
310		}
311		errorText = MText.alphanumeric;
312		break;				
313	default:
314		break;
315	}
316	
317	
318	if(error || rError){
319		globalError = true;
320		
321		m4jHighliteError(node,el);
322		el.validationError = 1; 
323		if(! node.errorOverHandle && m4jShowTooltip){
324			el.errorOverHandle = dojo.connect(el,"onmouseover", showErrorTooltip);
325			el.errorOutHandle = dojo.connect(el,"onmouseout", hideErrorTooltip);
326			
327		}
328	}else{
329		if(el.errorOverHandle){
330			
331			if(el.compare){
332				el.bubbleInfo = el.bubbleInfo.replace(errorText+"<br>", "").replace(errorText, "");
333			}else{
334				m4jKillBubbleHandle(node, el);
335			}
336			
337/*			dojo.disconnect(el.errorChangeHandle);
338		el.errorChangeHandle = null; */
339			el.validationError = 0; 
340		}
341	}
342	
343}
344
345function checkRegEx(value,regex){
346	 var pos = value.search(regex); 
347	 if(pos != -1 ) return true;
348	 else return false;
349}
350
351var m4jValidationFunctions = new Array();
352
353function addValidationFunction(functionName){
354	m4jValidationFunctions.push(functionName);
355}
356
357
358var globalError = false;
359var m4jForm = dojo.byId("m4jForm");
360
361if(m4jForm){
362
363	m4jForm.onsubmit = function(){
364		
365		if(m4jCancelSubmit) return false;
366		
367		if(m4jAllowSubmission){
368			return true;
369		}
370			
371		globalError = false;
372		var items = new Array();
373		
374		
375		if(PROFORMS_USE_JS_VALIDATION){
376			
377			
378			var inputs = m4jForm.getElementsByTagName("INPUT");
379			var textAreas = m4jForm.getElementsByTagName("TEXTAREA");
380			
381			for(t=0;
381 t < inputs.length; t++){
382				var alt = Number(inputs[t].alt);
383				if(alt > 0) {
384					if(inputs[t].type == "checkbox"){
385						inputs[t].formType = "checkbox";	
386					}else {
387						inputs[t].formType = "field";
388					}
389					inputs[t].validateType = alt;
390					items.push(inputs[t]);
391					inputs[t].errorChangeHandle = dojo.connect(inputs[t],"onchange", function(){
392						validateField(this);
393					});
394				}
395			}
396			for(t=0; t < textAreas.length; t++){
397				var lang = Number(textAreas[t].lang);
398				if(lang > 0) {
399					textAreas[t].formType = "textarea";
400					textAreas[t].validateType = lang;
401					items.push(textAreas[t]);
402					textAreas[t].errorChangeHandle = dojo.connect(textAreas[t],"onchange", function(){
403						validateField(this);
404					});
405				}
406			}
407			
408			for(t=0; t < items.length; t++){
409				validateField(items[t]);
410			}
411			
412			// Non field / area required queries
413			var selects = m4jForm.getElementsByTagName("SELECT");
414			for(t=0; t < selects.length; t++){
415				var lang = Number(selects[t].lang);
416				if(lang > 0) {
417					selects[t].formType = "select";
418					selects[t].validateType = lang;
419					items.push(selects[t]);
420					selects[t].errorChangeHandle = dojo.connect(selects[t],"onchange", function(){
421						bubbleWrap.style.left = "-9999em";
422						validateField(this);
423					});
424					validateField(selects[t]);
425				}
426			}
427			
428			var radioWrap = dojo.query("div.m4jRadioWrap, div.m4jCheckboxWrap");
429			radioWrap.forEach(function(wrap){
430				m4jEvalWrap(wrap);			
431			});
432			
433			//Check Comparison
434			var compare = proforms.comparisonArray;
435			dojo.forEach(compare,dojo.hitch(this,function(com){
436				if( com.checkCondition() ) globalError = true;		
437			}));
438		
439		}
440		
441		
442		
443		
444		//Custom Validation CallBacks
445		var funcsSize = m4jValidationFunctions.length;
446		for(var t= 0; t< funcsSize; t++){
447			var funcName = (typeof m4jValidationFunctions[t] === "string") ? m4jValidationFunctions[t] : null;
448			
449			if(funcName && ( dojo.isFunction(window[funcName]) || dojo.isObject(window[funcName]) ) ){
450				
451				var isError = window[funcName]();
452				if(isError){
453					globalError = true;
454				}
455			}	
456		};
457		
458		
459		// Cancel if error
460		if(globalError) {
461			alert(MText.errorPrompt);
462			return false;
463		}else {
464			return true;
465		}
466	}//EOF m4jForm onSubmit
467
468}//EOF if m4jForm
469
470function m4jChecker(wrap){
471	var checked = false;
472	var radioButtons = wrap.getElementsByTagName("INPUT");
473	for(t=0; t < radioButtons.length; t++){
474		if(!radioButtons[t].wrap){
475			radioButtons[t].wrap = wrap;
476			radioButtons[t].errorChangeHandle = dojo.connect(radioButtons[t],"onclick", function(){
477				m4jEvalWrap(this.wrap);
478			});
479		}
480		if(radioButtons[t].checked != ""){
481			checked = true;
482		}
483	}
484	return checked;	
485}
486
487
488function m4jEvalWrap(wrap){
489	var lang = Number(wrap.lang);
490	if(lang > 999 ){
491		var check = m4jChecker(wrap);
492		if(! check){
493			wrap.style.border = "1px solid " + errorColor ;
494			wrap.bubbleInfo = MText.required+"<br/>";
495			if(! wrap.errorOverHandle){
496				wrap.errorOverHandle = dojo.connect(wrap,"onmouseover", showErrorTooltip);
497				wrap.errorOutHandle = dojo.connect(wrap,"onmouseout", hideErrorTooltip);
498				globalError = true;
499			}
500		}else{
501			wrap.style.border = "";
502			wrap.bubbleInfo = "";
503			if(wrap.errorOverHandle){
504				dojo.disconnect(wrap.errorOverHandle);
505				dojo.disconnect(wrap.errorOutHandle);
506				wrap.errorOverHandle = undefined;
507				wrap.errorOutHandle = undefined;
508				bubbleWrap.style.left = "-9999em";
509			}
510		}
511	}
512	
513}
514
515
516
517var showErrorTooltip = function(e){
518	var bW = bubbleWrap;
519	dojo.byId("bubble_tooltip_content").innerHTML = this.bubbleInfo;
520	
521	var myBounds = _ViewportOffset(this,true);
522	var docScroll = _docScroll(this);
523	myBounds.t += docScroll.top;
524	myBounds.l += docScroll.left;
525	var bwDim = _Dimensions(bW);
526	var top = myBounds.t - bwDim.height +5; 
527	var left = (myBounds.l+myBounds.w)-140;
528	
529	bW.style.top = top + "px";
530	bW.style.left = left + "px";
531}
532
533var hideErrorTooltip = function(e){
534	bubbleWrap.style.left = "-9999em";
535}
536
537function m4jEvalReset(){
538	var forms = dojo.query("input,select,textarea",m4jForm);
539	forms.forEach(function(node){
540		if(node.errorOverHandle){
541			dojo.disconnect(node.errorOverHandle);
542			dojo.disconnect(node.errorOutHandle);
543			node.errorOverHandle = undefined;
544			node.errorOutHandle = undefined;
545			bubbleWrap.style.left = "-9999em";
546			switch(node.formType){
547				case "select":
548					if(_Browser.IE && _Browser.IEVersion() < 8){
549						node.parentNode.style.border = "";
550					}else{
551						node.style.borderColor = "green";
552					}
553				break;
554				
555				case "checkbox":
556					node.style.border = "";
557					bubbleWrap.style.left = "-9999em";
558				break;
559				
560				default:
561					node.style.borderColor = "";
562				break;
563			}
564			
565			node.bubbleInfo = "";
566		}
567		if(node.wrap){
568			if(node.formType == "select" && (_Browser.IE && _Browser.IEVersion() >= 8) ) return;
569			node.wrap.style.border = "";
570			if(node.wrap.errorOverHandle){
571				dojo.disconnect(node.wrap.errorOverHandle);
572				dojo.disconnect(node.wrap.errorOutHandle);
573				node.wrap.errorOverHandle = undefined;
574				node.wrap.errorOutHandle = undefined;
575			}
576		}
577	});
578}
579
580
581dojo.addOnLoad(function(){
582	dojo.connect(dojo.byId("m4jResetButton"),"onclick",m4jEvalReset);
583});
584
585
586
587

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.