1jQuery(document).ready(function ($) { 2 3 if ($('[data-ajaxloadcontent]').length > 0) { 4 _pazerAjaxLoadContent(); 5 } 6 7 /* ========================= 8 OWL dots position 9 ========================= */ 10 var moveOwlControllerPosition = function () { 11 var img = document.getElementById('nd_pic0'); 12 if (document.body.clientWidth < 992 || !img) { 13 return; 14 } 15 16 var owlDots = document.querySelector('#main_banners .owl-dots'); 17 if (!owlDots) return; 18 19 var span = owlDots.querySelector('span'); 20 owlDots.style.top = 50 + 'px'; 21 }; 22 23 var owl = $('#main_banners .owl-carousel'); 24 owl.on('initialized.owl.carousel', function (event) { 25 setTimeout(function () { 26 moveOwlControllerPosition(); 27 var mb = document.querySelector('#main_banners'); 28 if (mb) mb.style.opacity = 1; 29 }, 1500); 30 }); 31 32 window.addEventListener('resize', function (event) { 33 moveOwlControllerPosition(); 34 }, true); 35 36 /* ========================= 37 Autocomplete 38 ========================= */ 39 var setAutocomplete = function (k, item) { 40 var $item = $(item), 41 url = item.dataset.autocomplete, 42 minLength = 2, 43 additionaTargetId = item.dataset.additionaltargetbyid; 44 45 $item.autocomplete({ 46 source: url, 47 minLength: minLength, 48 select: function (event, ui) { 49 if (typeof (additionaTargetId) === 'string') { 50 $('#' + additionaTargetId).val(ui.item.value); 51 } 52 $item.val(ui.item.label); 53 return false; 54 } 55 }); 56 }; 57 58 $('[data-autocomplete]').each(setAutocomplete); 59 60 /* ============================================================ 61 REGISTER helpers 62 ============================================================ */ 63 64 function isFormRequiredFilled($form) { 65 var ok = true; 66 67 $form.find('[required]').each(function () { 68 var el = this; 69 var type = (el.type || '').toLowerCase(); 70 71 if (type === 'checkbox' || type === 'radio') { 72 if (!el.checked) ok = false; 73 return ok; 74 } 75 76 var v = $(el).val(); 77 if (typeof v !== 'string') v = '' + (v || ''); 78 if ($.trim(v) === '') ok = false; 79 80 return ok; 81 }); 82 83 return ok; 84 } 85 86 function updateRegisterButtonState() { 87 var $form = $('#UserRegisterForm'); 88 var $btn = $('#RegisterSubmitBtn'); 89 if ($form.length === 0 || $btn.length === 0) return; 90 91 if ($form.data('is_submitting') === 1) { 92 $btn.prop('disabled', true); 93 return; 94} 95 96 var errors = 97 ($form.data('error_username') || 0) + 98 ($form.data('error_email') || 0) + 99 ($form.data('error_password1') || 0) + 100 ($form.data('error_password2') || 0) + 101 ($form.data('error_first_name') || 0) + 102 ($form.data('error_last_name') || 0); 103 104 var requiredOk = isFormRequiredFilled($form); 105 106 // reCAPTCHA: jeÅli jest obecna, token musi byÄ niepusty 107 var recaptchaOk = true; 108 var $rec = $form.find('[name="g-recaptcha-response"]').first(); 109 if ($rec.length > 0) { 110 recaptchaOk = ($.trim($rec.val() || '') !== ''); 111 } 112 113 $btn.prop('disabled', !(errors === 0 && requiredOk && recaptchaOk)); 114 } 115 116 function registerErrorsCount($form) { 117 return ( 118 ($form.data('error_username') || 0) + 119 ($form.data('error_email') || 0) + 120 ($form.data('error_password1') || 0) + 121 ($form.data('error_password2') || 0) + 122 ($form.data('error_first_name') || 0) + 123 ($form.data('error_last_name') || 0) 124 ); 125 } 126 127 /* ============================================================ 128 GLOBAL submit handler (ALL forms) 129 ============================================================ */ 130 131 var submitForm = function (e) { 132 var $form = $(this); 133 134 /* ============================================================ 135 REGISTER: przejmujemy submit, żeby NIE kasowaÅo dymków 136 i NIE scrollowaÅo do góry (omijamy globalne walidatory) 137 ============================================================ */ 138 if ($form.attr('id') === 'UserRegisterForm') { 139 140 // jeÅli to natywny submit (wywoÅany this.submit()), przepuÅÄ 141 if ($form.data('native_submit') === 1) { 142 return true; 143 } 144 145 e.preventDefault(); 146 e.stopPropagation(); 147 if (e.stopImmediatePropagation) e.stopImmediatePropagation(); 148 149 // zablokuj czyszczenie dymków w trakcie kliku submit 150 $form.data('is_submitting', 1); 151 152 var errors = registerErrorsCount($form); 153 var requiredOk = isFormRequiredFilled($form); 154 155 var recaptchaOk = true; 156 var $rec = $form.find('[name="g-recaptcha-response"]').first(); 157 if ($rec.length > 0) { 158 recaptchaOk = ($.trim($rec.val() || '') !== ''); 159 } 160 161 // jeÅli coÅ nie gra -> nie wysyÅaj, nie skacz do góry 162 if (!(errors === 0 && requiredOk && recaptchaOk)) { 163 164 $('.js_valid_robot').remove(); 165 if (!recaptchaOk) { 166 $('<p class="alert alert-danger p-2 mt-1 js_valid_robot">Prosimy zaznaczyÄ, że nie jesteÅ robotem</p>') 167 .insertAfter($form.find('#RegisterSubmitBtn')); 168 } 169 170 $form.data('is_submitting', 0); 171 updateRegisterButtonState(); 172 return false;
173 } 174 175 // OK -> natywny submit (bez jQuery submit-chain) 176 $form.data('native_submit', 1); 177 178 var $btn = $('#RegisterSubmitBtn'); 179 if ($btn.length) { 180 if (!$btn.data('orig_html')) $btn.data('orig_html', $btn.html()); 181 $btn.prop('disabled', true).html('RejestrujÄ twoje konto'); 182 } 183 184 this.submit(); 185 return false; 186 } 187 188 /* ============================================================ 189 reszta: Twoja stara logika dla innych formularzy 190 ============================================================ */ 191 192 e.stopPropagation(); 193 194 if (!_pasazerHelperFormFieldValid(this)) { 195 return false; 196 } 197 198 switch ($form.attr('id')) { 199 case 'RateRateForm': 200 var valid_date = false; 201 var $rate = $form.find('.js_rate_radio'); 202 $form.find('.text-danger').remove(); 203 $rate.each(function (a, b) { 204 if (b.checked) { 205 valid_date = true; 206 } 207 }); 208 if (!valid_date) { 209 $('<small class="text-danger">Wystaw ocenÄ</small>').insertAfter($form.find('.stars').first()); 210 return false; 211 } 212 break; 213 } 214 215 switch ($form.attr('name')) { 216 case 'register_form': 217 // tu normalnie już nie wchodzimy (bo register przejmujemy powyżej) 218 var errorRegister = ($form.data('error_username') || 0) + ($form.data('error_email') || 0); 219 if (errorRegister > 0) { 220 return false; 221 } 222 break; 223 224 case 'newsletter_form': 225 case 'newsletter_settings': 226 227 $form.find('.text-danger').remove(); 228 229 var $inputCheck0 = $form.find('input[name="data[Newsletter][policy]"]'); 230 var $inputCheck1 = $('input[name="data[Newsletter][send_sumup]"]'); 231 var $inputCheck2 = $('input[name="data[Newsletter][send_newnews]"]'); 232 var $inputCheck3 = $('input[name="data[Newsletter][send_pro]"]'); 233 234 var check1 = $inputCheck1.prop('checked'); 235 var check2 = $inputCheck2.prop('checked'); 236 var check3 = $inputCheck3.prop('checked'); 237 238 var valid = $inputCheck0.prop('checked'); 239 240 if (!valid) { 241 $('<small class="text-danger">Wyraź zgodÄ</small>').appendTo($inputCheck0.parent('label')); 242 } 243 244 if (!check1 && !check2 && !check3) { 245 valid = false; 246 $('<small class="text-danger">Wybierz przynajmniej jednÄ z opcji</small>').appendTo($inputCheck1.parent('label')); 247 $('<small class="text-danger">Wybierz przynajmniej jednÄ z opcji</small>').appendTo($inputCheck2.parent('label')); 248 $('<small class="text-danger">Wybierz przynajmniej jednÄ z opcji</small>').appendTo($inputCheck3.parent('label')); 249 } 250 251 if (!valid) { 252 return false; 253 } 254 255 break; 256 } 257 258 switch ($form.attr('name')) { 259 case 'service_search': 260 location.href = $form.attr('action') + $form.find('[name=phrase]').val().replace(/ /g,'+'); 261 return true; 262 263 default: 264 var $captcha = $form.find('[data-gcaptchafield]'); 265 if ($captcha.length === 0) { 266 return true; 267 } 268 269 var $recaptcha2 = $form.find('[name=g-recaptcha-response]').first(); 270 271 if (typeof ($recaptcha2.val()) === 'string' && $.trim($recaptcha2.val()) !== '') { 272 return true; 273 } else { 274 $('.js_valid_robot').remove(); 275 var message = '<p class="alert alert-danger p-2 mt-1 js_valid_robot">Prosimy zaznaczyÄ, że nie jesteÅ robotem</p>'; 276 $(message).insertAfter($form.find('button[type="submit"]')); 277 } 278 } 279 280 return false;
281 }; 282 283 $('body').on('submit', 'form', submitForm); 284 285 /* ============================================================ 286 REGISTER flags init 287 ============================================================ */ 288 $('#UserRegisterForm').data('error_username', 0); 289 $('#UserRegisterForm').data('error_email', 0); 290 $('#UserRegisterForm').data('error_password1', 0); 291 $('#UserRegisterForm').data('error_password2', 0); 292 $('#UserRegisterForm').data('error_first_name', 0); 293 $('#UserRegisterForm').data('error_last_name', 0); 294 295 296 297// ============================================================ 298// REGISTER: forbidden words in username (reserved + profanity) 299// ============================================================ 300 301var REGISTER_FORBIDDEN_WORDS = [ 302 // reserved 303 'admin', 'administrator', 'root', 'moderator', 'support', 'helpdesk', 304 'security', 'staff', 'system', 'owner', 'webmaster', 'pasazer', 'redakcja', 305 306 // profanity (PL) â dopisuj kolejne wedÅug uznania 307 'kurwa', 'chuj', 'cipa', 'pizda', 'jebac', 'jebany', 'pierdol', 'skurw', 'dziwka' 308]; 309 310function normalizeUsernameForFilter(s) { 311 s = (s || '').toLowerCase(); 312 313 // proste leetspeak (bo i tak masz tylko a-z0-9._-) 314 s = s.replace(/0/g, 'o') 315 .replace(/1/g, 'i') 316 .replace(/3/g, 'e') 317 .replace(/4/g, 'a') 318 .replace(/5/g, 's') 319 .replace(/7/g, 't'); 320 321 // usuÅ separatory do obchodzenia filtrów 322 s = s.replace(/[._-\s]+/g, ''); 323 324 return s; 325} 326 327function usernameContainsForbiddenWord(username) { 328 var norm = normalizeUsernameForFilter(username); 329 330 for (var i = 0; i < REGISTER_FORBIDDEN_WORDS.length; i++) { 331 var w = REGISTER_FORBIDDEN_WORDS[i]; 332 if (!w) continue; 333 334 var wn = normalizeUsernameForFilter(w); 335 336 if (norm.indexOf(wn) !== -1) { 337 return w; 338 } 339 } 340 return false; 341} 342 343 344 /* ============================================================ 345 REGISTER: USERNAME live validation + availability 346 ============================================================ */ 347 var usernameSel = '#UserRegisterForm input[name="data[User][username]"]'; 348 349 $('body').off('input.usernameCheck change.usernameCheck', usernameSel); 350 $('body').on('input.usernameCheck change.usernameCheck', usernameSel, function (ev) { 351 ev.stopPropagation(); 352 353 var $f = $(this); 354 var $form = $('#UserRegisterForm'); 355 356 if ($form.data('is_submitting') !== 1) { 357 $f.nextAll('small.js_username_msg').remove(); 358 } 359 360 var raw = $f.val(); 361 if (typeof raw !== 'string') raw = ''; 362 var v = $.trim(raw).toLowerCase(); 363 364 if ($f.val() !== v) $f.val(v); 365 366 367 368 if (/\s/.test(v)) { 369 $form.data('error_username', 1); 370 $('<small class="text-danger js_username_msg">Login nie może zawieraÄ spacji.</small>').insertAfter($f); 371 updateRegisterButtonState(); 372 return; 373 } 374 375 if (v.length < 5 || v.length > 20) { 376 $form.data('error_username', 1); 377 $('<small class="text-danger js_username_msg">Login musi mieÄ od 5 do 20 znaków.</small>').insertAfter($f); 378 updateRegisterButtonState(); 379 return; 380 } 381 382 if (!/^[a-z0-9._-]+$/.test(v)) { 383 $form.data('error_username', 1); 384 $('<small class="text-danger js_username_msg">Dozwolone znaki: a-z, 0-9 oraz . _ -</small>').insertAfter($f); 385 updateRegisterButtonState(); 386 return; 387 } 388 389 if (/^[._-]|[._-]$/.test(v)) { 390 $form.data('error_username', 1); 391 $('<small class="text-danger js_username_msg">Login nie może zaczynaÄ ani koÅczyÄ siÄ znakiem . _ -</small>').insertAfter($f); 392 updateRegisterButtonState(); 393 return; 394 } 395 396 if (/[._-]{2,}/.test(v)) { 397 $form.data('error_username', 1); 398 $('<small class="text-danger js_username_msg">Nie używaj kilku znaków . _ - obok siebie.</small>').insertAfter($f); 399 updateRegisterButtonState(); 400 return; 401 } 402 403 var hit = usernameContainsForbiddenWord(v); 404 if (hit) { 405 $form.data('error_username', 1); 406 $('<small class="text-danger js_username_msg">Login zawiera niedozwolone sÅowo.</small>').insertAfter($f); 407 updateRegisterButtonState(); 408 return; 409 } 410 411 $form.data('error_username', 0); 412 $('<small class="text-muted js_username_msg">Sprawdzam dostÄpnoÅÄ...</small>').insertAfter($f); 413 updateRegisterButtonState(); 414 415 $.ajax({ 416 url: '/users/check_availability_username/' + encodeURIComponent(v), 417 cache: false, 418 dataType: 'json', 419 success: function (data) { 420 if ($form.data('is_submitting') !== 1) { 421 $f.nextAll('small.js_username_msg').remove(); 422 } 423 424 if (data && parseInt(data.count, 10) > 0) { 425 $form.data('error_username', 1); 426 $('<small class="text-danger js_username_msg">Nazwa jest już zajÄta, wybierz innÄ .</small>').insertAfter($f); 427 } else { 428 $form.data('error_username', 0); 429 $('<small class="text-success js_username_msg">Login dostÄpny i prawidÅowy â </small>').insertAfter($f); 430 } 431 updateRegisterButtonState(); 432 }, 433 error: function () { 434 if ($form.data('is_submitting') !== 1) { 435 $f.nextAll('small.js_username_msg').remove(); 436 } 437 $form.data('error_username', 1); 438 $('<small class="text-warning js_username_msg">Nie udaÅo siÄ sprawdziÄ dostÄpnoÅci. Spróbuj ponownie.</small>').insertAfter($f); 439 updateRegisterButtonState(); 440 } 441 }); 442 }); 443 444 /* ============================================================ 445 REGISTER: EMAIL live + availability 446 ============================================================ */ 447 var emailSel = '#UserRegisterForm input[name="data[User][email]"]'; 448 449 $('body').off('input.emailCheck change.emailCheck', emailSel); 450 $('body').on('input.emailCheck change.emailCheck', emailSel, function (ev) { 451 ev.stopPropagation(); 452 453 var $f = $(this); 454 var $form = $('#UserRegisterForm'); 455 456 if ($form.data('is_submitting') !== 1) { 457 $f.nextAll('small.js_email_msg').remove(); 458 } 459 460 var v = $.trim($f.val() || ''); 461 462 if (v.length < 6 || v.length > 120) { 463 $form.data('error_email', 1); 464 $('<small class="text-danger js_email_msg">Email musi mieÄ sensownÄ dÅugoÅÄ.</small>').insertAfter($f); 465 updateRegisterButtonState(); 466 return; 467 } 468 469 if (/\s/.test(v)) { 470 $form.data('error_email', 1); 471 $('<small class="text-danger js_email_msg">Email nie może zawieraÄ spacji.</small>').insertAfter($f); 472 updateRegisterButtonState(); 473 return; 474 } 475 476 var atPos = v.indexOf('@'); 477 if (atPos < 1 || atPos !== v.lastIndexOf('@')) { 478 $form.data('error_email', 1); 479 $('<small class="text-danger js_email_msg">Podaj poprawny adres e-mail.</small>').insertAfter($f); 480 updateRegisterButtonState(); 481 return; 482 } 483 484 var local = v.substring(0, atPos); 485 var domain = v.substring(atPos + 1); 486 487 if (!domain) { 488 $form.data('error_email', 1); 489 $('<small class="text-danger js_email_msg">Podaj domenÄ po znaku @ (np. example.com).</small>').insertAfter($f); 490 updateRegisterButtonState(); 491 return; 492 } 493 494 if (!/^[A-Za-z0-9.-]+$/.test(domain)) { 495 $form.data('error_email', 1); 496 $('<small class="text-danger js_email_msg">Domena zawiera niedozwolone znaki.</small>').insertAfter($f); 497 updateRegisterButtonState(); 498 return; 499 } 500 501 if (domain.indexOf('.') === -1 || domain.indexOf('..') !== -1) { 502 $form.data('error_email', 1); 503 $('<small class="text-danger js_email_msg">Podaj poprawnÄ domenÄ (np. example.com).</small>').insertAfter($f); 504 updateRegisterButtonState(); 505 return; 506 } 507 508 var parts = domain.split('.'); 509 var tld = parts[parts.length - 1]; 510 if (!/^[A-Za-z]{2,}$/.test(tld)) { 511 $form.data('error_email', 1); 512 $('<small class="text-danger js_email_msg">KoÅcówka domeny wyglÄ da niepoprawnie.</small>').insertAfter($f); 513 updateRegisterButtonState(); 514 return; 515 } 516 517 $form.data('error_email', 0); 518 $('<small class="text-muted js_email_msg">Sprawdzam dostÄpnoÅÄ...</small>').insertAfter($f); 519 updateRegisterButtonState(); 520 521 $.ajax({ 522 url: '/users/check_availability_email/' + encodeURIComponent(v), 523 cache: false, 524 dataType: 'json', 525 success: function (data) { 526 if ($form.data('is_submitting') !== 1) { 527 $f.nextAll('small.js_email_msg').remove(); 528 } 529 530 if (data && parseInt(data.count, 10) > 0) { 531 $form.data('error_email', 1); 532 $('<small class="text-danger js_email_msg">Email jest już zajÄty</small>').insertAfter($f); 533 } else { 534 $form.data('error_email', 0); 535 $('<small class="text-success js_email_msg">Email wyglÄ da poprawnie â </small>').insertAfter($f); 536 } 537 updateRegisterButtonState(); 538 }, 539 error: function () { 540 if ($form.data('is_submitting') !== 1) { 541 $f.nextAll('small.js_email_msg').remove(); 542 } 543 $form.data('error_email', 1); 544 $('<small class="text-warning js_email_msg">Nie udaÅo siÄ sprawdziÄ emaila. Spróbuj ponownie.</small>').insertAfter($f); 545 updateRegisterButtonState(); 546 } 547 }); 548 }); 549 550 /* ============================================================ 551 REGISTER: PASSWORD 1 552 ============================================================ */ 553 var pass1Sel = '#UserRegisterForm input[name="data[User][password1]"]'; 554 555 $('body').off('input.passCheck change.passCheck', pass1Sel); 556 $('body').on('input.passCheck change.passCheck', pass1Sel, function (ev) { 557 ev.stopPropagation(); 558 559 var $f = $(this); 560 var $form = $('#UserRegisterForm'); 561 562 if ($form.data('is_submitting') !== 1) { 563 $f.nextAll('small.js_pass_msg').remove(); 564 } 565 566 var v = $f.val() || ''; 567 if (typeof v !== 'string') v = ''; 568 569 if (v.length < 6) { 570 $form.data('error_password1', 1); 571 $('<small class="text-danger js_pass_msg">HasÅo musi mieÄ min. 6 znaków.</small>').insertAfter($f); 572 updateRegisterButtonState(); 573 return; 574 } 575 576 if (!/[a-z]/.test(v)) { 577 $form.data('error_password1', 1); 578 $('<small class="text-danger js_pass_msg">HasÅo musi zawieraÄ min. 1 maÅÄ literÄ.</small>').insertAfter($f); 579 updateRegisterButtonState(); 580 return; 581 } 582 583 if (!/[A-Z]/.test(v)) { 584 $form.data('error_password1', 1); 585 $('<small class="text-danger js_pass_msg">HasÅo musi zawieraÄ min. 1 wielkÄ literÄ.</small>').insertAfter($f); 586 updateRegisterButtonState(); 587 return; 588 } 589 590 if (!/[^A-Za-z0-9]/.test(v)) { 591 $form.data('error_password1', 1); 592 $('<small class="text-danger js_pass_msg">HasÅo musi zawieraÄ min. 1 znak specjalny.</small>').insertAfter($f); 593 updateRegisterButtonState(); 594 return; 595 } 596 597 $form.data('error_password1', 0); 598 $('<small class="text-success js_pass_msg">HasÅo wyglÄ da OK â </small>').insertAfter($f); 599 updateRegisterButtonState(); 600 }); 601 602 /* ============================================================ 603 REGISTER: FIRST NAME 604 ============================================================ */ 605 var firstSel = '#UserRegisterForm input[name="data[User][first_name]"]'; 606 607 $('body').off('input.nameCheck change.nameCheck', firstSel); 608 $('body').on('input.nameCheck change.nameCheck', firstSel, function (ev) { 609 ev.stopPropagation(); 610 611 var $f = $(this); 612 var $form = $('#UserRegisterForm'); 613 614 if ($form.data('is_submitting') !== 1) { 615 $f.nextAll('small.js_first_msg').remove(); 616 } 617 618 var v = $f.val() || ''; 619 if (typeof v !== 'string') v = ''; 620 v = $.trim(v).replace(/\s{2,}/g, ' '); 621 $f.val(v); 622 623 if (v.length < 2 || v.length > 40) { 624 $form.data('error_first_name', 1); 625 $('<small class="text-danger js_first_msg">ImiÄ: 2â40 znaków.</small>').insertAfter($f); 626 updateRegisterButtonState(); 627 return; 628 } 629 630 if (!/^[A-Za-zÄÄÄÅÅÃÅÅ¹Å»Ä ÄÄÅÅóÅźż' -]+$/.test(v)) { 631 $form.data('error_first_name', 1); 632 $('<small class="text-danger js_first_msg">ImiÄ zawiera niedozwolone znaki.</small>').insertAfter($f); 633 updateRegisterButtonState(); 634 return; 635 } 636 637 if (/^[ '\-]|[ '\-]$/.test(v)) { 638 $form.data('error_first_name', 1); 639 $('<small class="text-danger js_first_msg">ImiÄ nie może zaczynaÄ ani koÅczyÄ siÄ spacjÄ /\'/-.</small>').insertAfter($f); 640 updateRegisterButtonState(); 641 return; 642 } 643 644 if (/([ '\-])\1+/.test(v)) { 645 $form.data('error_first_name', 1); 646 $('<small class="text-danger js_first_msg">ImiÄ: usuÅ podwójne spacje / znaki.</small>').insertAfter($f); 647 updateRegisterButtonState(); 648 return; 649 } 650 651 $form.data('error_first_name', 0); 652 $('<small class="text-success js_first_msg">OK â </small>').insertAfter($f); 653 updateRegisterButtonState(); 654 }); 655 656 /* ============================================================ 657 REGISTER: LAST NAME 658 ============================================================ */ 659 var lastSel = '#UserRegisterForm input[name="data[User][last_name]"]'; 660
661 $('body').off('input.lastCheck change.lastCheck', lastSel); 662 $('body').on('input.lastCheck change.lastCheck', lastSel, function (ev) { 663 ev.stopPropagation(); 664 665 var $f = $(this); 666 var $form = $('#UserRegisterForm'); 667 668 if ($form.data('is_submitting') !== 1) { 669 $f.nextAll('small.js_last_msg').remove(); 670 } 671 672 var v = $f.val() || ''; 673 if (typeof v !== 'string') v = ''; 674 v = $.trim(v).replace(/\s{2,}/g, ' '); 675 $f.val(v); 676 677 if (v.length < 2 || v.length > 60) { 678 $form.data('error_last_name', 1); 679 $('<small class="text-danger js_last_msg">Nazwisko: 2â60 znaków.</small>').insertAfter($f); 680 updateRegisterButtonState(); 681 return; 682 } 683 684 if (!/^[A-Za-zÄÄÄÅÅÃÅÅ¹Å»Ä ÄÄÅÅóÅźż' -]+$/.test(v)) { 685 $form.data('error_last_name', 1); 686 $('<small class="text-danger js_last_msg">Nazwisko zawiera niedozwolone znaki.</small>').insertAfter($f); 687 updateRegisterButtonState(); 688 return; 689 } 690 691 if (/^[ '\-]|[ '\-]$/.test(v)) { 692 $form.data('error_last_name', 1); 693 $('<small class="text-danger js_last_msg">Nazwisko nie może zaczynaÄ ani koÅczyÄ siÄ spacjÄ /\'/-.</small>').insertAfter($f); 694 updateRegisterButtonState(); 695 return; 696 } 697 698 if (/([ '\-])\1+/.test(v)) { 699 $form.data('error_last_name', 1); 700 $('<small class="text-danger js_last_msg">Nazwisko: usuÅ podwójne spacje / znaki.</small>').insertAfter($f); 701 updateRegisterButtonState(); 702 return; 703 } 704 705 $form.data('error_last_name', 0); 706 $('<small class="text-success js_last_msg">OK â </small>').insertAfter($f); 707 updateRegisterButtonState(); 708 }); 709 710 /* ============================================================ 711 REGISTER: PASSWORD 2 confirm 712 ============================================================ */ 713 var pass2Sel = '#UserRegisterForm input[name="data[User][password2]"]'; 714 715 $('body').off('input.pass2Check change.pass2Check', pass2Sel); 716 $('body').on('input.pass2Check change.pass2Check', pass2Sel, function (ev) { 717 ev.stopPropagation(); 718 719 var $f2 = $(this); 720 var $form = $('#UserRegisterForm'); 721 722 if ($form.data('is_submitting') !== 1) { 723 $f2.nextAll('small.js_pass2_msg').remove(); 724 } 725 726 var p1 = $(pass1Sel).val() || ''; 727 var p2 = $f2.val() || ''; 728 729 if (p2.length < 1) { 730 $form.data('error_password2', 1); 731 $('<small class="text-danger js_pass2_msg">Powtórz hasÅo.</small>').insertAfter($f2); 732 updateRegisterButtonState(); 733 return; 734 } 735 736 if (p1 !== p2) { 737 $form.data('error_password2', 1); 738 $('<small class="text-danger js_pass2_msg">HasÅa nie sÄ identyczne.</small>').insertAfter($f2); 739 updateRegisterButtonState(); 740 return; 741 } 742 743 $form.data('error_password2', 0); 744 $('<small class="text-success js_pass2_msg">HasÅa sÄ zgodne â </small>').insertAfter($f2); 745 updateRegisterButtonState(); 746 }); 747 748 /* ============================================================ 749 REGISTER: live button state recalculation 750 ============================================================ */ 751 $('body').on('input change', '#UserRegisterForm input, #UserRegisterForm select', function () { 752 updateRegisterButtonState(); 753 }); 754 755 // watcher reCAPTCHA token (checkbox nie zawsze triggeruje change/input) 756 setInterval(function () { 757 updateRegisterButtonState(); 758 }, 500); 759 760 // start 761 updateRegisterButtonState(); 762 763 /* ============================================================ 764 REGISTER: anti double-submit + loading state 765 (ten handler nie może przeszkadzaÄ native_submit) 766 ============================================================ */ 767 $('body').off('submit.registerLock', '#UserRegisterForm'); 768 $('body').on('submit.registerLock', '#UserRegisterForm', function (ev) { 769 770 // jeÅli idziemy natywnie (this.submit()), nie przeszkadzaj 771 if ($(this).data('native_submit') === 1) { 772 return true; 773 } 774 775 var $form = $('#UserRegisterForm'); 776 var $btn = $('#RegisterSubmitBtn'); 777 778 if ($btn.length === 0) { 779 return true; 780 } 781 782 if ($form.data('is_submitting') === 1) { 783 ev.preventDefault(); 784 return false;
785 } 786 787 if ($btn.prop('disabled')) { 788 ev.preventDefault(); 789 return false; 790 } 791 792 $form.data('is_submitting', 1); 793 794 $btn.prop('disabled', true); 795 796 if (!$btn.data('orig_html')) { 797 $btn.data('orig_html', $btn.html()); 798 } 799 800 $btn.html('RejestrujÄ twoje konto'); 801 802 return true; 803 }); 804 805 /* ============================================================ 806 pozostaÅe Twoje eventy 807 ============================================================ */ 808 809 $('body').on('click', '[data-reportdata]', function (e) { 810 var data = $(this).data('reportdata'); 811 $('#report_messagf3rjcefuh').data('type', data.type).data('id', data.id); 812 }); 813 814 $('body').on('click', '[data-skipflightinfo]', function (e) { 815 e.stopPropagation(); 816 e.preventDefault(); 817 818 var id = parseInt(this.dataset.skipflightinfo, 10); 819 var $row = $('#skip_fiueh742yq_' + id); 820 821 $.ajax({ 822 url: '/flights/ajaxSkip/' + id, 823 cache: false 824 }).done(function (respond) { 825 $row.fadeOut('slow', function () { 826 $row.remove(); 827 }); 828 }); 829 830 return false; 831 }); 832 833 $('body').on('click', '[data-reportsend]', function (e) { 834 var $report = $('#report_messagf3rjcefuh'); 835 var message = $report.val(); 836 $('.report_message_error').remove(); 837 838 if ($.trim(message).length < 5) { 839 $report.after('<small class="report_message_error text-danger">min. 5 znaków</small>'); 840 return false; 841 } 842 843 $.ajax({ 844 url: '/flags/ajaxAdd/', 845 method: 'post', 846 data: { id: $report.data('id'), what: $report.data('type'), comment: $report.val() } 847 }).done(function (msg) { 848 $report.data('id', 0).data('type', '').val(''); 849 $('.report_message_error').remove(); 850 $('[data-reportmodalclose]').click(); 851 }); 852 }); 853 854 $('.jsexpand').hover( 855 function () { $(this).addClass('expand'); }, 856 function () { $(this).removeClass('expand'); } 857 ); 858 859 _pasazerSetJqueryCallendar(); 860 861 862 863 /* ============================================================ 864 RESET PASSWORD: PASSWORD 1 865 ============================================================ */ 866 var resetPass1Sel = '#UserForgottenPasswordForm3 input[name="data[User][password1]"]'; 867 868 $('body').off('input.resetPassCheck change.resetPassCheck', resetPass1Sel); 869 $('body').on('input.resetPassCheck change.resetPassCheck', resetPass1Sel, function (ev) { 870 ev.stopPropagation(); 871 872 var $f = $(this); 873 $f.nextAll('small.js_pass_msg').remove(); 874 875 var v = $f.val() || ''; 876 if (typeof v !== 'string') v = ''; 877 878 if (v.length < 6) { 879 $f.addClass('is-invalid'); 880 $('<small class="text-danger js_pass_msg">HasÅo musi mieÄ min. 6 znaków.</small>').insertAfter($f); 881 return; 882 } 883 if (!/[a-z]/.test(v)) { 884 $f.addClass('is-invalid'); 885 $('<small class="text-danger js_pass_msg">HasÅo musi zawieraÄ min. 1 maÅÄ literÄ.</small>').insertAfter($f); 886 return; 887 } 888 if (!/[A-Z]/.test(v)) { 889 $f.addClass('is-invalid'); 890 $('<small class="text-danger js_pass_msg">HasÅo musi zawieraÄ min. 1 wielkÄ literÄ.</small>').insertAfter($f); 891 return; 892 } 893 if (!/[^A-Za-z0-9]/.test(v)) { 894 $f.addClass('is-invalid'); 895 $('<small class="text-danger js_pass_msg">HasÅo musi zawieraÄ min. 1 znak specjalny.</small>').insertAfter($f); 896 return; 897 } 898 $f.removeClass('is-invalid'); 899 $('<small class="text-success js_pass_msg">HasÅo wyglÄ da OK â </small>').insertAfter($f); 900 }); 901 902 903 904 /* ============================================================ 905 RESET PASSWORD: PASSWORD 2 906 ============================================================ */ 907 var resetPass2Sel = '#UserForgottenPasswordForm3 input[name="data[User][password2]"]'; 908 909 $('body').off('input.resetPass2Check change.resetPass2Check', resetPass2Sel); 910 $('body').on('input.resetPass2Check change.resetPass2Check', resetPass2Sel, function (ev) { 911 ev.stopPropagation(); 912 913 var $f2 = $(this); 914 $f2.nextAll('small.js_pass2_msg').remove(); 915 916 var p1 = $('#UserForgottenPasswordForm3 input[name="data[User][password1]"]').val() || ''; 917 var p2 = $f2.val() || ''; 918 919 if (p2.length < 1) { 920 $f2.addClass('is-invalid'); 921 $('<small class="text-danger js_pass2_msg">Powtórz hasÅo.</small>').insertAfter($f2); 922 return; 923 } 924 925 if (p1 !== p2) { 926 $f2.addClass('is-invalid'); 927 $('<small class="text-danger js_pass2_msg">HasÅa nie sÄ identyczne.</small>').insertAfter($f2); 928 return; 929 } 930 931 $f2.removeClass('is-invalid'); 932 $('<small class="text-success js_pass2_msg">HasÅa sÄ zgodne â </small>').insertAfter($f2); 933 }); 934 935});
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.