PageSourceSearch

https://integratedsci.com.au/js/validator_o.js

js integratedsci.com.au collected 2026-10-06 14:04:46 UTC 21,444 bytes, 595 lines download raw bytes

1//HTMLInputElement.prototype.validate = '';
2//HTMLTextAreaElement.prototype.validate = '';
3
4function Validator()
5{
6	this.version = '1.0';
7	var integer_regexp = /^\d+$/;
8	var mail_regexp = /^[^@]+@[^@]+\.[^.|@]+$/;
9	var numeric_regexp = /^\d+(\.\d+)?$/;
10	
11	var login_regexp = /^[\w|_|\d]{4,20}$/;
12	var car_name_regexp = /^[\w|_| |-|\d]{1,32}$/;
13	var password_regexp = /^.{1,25}$/;
14
15	//TODO CMS-602
16	//secure password
17	var small = /^[a-z]+$/;
18	var big = /[A-Z]+/;
19	var symbol = /[!@#$%^]+/;
20	var numb = /[0-9]+/;
21
22	//var date_regexp = /^\d\d\/\d\d\/\d\d\d\d$/;
23	var date_regexp = /^\d\d\.\d\d\.\d\d\d\d$/;
24	var year_regexp = /^\d\d\d\d$/;
25	var url_regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
26	
27	this.add_error_style = add_error_style;
28	this.clear_external = clear_external;
29	to_check = {};
30	var inputsWithErrors = Array();
31	var hexDigit = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
32	this.add = add;
33	var span = false;
34	var focus = false;
35    var old_style = '';
36    this.set_active = function(form_name, elem_name, active) {
37
38        to_check[form_name][elem_name]['active'] = active;
39        if (!active) {
40            for(var wp = 0; wp < inputsWithErrors.length; wp++)
41            {
42                if (inputsWithErrors[wp].name == elem_name && typeof(inputsWithErrors[wp]) != 'undefined' && typeof(inputsWithErrors[wp].parentNode) != 'undefined' && inputsWithErrors[wp].parentNode != null) {
43                    inputsWithErrors[wp].parentNode.removeChild(inputsWithErrors[wp].parentNode.lastChild);
44                    inputsWithErrors.splice(wp, 1);
45                    break;
46                }
47            }
48        }
49    }
50	
51	function clear_external()
52	{
53		clear_errors();
54	}
55	
56	function set_span(b)
57	{
58		span = b;
59	}
60
61	this.set_span = set_span;
62	
63	function add(form_name,no_submit)
64	{
65		to_check[form_name] = {};
66		var form_to_add = document.forms[form_name];
67			for(var i = 0; i < form_to_add.elements.length; i++)
68			{
69				var elem = form_to_add.elements[i];
70				//alert(elem);
71				if(typeof(elem.title) != 'undefined' && elem.title!='')
72				{
73					var restriction = elem.title.split('___');
74					//restriction[1] = restriction[1].replace(/_/g, ' ');
75					to_check[form_name][elem.name] = {limit : restriction[0], message : restriction[1], active: true};
76					elem.title = '';
77				}
78               if((elem.value != "Submit") && (elem.type != "button") && (elem.type != "submit"))
79                {
80                    elem.onclick = function(){return check_error_click(this);}
81                } 
82			}
83            if(!no_submit)
84            {
85                form_to_add.onsubmit = function() {return check(form_name);};
86            }
87		//alert(form_to_add.onsubmit);
88	}
89
90	function check(form_name)
91	{
92		var no_error = true;
93
94		clear_errors();
95		//alert(to_check[form_name]);
96		if(typeof(to_check[form_name]) != 'undefined')
97		{
98			for(var input in to_check[form_name])
99			{				
100				var checking = to_check[form_name][input];
101
102                if (!checking.active) {
103                    continue;
104                }
105
106				if(checking.limit == 'string')
107				{
108					if(document.forms[form_name].elements[input].value == null || document.forms[form_name].elements[input].value=='')
109					{ 
110						no_error = false;						
111						//add_error_style(document.forms[form_name].elements[input], checking.message);
112                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
113						
114					}
115				}				
116				else if (checking.limit == 'selected')
117				{					
118					if (document.forms[form_name].elements[input].checked == false)
119					{
120						no_error = false;						
121						//add_error_style(document.forms[form_name].elements[input], checking.message);
122                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
123						
124					}
125				}
126                else if (checking.limit == 'file')
127                {                    
128                    if (document.forms[form_name].elements[input].value == null || document.forms[form_name].elements[input].value=='' || document.forms[form_name].elements[input].value=='No File Selected')
129                    {
130                        no_error = false;                        
131                        //add_error_style(document.forms[form_name].elements[input], checking.message);
132                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
133                        
134                    }
135                }    								
136				else if (checking.limit == 'string_empty')
137				{					
138					//anything
139				}
140				else if (checking.limit == 'login')
141				{
142					if(!login_regexp.test(document.forms[form_name].elements[input].value))
143					{
144						no_error = false;
145						//add_error_style(document.forms[form_name].elements[input], checking.message);
146                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
147					}					
148				}
149				else if (checking.limit == 'nick')
150				{
151					if(!login_regexp.test(document.forms[form_name].elements[input].value))
152					{
153						no_error = false;
154						//add_error_style(document.forms[form_name].elements[input], checking.message);
155                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
156					}
157				}
158				else if (checking.limit == 'password')
159				{
160					if(!password_regexp.test(document.forms[form_name].elements[input].value))
161					{
162						no_error = false;
163						//add_error_style(document.forms[form_name].elements[input], checking.message);
164                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
165					}
166				}
167				else if (checking.limit == 'secure_password') {	// TODO CMS-602
168					if (!password_regexp.test(document.forms[form_name].elements[input].value)) {
169						no_error = false;
170						add_new_error_style(document.forms[form_name].elements[input], checking.message);
171					} else {
172
173						if (document.forms[form_name].elements[input].value.length < 8) {
174							var err_mess = "Please enter at least 8 characters.\n";
175						}
176						if (!big.test(document.forms[form_name].elements[input].value)) {
177							err_mess += "Please enter at least 1 capital letter.\n";
178						}
179						if (!symbol.test(document.forms[form_name].elements[input].value) && !numb.test(document.forms[form_name].elements[input].value)) {
180							err_mess += "Please enter at least 1 number or symbol (!@#$%^).\n";
181						}
182						if (err_mess) {
183							no_error = false;
184							add_new_error_style(document.forms[form_name].elements[input], err_mess);
185						}
186					}
187				}
188				else if(checking.limit == 'integer')
189				{
190					if(!integer_regexp.test(document.forms[form_name].elements[input].value))
191					{
192						no_error = false;
193						//add_error_style(document.forms[form_name].elements[input], checking.message);
194                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
195					}
196				}
197                else if(checking.limit == 'integer_not_null')
198                {
199                    if(document.forms[form_name].elements[input].value == 0 || !integer_regexp.test(document.forms[form_name].elements[input].value))
200					{
201						no_error = false;
202						//add_error_style(document.forms[form_name].elements[input], checking.message);
203                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
204					}
205				}
206				else if(checking.limit == 'integer_empty')
207				{
208					if(document.forms[form_name].elements[input].value.length>0  && !integer_regexp.test(document.forms[form_name].elements[input].value))
209					{
210						no_error = false;
211						//add_error_style(document.forms[form_name].elements[input], checking.message);
212                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
213					}
214				}
215				else if(checking.limit == 'date')
216				{
217					if(!date_regexp.test(document.forms[form_name].elements[input].value))
218					{
219						no_error = false;
220						//add_error_style(document.forms[form_name].elements[input], checking.message);
221                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
222					}
223				}
224				else if(checking.limit == 'date_empty')
225				{
226					if(document.forms[form_name].elements[input].value.length > 0 && !date_regexp.test(document.forms[form_name].elements[input].value))
227					{
228						no_error = false;
229						//add_error_style(document.forms[form_name].elements[input], checking.message);
230                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
231					}
232				}
233				else if(checking.limit == 'year')
234				{
235					if(!year_regexp.test(document.forms[form_name].elements[input].value))
236					{
237						no_error = false;
238						//add_error_style(document.forms[form_name].elements[input], checking.message);
239                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
240					}
241				}
242				else if(checking.limit == 'year_empty')
243				{
244					if(document.forms[form_name].elements[input].value.length > 0 && !year_regexp.test(document.forms[form_name].elements[input].value))
245					{
246						no_error = false;
247						//add_error_style(document.forms[form_name].elements[input], checking.message);
248                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
249					}
250				}
251				else if(checking.limit == 'date_empty')
252				{
253					if(document.forms[form_name].elements[input].value.length>0  && !date_regexp.test(document.forms[form_name].elements[input].value))
254					{
255						no_error = false;
256						//add_error_style(document.forms[form_name].elements[input], checking.message);
257                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
258					}
259				}
260				else if(checking.limit == 'numeric')
261				{
262					if(!numeric_regexp.test(document.forms[form_name].elements[input].value))
263					{
264						no_error = false;
265						//add_error_style(document.forms[form_name].elements[input], checking.message);
266                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
267					}
268				}
269				else if(checking.limit == 'numeric_empty')
270				{
271					if(document.forms[form_name].elements[input].value.length>0  && !numeric_regexp.test(document.forms[form_name].elements[input].value))
272					{
273						no_error = false;
274						//add_error_style(document.forms[form_name].elements[input], checking.message);
275                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
276					}
277				}
278				else if(checking.limit == 'email')
279				{
280					//alert(document.forms[form_name].elements[input].value.length);
281					if(!mail_regexp.test(document.forms[form_name].elements[input].value))
282					{
283						no_error = false;
284						//add_error_style(document.forms[form_name].elements[input], checking.message);
285                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
286					}
287				}
288				else if(checking.limit == 'email_empty')
289				{
290					//alert(document.forms[form_name].elements[input].value.length);
291					if(!mail_regexp.test(document.forms[form_name].elements[input].value) && document.forms[form_name].elements[input].value.length > 0)
292					{
293						no_error = false;
294						//add_error_style(document.forms[form_name].elements[input], checking.message);
295                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
296					}
297				}
298				else if(checking.limit == 'password_register')
299				{
300					//alert(document.forms[form_name].elements[input].value);
301					//alert(document.forms[form_name].elements['retype_' + input].value);
302					if(!password_regexp.test(document.forms[form_name].elements[input].value))
303					{
304						no_error = false;
305						//add_error_style(document.forms[form_name].elements[input], checking.message);
306                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
307					}
308					else if(!password_regexp.test(document.forms[form_name].elements['retype_' + input].value))
309					{
310						no_error = false;
311						//add_error_style(document.forms[form_name].elements['retype_' + input], checking.message);
312                        add_new_error_style(document.forms[form_name].elements['retype_' + input], checking.message);
313					}					
314					else if(document.forms[form_name].elements[input].value != document.forms[form_name].elements['retype_' + input].value)
315					{
316						no_error = false;
317						//add_error_style(document.forms[form_name].elements[input], 'Password mismatch');
318                        add_new_error_style(document.forms[form_name].elements[input], 'Password mismatch');
319					}
320				}
321				else if(checking.limit == 'email_register')
322				{
323					//alert(document.forms[form_name].elements[input].value);
324					//alert(document.forms[form_name].elements['retype_' + input].value);
325					if(!mail_regexp.test(document.forms[form_name].elements[input].value))
326					{
327						no_error = false;
328						//add_error_style(document.forms[form_name].elements[input], checking.message);
329                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
330					}
331					else if(!mail_regexp.test(document.forms[form_name].elements['retype_' + input].value))
332					{
333						no_error = false;
334						//add_error_style(document.forms[form_name].elements['retype_' + input], checking.message);
335                        add_new_error_style(document.forms[form_name].elements['retype_' + input], checking.message);
336					}					
337					else if(document.forms[form_name].elements[input].value != document.forms[form_name].elements['retype_' + input].value)
338					{
339						no_error = false;
340						//add_error_style(document.forms[form_name].elements[input], 'Email mismatch');
341                        add_new_error_style(document.forms[form_name].elements[input],  'Email mismatch');
342					}
343				}
344				else if (checking.limit == 'url')
345				{
346		
347					if (!url_regexp.test(document.forms[form_name].elements[input].value))
348					{
349						no_error = false;
350						//add_error_style(document.forms[form_name].elements[input], checking.message);
351                        add_new_error_style(document.forms[form_name].elements[input], checking.message);				
352					}
353				}
354				else if (checking.limit == 'notempty')
355				{					
356					if (!document.forms[form_name].elements[input].value)
357					{						
358						no_error = false;
359						//add_error_style(document.forms[form_name].elements[input], checking.message);
360                        add_new_error_style(document.forms[form_name].elements[input], checking.message);
361					}
362				}
363		
364			}
365		}
366        if(!no_error)
367        {
368            create_box(form_name);
369        }
370		/*if(no_error)
371			alert('in check function');
372		else
373			alert(inputsWithErrors.length);
374			alert(inputsWithErrors[0]['name']);*/
375		//alert(no_error);
376		return no_error;
377		//return false;
378	}
379	
380	this.check = check;
381    
382    function create_box(name_of_form)
383    {
384        var row = document.getElementById("submit");
385
386        if (row) {
387            var newDiv = document.createElement('span');
388            newDiv.className = 'requireddiv';
389            newDiv.id = 'required_id';
390            newDiv.innerHTML = 'Required fields*';
391
392            row.cells[0].appendChild(newDiv);
393        }
394    }
395	
396	function clear_errors()
397	{
398		for(var wp = 0; wp < inputsWithErrors.length; wp++) 
399		{
400	    	    if(typeof(inputsWithErrors[wp]) != 'undefined' && typeof(inputsWithErrors[wp].parentNode) != 'undefined' && inputsWithErrors[wp].parentNode != null)
401	    	    {
402	        	   inputsWithErrors[wp].parentNode.removeChild(inputsWithErrors[wp].parentNode.lastChild);
403                   $(inputsWithErrors[wp]).removeClass('redborder');
404               
405	    	    }
406		}
407        var el = document.getElementById('required_id');
408        if (el) el.parentNode.removeChild(el);
409
410		this.focus = false;
411		inputsWithErrors = new Array();
412	}
413	
414    function add_new_error_style(input,txt)
415    {
416		//  var style = "FFFFFF";//get_current_bgcolor(input);
417
418		//if (!this.focus)
419		//{
420		//	//  input.focus();
421		//	// this.focus = true;
422		//}
423     /*   if(input.parentNode.innerHTML.search(txt) == -1) 
424        {
425            var errorTextNode = null;
426            var errorNodeAll = null;
427            if(span)
428            {
429                errorTextNode = document.createElement('span');
430                errorTextNode.style.margin='0px';
431            }
432            else
433            {
434                errorAll = document.createElement('div');
435                errorPicture = document.createElement('div');
436                errorTextNode = document.createElement('div');
437            }
438            errorAll.className = 'allerror';
439            input.parentNode.appendChild(errorAll);
440            errorPicture.className = 'av';  
441            errorAll.appendChild(errorPicture);
442            errorTextNode.className = 'required_class_new';
443            errorTextNode.innerHTML = '' + txt;
444            errorTextNode.style.width='auto';
445            errorAll.appendChild(errorTextNode);
446         
447
448            var l =  20 - parseInt(input.offsetWidth) +'px';   
449            var t =  parseInt(input.offsetTop) - 11 + 'px';
450            errorAll.style.left=l;
451            errorAll.style.top=t;     */
452
453		var id_temp = $(input).attr("name");
454		$(input).addClass('redborder');
455		var $id_t = $('#id_' + id_temp);
456
457		if (!$(input).next("div").hasClass('validation')) {
458			$(input).parent().append("<div class='validation' id=id_" + id_temp + " >" + txt + "</div>");
459		}
460		else {
461			if ($id_t.css('visibility') == 'hidden') {
462				$id_t.css('visibility', 'visible');
463			}
464		}
465		var position = $(input).parent().position();
466         var $id =  $('#id_'+id_temp);
467         $id.click(function(){return check_error_click(this);});
468         $id.css('left', position.left + 24);
469         $id.css('top', position.top - 5);
470       //  $id.css('display', '');
471     //   old_style = input.style.border;
472    //    alert(old_style);
473      //  input.style.border = "1px solid #fe0000";
474     //   input.style.borderColor="#FF0000";
475     //   input.style.backgroundColor = "#FF0000";
476        inputsWithErrors.push(input);
477  
478    }
479    
480    function check_error_click(elem)
481     {
482         var el = document.activeElement;
483         var name = elem.name;
484         var div = document.getElementById('id_'+ name);
485         if (div && div.className=='validation')
486         {
487			 div.style.visibility = 'hidden';
488         }
489         else if(elem.id && elem.className=='validation')
490         {
491			 var temp = document.getElementById(elem.id);
492			 temp.style.visibility = 'hidden';
493         }
494     }
495
496	function add_error_style(input, txt) 
497    {
498		var style = "FFFFFF";//get_current_bgcolor(input);
499	        if (!this.focus) 
500	        {
501	        	input.focus(); 
502	        	this.focus = true;
503	        }
504		if(input.parentNode.innerHTML.search(txt) == -1) 
505		{
506			var errorTextNode = null;
507			if(span)
508			{
509				errorTextNode = document.createElement('span');
510				errorTextNode.style.margin='0px';
511			}
512			else
513			{
514				errorTextNode = document.createElement('small');
515			}
516	            
517	        errorTextNode.className = 'required_class';
518		    /*if(span)
519		    {
520			errorTextNode.innerHTML = '<br/>' + txt;
521		    }
522		    else
523		    {*/
524			errorTextNode.innerHTML = '' + txt;
525		    //}
526	            input.parentNode.appendChild(errorTextNode);              
527		}
528	
529		input.style.backgroundColor = "#FF0000";
530		inputsWithErrors.push(input);
531	
532		for(wp = 1; wp <= 10; wp++)
533		{
534	        window.setTimeout('validator.fade_error_style("'+style+'", ' + wp * 10 + ')', 1000 + (wp * 50));
535		}
536    }
537    
538    this.fade_error_style = fade_error_style;
539    
540    
541    function fade_error_style(normalStyle, percent) 
542	{       
543	    var errorStyle = 'c60c30';
544	    var r1 = hex2dec(errorStyle.slice(0,2));
545	    var g1 = hex2dec(errorStyle.slice(2,4));
546	    var b1 = hex2dec(errorStyle.slice(4,6));
547	    
548	    var r2 = hex2dec(normalStyle.slice(0,2));
549	    var g2 = hex2dec(normalStyle.slice(2,4));
550	    var b2 = hex2dec(normalStyle.slice(4,6));
551	
552	    var pc = percent / 100;
553	
554	    r= Math.floor(r1+(pc*(r2-r1)) + .5);
555	    g= Math.floor(g1+(pc*(g2-g1)) + .5);
556	    b= Math.floor(b1+(pc*(b2-b1)) + .5);
557	
558	    for(var wp = 0; wp < inputsWithErrors.length; wp++) {
559	            inputsWithErrors[wp].style.backgroundColor = "#" + dec2hex(r) + dec2hex(g) + dec2hex(b);
560	    }
561	}
562	function hex2dec(hex)
563	{
564		return(parseInt(hex,16));
565	}
566
567	function dec2hex(dec) 
568	{
569		return(hexDigit[dec>>4]+hexDigit[dec&15]);
570	}
571	
572	
573	function get_current_bgcolor(input) 
574	{
575	    if(input.currentStyle) 
576	    {// ie 
577	        var style = input.currentStyle.backgroundColor;
578	        return style.substring(1,7);
579	    }
580	    else {// moz
581	        var style = '';
582	        styleRGB = document.defaultView.getComputedStyle(input, '').getPropertyValue("background-color");
583	        var comma = styleRGB.indexOf(',');
584	       	style += dec2hex(styleRGB.substring(4, comma));
585	        var commaPrevious = comma;
586	        comma = styleRGB.indexOf(',', commaPrevious+1);
587	        style += dec2hex(styleRGB.substring(commaPrevious+2, comma));
588	        style += dec2hex(styleRGB.substring(comma+2, styleRGB.lastIndexOf(')')));
589	        return style;
590	    }
591	}
592
593}
594
595var validator = new Validator();

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.