1/** 2 * @package AcyMailing for Joomla! 3 * @version 5.9.5 4 * @author acyba.com 5 * @copyright (C) 2009-2018 ACYBA S.A.R.L. All rights reserved. 6 * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html 7 */ 8 9var task, formName; 10 11function submitacymailingform(newtask, newformName) { 12 task = newtask; 13 formName = newformName; 14 15 var recaptchaid = 'acymailing-captcha'; 16 if(newformName) recaptchaid = newformName+'-captcha'; 17 18 var invisibleRecaptcha = document.querySelector('#'+recaptchaid+'[class="g-recaptcha"]'); 19 if(invisibleRecaptcha && typeof grecaptcha == "object"){ 20 21 var grcID = invisibleRecaptcha.getAttribute('grcID'); 22 23 if(!grcID) { 24 grcID = grecaptcha.render(recaptchaid, { 25 'sitekey': invisibleRecaptcha.getAttribute("data-sitekey"), 26 'callback': 'acySubmitSubForm', 27 'size': 'invisible', 28 'expired-callback': 'resetRecaptcha' 29 }); 30 31 invisibleRecaptcha.setAttribute('grcID', grcID); 32 } 33 34 var response = grecaptcha.getResponse(grcID); 35 if(response){ 36 return acySubmitSubForm(); 37 }else{ 38 grecaptcha.execute(grcID); 39 return false; 40 } 41 }else{ 42 return acySubmitSubForm(); 43 } 44} 45 46function resetRecaptcha(){ 47 var recaptchaid = 'acymailing-captcha'; 48 if(formName) recaptchaid = formName+'-captcha'; 49 50 var invisibleRecaptcha = document.querySelector('#'+recaptchaid+'[class="g-recaptcha"]'); 51 if(!invisibleRecaptcha) return; 52 53 var grcID = invisibleRecaptcha.getAttribute('grcID'); 54 grecaptcha.reset(grcID); 55} 56 57function acySubmitSubForm(){ 58 var varform = document[formName]; 59 if(typeof acymailingModule != 'undefined') { 60 var filterEmail = acymailingModule['emailRegex']; 61 }else{ 62 var filterEmail = /\@/i; 63 } 64 65 if(!varform.elements){ 66 if(varform[0].elements['user[email]'] && varform[0].elements['user[email]'].value && filterEmail.test(varform[0].elements['user[email]'].value)){ 67 varform = varform[0]; 68 }else{ 69 varform = varform[varform.length - 1]; 70 } 71 } 72 73 if(task != 'optout'){ 74 nameField = varform.elements['user[name]']; 75 if(nameField && typeof acymailingModule != 'undefined' && (((typeof acymailingModule['level'] == 'undefined' || acymailingModule['level'] != 'enterprise') && ((nameField.value == acymailingModule['NAMECAPTION'] || (typeof acymailingModule['excludeValues' + formName] != 'undefined' && typeof acymailingModule['excludeValues' + formName]['name'] != 'undefined' && nameField.value == acymailingModule['excludeValues' + formName]['name'])) || nameField.value.replace(/ /g, "").length < 2)) || (typeof acymailingModule['level'] != 'undefined' && acymailingModule['level'] == 'enterprise' && typeof acymailingModule['reqFields' + formName] != 'undefined' && acymailingModule['reqFields' + formName].indexOf('name') >= 0 && ((nameField.value == acymailingModule['NAMECAPTION'] || (typeof acymailingModule['excludeValues' + formName] != 'undefined' && typeof acymailingModule['excludeValues' + formName]['name'] != 'undefined' && nameField.value == acymailingModule['excludeValues' + formName]['name'])) || nameField.value.replace(/ /g, "").length < 2)))){ 76 alert(acymailingModule['NAME_MISSING']); 77 nameField.className = nameField.className + ' invalid'; 78 return false; 79 } 80 } 81 82 var emailField = varform.elements['user[email]']; 83 if(emailField){ 84 if(typeof acymailingModule == 'undefined' || emailField.value != acymailingModule['EMAILCAPTION']) emailField.value = emailField.value.replace(/ /g, ""); 85 if(!emailField || (typeof acymailingModule != 'undefined' && (emailField.value == acymailingModule['EMAILCAPTION'] || (typeof acymailingModule['excludeValues' + formName] != 'undefined' && typeof acymailingModule['excludeValues' + formName]['email'] != 'undefined' && emailField.value == acymailingModule['excludeValues' + formName]['email']))) || !filterEmail.test(emailField.value)){ 86 if(typeof acymailingModule != 'undefined'){ 87 alert(acymailingModule['VALID_EMAIL']); 88 } 89 emailField.className = emailField.className + ' invalid'; 90 return false; 91 } 92 } 93 94 if(varform.elements['hiddenlists'].value.length < 1){ 95 var listschecked = false; 96 var alllists = varform.elements['subscription[]']; 97 if(alllists && (typeof alllists.value == 'undefined' || alllists.value.length == 0)){ 98 for(b = 0; b < alllists.length; b++){ 99 if(alllists[b].checked) listschecked = true; 100 } 101 if(!listschecked){ 102 alert(acymailingModule['NO_LIST_SELECTED']); 103 return false;
104 } 105 } 106 } 107 108 if(task != 'optout' && typeof acymailingModule != 'undefined'){ 109 if(typeof acymailingModule['reqFields' + formName] != 'undefined' && acymailingModule['reqFields' + formName].length > 0){ 110 111 for(var i = 0; i < acymailingModule['reqFields' + formName].length; i++){ 112 elementName = 'user[' + acymailingModule['reqFields' + formName][i] + ']'; 113 elementToCheck = varform.elements[elementName]; 114 if(elementToCheck){ 115 var isValid = false; 116 if(typeof elementToCheck.value != 'undefined'){ 117 if(elementToCheck.value == ' ' && typeof varform[elementName + '[]'] != 'undefined'){ 118 if(varform[elementName + '[]'].checked){ 119 isValid = true; 120 }else{ 121 for(var a = 0; a < varform[elementName + '[]'].length; a++){ 122 if((varform[elementName + '[]'][a].checked || varform[elementName + '[]'][a].selected) && varform[elementName + '[]'][a].value.length > 0) isValid = true; 123 } 124 } 125 }else{ 126 if(elementToCheck.value.replace(/ /g, "").length > 0){ 127 if(typeof acymailingModule['excludeValues' + formName] == 'undefined' || typeof acymailingModule['excludeValues' + formName][acymailingModule['reqFields' + formName][i]] == 'undefined' || acymailingModule['excludeValues' + formName][acymailingModule['reqFields' + formName][i]] != elementToCheck.value) isValid = true; 128 } 129 } 130 }else{ 131 for(var a = 0; a < elementToCheck.length; a++){ 132 if(elementToCheck[a].checked && elementToCheck[a].value.length > 0) isValid = true; 133 } 134 } 135 if((elementToCheck.length >= 1 && (elementToCheck[0].parentElement.parentElement.style.display == 'none' || elementToCheck[0].parentElement.parentElement.parentElement.style.display == 'none')) || (typeof elementToCheck.length == 'undefined' && (elementToCheck.parentElement.parentElement.style.display == 'none' || elementToCheck.parentElement.parentElement.parentElement.style.display == 'none'))){ 136 isValid = true; 137 } 138 if(!isValid){ 139 elementToCheck.className = elementToCheck.className + ' invalid'; 140 alert(acymailingModule['validFields' + formName][i]); 141 return false; 142 } 143 }else{ 144 if((varform.elements[elementName + '[day]'] && varform.elements[elementName + '[day]'].value < 1) || (varform.elements[elementName + '[month]'] && varform.elements[elementName + '[month]'].value < 1) || (varform.elements[elementName + '[year]'] && varform.elements[elementName + '[year]'].value < 1902)){ 145 if(varform.elements[elementName + '[day]'] && varform.elements[elementName + '[day]'].value < 1) varform.elements[elementName + '[day]'].className = varform.elements[elementName + '[day]'].className + ' invalid'; 146 if(varform.elements[elementName + '[month]'] && varform.elements[elementName + '[month]'].value < 1) varform.elements[elementName + '[month]'].className = varform.elements[elementName + '[month]'].className + ' invalid'; 147 if(varform.elements[elementName + '[year]'] && varform.elements[elementName + '[year]'].value < 1902) varform.elements[elementName + '[year]'].className = varform.elements[elementName + '[year]'].className + ' invalid'; 148 alert(acymailingModule['validFields' + formName][i]); 149 return false; 150 } 151 152 if((varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].value < 1) || (varform.elements[elementName + '[num]'] && (varform.elements[elementName + '[num]'].value < 3 || (typeof acymailingModule['excludeValues' + formName] != 'undefined' && typeof acymailingModule['excludeValues' + formName][acymailingModule['reqFields' + formName][i]] != 'undefined' && acymailingModule['excludeValues' + formName][acymailingModule['reqFields' + formName][i]] == varform.elements[elementName + '[num]'].value)))){ 153 if((varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].parentElement.parentElement.style.display != 'none') || (varform.elements[elementName + '[num]'] && varform.elements[elementName + '[num]'].parentElement.parentElement.style.display != 'none')){ 154 if(varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].value < 1) varform.elements[elementName + '[country]'].className = varform.elements[elementName + '[country]'].className + ' invalid'; 155 if(varform.elements[elementName + '[num]'] && (varform.elements[elementName + '[num]'].value < 3 || (typeof acymailingModule['excludeValues' + formName] != 'undefined' && typeof acymailingModule['excludeValues' + formName][acymailingModule['reqFields' + formName][i]] != 'undefined' && acymailingModule['excludeValues' + formName][acymailingModule['reqFields' + formName][i]] == varform.elements[elementName + '[num]'].value))) varform.elements[elementName + '[num]'].className = varform.elements[elementName + '[num]'].className + ' invalid'; 156 alert(acymailingModule['validFields' + formName][i]); 157 return false;
158 } 159 } 160 } 161 } 162 } 163 164 if(typeof acymailingModule != 'undefined' && typeof acymailingModule['checkFields' + formName] != 'undefined' && acymailingModule['checkFields' + formName].length > 0){ 165 for(var i = 0; i < acymailingModule['checkFields' + formName].length; i++){ 166 elementName = 'user[' + acymailingModule['checkFields' + formName][i] + ']'; 167 elementtypeToCheck = acymailingModule['checkFieldsType' + formName][i]; 168 elementToCheck = varform.elements[elementName].value; 169 if(typeof acymailingModule['excludeValues' + formName] != 'undefined'){ 170 var excludedValues = acymailingModule['excludeValues' + formName][acymailingModule['checkFields' + formName][i]]; 171 if(typeof excludedValues != 'undefined' && elementToCheck == excludedValues){ 172 continue; 173 } 174 } 175 switch(elementtypeToCheck){ 176 case 'number': 177 myregexp = new RegExp('^[0-9]*$'); 178 break; 179 case 'letter': 180 myregexp = new RegExp('^[A-Za-z\u00C0-\u017F ]*$'); 181 break; 182 case 'letnum': 183 myregexp = new RegExp('^[0-9a-zA-Z\u00C0-\u017F ]*$'); 184 break; 185 case 'regexp': 186 myregexp = new RegExp(acymailingModule['checkFieldsRegexp' + formName][i]); 187 break; 188 } 189 if(!myregexp.test(elementToCheck)){ 190 alert(acymailingModule['validCheckFields' + formName][i]); 191 return false; 192 } 193 } 194 } 195 } 196 197 var captchaField = varform.elements['acycaptcha']; 198 if(captchaField){ 199 if(captchaField.value.length < 1){ 200 if(typeof acymailingModule != 'undefined'){ 201 alert(acymailingModule['CAPTCHA_MISSING']); 202 } 203 captchaField.className = captchaField.className + ' invalid'; 204 return false; 205 } 206 } 207 208 if(task != 'optout'){ 209 var termsandconditions = varform.terms; 210 if(termsandconditions && !termsandconditions.checked){ 211 if(typeof acymailingModule != 'undefined'){ 212 alert(acymailingModule['ACCEPT_TERMS']); 213 } 214 termsandconditions.className = termsandconditions.className + ' invalid'; 215 return false; 216 } 217 218 if(typeof acymailingModule != 'undefined' && typeof acymailingModule['excludeValues' + formName] != 'undefined'){ 219 for(var fieldName in acymailingModule['excludeValues' + formName]){ 220 if(!acymailingModule['excludeValues' + formName].hasOwnProperty(fieldName)) continue; 221 if(!varform.elements['user[' + fieldName + ']'] || varform.elements['user[' + fieldName + ']'].value != acymailingModule['excludeValues' + formName][fieldName]) continue; 222 223 varform.elements['user[' + fieldName + ']'].value = ''; 224 } 225 } 226 } 227 228 if(typeof ga != 'undefined' && task != 'optout'){ 229 ga('send', 'pageview', 'subscribe'); 230 }else if(typeof ga != 'undefined'){ 231 ga('send', 'pageview', 'unsubscribe'); 232 } 233 234 taskField = varform.task; 235 taskField.value = task; 236 237 if(!varform.elements['ajax'] || !varform.elements['ajax'].value || varform.elements['ajax'].value == '0'){ 238 varform.submit(); 239 return false; 240 } 241 242 var form = document.getElementById(formName); 243 244 var formData = new FormData(form); 245 form.className += ' acymailing_module_loading'; 246 form.style.filter = "alpha(opacity=50)"; 247 form.style.opacity = "0.5"; 248 249 var xhr = new XMLHttpRequest(); 250 xhr.open('POST', form.action); 251 xhr.onload = function(){ 252 var message = 'Ajax Request Failure'; 253 var type = 'error'; 254 255 if (xhr.status === 200){ 256 var response = JSON.parse(xhr.responseText); 257 message = response.message; 258 type = response.type; 259 } 260 acymailingDisplayAjaxResponse(decodeURIComponent(message), type, formName); 261 }; 262 xhr.send(formData); 263 264 return false; 265} 266 267function acymailingDisplayAjaxResponse(message, type, formName){ 268 var toggleButton = document.getElementById('acymailing_togglemodule_' + formName); 269 270 if(toggleButton && toggleButton.className.indexOf('acyactive') > -1){ 271 var wrapper = toggleButton.parentElement.parentElement.childNodes[1]; 272 wrapper.style.height = ''; 273 } 274 275 var responseContainer = document.querySelectorAll('#acymailing_fulldiv_' + formName + ' .responseContainer')[0]; 276 277 if(typeof responseContainer == 'undefined'){ 278 responseContainer = document.createElement('div'); 279 var fulldiv = document.getElementById('acymailing_fulldiv_' + formName); 280 281 if(fulldiv.firstChild){ 282 fulldiv.insertBefore(responseContainer, fulldiv.firstChild); 283 }else{ 284 fulldiv.appendChild(responseContainer); 285 } 286 287 oldContainerHeight = '0px'; 288 }else{ 289 oldContainerHeight = responseContainer.style.height; 290 } 291 292 responseContainer.className = 'responseContainer'; 293 294 var form = document.getElementById(formName); 295 296 var elclass = form.className; 297 var rmclass = 'acymailing_module_loading'; 298 var res = elclass.replace(' '+rmclass, '', elclass); 299 if(res == elclass) res = elclass.replace(rmclass+' ', '', elclass); 300 if(res == elclass) res = elclass.replace(rmclass, '', elclass); 301 form.className = res; 302 303 responseContainer.innerHTML = message; 304 305 if(type == 'success'){ 306 responseContainer.className += ' acymailing_module_success'; 307 }else{ 308 responseContainer.className += ' acymailing_module_error'; 309 form.style.opacity = "1"; 310 } 311 312 newContainerHeight = responseContainer.style.height; 313 314 form.style.display = 'none'; 315 responseContainer.className += ' slide_open'; 316} 317 318
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.