1/** 2 * @file 3 * Global utilities. 4 * 5 */ 6(function (Drupal) { 7 "use strict"; 8 9 Drupal.behaviors.miskolc = { 10 attach: function (context, settings) {}, 11 }; 12 13})(Drupal); 14 15jQuery(document).ready(function () { 16 // AT-TOP START 17 18 // EllenÅrizzük az oldal görgetését 19 jQuery(window).on("scroll", function () { 20 if (jQuery(window).scrollTop() === 0) { 21 // Ha az oldal tetején vagyunk, hozzáadjuk a class-t 22 jQuery("body").addClass("at-top"); 23 } else { 24 // Ha nem vagyunk az oldal tetején, eltávolÃtjuk a class-t 25 jQuery("body").removeClass("at-top"); 26 } 27 }); 28 29 // Inicializáláskor is ellenÅrizzük a scroll pozÃciót 30 if (jQuery(window).scrollTop() === 0) { 31 jQuery("body").addClass("at-top"); 32 } else { 33 jQuery("body").removeClass("at-top"); 34 } 35 36 // AT-TOP END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 37 38 // FEJÃC LOGà CSERÃJE STRAT 39 40 var originalImage = 41 "/themes/custom/miskolc/img/frontpage/miskolc_logo_fekvo_szines_inverz_RGB.svg"; 42 var newImage = 43 "/themes/custom/miskolc/img/frontpage/miskolc_logo_fekvo_szines_RGB.svg"; // Ãj kép, ha az .at-top eltűnik 44 45 function checkBodyClass() { 46 if (jQuery("body").hasClass("at-top")) { 47 // Ha a body rendelkezik az .at-top class-szal, visszaállÃtjuk az eredeti képet 48 jQuery(".navbar-brand img").attr("src", originalImage); 49 } else { 50 // Ha a body nem rendelkezik az .at-top class-szal, lecseréljük a képet 51 jQuery(".navbar-brand img").attr("src", newImage); 52 } 53 } 54 55 // Görgetés figyelése 56 jQuery(window).on("scroll", function () { 57 checkBodyClass(); 58 }); 59 60 // Betöltéskor is ellenÅrizzük 61 checkBodyClass(); 62 63 // FEJÃC LOGà CSERÃJE END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 64 65 // CÃMKEFELHÅ SZÃNEINEK BEÃLLÃTÃSA 66 67 // Végigmegy a tag-cloud-element elemeken 68 jQuery(".tag-cloud-element div a").each(function () { 69 // Keresd meg a class attribútumokat 70 var classes = jQuery(this).attr("class").split(" "); 71 72 classes.forEach(function (cls) { 73 if (cls.startsWith("tag-bg-#")) { 74 // Kivágja a szÃnkódot a tag-bg-# osztályból és CSS-ként beállÃtja a háttérszÃnt 75 var bgColor = cls.replace("tag-bg-#", "#"); 76 jQuery(this).css("background-color", bgColor); 77 } else if (cls.startsWith("tag-color-#")) { 78 // Kivágja a szÃnkódot a tag-color-# osztályból és CSS-ként beállÃtja a szöveg szÃnét 79 var fontColor = cls.replace("tag-color-#", "#"); 80 jQuery(this).css("color", fontColor); 81 } 82 }, this); // Az each-ben megadott kontextust átadjuk 83 }); 84 85 // HOVER EFFECT BEÃLLÃTÃSA 86 87 // Minden gombhoz tároljuk az eredeti háttérszÃnt a hover elÅtt 88 jQuery(".tag-cloud-element a").each(function () { 89 var originalBgColor = jQuery(this).css("background-color"); 90 jQuery(this).data("original-bg", originalBgColor); // Eredeti szÃn mentése adatként 91 }); 92 93 // Hover effektus beállÃtása minden gombra 94 jQuery(".tag-cloud-element a").hover( 95 function () { 96 // Hover eseménynél az eredeti szÃn lekérése 97 var originalBgColor = jQuery(this).data("original-bg"); 98 99 // Sötétebb szÃn generálása az aktuális szÃnbÅl 100 var darkerColor = darkenColor(originalBgColor, -20); 101 102 // Hover esetén a sötétebb szÃn beállÃtása 103 jQuery(this).css("background-color", darkerColor); 104 }, 105 function () { 106 // Az egér elhagyásakor visszaállÃtjuk az eredeti szÃnt 107 var originalBgColor = jQuery(this).data("original-bg"); 108 jQuery(this).css("background-color", originalBgColor); 109 } 110 ); 111 112 // Segédfüggvény: RGB szÃnt hexadecimálissá alakÃt 113 function rgbToHex(rgb) { 114 var rgbValues = rgb.match(/\d+/g); 115 return ( 116 "#" + 117 ( 118 (1 << 24) + 119 (parseInt(rgbValues[0]) << 16) + 120 (parseInt(rgbValues[1]) << 8) + 121 parseInt(rgbValues[2]) 122 ) 123 .toString(16) 124 .slice(1) 125 .toUpperCase() 126 ); 127 } 128 129 // Segédfüggvény: SzÃn világosÃtása/sötétÃtése 130 function adjustBrightness(hex, amount) { 131 var usePound = false;
132 133 if (hex[0] == "#") { 134 hex = hex.slice(1); 135 usePound = true; 136 } 137 138 var num = parseInt(hex, 16); 139 140 var r = (num >> 16) + amount; 141 var g = ((num >> 8) & 0x00ff) + amount; 142 var b = (num & 0x0000ff) + amount; 143 144 if (r > 255) r = 255; 145 else if (r < 0) r = 0; 146 147 if (g > 255) g = 255; 148 else if (g < 0) g = 0; 149 150 if (b > 255) b = 255; 151 else if (b < 0) b = 0; 152 153 return ( 154 (usePound ? "#" : "") + 155 ((r << 16) | (g << 8) | b).toString(16).padStart(6, "0").toUpperCase() 156 ); 157 } 158 159 // SzÃn sötétÃtése 160 function darkenColor(color, amount) { 161 var colorHex = rgbToHex(color); 162 return adjustBrightness(colorHex, amount); 163 } 164 165 // CÃMKEFELHÅ SZÃNEINEK BEÃLLÃTÃSA END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 166 167 // ANIMÃCIÃK LEJÃTSZÃSA MAGYAR 168 169 var ugyintezes_anim, menetrend_anim, telefonkonyv_anim; 170 171 // fÅoldali gyors elérés 172 function load_quick_access_animations_hu() { 173 if (document.getElementById("front-quick-access")) { 174 var element_ugyintezes = document.getElementById( 175 "front-quick-access-icon-ugyintezes" 176 ); 177 ugyintezes_anim = lottie.loadAnimation({ 178 container: element_ugyintezes, 179 renderer: "svg", 180 loop: true, 181 autoplay: false, 182 path: "/themes/custom/miskolc/img/animations/front-quick-access/contact3.json", 183 }); 184 185 var element_menetrend = document.getElementById( 186 "front-quick-access-icon-menetrend" 187 ); 188 menetrend_anim = lottie.loadAnimation({ 189 container: element_menetrend, 190 renderer: "svg", 191 loop: true, 192 autoplay: false, 193 path: "/themes/custom/miskolc/img/animations/front-quick-access/bus3.json", 194 }); 195 196 var element_telefonkonyv = document.getElementById( 197 "front-quick-access-icon-telefonkonyv" 198 ); 199 telefonkonyv_anim = lottie.loadAnimation({ 200 container: element_telefonkonyv, 201 renderer: "svg", 202 loop: true, 203 autoplay: false, 204 path: "/themes/custom/miskolc/img/animations/front-quick-access/calendar.json", 205 }); 206 } 207 } 208 load_quick_access_animations_hu(); 209 210 jQuery("#block-miskolc-gyorseleres .quick-access a").hover( 211 function () { 212 if (jQuery(this).find("#front-quick-access-icon-ugyintezes").length) { 213 ugyintezes_anim.play(); 214 } 215 216 if (jQuery(this).find("#front-quick-access-icon-menetrend").length) { 217 menetrend_anim.play(); 218 } 219 220 if (jQuery(this).find("#front-quick-access-icon-telefonkonyv").length) { 221 telefonkonyv_anim.play(); 222 } 223 }, 224 function () { 225 if (jQuery(this).find("#front-quick-access-icon-ugyintezes").length) { 226 ugyintezes_anim.stop(); 227 } 228 229 if (jQuery(this).find("#front-quick-access-icon-menetrend").length) { 230 menetrend_anim.stop(); 231 } 232 233 if (jQuery(this).find("#front-quick-access-icon-telefonkonyv").length) { 234 telefonkonyv_anim.stop(); 235 } 236 } 237 ); 238 239 var latnivalok_anim, szallas_es_gasztro_anim, hasznos_informaciok_anim, miskolcpass_anim; 240 241 // turizmus gyors elérés 242 function load_quick_access_animations_turizmus() { 243 if (document.getElementById("block-miskolc-gyorseleresturizmus")) { 244 var element_latnivalok = document.getElementById( 245 "quick-access-icon-latnivalok" 246 ); 247 latnivalok_anim = lottie.loadAnimation({ 248 container: element_latnivalok, 249 renderer: "svg", 250 loop: true, 251 autoplay: false, 252 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/latnivalok2.json", 253 }); 254 255 var element_szallas_es_gasztro = document.getElementById( 256 "quick-access-icon-szallas-es-gasztro" 257 ); 258 szallas_es_gasztro_anim = lottie.loadAnimation({ 259 container: element_szallas_es_gasztro, 260 renderer: "svg", 261 loop: true, 262 autoplay: false, 263 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/szallas_gasztro.json", 264 }); 265 266 var element_hasznos_informaciok = document.getElementById( 267 "quick-access-icon-hasznos-informaciok" 268 ); 269 hasznos_informaciok_anim = lottie.loadAnimation({ 270 container: element_hasznos_informaciok, 271 renderer: "svg", 272 loop: true, 273 autoplay: false, 274 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/hasznos_informaciok.json", 275 }); 276 277 var element_miskolcpass = document.getElementById( 278 "quick-access-icon-miskolcpass" 279 ); 280 miskolcpass_anim = lottie.loadAnimation({ 281 container: element_miskolcpass, 282 renderer: "svg", 283 loop: true, 284 autoplay: false, 285 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/miskolc_pass.json", 286 }); 287 } 288 } 289 290 load_quick_access_animations_turizmus(); 291 292 jQuery("#block-miskolc-gyorseleresturizmus .quick-access a").hover( 293 function () { 294 if (jQuery(this).find("#quick-access-icon-latnivalok").length) { 295 latnivalok_anim.play(); 296 } 297 298 if (jQuery(this).find("#quick-access-icon-szallas-es-gasztro").length) { 299 szallas_es_gasztro_anim.play(); 300 } 301 302 if (jQuery(this).find("#quick-access-icon-hasznos-informaciok").length) { 303 hasznos_informaciok_anim.play(); 304 } 305 306 if (jQuery(this).find("#quick-access-icon-miskolcpass").length) { 307 miskolcpass_anim.play(); 308 } 309 }, 310 function () { 311 if (jQuery(this).find("#quick-access-icon-latnivalok").length) { 312 latnivalok_anim.stop(); 313 } 314 315 if (jQuery(this).find("#front-quick-access-icon-szallas-es-gasztro").length) { 316 szallas_es_gasztro_anim.stop(); 317 } 318 319 if (jQuery(this).find("#quick-access-icon-hasznos-informaciok").length) { 320 hasznos_informaciok_anim.stop(); 321 } 322 323 if (jQuery(this).find("#quick-access-icon-miskolcpass").length) { 324 miskolcpass_anim.stop(); 325 } 326 } 327 ); 328 329 // ANIMÃCIÃK LEJÃTSZÃSA MAGYAR END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 330 331 // ANIMÃCIÃK LEJÃTSZÃSA ANGOL 332 333 var client_service_anim, timetable_anim, gift_anim, tourinform_anim ; 334 335 // front shortcut moving icons 336 function load_quick_access_animations_en() { 337 if (document.getElementById("front-quick-access-en")) { 338 var element_client_service = document.getElementById( 339 "front-quick-access-icon-client-service" 340 ); 341 client_service_anim = lottie.loadAnimation({ 342 container: element_client_service, 343 renderer: "svg", 344 loop: true, 345 autoplay: false, 346 path: "/themes/custom/miskolc/img/animations/front-quick-access/contact3.json", 347 }); 348 349 var element_timetable = document.getElementById( 350 "front-quick-access-icon-timetable" 351 ); 352 timetable_anim = lottie.loadAnimation({ 353 container: element_timetable, 354 renderer: "svg", 355 loop: true, 356 autoplay: false, 357 path: "/themes/custom/miskolc/img/animations/front-quick-access/bus3.json", 358 }); 359 360 var element_gift = document.getElementById( 361 "front-quick-access-icon-gift" 362 ); 363 gift_anim = lottie.loadAnimation({ 364 container: element_gift, 365 renderer: "svg", 366 loop: true, 367 autoplay: false, 368 path: "/themes/custom/miskolc/img/animations/front-quick-access/gift.json", 369 }); 370 371 var element_tourinform = document.getElementById( 372 "front-quick-access-icon-tourinform" 373 ); 374 tourinform_anim = lottie.loadAnimation({ 375 container: element_tourinform, 376 renderer: "svg", 377 loop: true, 378 autoplay: false, 379 path: "/themes/custom/miskolc/img/animations/front-quick-access/latnivalok2.json", 380 }); 381 } 382 } 383 384 load_quick_access_animations_en(); 385 386 jQuery("#block-miskolc-quickaccess .quick-access a").hover( 387 function () { 388 if (jQuery(this).find("#front-quick-access-icon-client-service").length) { 389 client_service_anim.play(); 390 } 391 392 if (jQuery(this).find("#front-quick-access-icon-timetable").length) { 393 timetable_anim.play(); 394 } 395 396 if (jQuery(this).find("#front-quick-access-icon-gift").length) { 397 gift_anim.play(); 398 } 399 400 if (jQuery(this).find("#front-quick-access-icon-tourinform").length) { 401 tourinform_anim.play(); 402 } 403 }, 404 function () { 405 if (jQuery(this).find("#front-quick-access-icon-client-service").length) { 406 client_service_anim.stop(); 407 } 408 409 if (jQuery(this).find("#front-quick-access-icon-timetable").length) { 410 timetable_anim.stop(); 411 } 412 413 if (jQuery(this).find("#front-quick-access-icon-gift").length) { 414 gift_anim.stop(); 415 } 416 417 if (jQuery(this).find("#front-quick-access-icon-tourinform").length) { 418 tourinform_anim.stop(); 419 } 420 } 421 ); 422 423 var sights_anim, accommodation_gastro_anim, miskolcpass_anim; 424 425 // Tourism quick access 426 function load_quick_access_animations_tourism() { 427 if (document.getElementById("quick-access-sights")) { 428 var element_sights = document.getElementById( 429 "quick-access-icon-sights" 430 ); 431 sights_anim = lottie.loadAnimation({ 432 container: element_sights, 433 renderer: "svg", 434 loop: true, 435 autoplay: false, 436 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/latnivalok2.json", 437 }); 438 439 var element_accommodation_gastro = document.getElementById( 440 "quick-access-icon-accommodation-gastro" 441 ); 442 accommodation_gastro_anim = lottie.loadAnimation({ 443 container: element_accommodation_gastro, 444 renderer: "svg", 445 loop: true, 446 autoplay: false, 447 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/szallas_gasztro.json", 448 }); 449 450 var element_miskolcpass = document.getElementById( 451 "quick-access-icon-miskolcpass" 452 ); 453 miskolcpass_anim = lottie.loadAnimation({ 454 container: element_miskolcpass, 455 renderer: "svg", 456 loop: true, 457 autoplay: false, 458 path: "/themes/custom/miskolc/img/animations/turizmus-landing-page/miskolc_pass.json", 459 }); 460 } 461 } 462 463 load_quick_access_animations_tourism(); 464 465 jQuery("#block-miskolc-quickaccesstourism .quick-access a").hover( 466 function () { 467 if (jQuery(this).find("#quick-access-icon-sights").length) { 468 sights_anim.play(); 469 } 470 471 if (jQuery(this).find("#quick-access-icon-accommodation-gastro").length) { 472 accommodation_gastro_anim.play(); 473 } 474 475 if (jQuery(this).find("#quick-access-icon-miskolcpass").length) { 476 miskolcpass_anim.play(); 477 } 478 }, 479 function () { 480 if (jQuery(this).find("#quick-access-icon-sights").length) { 481 sights_anim.stop(); 482 } 483 484 if (jQuery(this).find("#quick-access-icon-accommodation-gastro").length) { 485 accommodation_gastro_anim.stop(); 486 } 487 488 if (jQuery(this).find("#quick-access-icon-miskolcpass").length) { 489 miskolcpass_anim.stop(); 490 } 491 } 492 ); 493 494 // ANIMÃCIÃK LEJÃTSZÃSA ANGOL END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 495 496 // KeresÅ mezÅ helykitöltÅ 497 jQuery("html:lang(hu) .path-frontpage #edit-keys--2").attr("placeholder", "Miben segÃthetünk?"); 498 jQuery("html:lang(en) .path-frontpage #edit-keys--2").attr("placeholder", "Search"); 499 500 // KeresÅ mezÅ effekt 501 jQuery("#edit-keys--2").focus(function() { 502 jQuery(".front-video-background").css("filter", "brightness(30%)"); 503 jQuery(".front-picture-background").css("filter", "brightness(30%)"); 504 }); 505 jQuery("#edit-keys--2").blur(function() { 506 jQuery(".front-video-background").css("filter", "brightness(100%)"); 507 jQuery(".front-picture-background").css("filter", "brightness(100%)"); 508 }); 509 // KeresÅ mezÅ helykitöltÅ END 510 511 // Nem fordÃtható mezÅk fordÃtsai 512 513 jQuery("html:lang(en) .field.field--name-field-image.field--type-image.field--label-above .field__label").text("Photos"); 514 515 516 // Nem fordÃtható mezÅk fordÃtsai END 517 518 // MENà BETÃLTÅDÃSI BEVILLANÃS MEGSZŰNTETÃSE 519 520 jQuery(".sf-menu li").mouseenter(function () { 521 522 jQuery(this).children("ul").css({ 523 "display": "flex", 524 "visibility": "visible" 525 }); 526 }); 527 528 // jQuery(".sf-menu li").mouseleave(function () { 529 // let $submenu = $(this).children("ul"); 530 531 // }); 532 533 534 // MENà BETÃLTÅDÃSI BEVILLANÃS MEGSZŰNTETÃSE 535 536 let hoverTriggered = false;
537 538 jQuery(document).ready(function () { 539 // Második szintű menü megnyitása fókuszra 540 jQuery(".sf-depth-1 > a").on("focus", function () { 541 let $parentMenuItem = jQuery(this).parent(); // Az aktuális szintű menüpont 542 let $subMenu = $parentMenuItem.children("ul"); // Az alatta lévÅ submenu 543 544 // Ha van submenu, azt megjelenÃtjük 545 if ($subMenu.length) { 546 $parentMenuItem.addClass("sfHover"); 547 $subMenu.removeClass("sf-hidden").css({ 548 "display": "flex", 549 "visibility": "visible" 550 }); 551 } 552 553 // Bezárjuk az összes többi sibling submenu-jét 554 $parentMenuItem.siblings().each(function () { 555 let $siblingSubMenu = jQuery(this).children("ul"); 556 if ($siblingSubMenu.length) { 557 jQuery(this).removeClass("sfHover"); 558 $siblingSubMenu.addClass("sf-hidden").css({ 559 "display": "none", 560 "visibility": "hidden" 561 }); 562 } 563 }); 564 }); 565 566 // Harmadik szintű menü megnyitása fókuszra 567 jQuery(".sf-depth-2 > a").on("focus", function () { 568 let $parentMenuItem = jQuery(this).parent(); // Az aktuális szintű menüpont 569 let $subMenu = $parentMenuItem.children("ul"); // Az alatta lévÅ submenu 570 571 // Ha van submenu, azt megjelenÃtjük 572 if ($subMenu.length) { 573 $parentMenuItem.addClass("sfHover"); 574 $subMenu.removeClass("sf-hidden").css({ 575 "display": "flex", 576 "visibility": "visible" 577 }); 578 } 579 580 // Bezárjuk az összes többi sibling submenu-jét 581 $parentMenuItem.siblings().each(function () { 582 let $siblingSubMenu = jQuery(this).children("ul"); 583 if ($siblingSubMenu.length) { 584 jQuery(this).removeClass("sfHover"); 585 $siblingSubMenu.addClass("sf-hidden").css({ 586 "display": "none", 587 "visibility": "hidden" 588 }); 589 } 590 }); 591 }); 592 593 // Fókuszvesztés (blur) esemény kezelése 594 jQuery(".sf-depth-1 > a, .sf-depth-2 > a").on("blur", function () { 595 let $currentMenuItem = jQuery(this).parent(); 596 597 setTimeout(function () { 598 // EllenÅrizzük, hogy nincs-e aktÃv fókusz a teljes menüben 599 if (!jQuery(":focus").closest($currentMenuItem).length) { 600 $currentMenuItem.removeClass("sfHover"); 601 $currentMenuItem.children("ul").addClass("sf-hidden").css({ 602 "display": "none", 603 "visibility": "hidden" 604 }); 605 } 606 }, 100); // Kis késleltetés az új fókusz ellenÅrzéséhez 607 }); 608 609 // Tab indexek beállÃtása a menüelemekhez 610 jQuery(".sf-menu li > a").attr("tabindex", 0); 611}); 612 613 614 // Ãlet a városban 615 jQuery(document).ready(function () { 616 let menuTimeout; 617 618 // Egér belépésekor megnyitjuk a menüt 619 jQuery("#main-menu-link-contentfd578be0-baf2-48c7-9ec9-f18921eeedb3").mouseenter(function () { 620 clearTimeout(menuTimeout); // MegszakÃtjuk a bezárási késleltetést 621 let $secondLevelMenu = jQuery("li#main-menu-link-content7c84a252-31ef-43e0-92fb-71a48f1abead"); 622 $secondLevelMenu.addClass("sfHover"); 623 $secondLevelMenu.children("ul").removeClass("sf-hidden").css({ 624 "display": "flex", 625 "visibility": "visible" 626 }); 627 }); 628 629 // Egér elhagyásakor késleltetjük a menü bezárását 630 jQuery("#main-menu-link-contentfd578be0-baf2-48c7-9ec9-f18921eeedb3").mouseleave(function () { 631 let $secondLevelMenu = jQuery("li#main-menu-link-content7c84a252-31ef-43e0-92fb-71a48f1abead"); 632 633 menuTimeout = setTimeout(function () { 634 $secondLevelMenu.removeClass("sfHover"); 635 $secondLevelMenu.children("ul").addClass("sf-hidden").css({ 636 "display": "none", 637 "visibility": "hidden" 638 }); 639 }, 300); // 300 ms késleltetés 640 }); 641 642 // Az almenüre is alkalmazzuk a belépési és kilépési logikát 643 jQuery("li#main-menu-link-content7c84a252-31ef-43e0-92fb-71a48f1abead").mouseenter(function () { 644 clearTimeout(menuTimeout); // MegszakÃtjuk a bezárási késleltetést 645 jQuery(this).addClass("sfHover"); 646 jQuery(this).children("ul").removeClass("sf-hidden").css({ 647 "display": "flex", 648 "visibility": "visible" 649 }); 650 }); 651 652 jQuery("li#main-menu-link-content7c84a252-31ef-43e0-92fb-71a48f1abead").mouseleave(function () { 653 let $submenu = jQuery(this); 654 655 menuTimeout = setTimeout(function () { 656 $submenu.removeClass("sfHover"); 657 $submenu.children("ul").addClass("sf-hidden").css({ 658 "display": "none", 659 "visibility": "hidden" 660 }); 661 }, 300); // 300 ms késleltetés 662 }); 663 664 jQuery("section.row.region.region-header-menu .menu-eletavarosban").on("focus", function () { 665 let $secondLevelMenu = jQuery("li#main-menu-link-content7c84a252-31ef-43e0-92fb-71a48f1abead"); 666 667 if (!$secondLevelMenu.hasClass("sfHover")) { 668 $secondLevelMenu.addClass("sfHover"); 669 $secondLevelMenu.children("ul").removeClass("sf-hidden").css({ 670 "display": "flex", 671 "visibility": "visible" 672 }); 673 } 674 }); 675 676 jQuery("section.row.region.region-header-menu .menu-varoshaza").on("focus", function () { 677 let $secondLevelMenu = jQuery("li#main-menu-link-contentbceba185-9cc2-4472-bff8-ec03ba085b79"); 678 679 if (!$secondLevelMenu.hasClass("sfHover")) { 680 $secondLevelMenu.addClass("sfHover"); 681 $secondLevelMenu.children("ul").removeClass("sf-hidden").css({ 682 "display": "flex", 683 "visibility": "visible" 684 }); 685 } 686 }); 687 688 jQuery("section.row.region.region-header-menu .menu-varoshaza").on("mouseenter", function () { 689 let $secondLevelMenu = jQuery("li#main-menu-link-contentbceba185-9cc2-4472-bff8-ec03ba085b79"); 690 691 if (!$secondLevelMenu.hasClass("sfHover")) { 692 $secondLevelMenu.addClass("sfHover"); 693 $secondLevelMenu.children("ul").removeClass("sf-hidden").css({ 694 "display": "flex", 695 "visibility": "visible" 696 }); 697 } 698 }); 699 }); 700 701 702 703 jQuery(document).ready(function () { 704 let menuTimeout; 705 706 707 // CITY GOVERMENT 708 709 710 // Egér belépésekor megnyitjuk a menüt 711 jQuery("#main-navigation-menu-link-content12095c77-f0bd-49dd-884a-5194be333b78").mouseenter(function () { 712 clearTimeout(menuTimeout); // MegszakÃtjuk a bezárási késleltetést 713 let $secondLevelMenu = jQuery("li#main-navigation-menu-link-contentfa941e6b-2400-42c6-a5ed-2a7bad61cbb4"); 714 $secondLevelMenu.addClass("sfHover"); 715 $secondLevelMenu.children("ul").removeClass("sf-hidden").css({ 716 "display": "flex", 717 "visibility": "visible" 718 }); 719 }); 720 721 // Egér elhagyásakor késleltetjük a menü bezárását 722 jQuery("#main-navigation-menu-link-content12095c77-f0bd-49dd-884a-5194be333b78").mouseleave(function () { 723 let $secondLevelMenu = jQuery("li#main-navigation-menu-link-contentfa941e6b-2400-42c6-a5ed-2a7bad61cbb4"); 724 725 menuTimeout = setTimeout(function () { 726 $secondLevelMenu.removeClass("sfHover"); 727 $secondLevelMenu.children("ul").addClass("sf-hidden").css({ 728 "display": "none", 729 "visibility": "hidden" 730 }); 731 }, 300); // 300 ms késleltetés 732 }); 733 734 // Az almenüre is alkalmazzuk a belépési és kilépési logikát 735 jQuery("li#main-navigation-menu-link-contentfa941e6b-2400-42c6-a5ed-2a7bad61cbb4").mouseenter(function () { 736 clearTimeout(menuTimeout); // MegszakÃtjuk a bezárási késleltetést 737 jQuery(this).addClass("sfHover"); 738 jQuery(this).children("ul").removeClass("sf-hidden").css({ 739 "display": "flex", 740 "visibility": "visible" 741 }); 742 }); 743 744 jQuery("li#main-navigation-menu-link-contentfa941e6b-2400-42c6-a5ed-2a7bad61cbb4").mouseleave(function () { 745 let $submenu = jQuery(this); 746 747 menuTimeout = setTimeout(function () { 748 $submenu.removeClass("sfHover"); 749 $submenu.children("ul").addClass("sf-hidden").css({ 750 "display": "none", 751 "visibility": "hidden" 752 }); 753 }, 300); // 300 ms késleltetés 754 }); 755 756 757 758 // LIFE IN THE CITY 759 // Egér belépésekor megnyitjuk a menüt 760 jQuery("#main-navigation-menu-link-contentba83ce17-85b9-4503-bffc-97f860be27ce").mouseenter(function () { 761 clearTimeout(menuTimeout); // MegszakÃtjuk a bezárási késleltetést 762 let $secondLevelMenu = jQuery("li#main-navigation-menu-link-content821c85bd-3335-4eff-8727-ca4cbdc16db3"); 763 $secondLevelMenu.addClass("sfHover"); 764 $secondLevelMenu.children("ul").removeClass("sf-hidden").css({ 765 "display": "flex", 766 "visibility": "visible" 767 }); 768 }); 769 770 // Egér elhagyásakor késleltetjük a menü bezárását 771 jQuery("#main-navigation-menu-link-contentba83ce17-85b9-4503-bffc-97f860be27ce").mouseleave(function () { 772 let $secondLevelMenu = jQuery("li#main-navigation-menu-link-content821c85bd-3335-4eff-8727-ca4cbdc16db3"); 773 774 menuTimeout = setTimeout(function () { 775 $secondLevelMenu.removeClass("sfHover"); 776 $secondLevelMenu.children("ul").addClass("sf-hidden").css({ 777 "display": "none", 778 "visibility": "hidden" 779 }); 780 }, 300); // 300 ms késleltetés 781 }); 782 783 // Az almenüre is alkalmazzuk a belépési és kilépési logikát 784 jQuery("li#main-navigation-menu-link-content821c85bd-3335-4eff-8727-ca4cbdc16db3").mouseenter(function () { 785 clearTimeout(menuTimeout); // MegszakÃtjuk a bezárási késleltetést 786 jQuery(this).addClass("sfHover"); 787 jQuery(this).children("ul").removeClass("sf-hidden").css({ 788 "display": "flex", 789 "visibility": "visible" 790 }); 791 }); 792 793 jQuery("li#main-navigation-menu-link-content821c85bd-3335-4eff-8727-ca4cbdc16db3").mouseleave(function () { 794 let $submenu = jQuery(this); 795 796 menuTimeout = setTimeout(function () { 797 $submenu.removeClass("sfHover"); 798 $submenu.children("ul").addClass("sf-hidden").css({ 799 "display": "none", 800 "visibility": "hidden" 801 }); 802 }, 300); // 300 ms késleltetés 803 }); 804 805 }); 806 807 // MENà BETÃLTÅDÃSI BEVILLANÃS MEGSZŰNTETÃSE END 808 809 810 // OSZTÃLY ELTÃVOLAÃTÃSA 811 812 jQuery("#views-bootstrap-frontpage-page-1").removeClass("row"); 813 jQuery("#views-bootstrap-aktualis-aloldal-block-1").removeClass("row"); 814 jQuery("#block-miskolc-fonavigacio-2 ul li ul").removeClass("dropdown-menu"); 815 jQuery("#block-miskolc-fonavigacio-2 a.nav-link.dropdown-toggle").attr("data-bs-toggle",""); 816 817 818 819 // OSZTÃLY ELTÃVOLAÃTÃSA END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 820 821 // HEADER MENà KÃZÃPRE IGAZÃTÃSA 822 823 function centerMenu() { 824 // Megkapjuk a képernyÅ szélességét 825 var windowWidth = jQuery(window).width(); 826 827 // Ha a képernyÅ szélessége 1366px vagy kisebb, akkor a menü szélessége 1170px, különben 1270px
828 var menuWidth = (windowWidth <= 1366) ? 1170 : 1270; 829 830 // Számoljuk ki a left eltolást 831 var leftOffset = (windowWidth - menuWidth) / 2; 832 833 // EllenÅrizzük az oldal nyelvét 834 var isHungarian = jQuery('html').attr('lang') === 'hu'; 835 var isEnglish = jQuery('html').attr('lang') === 'en'; 836 837 // Csak a magyar oldalakon futtatjuk ezt 838 if (isHungarian) { 839 jQuery('#block-miskolc-fonavigacio ul li.sf-depth-1 > ul').css('left', leftOffset + 'px'); 840 } 841 842 // Csak az angol oldalakon futtatjuk ezt 843 if (isEnglish) { 844 jQuery('#block-miskolc-mainnavigation ul li.sf-depth-1 > ul').css('left', leftOffset + 'px'); 845 } 846 } 847 848// MeghÃvjuk a funkciót oldalbetöltéskor 849centerMenu(); 850 851// Ãjraszámoljuk az eltolást, ha az ablak méretét megváltoztatják 852jQuery(window).resize(function() { 853 centerMenu(); 854}); 855 856 // HEADER MENà KÃZÃPRE IGAZÃTÃSA END 857 858 // MÃSODIK MENÃSZINTHEZ BEFOGLALà DIV ADÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 859 860 861 // EllenÅrizzük az oldal nyelvét 862 var isHungarian = jQuery('html').attr('lang') === 'hu'; 863 var isEnglish = jQuery('html').attr('lang') === 'en'; 864 865 // Magyar oldalon: az ul tartalmát becsomagoljuk egy div.sub-menu elembe 866 if (isHungarian) { 867 jQuery('#block-miskolc-fonavigacio ul li.sf-depth-1 > ul').each(function() { 868 jQuery(this).contents().wrapAll('<div class="sub-menu"></div>'); 869 }); 870 } 871 872 // Angol oldalon: az ul tartalmát becsomagoljuk egy div.sub-menu elembe 873 if (isEnglish) { 874 jQuery('#block-miskolc-mainnavigation ul li.sf-depth-1 > ul').each(function() { 875 jQuery(this).contents().wrapAll('<div class="sub-menu"></div>'); 876 }); 877 } 878 879 // LAPOZà OSZTÃLYOK HOZZÃADÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 880 881 jQuery('.pagination a > span[aria-hidden="true"]').addClass('pagination-span'); 882 jQuery('.pagination a[title="Ugrás a következÅ oldalra"]').addClass('pagination-next'); 883 jQuery('.pagination a[title="Ugrás az utolsó oldalra"]').addClass('pagination-last'); 884 jQuery('.pagination a[title="Ugrás az elÅzÅ oldalra"]').addClass('pagination-prev'); 885 jQuery('.pagination a[title="Ugrás az elsÅ oldalra"]').addClass('pagination-first'); 886 887 // LAPOZà OSZTÃLYOK HOZZÃADÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 888 889 // MOBIL MENà ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 890 891 // Az icon osztályú elem kiválasztása 892 var iconElement = jQuery('#block-miskolc-responsivemenumobileicon .icon'); 893 894 // Három span elem hozzáadása 895 iconElement.append('<span class="line1"></span>'); 896 iconElement.append('<span class="line2"></span>'); 897 iconElement.append('<span class="line3"></span>'); 898 899 // MOBIL MENà END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 900 901 // HÃREK KATEGÃRIA VÃZSZINTES GÃRGETÃSE ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 902 903 var scrollStartPos = 0; 904 905 jQuery('.path-frontpage .view-filters').on('touchstart', function(e) { 906 scrollStartPos = this.scrollLeft + e.touches[0].pageX; 907 }); 908 909 jQuery('.path-frontpage .view-filters').on('touchmove', function(e) { 910 this.scrollLeft = scrollStartPos - e.touches[0].pageX; 911 e.preventDefault(); // Megakadályozza a függÅleges görgetést 912 }); 913 914// HÃREK KATEGÃRIA VÃZSZINTES GÃRGETÃSE ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 915 916// BETTER SOCIAL ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 917 918 jQuery('.social-sharing-buttons-button.share-facebook').append('<span>Facebook</span>'); 919 jQuery('.social-sharing-buttons-button.share-email').append('<span>E-mail</span>'); 920 // jQuery('.bssb-printlink').append('<span>Oldal nyomtatása</span>'); 921 // jQuery('html:lang(en) .bssb-printlink').append('<span>Print this page</span>'); 922 // EllenÅrzi az oldal nyelvét 923 var lang = jQuery('html').attr('lang'); 924 925 if (lang === 'hu') { 926 // Magyar nyelv esetén 927 jQuery('.bssb-printlink').append('<span>Oldal nyomtatása</span>'); 928 } else if (lang === 'en') { 929 // Angol nyelv esetén 930 jQuery('.bssb-printlink').append('<span>Print this page</span>'); 931 } 932 933// BETTER SOCIAL ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 934
935// ALOLDAL KÃRTYAKÃP BEÃLLÃTÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 936 937 jQuery('.sub-card-bg').each(function() { 938 var imageUrl = jQuery(this).data('imageurl'); 939 if (imageUrl) { 940 jQuery(this).css('background-image', 'url(' + imageUrl + ')'); 941 } 942 }); 943 944// ALOLDAL KÃRTYAKÃP BEÃLLÃTÃSA END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 945 946 947// MOBILON A MENà NYITÃSA/ZÃRÃSA /////////////////////////// 948 949function isMobile() { 950 return window.matchMedia("(max-width: 991px)").matches; 951} 952 953// Ãllandó értékek a stÃlusokhoz 954const CUSTOM_STYLE_1 = ` 955 <style id="custom-menu-style1"> 956 #block-miskolc-views-block-szulo-menupont-neve-block-1 .view-content.row a:after { 957 background-image: url(/themes/custom/miskolc/img/page/menu-up-arrow-green.svg); 958 } 959 </style>`; 960const CUSTOM_STYLE_2 = ` 961 <style id="custom-menu-style2"> 962 #block-miskolc-views-block-szulo-menupont-neve-block-1 .view-content.row a:after { 963 background-image: url(/themes/custom/miskolc/img/page/menu-down-arrow-green.svg); 964 } 965 </style>`; 966 967// Függvény a stÃlus hozzáadására 968function addStyle(styleId, styleContent) { 969 if (!document.getElementById(styleId)) { 970 document.head.insertAdjacentHTML('beforeend', styleContent); 971 } 972} 973 974// Függvény a stÃlus eltávolÃtására 975function removeStyle(styleId) { 976 const styleElement = document.getElementById(styleId); 977 if (styleElement) { 978 styleElement.remove(); 979 } 980} 981 982// Menü állapotának toggolása 983function toggleMenu(submenu) { 984 const isHidden = submenu.style.display === 'none' || submenu.style.display === ''; 985 submenu.style.display = isHidden ? 'flex' : 'none'; 986} 987 988// Kattintási esemény kezelése 989function handleMenuClick(e) { 990 const submenu = document.getElementById('block-miskolc-views-block-bal-oldalsav-menu-block-1'); 991 if (!submenu) return; 992 993 const isHidden = window.getComputedStyle(submenu).display === 'none'; 994 995 // StÃlusok kezelése 996 if (isHidden) { 997 addStyle('custom-menu-style1', CUSTOM_STYLE_1); 998 removeStyle('custom-menu-style2'); 999 } else { 1000 addStyle('custom-menu-style2', CUSTOM_STYLE_2); 1001 removeStyle('custom-menu-style1'); 1002 } 1003 1004 // Mobil eszközökön elÅzzük meg az alapértelmezett viselkedést és toggoljuk a menüt 1005 if (isMobile()) { 1006 e.preventDefault(); 1007 toggleMenu(submenu); 1008 } 1009} 1010 1011// Események hozzárendelése 1012document.querySelectorAll('.view.view-szulo-menupont-neve .views-field-views-conditional-field .field-content a') 1013 .forEach(link => link.addEventListener('click', handleMenuClick)); 1014 1015 1016 1017 1018 // A böngészÅ ablakának újraméretezésekor frissÃtjük a láthatóságot 1019 jQuery(window).resize(function() { 1020 var submenu = jQuery('#block-miskolc-views-block-bal-oldalsav-menu-block-1'); 1021 1022 if (!isMobile()) { 1023 // Ha nem mobil eszköz, biztosÃtjuk, hogy a menü látható legyen 1024 submenu.show(); 1025 } else { 1026 // Ha mobil eszköz, akkor elrejtjük, hogy a felhasználó kinyithassa 1027 if (submenu.css('display') === 'block') { 1028 submenu.hide(); 1029 } 1030 } 1031 }); 1032 1033// MOBILON A MENà NYITÃSA/ZÃRÃSA END /////////////////////////// 1034 1035// AKTUÃLIS ALOLDAL H1 /////////////////////////// 1036jQuery(".path-aktualis .current-page-title").replaceWith(function () { 1037 return jQuery("<h1>", { 1038 class: "current-page-title", 1039 html: jQuery(this).html() 1040 }); 1041}); 1042 1043// AKTUÃLIS ALOLDAL H1 END /////////////////////////// 1044 1045// BACKTOTOP OLDAL ALJÃN IGAZÃTÃSA /////////////////////////// 1046 1047jQuery(window).on('scroll', function () { 1048 var scrollTop = jQuery(window).scrollTop(); 1049 var windowHeight = jQuery(window).height(); 1050 var documentHeight = jQuery(document).height(); 1051 1052 if (scrollTop + windowHeight >= documentHeight - 100) { 1053 jQuery('#backtotop').addClass('at-bottom'); 1054 } else { 1055 jQuery('#backtotop').removeClass('at-bottom'); 1056 } 1057}); 1058 1059 1060Drupal.behaviors.backToTopAdjust = { 1061 attach: function (context, settings) { 1062 1063 jQuery(window, context).once('backToTopAdjust').on('scroll', function () { 1064 console.log("Scroll esemény (Drupal behaviors)!"); 1065 }); 1066 } 1067}; 1068 1069// BACKTOTOP OLDAL ALJÃN IGAZÃTÃSA END /////////////////////////// 1070
1071// FANCYBOX ATTRIBÃTUM HOZZÃADÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1072 1073 jQuery(".field.field--name-field-image.field--type-image .field__item a").attr("data-fancybox", "gallery"); 1074 jQuery(".node--type-kozgyulesi-tag .field.field--name-field-vezerkep.field--type-image a").attr("data-fancybox", "gallery"); 1075 1076 1077// FANCYBOX ATTRIBÃTUM HOZZÃADÃSA END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1078 1079// TAB INDEX MÃDOSÃTÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1080 1081 jQuery("#quicktabs-tabpage-fooldali_aktualis_blokkok-0").attr("tabindex", "-1"); 1082 jQuery("#sliding-popup .find-more-button").attr("tabindex", "1"); 1083 jQuery("#sliding-popup #cookie-category-analitika_elemzes").attr("tabindex", "1"); 1084 jQuery("#sliding-popup button.eu-cookie-compliance-save-preferences-button.button.button--small").attr("tabindex", "1"); 1085 jQuery("#sliding-popup .agree-button.eu-cookie-compliance-default-button.button.button--small.button--primary").attr("tabindex", "1"); 1086 1087// TAB INDEX MÃDOSÃTÃSA END ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1088 1089 1090// Android eszközökön a mobil menü megjelenésének kijavÃtása ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1091 1092 if (window.matchMedia("(max-width: 600px)").matches) { 1093 jQuery(':root').css('--mm-max-size', '290px'); 1094 } 1095 1096// Android eszközökön a mobil menü megjelenésének kijavÃtása ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1097 1098// Kitüntetések keresÅmezÅ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1099 1100var views = ['.view-miskolc-varos-kituntetettjei', '.view-miskolc-varos-diszpolgarai']; 1101 1102views.forEach(function(viewClass) { 1103 jQuery(document).on('input', viewClass + ' [id^=edit-title]', function() { 1104 var titleValue = jQuery(this).val(); 1105 jQuery(viewClass + ' [id^=edit-field-kituntetett-eloneve-value]').val(titleValue); 1106 }); 1107}); 1108 1109// Kitüntetések keresÅmezÅ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1110 1111 1112 1113// TÃBLÃZATOKHOZ TABLE_RESPONSIVE BEFOGLAà HOZZÃADÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1114 1115jQuery('table').each(function() { 1116 // EllenÅrzi, hogy a táblázat már be van-e csomagolva egy .table-responsive div-be 1117 if (!jQuery(this).parent().hasClass('table-responsive')) { 1118 // Ãj table-responsive div létrehozása és a táblázat becsomagolása 1119 jQuery(this).wrap('<div class="table-responsive"></div>'); 1120 } 1121}); 1122 1123// TÃBLÃZATOKHOZ TABLE_RESPONSIVE BEFOGLAà HOZZÃADÃSA ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1124 1125}); 1126 1127 1128// SZÃCHENYI TERV PLUSZ FIX LOGà //////////////////////////////////////////////////////////////////////// 1129 1130// if (!jQuery('#stp-overlay').length) { 1131 1132// jQuery('body').append(` 1133// <div id="stp-overlay"> 1134 1135// <button id="stp-close" aria-label="Bezárás">Ã</button> 1136 1137// <a href="https://www.palyazat.gov.hu/" target="_blank" rel="noopener"> 1138// <img 1139// src="/sites/default/files/2026-05/szechenyi-terv-plusz_allo_infoblokk_rgb_tarsfinanszirozas.png" 1140// alt="Széchenyi Terv Plusz" 1141// > 1142// </a> 1143 1144// </div> 1145// `); 1146 1147// } 1148 1149// Bezárás 1150jQuery(document).on('click', '#stp-close', function () { 1151 jQuery('#stp-overlay').fadeOut(200); 1152}); 1153 1154// SZÃCHENYI TERV PLUSZ FIX LOGà END //////////////////////////////////////////////////////////////////////// 1155 1156 1157 1158jQuery(document).ajaxStop(function () { 1159 // ROW OSZTÃLY ELTÃVOLAÃTÃSA 1160 jQuery("div[id^=views-bootstrap-frontpage-page-1]").removeClass("row"); 1161 jQuery("div[id^=views-bootstrap-aktualis-aloldal-block-1]").removeClass( 1162 "row" 1163 ); 1164 1165 jQuery('.pagination a > span[aria-hidden="true"]').addClass('pagination-span'); 1166 jQuery('.pagination a[title="Ugrás a következÅ oldalra"]').addClass('pagination-next'); 1167 jQuery('.pagination a[title="Ugrás az utolsó oldalra"]').addClass('pagination-last'); 1168 jQuery('.pagination a[title="Ugrás az elÅzÅ oldalra"]').addClass('pagination-prev'); 1169 jQuery('.pagination a[title="Ugrás az elsÅ oldalra"]').addClass('pagination-first'); 1170}); 1171 1172 1173
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.