PageSourceSearch

http://cerkva-ugcc.if.ua/components/com_rsform/assets/js/script.js

js cerkva-ugcc.if.ua collected 2026-10-06 18:54:26 UTC 19,662 bytes, 705 lines download raw bytes

1var RSFormProCalendars = {};
2var RSFormProPrices = {};
3
4if (typeof RSFormPro != 'object') {
5	var RSFormPro = {};
6}
7
8var RSFormProUtils = {
9	hasClass: function (el, name) {
10		return new RegExp('(\\s|^)' + name + '(\\s|$)').test(el.className);
11	},
12	addClass: function(el, name) {
13		if (!RSFormProUtils.hasClass(el, name)) {
14			el.className += (el.className ? ' ' : '') + name;
15		}
16	},
17	removeClass: function(el, name) {
18		if (RSFormProUtils.hasClass(el, name)) {
19			el.className = el.className.replace(new RegExp('(\\s|^)' + name + '(\\s|$)'),' ').replace(/^\s+|\s+$/g, '');
20		}
21	}
22};
23
24RSFormPro.Forms = {};
25
26function isset () {
27  // http://kevin.vanzonneveld.net
28  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
29  // +   improved by: FremyCompany
30  // +   improved by: Onno Marsman
31  // +   improved by: Rafał Kukawski
32  // *     example 1: isset( undefined, true);
33  // *     returns 1: false
34  // *     example 2: isset( 'Kevin van Zonneveld' );
35  // *     returns 2: true
36  var a = arguments,
37    l = a.length,
38    i = 0,
39    undef;
40
41  if (l === 0) {
42    throw new Error('Empty isset');
43  }
44
45  while (i !== l) {
46    if (a[i] === undef || a[i] === null) {
47      return false;
48    }
49    i++;
50  }
51  return true;
52}
53
54function refreshCaptcha(componentId, captchaPath)
55{
56	if(!captchaPath) captchaPath = 'index.php?option=com_rsform&task=captcha&componentId=' + componentId;
57	document.getElementById('captcha' + componentId).src = captchaPath + '&' + Math.random();
58	document.getElementById('captchaTxt' + componentId).value='';
59	document.getElementById('captchaTxt' + componentId).focus();
60}
61
62function number_format(number, decimals, dec_point, thousands_sep)
63{
64    var n = number, prec = decimals;
65    n = !isFinite(+n) ? 0 : +n;
66    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
67    var sep = (typeof thousands_sep == "undefined") ? ',' : thousands_sep;
68    var dec = (typeof dec_point == "undefined") ? '.' : dec_point;
69 
70    var s = (prec > 0) ? n.toFixed(prec) : Math.round(n).toFixed(prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
71 
72    var abs = Math.abs(n).toFixed(prec);
73    var _, i;
74 
75    if (abs >= 1000) {
76        _ = abs.split(/\D/);
77        i = _[0].length % 3 || 3;
78 
79        _[0] = s.slice(0,i + (n < 0)) +
80              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
81 
82        s = _.join(dec);
83    } else {
84        s = s.replace('.', dec);
85    }
86 
87    return s;
88}
89
90function buildXmlHttp()
91{
92	var xmlHttp;
93	try
94	{
95		xmlHttp=new XMLHttpRequest();
96	}
97	catch (e)
98	{
99		try
100		{
101			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
102		}
103		catch (e)
104		{
105			try
106			{
107				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
108			}
109			catch (e)
110			{
111				alert("Your browser does not support AJAX!");
112				return false;
113			}
114		}
115	}
116	return xmlHttp;
117}
118
119function ajaxValidation(form, page)
120{
121	try
122	{
123		var el = form.elements.length;
124	}
125	catch (err)
126	{
127		form = this;
128	}
129		
130	var xmlHttp = buildXmlHttp();
131	var url = '';
132	if (typeof rsfp_ajax_root != 'undefined')
133		url = rsfp_ajax_root + '/';
134	url += 'index.php?option=com_rsform&task=ajaxValidate';
135	
136	if (page)
137		url += '&page=' + page;
138	
139	var params = new Array();
140	var submits = new Array();
141	var success = false;
142	var formId = 0;
143	for (i=0; i<form.elements.length; i++)
144	{
145		// don't send an empty value
146		if (!form.elements[i].name) continue;
147		if (form.elements[i].name.length == 0) continue;
148		// check if the checkbox is checked
149		if (form.elements[i].type == 'checkbox' && form.elements[i].checked == false) continue;
150		// check if the radio is selected
151		if (form.elements[i].type == 'radio' && form.elements[i].checked == false) continue;
152		
153		if (form.elements[i].type == 'submit')
154		{
155			submits.push(form.elements[i]);
156			form.elements[i].disabled = true;
157		}
158		
159		// check if form is a dropdown with multiple selections
160		if (form.elements[i].type == 'select-multiple')
161		{
162			for (var j=0; j<form.elements[i].options.length; j++)
163				if (form.elements[i].options[j].selected)
164					params.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].options[j].value));
165			
166			continue;
167		}
168		
169		if (form.elements[i].name == 'form[formId]')
170			formId = form.elements[i].value;
171		
172		params.push(form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value));
173	}
174	
175	if (typeof ajaxExtraValidationScript[formId] == 'function') {
176		ajaxExtraValidationScript[formId]('beforeSend', formId, {'url': url, 'params': params});
177	}
178	
179	params = params.join('&');
180	
181	xmlHttp.open("POST", url, false);
182
183	//Send the proper header information along with the request
184	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
185	//xmlHttp.setRequestHeader("Content-length", params.length);
186	//xmlHttp.setRequestHeader("Connection", "close");
187	xmlHttp.send(params);
188	var success = true;
189	
190	if (xmlHttp.responseText.indexOf("\n") != -1)
191	{
192		var response = xmlHttp.responseText.split("\n");
193		// All spans set to no error
194		var ids = response[0].split(',');
195		for (var i=0; i<ids.length; i++)
196			if (!isNaN(parseInt(ids[i])) && document.getElementById('component'+ids[i]))
197				document.getElementById('component'+ids[i]).className = 'formNoError';
198			
199		// Show errors
200		var ids = response[1].split(',');
201		for (var i=0; i<ids.length; i++)
202			if (!isNaN(parseInt(ids[i])) && document.getElementById('component'+ids[i]))
203			{
204				document.getElementById('component'+ids[i]).className = 'formError';
205				success = false;
206			}
207		
208		if (response.length == 4)
209		{
210			page = parseInt(response[2]) - 1;
211			totalPages = parseInt(response[3]);
212			rsfp_changePage(formId, page, totalPages, false);
213		}
214		
215		if (typeof ajaxExtraValidationScript[formId] == 'function') {
216			ajaxExtraValidationScript[formId]('afterSend', formId, {'url': url, 'params': params, 'response': response});
217		}
218	}
219	
220	for (var i=0; i<submits.length; i++)
221		submits[i].disabled = false;
222	
223	if (success == false && document.getElementById('rsform_error_' + formId))
224	{
225		try {
226			document.getElementById('rsform_error_' + formId).style.display = 'block';
227		}
228		catch (err) { }
229	}
230	
231	if (success == true) {
232		try {
233			document.getElementById('rsform_error_' + formId).style.display = 'none';
234		}
235		catch (err) { }
236	}
237	
238	return success;
239}
240
241var ajaxExtraValidationScript = {};
242
243function rsfp_addEvent(obj, evType, fn){ 
244 if (obj.addEventListener){ 
245   obj.addEventListener(evType, fn, false); 
246   return true; 
247 } else if (obj.attachEvent){ 
248   var r = obj.attachEvent("on"+evType, fn); 
249   return r; 
250 } else { 
251   return false; 
252 } 
253}
254
255function rsfp_getForm(formId)
256{
257	if (typeof RSFormPro.Forms[formId] == 'undefined') {
258		var formIds = document.getElementsByName('form[formId]');
259		for (var i=0; i<formIds.length; i++)
260		{
261			if (parseInt(formIds[i].value) != parseInt(formId))
262				continue;
263			
264			var form = formIds[i].parentNode;		
265			if (form.tagName == 'FORM' || form.nodeName == 'FORM') {
266				RSFormPro.Forms[formId] = form;
267				return form;
268			}
269			
270			while (form.parentNode)
271			{
272				form = form.parentNode;
273				if (form.tagName == 'FORM' || form.nodeName == 'FORM') {
274					RSFormPro.Forms[formId] = form;
275					return form;
276				}
277			}
278		}
279	}
280	
281	return RSFormPro.Forms[formId];
282}
283
284function rsfp_setCalculationsEvents(formId, fields) {
285	var func 		= window["rsfp_Calculations" + formId];
286	var thefields	= fields ? fields : RSFormProPrices;
287	
288	// Detect IE8.
289	var isIE8 = navigator.userAgent.match(/MSIE 8\.0/);
290	var event = 'click';
291	
292	for(field in thefields) {
293		field = field.replace(formId+'_','');
294		objects = rsfp_getFieldsByName(formId,field);
295		for(i=0;i<objects.length;i++) {
296			tagName = objects[i].tagName || objects[i].nodeName;
297			
298			if (tagName == 'INPUT' || tagName == 'SELECT') {
299				// IE8 fix.
300				if (tagName == 'INPUT' && isIE8 && objects[i].type && objects[i].type.toLowerCase() == 'checkbox') {
301					event = 'click';
302				} else {
303					event = 'change';
304				}
305				
306				rsfp_addEvent(objects[i], event, function() {
307					if (typeof func == "function") {
308						func();
309					}
310				});
311			}
312		}
313	}
314}
315
316function rsfp_getValue(formId, name) {
317	form		= rsfp_getForm(formId);
318	values		= [];
319	
320	if (typeof form != 'undefined')
321	{
322		for (var i=0; i<form.elements.length; i++)
323		{
324			var element = form.elements[i];
325			var tagName = element.tagName || element.nodeName;
326			
327			switch (tagName)
328			{
329				case 'INPUT':
330					if (element.type)
331						switch (element.type.toUpperCase())
332						{
333							case 'TEXT':
334							case 'HIDDEN':
335								if (!element.name || element.name != 'form[' + name + ']') continue;
336								return element.value;
337							break;
338							
339							case 'RADIO':
340								if (!element.name || element.name != 'form[' + name + ']') continue;
341								
342								if (element.checked == true) {
343									values.push(element.value);
344								}
345							break;
346							
347							case 'CHECKBOX':
348								if (!element.name || element.name != 'form[' + name + '][]') continue;
349								if (element.checked == true) {
350									values.push(element.value);
351								}
352							break;
353						}
354				break;
355				
356				case 'SELECT':
357					if (!element.name || element.name != 'form[' + name + '][]') continue;
358					
359					if (element.options)
360						for (var o=0; o<element.options.length; o++)
361							if (element.options[o].selected)
362							{
363								values.push(element.options[o].value);
364							}
365				break;
366			}
367		}
368	}
369	
370	return values;
371}
372
373function rsfp_toNumber(number,replace1,replace2) {
374	if (number.indexOf(',') == -1 && number.indexOf('.') != -1 ) {
375		return number;
376	} else if (number.indexOf(',') != -1 && number.indexOf('.') == -1 ) {
377		return number.replace(',','.');
378	}
379	
380	number = number.replace(replace1,'').replace(replace2,'');
381    return parseFloat(number) / 100;
382}
383
384function rsfp_verifyChecked(formId, name, value) {
385	isChecked = false;
386	form = rsfp_getForm(formId);
387	
388	if (typeof form != 'undefined')
389	{
390		primary_loop:
391		for (var i=0; i<form.elements.length; i++)
392		{
393			var element = form.elements[i];
394			var tagName = element.tagName || element.nodeName;
395			
396			switch (tagName)
397			{
398				case 'INPUT':
399					if (element.type)
400						switch (element.type.toUpperCase())
401						{
402							case 'RADIO':
403								if (!element.name || element.name != 'form[' + name + ']') continue;
404								if (element.checked == true && element.value == value)
405								{
406									isChecked = true;
407									break primary_loop;
408								}
409							break;
410							
411							case 'CHECKBOX':
412								if (!element.name || element.name != 'form[' + name + '][]') continue;
413								if (element.checked == true && element.value == value)
414								{
415									isChecked = true;
416									break primary_loop;
417								}
418							break;
419						}
420				break;
421				
422				case 'SELECT':
423					if (!element.name || element.name != 'form[' + name + '][]') continue;
424					
425					if (element.options)
426						for (var o=0; o<element.options.length; o++)
427							if (element.options[o].selected && element.options[o].value == value)
428							{
429								isChecked = true;
430								break primary_loop;
431							}
432				break;
433			}
434		}
435	}
436	
437	return isChecked;
438}
439
440function rsfp_addCondition(formId, name, fnCondition) {
441	form = rsfp_getForm(formId);
442	
443	if (typeof form != 'undefined') {
444		for (var i=0; i<form.elements.length; i++) {
445			var element = form.elements[i];
446			var tagName = element.tagName || element.nodeName;
447			if (element.name && (element.name == 'form[' + name + ']' || element.name == 'form[' + name + '][]')) {
448				if (tagName == 'SELECT') {
449					rsfp_addEvent(element, 'change', function() {
450						fnCondition();
451					});
452				} else {
453					rsfp_addEvent(element, 'click', function() {
454						fnCondition();
455					});
456				}
457			}
458		}
459	}
460}
461
462function rsfp_getBlock(formId, block) {
463	form = rsfp_getForm(formId);
464	
465	var possible = false;
466	
467	if (typeof form != 'undefined') {
468		if (blocks = getElementsByClassName('rsform-block')) {
469			for (i=0; i<blocks.length; i++) {
470				var classes = blocks[i].className.split(' ');
471				for (c=0; c<classes.length; c++) {
472					if (classes[c] == 'rsform-block-' + block) {
473						if (blocks[i].parentNode) {
474							current_block = blocks[i];
475							if (current_block == form)
476								return [ blocks[i] ];
477								
478							while (current_block.parentNode) {
479								current_block = current_block.parentNode;
480								if (current_block == form)
481									return [ blocks[i] ];
482							}
483						}
484						
485						possible = [ blocks[i] ];
486					}
487				}
488			}
489		}
490	}
491	
492	return possible;
493}
494
495function rsfp_getFieldsByName(formId, name) {
496	form = rsfp_getForm(formId);
497	
498	var results = [];
499	
500	if (typeof form != 'undefined') {
501		for (var i=0; i<form.elements.length; i++) {
502			var element = form.elements[i];
503			pushed = false;
504			if (element.name && (
505				// single fields
506				element.name == 'form[' + name + ']' ||
507				// multiple fields
508				element.name == 'form[' + name + '][]' ||
509				// new field - Birthday field
510				element.name == 'form[' + name + '][d]' ||
511				element.name == 'form[' + name + '][m]' ||
512				element.name == 'form[' + name + '][y]'
513				)) {
514				results.push(element);
515				pushed = true;
516			}
517			
518			if (pushed) {
519				// for calendar
520				if (element.id && element.id.indexOf('txtcal') > -1) {
521					var suffix = element.id.replace('txtcal', '');
522					results.push(document.getElementById('btn' + suffix));
523				}
524				// for labels (radio, checkbox)
525				var labels = form.getElementsByTagName('label');
526				for (var l=0; l<labels.length; l++) {
527					if (labels[l].htmlFor && labels[l].htmlFor == element.id)
528						results.push(labels[l]);
529				}
530			}
531		}
532	}
533	
534	return results;
535}
536
537function rsfp_setDisplay(items, value) {
538	for (i=0; i<items.length; i++)
539		items[i].style.display = value;
540}
541
542function rsfp_checkValidDate(fieldName) {
543	var theDate = new Date();
544	for (var day=1; day<=31; day++) {
545		var year 	= parseInt(document.getElementById(fieldName + 'y').value);
546		var month 	= parseInt(document.getElementById(fieldName + 'm').value) - 1;
547		
548		var index = day - 1;
549		if (document.getElementById(fieldName + 'd').options[0].value == '') {
550			index++;
551		}
552		document.getElementById(fieldName + 'd').options[index].disabled = false;
553		if (!isNaN(year) && !isNaN(month)) {
554			if (typeof theDate.__msh_oldSetFullYear == 'function') {
555				theDate.__msh_oldSetFullYear(year, month, day);
556			} else {
557				theDate.setFullYear(year, month, day);
558			}
559			
560			if (theDate.getDate() != day || theDate.getMonth() != month) {
561				document.getElementById(fieldName + 'd').options[index].disabled = true;
562			}
563		}
564	}
565	if (document.getElementById(fieldName + 'd').options[document.getElementById(fieldName + 'd').selectedIndex].disabled == true) {
566		for (var day=31; day>=28; day--) {
567			var index = day - 1;
568			if (document.getElementById(fieldName + 'd').options[0].value == '') {
569				index++;
570			}
571			if (document.getElementById(fieldName + 'd').options[index].disabled == false) {
572				document.getElementById(fieldName + 'd').value = day;
573				break;
574			}
575		}
576	}
577}
578
579function rsfp_geolocation(term, id, mapid,  map, marker, geocoder, type) {
580	var content = document.getElementById('rsform_geolocation'+id);
581	var address	= document.getElementById(mapid).clientWidth;
582	
583	document.getElementById('rsform_geolocation'+id).style.width = address+'px';
584	document.getElementById('rsform_geolocation'+id).style.display = 'none';
585	document.getElementById('rsform_geolocation'+id).innerHTML = '';
586	
587	if (term != '') {
588		geocoder.geocode( {'address': term }, function(results, status) {
589			if (status == 'OK') {
590				for (var i=0; i<results.length; i++) {
591					var item	= results[i];
592					var theli	= document.createElement('li');
593					var thea	= document.createElement('a');
594					
595					thea.setAttribute('href','javascript:void(0)');
596					thea.innerHTML = item.formatted_address;
597					
598					rsfp_addEvent(thea,'click', (function() {
599						var mapValue = type ? item.formatted_address : item.geometry.location.lat().toFixed(5) + ',' + item.geometry.location.lng().toFixed(5);
600						var mapId	 = mapid;
601						var location = new google.maps.LatLng(item.geometry.location.lat().toFixed(5), item.geometry.location.lng().toFixed(5));
602						
603						return function() {
604							document.getElementById(mapId).value = mapValue;							
605							marker.setPosition(location);
606							map.setCenter(location);
607							document.getElementById('rsform_geolocation'+id).style.display = 'none';
608						}
609					})());
610					
611					theli.appendChild(thea);
612					content.appendChild(theli);
613				}
614			
615				document.getElementById('rsform_geolocation'+id).style.display = '';
616			}
617		});
618	}
619}
620
621function rsfp_runAllConditions(formId) {
622	var func = window["rsfp_runAllConditions" + formId];
623	if (typeof func == "function") {
624		func();
625	}
626}
627
628/*
629	Developed by Robert Nyman, http://www.robertnyman.com
630	Code/licensing: http://code.google.com/p/getelementsbyclassname/
631*/	
632var getElementsByClassName = function (className, tag, elm){
633	if (document.getElementsByClassName) {
634		getElementsByClassName = function (className, tag, elm) {
635			elm = elm || document;
636			var elements = elm.getElementsByClassName(className),
637				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
638				returnElements = [],
639				current;
640			for(var i=0, il=elements.length; i<il; i+=1){
641				current = elements[i];
642				if(!nodeName || nodeName.test(current.nodeName)) {
643					returnElements.push(current);
644				}
645			}
646			return returnElements;
647		};
648	}
649	else if (document.evaluate) {
650		getElementsByClassName = function (className, tag, elm) {
651			tag = tag || "*";
652			elm = elm || document;
653			var classes = className.split(" "),
654				classesToCheck = "",
655				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
656				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
657				returnElements = [],
658				elements,
659				node;
660			for(var j=0, jl=classes.length; j<jl; j+=1){
661				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
662			}
663			try	{
664				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
665			}
666			catch (e) {
667				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
668			}
669			while ((node = elements.iterateNext())) {
670				returnElements.push(node);
671			}
672			return returnElements;
673		};
674	}
675	else {
676		getElementsByClassName = function (className, tag, elm) {
677			tag = tag || "*";
678			elm = elm || document;
679			var classes = className.split(" "),
680				classesToCheck = [],
681				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
682				current,
683				returnElements = [],
684				match;
685			for(var k=0, kl=classes.length; k<kl; k+=1){
686				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
687			}
688			for(var l=0, ll=elements.length; l<ll; l+=1){
689				current = elements[l];
690				match = false;
691				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
692					match = classesToCheck[m].test(current.className);
693					if (!match) {
694						break;
695					}
696				}
697				if (match) {
698					returnElements.push(current);
699				}
700			}
701			return returnElements;
702		};
703	}
704	return getElementsByClassName(className, tag, elm);
705};

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.