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.