1/** 2 * @package AcyMailing for Joomla! 3 * @version 5.11.2 4 * @author acyba.com 5 * @copyright (C) 2009-2022 ACYBA S.A.R.L. All rights reserved. 6 * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html 7 */ 8 9function checkChangeForm(){ 10 var varform = document['adminForm']; 11 nameField = varform.elements['data[subscriber][name]']; 12 if(nameField && typeof acymailingModule != 'undefined' && ((typeof acymailingModule['reqFieldsComp'] != 'undefined' && acymailingModule['reqFieldsComp'].indexOf('name') >= 0 && (nameField.value == acymailingModule['NAMECAPTION'] || nameField.value.replace(/ /g, "").length < 2)))){ 13 alert(acymailingModule['NAME_MISSING']); 14 nameField.className = nameField.className + ' invalid'; 15 return false; 16 } 17 18 var emailField = varform.elements['data[subscriber][email]']; 19 if(emailField){ 20 if(typeof acymailingModule == 'undefined' || emailField.value != acymailingModule['EMAILCAPTION']) emailField.value = emailField.value.replace(/ /g, ""); 21 if(typeof acymailingModule != 'undefined') { 22 var filter = acymailingModule['emailRegex']; 23 }else{ 24 var filter = /\@/i; 25 } 26 if(!emailField || (typeof acymailingModule != 'undefined' && emailField.value == acymailingModule['EMAILCAPTION']) || !filter.test(emailField.value)){ 27 if(typeof acymailingModule != 'undefined'){ 28 alert(acymailingModule['VALID_EMAIL']); 29 } 30 emailField.className = emailField.className + ' invalid'; 31 return false; 32 } 33 } 34 35 if(typeof acymailingModule != 'undefined' && typeof acymailingModule['reqFieldsComp'] != 'undefined' && acymailingModule['reqFieldsComp'].length > 0){ 36 for(var i = 0; i < acymailingModule['reqFieldsComp'].length; i++){ 37 elementName = 'data[subscriber][' + acymailingModule['reqFieldsComp'][i] + ']'; 38 elementToCheck = varform.elements[elementName]; 39 if(elementToCheck){ 40 var isValid = false; 41 if(typeof elementToCheck.value != 'undefined'){ 42 if(elementToCheck.value == ' ' && typeof varform[elementName + '[]'] != 'undefined'){ 43 if(varform[elementName + '[]'].checked){ 44 isValid = true; 45 }else{ 46 for(var a = 0; a < varform[elementName + '[]'].length; a++){ 47 if((varform[elementName + '[]'][a].checked || varform[elementName + '[]'][a].selected) && varform[elementName + '[]'][a].value.length > 0) isValid = true; 48 } 49 } 50 }else{ 51 if(elementToCheck.value.replace(/ /g, "").length > 0) isValid = true; 52 } 53 }else{ 54 for(var a = 0; a < elementToCheck.length; a++){ 55 if(elementToCheck[a].checked && elementToCheck[a].value.length > 0) isValid = true; 56 } 57 } 58 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'))){ 59 isValid = true; 60 } 61 if(!isValid){ 62 elementToCheck.className = elementToCheck.className + ' invalid'; 63 alert(acymailingModule['validFieldsComp'][i]); 64 return false; 65 } 66 }else{ 67 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)){ 68 if(varform.elements[elementName + '[day]'] && varform.elements[elementName + '[day]'].value < 1) varform.elements[elementName + '[day]'].className = varform.elements[elementName + '[day]'].className + ' invalid'; 69 if(varform.elements[elementName + '[month]'] && varform.elements[elementName + '[month]'].value < 1) varform.elements[elementName + '[month]'].className = varform.elements[elementName + '[month]'].className + ' invalid'; 70 if(varform.elements[elementName + '[year]'] && varform.elements[elementName + '[year]'].value < 1902) varform.elements[elementName + '[year]'].className = varform.elements[elementName + '[year]'].className + ' invalid'; 71 alert(acymailingModule['validFieldsComp'][i]); 72 return false; 73 } 74 75 if((varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].value < 1) || (varform.elements[elementName + '[num]'] && varform.elements[elementName + '[num]'].value < 3)){ 76 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')){ 77 if(varform.elements[elementName + '[country]'] && varform.elements[elementName + '[country]'].value < 1) varform.elements[elementName + '[country]'].className = varform.elements[elementName + '[country]'].className + ' invalid'; 78 if(varform.elements[elementName + '[num]'] && varform.elements[elementName + '[num]'].value < 3) varform.elements[elementName + '[num]'].className = varform.elements[elementName + '[num]'].className + ' invalid'; 79 alert(acymailingModule['validFieldsComp'][i]); 80 return false; 81 } 82 } 83 } 84 } 85 } 86 87 if(typeof acymailingModule != 'undefined' && typeof acymailingModule['checkFields'] != 'undefined' && acymailingModule['checkFields'].length > 0){ 88 for(var i = 0; i < acymailingModule['checkFields'].length; i++){ 89 elementName = 'data[subscriber][' + acymailingModule['checkFields'][i] + ']'; 90 elementtypeToCheck = acymailingModule['checkFieldsType'][i]; 91 elementToCheck = varform.elements[elementName].value; 92 switch(elementtypeToCheck){ 93 case 'number': 94 myregexp = new RegExp('^[0-9]*$'); 95 break; 96 case 'letter':
97 myregexp = new RegExp('^[A-Za-z\u00C0-\u017F ]*$'); 98 break; 99 case 'letnum': 100 myregexp = new RegExp('^[0-9a-zA-Z\u00C0-\u017F ]*$'); 101 break; 102 case 'regexp': 103 myregexp = new RegExp(acymailingModule['checkFieldsRegexp'][i]); 104 break; 105 } 106 if(!myregexp.test(elementToCheck)){ 107 alert(acymailingModule['validCheckFields'][i]); 108 return false; 109 } 110 } 111 } 112 113 var captchaField = varform.elements['acycaptcha']; 114 if(captchaField){ 115 if(captchaField.value.length < 1){ 116 if(typeof acymailingModule != 'undefined'){ 117 alert(acymailingModule['CAPTCHA_MISSING']); 118 } 119 captchaField.className = captchaField.className + ' invalid'; 120 return false; 121 } 122 } 123 return true; 124} 125 126(function(){ 127 function preventDefault(){ 128 this.returnValue = false; 129 } 130 131 function stopPropagation(){ 132 this.cancelBubble = true; 133 } 134 135 var Oby = { 136 version: 20120930, ajaxEvents: {}, 137 138 hasClass: function(o, n){ 139 if(o.className == '') return false; 140 var reg = new RegExp("(^|\\s+)" + n + "(\\s+|$)"); 141 return reg.test(o.className); 142 }, addClass: function(o, n){ 143 if(!this.hasClass(o, n)){ 144 if(o.className == ''){ 145 o.className = n; 146 }else{ 147 o.className += ' ' + n; 148 } 149 } 150 }, trim: function(s){ 151 return (s ? '' + s : '').replace(/^\s*|\s*$/g, ''); 152 }, removeClass: function(e, c){ 153 var t = this; 154 if(t.hasClass(e, c)){ 155 var cn = ' ' + e.className + ' '; 156 e.className = t.trim(cn.replace(' ' + c + ' ', '')); 157 } 158 }, addEvent: function(d, e, f){ 159 if(d.attachEvent){ 160 d.attachEvent('on' + e, f); 161 }else if(d.addEventListener){ 162 d.addEventListener(e, f, false); 163 }else{ 164 d['on' + e] = f; 165 } 166 return f; 167 }, removeEvent: function(d, e, f){ 168 try{ 169 if(d.detachEvent){ 170 d.detachEvent('on' + e, f); 171 }else if(d.removeEventListener){ 172 d.removeEventListener(e, f, false); 173 }else{ 174 d['on' + e] = null; 175 } 176 }catch(e){ 177 } 178 }, cancelEvent: function(e){ 179 if(!e){ 180 e = window.event; 181 if(!e){ 182 return false; 183 } 184 } 185 if(e.stopPropagation){ 186 e.stopPropagation(); 187 }else{ 188 e.cancelBubble = true; 189 } 190 if(e.preventDefault){ 191 e.preventDefault(); 192 }else{ 193 e.returnValue = false; 194 } 195 return false; 196 }, evalJSON: function(text, secure){ 197 if(typeof(text) != "string" || !text.length) return null; 198 if(secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(text.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null; 199 return eval('(' + text + ')'); 200 }, getXHR: function(){ 201 var xhr = null, w = window; 202 if(w.XMLHttpRequest || w.ActiveXObject){ 203 if(w.ActiveXObject){ 204 try{ 205 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 206 }catch(e){ 207 } 208 }else{ 209 xhr = new w.XMLHttpRequest(); 210 } 211 } 212 return xhr; 213 }, xRequest: function(url, options, cb, cbError){ 214 var t = this, xhr = t.getXHR(); 215 if(!options) options = {}; 216 if(!cb){ 217 cb = function(){ 218 }; 219 } 220 options.mode = options.mode || 'GET'; 221 options.update = options.update || false; 222 xhr.onreadystatechange = function(){ 223 if(xhr.readyState == 4){ 224 if(xhr.status == 200 || (xhr.status == 0 && xhr.responseText > 0) || !cbError){ 225 if(cb){ 226 cb(xhr, options.params); 227 } 228 if(options.update){ 229 t.updateElem(options.update, xhr.responseText); 230 } 231 }else{ 232 cbError(xhr, options.params); 233 } 234 } 235 }; 236 xhr.open(options.mode, url, true); 237 if(options.mode.toUpperCase() == 'POST'){ 238 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 239 } 240 xhr.send(options.data); 241 }, getFormData: function(target){ 242 var d = document, ret = ''; 243 if(typeof(target) == 'string'){ 244 target = d.getElementById(target); 245 } 246 if(target === undefined){ 247 target = d; 248 } 249 var typelist = ['input', 'select', 'textarea']; 250 for(var t in typelist){ 251 t = typelist[t]; 252 var inputs = target.getElementsByTagName(t); 253 for(var i = inputs.length - 1; i >= 0; i--){ 254 if(inputs[i].name && !inputs[i].disabled){ 255 var evalue = inputs[i].value, etype = ''; 256 if(t == 'input'){ 257 etype = inputs[i].type.toLowerCase(); 258 } 259 if(etype == 'radio' && !inputs[i].checked){ 260 evalue = null; 261 } 262 if((etype != 'file' && etype != 'submit') && evalue != null){ 263 if(ret != '') ret += '&'; 264 ret += encodeURI(inputs[i].name) + '=' + encodeURIComponent(evalue); 265 } 266 } 267 } 268 } 269 return ret; 270 }, updateElem: function(elem, data){ 271 var d = document, scripts = ''; 272 if(typeof(elem) == 'string'){ 273 elem = d.getElementById(elem); 274 } 275 var text = data.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(all, code){ 276 scripts += code + '\n'; 277 return ''; 278 }); 279 elem.innerHTML = text; 280 if(scripts != ''){ 281 var script = d.createElement('script'); 282 script.setAttribute('type', 'text/javascript'); 283 script.text = scripts; 284 d.head.appendChild(script); 285 d.head.removeChild(script); 286 } 287 } 288 }; 289 290 var acymailing = { 291 submitFct: null, 292 submitBox: function(data){ 293 var t = this, d = document, w = window; 294 if(t.submitFct){ 295 try{ 296 t.submitFct(data); 297 }catch(err){ 298 } 299 } 300 t.closeBox(); 301 }, deleteId: function(id){ 302 var t = this, d = document, el = id; 303 if(typeof(id) == "string"){ 304 el = d.getElementById(id); 305 } 306 if(!el){ 307 return; 308 } 309 el.parentNode.removeChild(el); 310 }, dup: function(tplName, htmlblocks, id, extraData, appendTo){ 311 var d = document, tplElem = d.getElementById(tplName), container = tplElem.parentNode; 312 if(!tplElem) return; 313 elem = tplElem.cloneNode(true); 314 if(!appendTo){ 315 container.insertBefore(elem, tplElem); 316 }else{ 317 if(typeof(appendTo) == "string"){ 318 appendTo = d.getElementById(appendTo); 319 } 320 appendTo.appendChild(elem); 321 } 322 elem.style.display = ""; 323 elem.id = ''; 324 if(id){ 325 elem.id = id; 326 } 327 for(var k in htmlblocks){ 328 elem.innerHTML = elem.innerHTML.replace(new RegExp("{" + k + "}", "g"), htmlblocks[k]); 329 elem.innerHTML = elem.innerHTML.replace(new RegExp("%7B" + k + "%7D", "g"), htmlblocks[k]); 330 } 331 if(extraData){ 332 for(var k in extraData){ 333 elem.innerHTML = elem.innerHTML.replace(new RegExp('{' + k + '}', 'g'), extraData[k]); 334 elem.innerHTML = elem.innerHTML.replace(new RegExp('%7B' + k + '%7D', 'g'), extraData[k]); 335 } 336 } 337 }, deleteRow: function(id){ 338 var t = this, d = document, el = id; 339 if(typeof(id) == "string"){ 340 el = d.getElementById(id); 341 }else{ 342 while(el != null && el.tagName.toLowerCase() != 'tr'){ 343 el = el.parentNode; 344 } 345 } 346 if(!el){ 347 return; 348 } 349 var table = el.parentNode; 350 table.removeChild(el); 351 if(table.tagName.toLowerCase() == 'tbody'){ 352 table = table.parentNode; 353 } 354 t.cleanTableRows(table); 355 return; 356 }, dupRow: function(tplName, htmlblocks, id, extraData){ 357 var d = document, tplLine = d.getElementById(tplName), tableUser = tplLine.parentNode; 358 if(!tplLine) return; 359 trLine = tplLine.cloneNode(true); 360 tableUser.appendChild(trLine); 361 trLine.style.display = ""; 362 trLine.id = ""; 363 if(id){ 364 trLine.id = id; 365 } 366 for(var i = tplLine.cells.length - 1; i >= 0; i--){ 367 if(trLine.cells[i]){ 368 for(var k in htmlblocks){ 369 trLine.cells[i].innerHTML = trLine.cells[i].innerHTML.replace(new RegExp("{" + k + "}", "g"), htmlblocks[k]); 370 trLine.cells[i].innerHTML = trLine.cells[i].innerHTML.replace(new RegExp("%7B" + k + "%7D", "g"), htmlblocks[k]); 371 } 372 if(extraData){ 373 for(var k in extraData){ 374 trLine.cells[i].innerHTML = trLine.cells[i].innerHTML.replace(new RegExp('{' + k + '}', 'g'), extraData[k]); 375 trLine.cells[i].innerHTML = trLine.cells[i].innerHTML.replace(new RegExp('%7B' + k + '%7D', 'g'), extraData[k]); 376 } 377 } 378 } 379 } 380 if(tplLine.className == "row0") tplLine.className = "row1";else if(tplLine.className == "row1") tplLine.className = "row0"; 381 }, cleanTableRows: function(id){ 382 var d = document, el = id; 383 if(typeof(id) == "string"){ 384 el = d.getElementById(id); 385 } 386 if(el == null || el.tagName.toLowerCase() != 'table'){ 387 return; 388 } 389 390 var k = 0, c = '', line = null, lines = el.getElementsByTagName('tr'); 391 for(var i = 0; i < lines.length; i++){ 392 line = lines[i]; 393 if(line.style.display != "none"){ 394 c = ' ' + line.className + ' '; 395 if(c.indexOf(' row0 ') >= 0 || c.indexOf(' row1 ') >= 0){ 396 line.className = c.replace(' row' + (1 - k) + ' ', ' row' + k + ' ').replace(/^\s*|\s*$/g, ''); 397 k = 1 - k; 398 } 399 } 400 } 401 }, checkRow: function(id){ 402 var t = this, d = document, el = id; 403 if(typeof(id) == "string"){ 404 el = d.getElementById(id); 405 } 406 if(el == null || el.tagName.toLowerCase() != 'input'){ 407 return; 408 } 409 if(this.clicked){ 410 this.clicked = null; 411 t.isChecked(el); 412 return; 413 } 414 el.checked = !el.checked; 415 t.isChecked(el); 416 }
416, isChecked: function(id, cancel){ 417 var d = document, el = id; 418 if(typeof(id) == "string"){ 419 el = d.getElementById(id); 420 } 421 if(el == null || el.tagName.toLowerCase() != 'input'){ 422 return; 423 } 424 if(el.form.boxchecked){ 425 if(el.checked){ 426 el.form.boxchecked.value++; 427 }else{ 428 el.form.boxchecked.value--; 429 } 430 } 431 }, checkAll: function(checkbox, stub){ 432 stub = stub || 'cb'; 433 if(checkbox.form){ 434 var cb = checkbox.form, c = 0; 435 for(var i = 0, n = cb.elements.length; i < n; i++){ 436 var e = cb.elements[i]; 437 if(e.type == checkbox.type){ 438 if((stub && e.id.indexOf(stub) == 0) || !stub){ 439 e.checked = checkbox.checked; 440 c += (e.checked == true ? 1 : 0); 441 } 442 } 443 } 444 if(cb.boxchecked){ 445 cb.boxchecked.value = c; 446 } 447 return true; 448 } 449 return false; 450 }, submitbutton: function(pressbutton) { 451 acymailing.submitform(pressbutton); 452 }, submitform: function(task, form, extra){ 453 var d = document; 454 if(typeof form == 'string'){ 455 var f = d.getElementById(form); 456 if(!f){ 457 f = d.getElementByName(form); 458 } 459 if(!f){ 460 return true; 461 } 462 form = f; 463 } 464 465 if (!form) { 466 form = document.getElementById('adminForm'); 467 } 468 469 if(task){ 470 form.task.value = task; 471 } 472 if(typeof form.onsubmit == 'function'){ 473 form.onsubmit(event); 474 } 475 form.submit(); 476 return false; 477 }, get: function(elem, target){ 478 window.Oby.xRequest(elem.getAttribute('href'), {update: target}); 479 return false; 480 }, form: function(elem, target){ 481 var data = window.Oby.getFormData(target); 482 window.Oby.xRequest(elem.getAttribute('href'), {update: target, mode: 'POST', data: data}); 483 return false; 484 }, tabSelect: function(m, c, id){ 485 var d = document, sub = null; 486 if(typeof m == 'string'){ 487 m = d.getElementById(m); 488 } 489 if(typeof id == 'string'){ 490 id = d.getElementById(id); 491 } 492 sub = m.getElementsByTagName('div'); 493 for(var i = sub.length - 1; i >= 0; i--){ 494 if(sub[i].getAttribute('class') == c){ 495 sub[i].style.display = 'none'; 496 } 497 } 498 id.style.display = ''; 499 }, getOffset: function(el){ 500 var x = 0, y = 0; 501 while(el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)){ 502 x += el.offsetLeft - el.scrollLeft; 503 y += el.offsetTop - el.scrollTop; 504 el = el.offsetParent; 505 } 506 return {top: y, left: x}; 507 }, 508 openpopup: function(url, width, height){ 509 if(document.getElementById('acymailingpopupshadow') !== null) return; 510 var shadow = document.createElement('div'); 511 shadow.id = 'acymailingpopupshadow'; 512 shadow.onclick = function(){ acymailing.closeBox(); }; 513 document.getElementsByTagName('body')[0].appendChild(shadow); 514 515 var closecross = document.createElement('div'); 516 closecross.id = 'closepop'; 517 closecross.onclick = function(){ acymailing.closeBox(); }; 518 519 var iframe = document.createElement('iframe'); 520 iframe.src = url; 521 522 var container = document.createElement('div'); 523 container.id = 'acymailingpopup'; 524 525 if(width == 0){ 526 container.style.width = '82%'; 527 container.style.height = '84%'; 528 container.style.left = (window.innerWidth*9/100)+'px'; 529 container.style.top = (window.innerHeight*2/25)+'px'; 530 }else { 531 container.style.width = width + 'px'; 532 container.style.height = height + 'px'; 533 container.style.left = ((window.innerWidth - width) / 2)+'px'; 534 container.style.top = ((window.innerHeight - height) / 2)+'px'; 535 } 536 537 document.getElementsByTagName('body')[0].appendChild(shadow); 538 container.appendChild(closecross); 539 container.appendChild(iframe); 540 document.getElementsByTagName('body')[0].appendChild(container); 541 }, 542 closeBox: function(parent) { 543 var d = document; 544 if(parent){ 545 d = window.parent.document; 546 } 547 try { 548 var popup = d.getElementById('acymailingpopup'); 549 popup.parentNode.removeChild(popup); 550 var shadow = d.getElementById('acymailingpopupshadow'); 551 shadow.parentNode.removeChild(shadow); 552 } catch(err) {} 553 }, 554 tableOrdering: function(order, dir, task){ 555 var form = document.adminForm; 556 557 form.filter_order.value = order; 558 form.filter_order_Dir.value = dir; 559 acymailing.submitform(task, form); 560 }, 561 setOnclickPopup: function(element, url, width, height){ 562 elem = document.getElementById(element); 563 564 elem.removeAttribute("onclick"); 565 elem.onclick = function(){ 566 acymailing.openpopup(url, width, height); return false; 567 }; 568 } 569 }; 570
571 if((typeof(window.Oby) == 'undefined') || window.Oby.version < Oby.version){ 572 window.Oby = Oby; 573 window.obscurelighty = Oby; 574 } 575 window.acymailing = acymailing; 576})(); 577 578function acymailing_initTooltips(){ 579 var tooltips = document.querySelectorAll(".acymailingtooltip"); 580 581 for (var i = 0; i < tooltips.length; i++) { 582 tooltips[i].addEventListener("mouseover", function (event) { 583 var tooltiptext = this.getElementsByClassName("acymailingtooltiptext")[0]; 584 585 if(this.parentElement.className == 'overviewbubble') { 586 tooltiptext.style.width = "140px"; 587 tooltiptext.style.top = "-50px"; 588 tooltiptext.style.left = "-65px"; 589 590 if (event.clientX - 65 < 0) tooltiptext.style.left = '10px'; 591 }else{ 592 var newTop = event.clientY - tooltiptext.clientHeight - 5; 593 if(newTop < 0) newTop = 0; 594 595 var newleft = event.clientX - tooltiptext.clientWidth/2; 596 if(newleft < 0) newleft = 0; 597 tooltiptext.style.top = newTop + "px"; 598 tooltiptext.style.left = newleft + "px"; 599 } 600 }); 601 } 602} 603 604document.addEventListener('DOMContentLoaded', function(){ 605 acymailing_initTooltips(); 606}); 607
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.