`); doc.close(); } // console.log('iframe element content changed'); iframe_elem.contentWindow.location.replace(url); // console.log('iframe element url changed'); L2483_popup_onload(iframe_elem); // history.pushState('kukkuu', "", "?popup"); history.pushState('popup', "", ""); //9.12.25/PetteriM - Suljetaan popup jos klikataan sen ulkopuolelle eli käytännössä kun klikataan background_diviä. //Tämän eventlistenerin pitäisi hävitä kun popup suljetaan koska koko popup ja background elementit poistetaan. document.getElementById("L2483_popup_modal_background_div").addEventListener("click", L2483_back); return false; // Palautetaan false jotta onclick tapauksisa voi palauttaa tämän funktion palautusarvon joka tarkoittaa ettei mennä linkin href osoitteeseen } function L2483_popup_show() { document.getElementById('L2483_popup_div').style = 'position: fixed;\noverflow: auto;\n\nwidth: auto;\nmin-width: 20em;\nmin-height: 10em;\n/* 8.12.25/PetteriM - Muutettu korkeudet ja leveydet 97vw/vh -> 80vh/vw kun 97 oli liian iso kun kyseessä on kuitenkin popup jolloin melkein koko ruutua ei ole tarkoitus peittää. */\n\n /* oletuksena avataan ikkuna tosi isona ja sitten pienennetään jos sisältöön jää valkoista oikeaa laitaa */\n/* \nwidth: 80vw;\nheight: 80vh;\n*/\nmax-width: 80vw;\nmax-height: 80vh;\ntop: 50%;\nleft: 50%;\n-webkit-transform: translate(-50%,-50%);\n-moz-transform: translate(-50%,-50%);\n-ms-transform: translate(-50%,-50%);\n-o-transform: translate(-50%,-50%);\ntransform: translate(-50%,-50%);\n/* 28.10.2024/jsalmi - Oli 1002 tähän asti kommentilla: kaiken muuun peittävän modal divin z-index on 1001 ja lomakkeiden sticky headerin 1000 näiden pitää olla sen yli */\nz-index: 100002; /* kaiken muuun peittävän modal divin z-index on 1001 ja lomakkeiden sticky headerin 1000 näiden pitää olla sen yli */\nbackground-color: #ffffff;\nborder: 1px solid #999;\nborder: 1px solid rgba(0, 0, 0, 0.3);\n*border: 1px solid #999;\n-webkit-border-radius: 6px;\n-moz-border-radius: 6px;\nborder-radius: 6px;\noutline: none;\n-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\nbox-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n-webkit-background-clip: padding-box;\n-moz-background-clip: padding-box;\nbackground-clip: padding-box;\nanimation: blowUpModal .5s cubic-bezier(0.165, 0.840, 0.440, 1.000) forwards;\nresize: both;\ndisplay: flex;\nflex-direction: column;\n'; // Tuodaan se näkyviin mahdollisesti effektillä } //9.12.25/PetteriM - ÄLÄ KÄYTÄ TÄTÄ SUORAAN popupin sulkemiseen, sulkeminen pitää tehdä L2483_back funktiolla joka menee oikeaoppisesti historiassa taaksepäin ja palauttaa urliin mahdolliset Q-muuttujat. function L2483_popup_clear() { //27.3.26/PetteriM - Lisätty tarkistelu sille että onko popup_diviä ylipäätään olemassa, koska popstate-evenlistenerin kautta saatetaan kutsua tätä funktiota vaikkei popuppia ole olemassa. if (document.getElementById('L2483_popup_div') !== null){ document.getElementById('L2483_popup_div').style = 'top: -100%;\nposition: fixed;\nleft: 50%;\n/* 28.10.2024/jsalmi - Oli 1002 tähän asti kommentilla: kaiken muuun peittävän modal divin z-index on 1001 ja lomakkeiden sticky headerin 1000 näiden pitää olla sen yli */\nz-index: 100002; /* progresista tulee z-index 100000 divi ja tämän pitää olla sen yli*/\n/* width: 560px; */\nmargin-left: -280px;\nbackground-color: #ffffff;\nborder: 1px solid #999;\nborder: 1px solid rgba(0, 0, 0, 0.3);\n-webkit-border-radius: 6px;\n-moz-border-radius: 6px;\nborder-radius: 6px;\noutline: none;\n-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\nbox-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n-webkit-background-clip: padding-box;\n-moz-background-clip: padding-box;\nbackground-clip: padding-box;\ntransform: scale(0)\nanimation: blowUpModal .5s cubic-bezier(0.165, 0.840, 0.440, 1.000) forwards;\n'; // Piilotetaan näkyvistä mahdollisesti effektillä //console.log('L2483_popup_clear called'); setTimeout(L2483_popup_remove(), 500); } else { //console.log('L2483_popup_clear called but no popup element found.'); } } function L2483_popup_remove() { var elem = document.getElementById('L2483_popup_div'); elem.remove(); var elem = document.getElementById('L2483_popup_modal_background_div'); elem.remove(); if (typeof L2483_reload_needed !== 'undefined') { document.location.reload(); } } /* Tätä muuttujaa käytetään mahdolliseti jo avoimen valikon sulkemiseen kun klikataan jokin toinen auki * riittää kun seurataan päätason valintoja koska suljetaan vain päätaso kun klikataan jokin toinen päätaso auki. Edelisen * päätason mahdollisesti avoimet tasot jää avoimiksi niin että jos myöhemmin avataan uudestaan edellinen päätaso niin siellä * on avoinna ne mitä oli aikaisemminkin * 22.9.25/PetteriM * Lisätään myös muuttuja jolla katsotaan aktiivista menu_id:tä. * Tällä tiedetään minkä valikon submenua suljetaan kun klikataan valikoiden ulkopuolelle. */ var L2960_currently_active_first_submenu_parent_id = 0; var L2960_currently_active_menu_id = 0; function L2960_show_submenu_for_id(menu_id, level, submenu_for_id) { //console.log('L2960_show_submenu_for_id(menu_id=' + menu_id + ', level=' + level + ', submenu_for_id=' + submenu_for_id); // Valikko ja piilota-nappula näkyviin ja tuo näkyviin nappula piiloon var L2960_submenu_ul_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id); var L2960_submenu_show_link_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id + '_show_link'); var L2960_submenu_hide_link_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id + '_hide_link'); //15.8.25/PetteriM - Muutettu submenu_ul_elem ja submenu_hide_linkille asettumaan blockin sijasta vain tyhjä. Näin elementeille tulee ilman muita määrittelyitä kuitenkin selaimen asettama oletus display: block, //mutta voit myös asettaa ul-elementeille jonkin display arvon tyylimäärittelyillä esim. flex joka tulee käyttöön kun inlinenä ollut display-määrittely poistetaan. L2960_submenu_ul_elem.style.display=''; L2960_submenu_show_link_elem.style.display='none'; L2960_submenu_hide_link_elem.style.display=''; if (level == 1) { // Vain ekatason klikkauksia seurataan siltä varalta että pitääkö sulkea muita valikoita, koska kukaan ei voi klikata muille tasoille // suljetuissa valikoissa //console.log('L2960_currently_active_first_submenu_parent_id=' + L2960_currently_active_first_submenu_parent_id); if (L2960_currently_active_first_submenu_parent_id != 0) { // Suljettaan edelinen aktiviinen valikon päätaso L2960_hide_submenu_for_id(menu_id, 1, L2960_currently_active_first_submenu_parent_id); } L2960_currently_active_first_submenu_parent_id = submenu_for_id; L2960_currently_active_menu_id = menu_id; //console.log('L2960_currently_active_first_submenu_parent_id SET TO ' + L2960_currently_active_first_submenu_parent_id); } return false; } function L2960_hide_submenu_for_id(menu_id, level, submenu_for_id) { //console.log('L2960_hide_submenu_for_id(menu_id=' + menu_id + ', level=' + level + ', submenu_for_id=' + submenu_for_id); // Valikko ja piilotus-nappula piiloon ja tuo näkyviin nappula esiin var L2960_submenu_ul_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id); var L2960_submenu_show_link_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id + '_show_link'); var L2960_submenu_hide_link_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id + '_hide_link'); L2960_submenu_ul_elem.style.display='none'; L2960_submenu_show_link_elem.style.display=''; L2960_submenu_hide_link_elem.style.display='none'; if (level == 1) { //console.log('L2960_currently_active_first_submenu_parent_id=' + L2960_currently_active_first_submenu_parent_id); // Vain ekatason klikkauksia seurataan siltä varalta että pitääkö sulkea muita valikoita, koska kukaan ei voi klikata muille tasoille // suljetuissa valikoissa if (L2960_currently_active_first_submenu_parent_id == submenu_for_id) { // Suljettiin just aktiivinen submenu, palautetaan sen arvo nollaksi L2960_currently_active_first_submenu_parent_id = 0; L2960_currently_active_menu_id = 0; } history.replaceState(null, '', window.location.pathname + window.location.search); //Tyhjätään hashi vain jos ollaan ykköstasoa sulkemassa. Näin voidaan sulkea syvemmän tason valikoita ilman että urlista häviää hashi joka kertoo että ykköstason valikko on auki. //history.pushState(null, '', window.location.pathname); //10.9.25/PetteriM - Korvattu ylempi tällä. Nyt historiaan jää oikein hash kun avattiin valikko. } return false; } function L2960_submenu_title_onclick(menu_id, level, submenu_for_id, event) { // Pitää tehdä tälläinen if-tarkastelu, että valikon linkin uuteen ikkunaan avaaminen toimii kun avataan CTRL/Shift-klikkaamalla. Linkissä oleva onclick joka palauttaa aina false estää CTRL klikkaamista toimimasta. if ( event.ctrlKey || // Ctrl-näppäin painettuna (Windows/Linux: uusi välilehti) event.metaKey || // Meta-näppäin painettuna (Mac: ⌘ Cmd = uusi välilehti) event.shiftKey || // Shift-näppäin painettuna (esim. avaa uudessa ikkunassa) event.button !== 0 // Ei vasen hiiren nappi (eli keskimmäinen tai oikea) ){ return true; // Palautetaan true -> annetaan selaimen hoitaa linkin avaus normaalisti jolloin nykyinen sivu aukeaa uuteen välilehteen. } //console.log('L2960_submenu_title_onclick(menu_id=' + menu_id + ', level=' + level + ', submenu_for_id=' + submenu_for_id); // Poistetaan tämän klikkaus selainhistoriasta //history.replaceState(null, null, '#menu' + menu_id + '_level' + level + '_submenu' + submenu_for_id); var L2960_submenu_ul_elem = document.getElementById('menu' + menu_id + '_submenu_for_id_' + submenu_for_id); var L2960_a_elem = L2960_submenu_ul_elem.previousSibling.previousSibling; // Eka sibling on tyhjä teksti toka vasta if (L2960_submenu_ul_elem.style.display == 'none') { // Valikko näkyviin kun oli piilossa L2960_show_submenu_for_id(menu_id, level, submenu_for_id); return false; // ei päivitetä urlia, uuteen välilehteen avatessa urliin tulee hashi } else { // Valikko piiloon kun oli näykvissä L2960_hide_submenu_for_id(menu_id, level, submenu_for_id); return false; // ei päivitetä urlia kun poistetaan urlista hash osuus } } //Erotellaan evenlistenerissä tehdyt temput omaan funktioon jotta sitä voidaan kutsua esim. valikon ajax kutsussa koska onloadissa kutsuminen ei silloin toimi. /* * 10.9.25/PetteriM - Lisätään tähän funktioon tarkastelu jossa katsotaan onko kyseinen valikko jo auki ettei käy tilanteita jossa funktio yrittää availla valikkoa monta kertaa * kun funktiota kutsutaan jostain muualta esim. eväste valikon ajax kutsu. */ function L2960_open_submenu_based_on_hash(){ if (window.location.hash) { console.log("url has hash " + window.location.hash); var arr = window.location.hash.match(/#menu(d+)_level(d+)_submenu(d+)/); //console.log(arr); if (arr && arr.length == 4) { // Jos löytyi täsmäävä niin tämä on 4. 0 alkiossa on koko rimpsu var menu = arr[1]; var level = arr[2]; var submenu_for_id = arr[3]; //console.log("submenu_for_id=" + submenu_for_id + ", menu_id=" + menu); if (submenu_for_id > 0) { // Varmistus ettei tule javasfript virhettä kun bugittaa if(document.getElementById('menu' + menu + '_submenu_for_id_' + submenu_for_id)){ /* * Tänne vain jos submenu jota yritetään avata on oikeasti olemassa. Näin estetään virheiden syntyminen jos valikko tulee * vähän jäljessä ajax-latauksen takia. Tätä funktiota voidaan kutsua ajax-kutsussa jolloin halutut tavarat on ladattu. */ if (document.getElementById('menu' + menu + '_submenu_for_id_' + submenu_for_id).style.display == 'none') { L2960_show_submenu_for_id(menu, level, submenu_for_id); } else { console.log("Submenu id:llä=" + submenu_for_id + ", menussa id:llä=" + menu + " on jo auki, ei tehdä mitään."); } } else { console.log("Submenua id:llä=" + submenu_for_id + ", menussa id:llä=" + menu + " ei ollut vielä olemassa, ei yritetä avata submenua."); } } } } } /* Lisätään onload listeneri joka tarkistaa onko urlissa #menuX_levelX_submenuXXXX muotoinen hastagi ja jos on niin * aktivoi sen valikkotietueen ruudulta */ window.addEventListener("load", L2960_open_submenu_based_on_hash); let L2960_menu_elements = []; document.addEventListener('DOMContentLoaded', function() { // Tallennetaan sivun latautuessa valikko elementit muuttujaan jotta voidaan tarkastella onko käyttäjä klikannut niiden ulkopuolelle L2960_handle_clicks_outside_menu-funktiossa // Sivun latautuessa pitäisi kaikkien valikoiden olla mukana. Jos on jokin ajax toteutus, niin pitää L2960_menu_elements // muuttujaan asettaa HTTPRequestissa valikot. L2960_menu_elements = document.querySelectorAll('[id^="L2530_menu"]'); }); // Katsotaan klikkaako käyttäjä valikon ulkopuolelle // ja tehdään sen perusteella asioita kuten suljetaan auki olevia valikoita. function L2960_handle_clicks_outside_menu(event) { if (L2960_menu_elements.length === 0) return; // Ei ole valikkoja vielä tallennettu muuttujaan, palataan ettei tule virheitä. Tämä on mahdollista esim. ajax-toteutuksissa jos käyttäjä klikkailee ennen kuin valikkoja lisätty muuttujaan. let clicked_outside = true; // Tarkistetaan klikattiinko minkään menu elementin sisälle L2960_menu_elements.forEach(function(menu) { if (menu.contains(event.target)) { clicked_outside = false; } }); // Klikattiin valikoiden ulkopuolelle, tehdään haluttuja temppuja if (clicked_outside) { //console.log('Klikattu valikoiden ulkopuolelle'); if (L2960_currently_active_first_submenu_parent_id !== 0) { // On auki joku valikko, suljetaan. L2960_hide_submenu_for_id(L2960_currently_active_menu_id, 1, L2960_currently_active_first_submenu_parent_id); } } } //22.9.25/PetteriM - Lisätty click listeneri jotta voidaan sulkea valikot jos klikataan valikon ulkopuolelle. window.addEventListener("click", L2960_handle_clicks_outside_menu);

☰✕
  • Tapahtumat
  • Tapahtumajärjestäjille ▼▲
    • Tapahtuman ilmoituslomake
  • Tapahtumakalenteri

Tapahtumakalenteri

Jaa tämä sivu sosiaalisessa mediassa

Facebook LinkedIn WhatsApp

Kuhmoisten kunta
Toritie 34 A, 17800 Kuhmoinen (Navigoi)
Kunnanvirasto avoinna asiakkaille
ma - pe klo 9 - 15

kunta@kuhmoinen.fi
kirjaamo@kuhmoinen.fi
Neuvonta 044 756 6883

Laskutusosoite: 
Kuhmoisten kunta, 00064 ADMINISTER, Y-tunnus: 0176357-9

Verkkolaskut:
OVT-tunnus: 003701763579
Operaattori: BasWare, BAWCFI22

Yhteystiedot
Intra
Tapahtumat
Ajankohtaista
Kuulutukset
Tarjouspyynnöt
Palaute


Verkkopalvelun alusta onstage © 2025 online.fi