1/* 2 ReCaptcha 2.0 Google js 3 modul bitrix 4 Shevtcoff S.V. 5 date 24.03.17 6 time 08:55 7 8 Recaptchafree - object 9 Recaptchafree.render() - method render 10 Recaptchafree.reset() - method reset 11 Recaptchafree.items - array id widget 12*/ 13 14/* global grecaptcha */ 15 16"use strict"; 17 18var Recaptchafree = Recaptchafree || {}; 19Recaptchafree.items = new Array(); 20Recaptchafree.form_submit; 21/** 22 * render recaptcha 23 * @returns false 24 */ 25Recaptchafree.render = function() { 26 if(window.grecaptcha){ 27 var elements = document.querySelectorAll('div.g-recaptcha'); 28 var widget; 29 Recaptchafree.items = []; 30 for (var i = 0; i < elements.length; i++) { 31 if(elements[i].innerHTML === "") { 32 widget = grecaptcha.render(elements[i], { 33 'sitekey' : elements[i].getAttribute("data-sitekey"), 34 'theme' : elements[i].getAttribute("data-theme"), 35 'size' : elements[i].getAttribute("data-size"), 36 'callback' : elements[i].getAttribute("data-callback"), 37 'badge' : elements[i].getAttribute("data-badge") 38 }); 39 elements[i].setAttribute("data-widget", widget); 40 Recaptchafree.items.push(widget); 41 } else { 42 widget = elements[i].getAttribute("data-widget"); 43 Recaptchafree.items.push(parseInt(widget));
44 } 45 } 46 } 47 48}; 49/** 50 * reset recaptcha after ajax or show modal 51 * @returns false 52 */ 53Recaptchafree.reset = function() { 54 if(window.grecaptcha){ 55 Recaptchafree.render(); 56 for (var i = 0; i < Recaptchafree.items.length; i++) { 57 grecaptcha.reset(Recaptchafree.items[i]); 58 } 59 60 } 61}; 62/** 63 * callback submit form with invisible recaptcha 64 * @param {type} token 65 * @returns false 66 */ 67function RecaptchafreeSubmitForm(token) { 68 if(Recaptchafree.form_submit !== undefined){ 69 var x = document.createElement("INPUT"); // create token input 70 x.setAttribute("type", "hidden"); 71 x.name = "g-recaptcha-response"; 72 x.value = token; 73 Recaptchafree.form_submit.appendChild(x); // append current form 74 var elements = Recaptchafree.form_submit.elements; 75 for (var i = 0; i < elements.length; i++) { 76 if(elements[i].getAttribute("type") === "submit") { 77 var submit_hidden = document.createElement("INPUT"); // create submit input hidden 78 submit_hidden.setAttribute("type", "hidden"); 79 submit_hidden.name = elements[i].name; 80 submit_hidden.value = elements[i].value; 81 Recaptchafree.form_submit.appendChild(submit_hidden); // append current form 82 } 83 } 84 document.createElement('form').submit.call(Recaptchafree.form_submit); // submit form 85 } 86}; 87/** 88 * onload recaptcha 89 * @returns false 90 */ 91function onloadRecaptchafree(){ 92 Recaptchafree.render(); 93 // If invisible recaptcha on the page 94 if (document.addEventListener) { 95 document.addEventListener('submit',function(e){ 96 if(e.target && e.target.tagName === "FORM"){ 97 var g_recaptcha = e.target.querySelectorAll('div.g-recaptcha'); 98 if(g_recaptcha[0] !== undefined && g_recaptcha[0].getAttribute("data-size") === "invisible"){ 99 var widget_id = g_recaptcha[0].getAttribute("data-widget"); 100 grecaptcha.execute(widget_id); 101 Recaptchafree.form_submit = e.target; 102 e.preventDefault(); 103 } 104 } 105 }, false); 106 } else { 107 document.attachEvent("onsubmit", function(e){ 108 var target = e.target || e.srcElement; 109 if(e.target && e.target.tagName === "FORM"){ 110 var widget_id = e.target.getAttribute("data-widget"); 111 grecaptcha.execute(widget_id); 112 Recaptchafree.form_submit = target; 113 e.returnValue = false; 114 } 115 }); 116 } 117 // hide grecaptcha-badge, if multi invisible recaptcha 118 var badges = document.querySelectorAll('.grecaptcha-badge'); 119 for (var i = 1; i < badges.length; i++) { 120 badges[i].style.display="none"; 121 } 122}
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.