PageSourceSearch

https://translationjournal.net/components/com_rsform/assets/js/script.js

js translationjournal.net collected 2026-10-02 03:21:23 UTC 17,899 bytes, 640 lines download raw bytes

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

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.