1/** 2 * @package AcyMailing for Joomla! 3 * @version 5.6.1 4 * @author acyba.com 5 * @copyright (C) 2009-2017 ACYBA S.A.R.L. All rights reserved. 6 * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html 7 */ 8 9function submitacymailingform(task, formName, allowSpecialChars){ 10 var varform = document[formName]; 11 if(allowSpecialChars == 0) { 12 var filterEmail = /^([a-z0-9_'&\.\-\+=])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,10})+$/i; 13 }else{ 14 var filterEmail = /\@/i; 15 } 16 17 if(!varform.elements){ 18 if(varform[0].elements['user[email]'] && varform[0].elements['user[email]'].value && filterEmail.test(varform[0].elements['user[email]'].value)){ 19 varform = varform[0]; 20 }else{ 21 varform = varform[varform.length - 1]; 22 } 23 } 24 25 if(task != 'optout'){ 26 nameField = varform.elements['user[name]']; 27 if(nameField && typeof acymailing != 'undefined' && (((typeof acymailing['level'] == 'undefined' || acymailing['level'] != 'enterprise') && ((nameField.value == acymailing['NAMECAPTION'] || (typeof acymailing['excludeValues' + formName] != 'undefined' && typeof acymailing['excludeValues' + formName]['name'] != 'undefined' && nameField.value == acymailing['excludeValues' + formName]['name'])) || nameField.value.replace(/ /g, "").length < 2)) || (typeof acymailing['level'] != 'undefined' && acymailing['level'] == 'enterprise' && typeof acymailing['reqFields' + formName] != 'undefined' && acymailing['reqFields' + formName].indexOf('name') >= 0 && ((nameField.value == acymailing['NAMECAPTION'] || (typeof acymailing['excludeValues' + formName] != 'undefined' && typeof acymailing['excludeValues' + formName]['name'] != 'undefined' && nameField.value == acymailing['excludeValues' + formName]['name'])) || nameField.value.replace(/ /g, "").length < 2)))){ 28 alert(acymailing['NAME_MISSING']); 29 nameField.className = nameField.className + ' invalid'; 30 return false; 31 } 32 } 33 34 var emailField = varform.elements['user[email]']; 35 if(emailField){ 36 if(typeof acymailing == 'undefined' || emailField.value != acymailing['EMAILCAPTION']) emailField.value = emailField.value.replace(/ /g, ""); 37 if(!emailField || (typeof acymailing != 'undefined' && (emailField.value == acymailing['EMAILCAPTION'] || (typeof acymailing['excludeValues' + formName] != 'undefined' && typeof acymailing['excludeValues' + formName]['email'] != 'undefined' && emailField.value == acymailing['excludeValues' + formName]['email']))) || !filterEmail.test(emailField.value)){ 38 if(typeof acymailing != 'undefined'){ 39 alert(acymailing['VALID_EMAIL']); 40 } 41 emailField.className = emailField.className + ' invalid'; 42 return false; 43 } 44 } 45 46 if(varform.elements['hiddenlists'].value.length < 1){ 47 var listschecked = false; 48 var alllists = varform.elements['subscription[]']; 49 if(alllists && (typeof alllists.value == 'undefined' || alllists.value.length == 0)){ 50 for(b = 0; b < alllists.length; b++){ 51 if(alllists[b].checked) listschecked = true; 52 } 53 if(!listschecked){ 54 alert(acymailing['NO_LIST_SELECTED']); 55 return false; 56 } 57 } 58 } 59 60 61 if(task != 'optout' && typeof acymailing != 'undefined'){ 62 if(typeof acymailing['reqFields' + formName] != 'undefined' && acymailing['reqFields' + formName].length > 0){ 63 64 for(var i = 0; i < acymailing['reqFields' + formName].length; i++){ 65 elementName = 'user[' + acymailing['reqFields' + formName][i] + ']'; 66 elementToCheck = varform.elements[elementName]; 67 if(elementToCheck){ 68 var isValid = false; 69 if(typeof elementToCheck.value != 'undefined'){ 70 if(elementToCheck.value == ' ' && typeof varform[elementName + '[]'] != 'undefined'){ 71 if(varform[elementName + '[]'].checked){ 72 isValid = true; 73 }else{ 74 for(var a = 0; a < varform[elementName + '[]'].length; a++){ 75 if((varform[elementName + '[]'][a].checked || varform[elementName + '[]'][a].selected) && varform[elementName + '[]'][a].value.length > 0) isValid = true; 76 } 77 } 78 }else{ 79 if(elementToCheck.value.replace(/ /g, "").length > 0){ 80 if(typeof acymailing['excludeValues' + formName] == 'undefined' || typeof acymailing['excludeValues' + formName][acymailing['reqFields' + formName][i]] == 'undefined' || acymailing['excludeValues' + formName][acymailing['reqFields' + formName][i]] != elementToCheck.value) isValid = true; 81 } 82 } 83 }else{ 84 for(var a = 0; a < elementToCheck.length; a++){ 85 if(elementToCheck[a].checked && elementToCheck[a].value.length > 0) isValid = true; 86 } 87 } 88 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'))){ 89 isValid = true; 90 } 91 if(!isValid){ 92 elementToCheck.className = elementToCheck.className + ' invalid'; 93 alert(acymailing['validFields' + formName][i]); 94 return false;
95 } 96 }else{ 97 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)){ 98 if(varform.elements[elementName + '[day]'] && varform.elements[elementName + '[day]'].value < 1) varform.elements[elementName + '[day]'].className = varform.elements[elementName + '[day]'].className + ' invalid'; 99 if(varform.elements[elementName + '[month]'] && varform.elements[elementName + '[month]'].value < 1) varform.elements[elementName + '[month]'].className = varform.elements[elementName + '[month]'].className + ' invalid'; 100 if(varform.elements[elementName + '[year]'] && varform.elements[elementName + '[year]'].value < 1902) varform.elements[elementName + '[year]'].className = varform.elements[elementName + '[year]'].className + ' invalid'; 101 alert(acymailing['validFields' + formName][i]); 102 return false; 103 } 104 105 if((varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].value < 1) || (varform.elements[elementName + '[num]'] && (varform.elements[elementName + '[num]'].value < 3 || (typeof acymailing['excludeValues' + formName] != 'undefined' && typeof acymailing['excludeValues' + formName][acymailing['reqFields' + formName][i]] != 'undefined' && acymailing['excludeValues' + formName][acymailing['reqFields' + formName][i]] == varform.elements[elementName + '[num]'].value)))){ 106 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')){ 107 if(varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].value < 1) varform.elements[elementName + '[country]'].className = varform.elements[elementName + '[country]'].className + ' invalid'; 108 if(varform.elements[elementName + '[num]'] && (varform.elements[elementName + '[num]'].value < 3 || (typeof acymailing['excludeValues' + formName] != 'undefined' && typeof acymailing['excludeValues' + formName][acymailing['reqFields' + formName][i]] != 'undefined' && acymailing['excludeValues' + formName][acymailing['reqFields' + formName][i]] == varform.elements[elementName + '[num]'].value))) varform.elements[elementName + '[num]'].className = varform.elements[elementName + '[num]'].className + ' invalid'; 109 alert(acymailing['validFields' + formName][i]); 110 return false; 111 } 112 } 113 } 114 } 115 } 116 117 if(typeof acymailing != 'undefined' && typeof acymailing['checkFields' + formName] != 'undefined' && acymailing['checkFields' + formName].length > 0){ 118 for(var i = 0; i < acymailing['checkFields' + formName].length; i++){ 119 elementName = 'user[' + acymailing['checkFields' + formName][i] + ']'; 120 elementtypeToCheck = acymailing['checkFieldsType' + formName][i]; 121 elementToCheck = varform.elements[elementName].value; 122 if(typeof acymailing['excludeValues' + formName] != 'undefined'){ 123 var excludedValues = acymailing['excludeValues' + formName][acymailing['checkFields' + formName][i]]; 124 if(typeof excludedValues != 'undefined' && elementToCheck == excludedValues){ 125 continue; 126 } 127 } 128 switch(elementtypeToCheck){ 129 case 'number': 130 myregexp = new RegExp('^[0-9]*$'); 131 break; 132 case 'letter': 133 myregexp = new RegExp('^[A-Za-z\u00C0-\u017F ]*$'); 134 break; 135 case 'letnum': 136 myregexp = new RegExp('^[0-9a-zA-Z\u00C0-\u017F ]*$'); 137 break; 138 case 'regexp': 139 myregexp = new RegExp(acymailing['checkFieldsRegexp' + formName][i]); 140 break; 141 } 142 if(!myregexp.test(elementToCheck)){ 143 alert(acymailing['validCheckFields' + formName][i]); 144 return false; 145 } 146 } 147 } 148 } 149 150 var captchaField = varform.elements['acycaptcha']; 151 if(captchaField){ 152 if(captchaField.value.length < 1){ 153 if(typeof acymailing != 'undefined'){ 154 alert(acymailing['CAPTCHA_MISSING']); 155 } 156 captchaField.className = captchaField.className + ' invalid'; 157 return false;
158 } 159 } 160 161 if(task != 'optout'){ 162 var termsandconditions = varform.terms; 163 if(termsandconditions && !termsandconditions.checked){ 164 if(typeof acymailing != 'undefined'){ 165 alert(acymailing['ACCEPT_TERMS']); 166 } 167 termsandconditions.className = termsandconditions.className + ' invalid'; 168 return false; 169 } 170 171 if(typeof acymailing != 'undefined' && typeof acymailing['excludeValues' + formName] != 'undefined'){ 172 for(var fieldName in acymailing['excludeValues' + formName]){ 173 if(!acymailing['excludeValues' + formName].hasOwnProperty(fieldName)) continue; 174 if(!varform.elements['user[' + fieldName + ']'] || varform.elements['user[' + fieldName + ']'].value != acymailing['excludeValues' + formName][fieldName]) continue; 175 176 varform.elements['user[' + fieldName + ']'].value = ''; 177 } 178 } 179 } 180 181 if(typeof ga != 'undefined' && task != 'optout'){ 182 ga('send', 'pageview', 'subscribe'); 183 }else if(typeof ga != 'undefined'){ 184 ga('send', 'pageview', 'unsubscribe'); 185 } 186 187 taskField = varform.task; 188 taskField.value = task; 189 190 if(!varform.elements['ajax'] || !varform.elements['ajax'].value || varform.elements['ajax'].value == '0'){ 191 varform.submit(); 192 return false; 193 } 194 195 if(window.jQuery){ 196 var form = jQuery('#' + formName); 197 form.addClass('acymailing_module_loading'); 198 form.css("filter:", "alpha(opacity=50)"); 199 form.css("-moz-opacity", "0.5"); 200 form.css("-khtml-opacity", "0.5"); 201 form.css("opacity", "0.5"); 202 data = new FormData(form[0]); 203 204 jQuery.ajax({ 205 url: document.getElementById(formName).action, 206 data: data, 207 type: 'POST', 208 async: true, 209 success: function(response){ 210 response = JSON.parse(response); 211 acymailingDisplayAjaxResponseJQuery(unescape(response.message), response.type, formName); 212 }, 213 error: function(){ 214 acymailingDisplayAjaxResponseJQuery('Ajax Request Failure', 'error', formName); 215 }, 216 cache: false, 217 contentType: false, 218 processData: false 219 }); 220 }else{ 221 try{ 222 var form = document.id(formName); 223 }catch(err){ 224 var form = $(formName); 225 } 226 data = form.toQueryString(); 227 228 if(typeof Ajax == 'function'){ 229 new Ajax(form.action, { 230 data: data, method: 'post', onRequest: function(){ 231 form.addClass('acymailing_module_loading'); 232 form.setStyle("filter:", "alpha(opacity=50)"); 233 form.setStyle("-moz-opacity", "0.5"); 234 form.setStyle("-khtml-opacity", "0.5"); 235 form.setStyle("opacity", "0.5"); 236 }, onSuccess: function(response){ 237 response = Json.evaluate(response); 238 acymailingDisplayAjaxResponseMootools(unescape(response.message), response.type, formName); 239 }, onFailure: function(){ 240 acymailingDisplayAjaxResponseMootools('Ajax Request Failure', 'error', formName); 241 } 242 }).request(); 243 }else{ 244 var formData = new FormData(form); 245 246 form.addClass('acymailing_module_loading'); 247 form.setStyle("filter:", "alpha(opacity=50)"); 248 form.setStyle("-moz-opacity", "0.5"); 249 form.setStyle("-khtml-opacity", "0.5"); 250 form.setStyle("opacity", "0.5"); 251 252 var xhr = new XMLHttpRequest(); 253 xhr.open('POST', document.id(formName).action); 254 xhr.onload = function(){ 255 if (xhr.status === 200){ 256 var response = JSON.parse(xhr.responseText); 257 acymailingDisplayAjaxResponseMootools(unescape(response.message), response.type, formName); 258 }else{ 259 acymailingDisplayAjaxResponseMootools('Ajax Request Failure', 'error', formName); 260 } 261 }; 262 xhr.send(formData); 263 } 264 } 265 266 return false; 267} 268 269function acymailingDisplayAjaxResponseJQuery(message, type, formName){ 270 var toggleButton = jQuery('#acymailing_togglemodule_' + formName); 271 272 if(toggleButton && toggleButton.hasClass('acyactive')){ 273 var wrapper = toggleButton.parent().parent().children()[1]; 274 jQuery(wrapper).css('height', ''); 275 } 276 ; 277 278 var responseContainer = jQuery('#acymailing_fulldiv_' + formName + ' .responseContainer')[0]; 279 280 if(typeof responseContainer == 'undefined'){ 281 responseContainer = document.createElement('div'); 282 var fulldiv = jQuery('#acymailing_fulldiv_' + formName); 283 fulldiv.prepend(responseContainer); 284 oldContainerHeight = '0px'; 285 }else{ 286 oldContainerHeight = jQuery(responseContainer).css('height'); 287 } 288 289 responseContainer.className = 'responseContainer'; 290 291 var form = jQuery('#' + formName); 292 293 form.removeClass('acymailing_module_loading'); 294 295 responseContainer.innerHTML = message; 296 297 if(type == 'success'){ 298 jQuery(responseContainer).addClass('acymailing_module_success'); 299 }else{ 300 jQuery(responseContainer).addClass('acymailing_module_error'); 301 form.css("filter:", "alpha(opacity=100)"); 302 form.css("-moz-opacity", "1"); 303 form.css("-khtml-opacity", "1"); 304 form.css("opacity", "1"); 305 } 306 307 newContainerHeight = jQuery(responseContainer).css('height'); 308 309 if(type == 'success'){ 310 form.animate({ 311 'height': 0, 'opacity': 0 312 }); 313 } 314 315 jQuery(responseContainer).css({ 316 'height': oldContainerHeight, 'filter:': "alpha(opacity=0)", '-moz-opacity': 0, '-khtml-opacity': 0, 'opacity': 0 317 }); 318 319 jQuery(responseContainer).animate({ 320 'height': newContainerHeight, 'opacity': 1 321 }); 322} 323 324function acymailingDisplayAjaxResponseMootools(message, type, formName){ 325 try{ 326 var toggleButton = document.id('acymailing_togglemodule_' + formName); 327 }catch(err){ 328 var toggleButton = $('acymailing_togglemodule_' + formName); 329 } 330 331 if(toggleButton && toggleButton.hasClass('acyactive')){ 332 var wrapper = toggleButton.getParent().getParent().getChildren()[1]; 333 wrapper.setStyle('height', ''); 334 } 335 ; 336 337 try{ 338 var responseContainer = document.getElements('#acymailing_fulldiv_' + formName + ' .responseContainer')[0]; 339 }catch(err){ 340 var responseContainer = $$('#acymailing_fulldiv_' + formName + ' .responseContainer')[0]; 341 } 342 343 if(typeof responseContainer == 'undefined'){ 344 responseContainer = new Element('div'); 345 try{ 346 var fulldiv = document.id('acymailing_fulldiv_' + formName); 347 }catch(err){ 348 var fulldiv = $('acymailing_fulldiv_' + formName); 349 } 350 responseContainer.inject(fulldiv, 'top'); 351 oldContainerHeight = '0px'; 352 }else{ 353 oldContainerHeight = responseContainer.getStyle('height'); 354 } 355 356 responseContainer.className = 'responseContainer'; 357 358 try{ 359 var form = document.id(formName); 360 }catch(err){ 361 var form = $(formName); 362 } 363 form.removeClass('acymailing_module_loading'); 364 365 responseContainer.innerHTML = message; 366 367 if(type == 'success'){ 368 responseContainer.addClass('acymailing_module_success'); 369 }else{ 370 responseContainer.addClass('acymailing_module_error'); 371 form.setStyle("filter:", "alpha(opacity=100)"); 372 form.setStyle("-moz-opacity", "1"); 373 form.setStyle("-khtml-opacity", "1"); 374 form.setStyle("opacity", "1"); 375 } 376 377 newContainerHeight = responseContainer.getStyle('height'); 378 379 if(typeof Ajax == 'function'){ 380 if(type == 'success'){ 381 var myEffect = new Fx.Styles(form, {duration: 500, transition: Fx.Transitions.linear}); 382 myEffect.start({ 383 'height': [form.getSize().size.y, 0], 'opacity': [1, 0] 384 }); 385 } 386 387 try{ 388 responseContainer.setStyle('height', oldContainerHeight + 'px'); 389 responseContainer.setStyle("filter:", "alpha(opacity=0)"); 390 responseContainer.setStyle("-moz-opacity", "0"); 391 responseContainer.setStyle("-khtml-opacity", "0"); 392 responseContainer.setStyle("opacity", "0"); 393 } 394 catch(e){ 395 } 396 397 var myEffect2 = new Fx.Styles(responseContainer, {duration: 500, transition: Fx.Transitions.linear}); 398 myEffect2.start({ 399 'height': [oldContainerHeight, newContainerHeight], 'opacity': [0, 1] 400 }); 401 402 }else // Mootools >= 1.2 403 { 404 if(type == 'success'){ 405 form.set('morph'); 406 form.morph({ 407 'height': '0px', 'opacity': 0 408 }); 409 410 form.setStyles({ 411 'display': 'none' 412 }); 413 } 414 415 if(newContainerHeight != 'auto'){ 416 responseContainer.setStyles({ 417 'height': oldContainerHeight, 'opacity': 0 418 }); 419 420 responseContainer.set('morph'); 421 responseContainer.morph({ 422 'height': newContainerHeight, 'opacity': 1 423 }); 424 } 425 } 426}
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.