PageSourceSearch

https://www.adforyou.ai/js/form-submission-handler.js

js adforyou.ai collected 2026-10-05 11:47:04 UTC 4,151 bytes, 123 lines download raw bytes

1(function() {
2  function validEmail(email) {
3    var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
4    return re.test(email);
5  }
6
7  function validateHuman(honeypot) {
8    if (honeypot) {  //if hidden form filled up
9      console.log("Robot Detected!");
10      return true;
11    } else {
12      console.log("Welcome Human!");
13    }
14  }
15
16  // get all data in form and return object
17  function getFormData(form) {
18    var elements = form.elements;
19
20    var fields = Object.keys(elements).filter(function(k) {
21          return (elements[k].name !== "honeypot");
22    }).map(function(k) {
23      if(elements[k].name !== undefined) {
24        return elements[k].name;
25      // special case for Edge's html collection
26      }else if(elements[k].length > 0){
27        return elements[k].item(0).name;
28      }
29    }).filter(function(item, pos, self) {
30      return self.indexOf(item) == pos && item;
31    });
32
33    var formData = {};
34    fields.forEach(function(name){
35      var element = elements[name];
36      
37      // singular form elements just have one value
38      formData[name] = element.value;
39
40      // when our element has multiple items, get their values
41      if (element.length) {
42        var data = [];
43        for (var i = 0; i < element.length; i++) {
44          var item = element.item(i);
45          if (item.checked || item.selected) {
46            data.push(item.value);
47          }
48        }
49        formData[name] = data.join(', ');
50      }
51    });
52
53    // add form-specific values into the data
54    formData.formDataNameOrder = JSON.stringify(fields);
55    formData.formGoogleSheetName = form.dataset.sheet || "responses"; // default sheet name
56    formData.formGoogleSendEmail = form.dataset.email || ""; // no email by default
57
58    console.log(formData);
59    return formData;
60  }
61
62  function handleFormSubmit(event) {  // handles form submit without any jquery
63    event.preventDefault();           // we are submitting via xhr below
64    var form = event.target;
65    var data = getFormData(form);         // get the values submitted in the form
66
67    /* OPTION: Remove this comment to enable SPAM prevention, see README.md
68    if (validateHuman(data.honeypot)) {  //if form is filled, form will not be submitted
69      return false;
70    }
71    */
72    if( data.email && !validEmail(data.email) ) {   // if email is not valid show error
73      var invalidEmail = form.querySelector(".email-invalid");
74      if (invalidEmail) {
75        invalidEmail.style.display = "block";
76        return false;
77      }
78    } else {
79      disableAllButtons(form);
80      var url = form.action;
81      var xhr = new XMLHttpRequest();
82      xhr.open('POST', url);
83      // xhr.withCredentials = true;
84      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
85      xhr.onreadystatechange = function() {
86          //console.log(xhr.status, xhr.statusText);
87          //console.log(xhr.responseText);
88          form.reset();
89          var formElements = form.querySelector(".form-elements")
90          if (formElements) {
91            formElements.style.display = "none"; // hide form
92          }
93          var thankYouMessage = form.querySelector(".thankyou_message");
94          if (thankYouMessage) {
95            thankYouMessage.style.display = "block";
96          }
97          return;
98      };
99      // url encode form data for sending as post data
100      var encoded = Object.keys(data).map(function(k) {
101          return encodeURIComponent(k) + "=" + encodeURIComponent(data[k]);
102      }).join('&');
103      xhr.send(encoded);
104    }
105  }
106  
107  function loaded() {
108    console.log("Contact form submission handler loaded successfully.");
109    // bind to the submit event of our form
110    var forms = document.querySelectorAll("form.gform");
111    for (var i = 0; i < forms.length; i++) {
112      forms[i].addEventListener("submit", handleFormSubmit, false);
113    }
114  };
115  document.addEventListener("DOMContentLoaded", loaded, false);
116
117  function disableAllButtons(form) {
118    var buttons = form.querySelectorAll("button");
119    for (var i = 0; i < buttons.length; i++) {
120      buttons[i].disabled = true;
121    }
122  }
123})();

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.