2016. szeptember 27., kedd

Csak mesélek…4.


Vót nekem egy olyan nagyapám, hogy az csuda. Az mindenkinek meg tudott felelni, senkinek sem maradt adósa. Egyszer egy helós, (mert hogy a házalókat helósnak híjták) bekiáltott az udvarunkba, nagyapám éppen kapálta a tengerit. Naccságosúr! - meseszép kuffert árulok vegyen tűlem. (A kuffer az utazóbőrönd). Oszt ugyan minek az neköm he? – Hát ugyi, ha hómap vonatra száll uraságod, ebbe bérakhatja a culáját ( ruháit)! Az öreg megpederte a kackiás bajuszát és azt mondta; Jaj de bolond kend, elősször is, itt nincs vasutállomás a faluba, másoccor meg ott üljek pucéron a vonatra várva. A helós megemelte a kalapját oszt gyorsan szégyenkezve tovább állt, az öreg meg tovább kapálta a tengerit. Valaméknap a szomszéd köszönt át a kerítésen, adj Isten Gyula! Neked is Józsi. Kólikás még a lovad a ráró? Már nem. Csend. Hanem te Gyula, te mit adtál a lunak amikor kólikás vót? Hát ugyi kapot egy vider hideg vízbe korpát meg melaszt. Azt az áldóját, rohant a szomszéd ű is adott a lunak. Estére jön a szomszéd ríva a kerítéshöz, hát megdöglött a rigó, pedig úgy ahogy mondtad adtam neki korpát meg melaszt, oszt mégis megdüglött. Ne bánkódj szomszid az enyim is így járt két napja. Emiatt egy évig nem beszélt nagyapával a szomszid. Nagyapa egy este, miután megetette a jószágot, jött be a házba fáradtan, hát a fótos nadrág szára kicsit nedves vót, mire megjegyezte nagymamám hogy;  - na esik? Nem fúj. Ezzel a beszélgetés be vót fejezve. Lábat mostak, oszt lefeküdtek. Nagyapa vallásos ember vót, ment is minden vasárnap a misére. Minden este imádkozott elalvás előtt, nagymama meg csak hallgatta mit mond. Mindenkiért imádkozott kend csak engöm nem foglalt bele az imába, miért? Ejnye na asszony, hát már hogyne foglalnálak bele hallhattad éppen az előbb imádkoztam, hogy  Istenem szabadíts meg a gonosztól!  Ja, az más, azzal elaludtak. A ház előtt a kapuban vót egy pad nagyapa odaült ki minden este pipázni, napközben meg a tornácon szeretett citerázni. Mivel vót szőlője, hát vót bora is, szeretett a pohár fenekére nézni néha néha, fiatabb korában inkább a lyányok fenekíre. Nagymama gyakran letorkolta érte, ha többet ivott. Egyszer a kocsmába ment érte a nagymama és hazafelé menet folyamatosan mosta a fejét. Az öregnek felfordult a gyomrában a pálesz és visszajött, mivel szemben állt az asszonnyal pont rá az otthonkára. Hogy nézel ki részeg disznó, mondta. Én asszon? Hát nézd meg magad.
Egyik nap jönnek a tehenek a csordábúl haza, megáll a tehenünk a kapu előtt, oszt bőgött egyet, erre nagyapa kinyitotta neki a kaput, az meg komótosan besétált és szokása szerint egyenesen a gémeskúthoz ment a vizes vályúhoz. Amikor befejezte az ivást, mondta nagymama neki: látod-e te embör, ez csak egy marha, oszt mégis tudja mi az elég! Erre nagyapa csak annyit motyogott a bajusza alatt: vízbűl én is tudnám! Külömben is látod, az ökör iszik magába. Egyik este szedjük nagyapával az érett barackot a kertben kérdeztem tűle hogy mi lesz ebbül? Hát ha nagyanyád nem veszi észre akkor pálinka, oszt ha észre veszi? hát akkor lekvár. Valamék este későn értem a nagyapámék házához, már aludtak, mert az öregek korán lefekszenek. Finoman megkopogtattam az ajtót, de senki nem felelt. Erősebben dörömböltem, gondolva hogy biztosan alszanak azért nem hallják a kopogásomat. Nagyapa gyertyát gyújtott az ajtóhoz csoszogott, és meglérdezte; Ki a ? Na gondoltam megviccelem az öreget beszóltam mély földöntúli hangon; A ramocsaházi asszongyíkos! Ja akkor jóvan mondta, bekiáltott nagymamának; Asszon! Téged keresnek. Azzal visszafeküdt a helyire.
Egyszer menni akartak a falubálra, de a mama nehezen tudott elkészülni. Nagyapa bámulja ahogy nagymama kifesti magát, elégedetlenül csóválja a fejét. Nagymamát zavarja a dolog ezért rászól: - Mit bámulsz öreg úgy rám, mint borjú az új kapura? - No hiszen – vág vissza az öreg -, lehet, hogy én borjú vagyok, de ez a kapu ez már bíz nem új! Morgott magában. Fiatal korában nagyapám is megérte a pénzét. Ezt mondogatta nagymamám. Legénykorában egyszer el akart menni a bálba, de nem vót csak egy gumicsimmája, hát azt szépen megmosta kifényesítette, ráhúzta a nadrágszárát, hogy senki észre ne vegye hogy gumicsizma. Csillogott is a csizma feje, meg lehetett vóna benne borotvákozni. Felkérte a lyányokat táncolni, Amikor Buriskát kérte fel táncolni, ránézett a csizmája fejére, azt hitte a csizmája repedt szét, pedig csak a Buriskán nem vót bugyi. Hanem egyszer azt monta az öreg a nagymamának nézz má ki az ablakon nem egy lu áll az udvarunkon? Kinéz a mama, á nem lu az hanem tehén. Jaj anyjuk, hát ne a tükörbe, hanem az ablakon nézzé ki. Vasárnap a mise után nagyapának nagyon kölött vizelni, hát a sekrestye megé ment, oda szaladt ki a fiatal esperes is, már az sem bírta. Ránéz az öreg a plebános szerszámjára, oszt látja hogy az nagyobb is fiatalabb is. Tisztelendő atyám, nem cserélünk szerszámot? Jaj Gyula bácsi, miért akar maga cserélni? Mert maga az enyémmel még tudna misézni, meg keresztelni, de nekem meg jó vóna a magáé másra is. Egyik este ücsörögnek a tornácon a karosládán, aszongya a nagyapa - te asszon! Ha egyikőnk meghal, én beköltözök a városba... Apám mesélte, hogy hazavitte leendő feleségjelöltjét, hogy bemutassa szüleinek, mire a nagyapa a fülébe súgja: - Ne vedd el fiam, tőlem van. de ezt ne áruld el anyádnak. Nagymama kérdi mit súgott apád fiam? hogy ne vegyem el mert ü az apja. - Fiam, vedd el bátran, te nem apádtól vagy, de ezt ne áruld el neki. Amikor a nagyapa 1950-ben nagy unszolásra belépett a pártba, a falu párttitkára elküldte pestre a parlamentbe küldöttgyűlésre. Az öreg sose vót kinn a falun kívül, már a vonat is csuda vót neki. A vonaton a fülkében ült, oszt mivel előző este paszulyt evett hát egy embereset szellentett. A mellet ülő utas megjegyzi; ez hallatlan. Erre azt mondja az öreg: de szaga van. Utána felpattan egy másik utas szemből és így szólt: Kikérjük magunknak! Nem kell, már kinn van! Erre felpattan a negyedik utas is, ő így szól: - No de kérem, itt többen is vagyunk. Hát osszák el egymás között igazságosan!
Szóval amikor odaért a parlamenthez, azt megösmerte mert lerajzolták neki hogy néz ki. Igen ám de át kellet vóna menni a túlsó ódalra, de annyi francos autó ment az uton hogy sehogy se sikeredett neki. Leszólított egy fiatal legényt mondja mán meg hogy lehet oda átal menni? Bátyám látja azt a lámpát ahol a sok ember áll, na menjen oda oszt ott átmehet. na de miért van három lámpája? Jól figyeljen a piroson a kommunisták mennek át, a sárgán a zsidók, a zöldön a nyilasok, megértette. Nem vagyok én hüle persze hogy értem. Látja az öreg, hogy zőldre vált és elindulnak az emberek, azt a kutyafáját, hogy itt mennyi nyilas van még mindig. Majd sárgára vált és még páran átszaladnak, nahát alig maradt itt zsidó állapította meg bölcsen. Ekkor pirosra váltott, na ez az én színem és szépen komótosan átsétált, az autósok dicsérő szavai közepette. A túloldalon várakozó rendőr, közölte vele, mivel belépett fizessen 50 forint büntetést. Elismeri? Elismerem ötvenben beléptem. Az öreg hazaérve, felment a párttitkárhoz, hogy ü bizony kilép a pártbul, mert pesten 50 forintra büntették azért mert belépett.
Hanem a szomszéd kutyája, mindig átjárt a nagyapa kertjébe, fene a dógát ott érezte jól magát, de az öreget nem zavarta. Este felé ült a tornácon a karosládán és pipázgatott, a házelőtt a kertben meg a szomszéd kutyája aludt a lugas alatt. A komája arra sétált, nézegette a kutyát, majd megkérdi: Gyula komám harap a kutyád? Nem. komám mondta az öreg. A koma belépett a kapun a kutya meg majd szét tépte, alig érkezett kiugrani. Komám hát azt mondtat, hogy nem harap a kutyád, és mégis majdnem széttépett. Mire az öreg: - Aha, de ez nem az én kutyám.




2016. szeptember 24., szombat

A JavaScript nyelvről


1. Főbb tulajdonságok:

    Interpretálás: a forrássorokat a böngésző értelmezi és hajtja végre, lépésről lépésre.
    Tehermentesíti a kiszolgálót és a közbülső hálózatot. (Űrlapok kitöltésekor a kliens ellenőrzi az adatok helyességét)
    Interaktivitás (input mezők, egérműveletek)
    Biztonság: a JavaScriptben nincs semmilyen utasítás vagy függvény, amivel elérhetővé válnának a kliens fájljai a kiszolgáló számára.

2. JavaScript alapok

    Beillesztése a HTML forrásba:
        A <SCRIPT> jelölő segítségével

        <SCRIPT language = "JavaScript">
        ...
        </SCRIPT>
        Eseménykezelőként, más HTML jelölők paramétereként (ld. később)
    Megjegyzés: /* ..... */   vagy // (a sor hátralévő része).
    Kis- és nagybetűk különbözőek.
    Objektum alapú nyelv. Egy objektum részei: elemváltozók (tulajdonságok) és elemfüggvények (metódusok).
    Saját változók használata, típusok:

        var kor = 21;                // egész
        var kamatláb = 10.5          // lebegőpontos (valós)
        var lakhely = "Nyíregyháza"; // vagy 'Nyíregyháza', string
        var hazas = false;           // logikai (boolean), false/true

    A var elhagyható, de használata ajánlott (egy függvény belsejében lokális változót csak így definiálhatunk).
    Az utasítások végén pontosvessző. (Elhagyható, ha külön sorban vannak az utasítások.)
    A JavaScript gyengén típusos nyelv: automatikus konverziók.

    var a = 5;
    var b = '6';
    var c = '7';
    a + b értéke 11,   b + c értéke '67', b * c értéke 42 lesz.

2_1. Példa: Képcsere 1. Ha az egeret a kép fölé visszük, az megváltozik. Megoldás
2_1. Feladat: Képcsere 2. Amelyik kis kép fölé visszük az egeret, az jelenik meg nagyban.
3. Operátorok, kifejezések

    Aritmetikai:

    *, /, % (az osztás maradékát adja vissza: 5 % 3 értéke 2, 5.5 % 3 értéke 2.5) , +, -
    
    Logikai:

    ! (negálás, egy operandusú), && (és), || (vagy)
    
    Összehasonlító:

    == (egyenlő), != (nem egyenlő), <, >, <=, >=
    
    Léptető (egy operandusú operátorok):

    ++, --
    ++a; //növeli a értékét eggyel, értéke a+1
    a++; //növeli a értékét eggyel, értéke a

    3_1. Példa: forrás, futtatás  (A források sok hasznos és új információt tartalmaznak!)
    
    Bitenkénti:

    ~ (negálás, egy operandusú), & (és), | (vagy), ^ (kizáró vagy), << (balra léptetés pl: a << 2), >> (jobbra léptetés az előjel megtartásával), >>> (jobbra léptetés, az előjelet nem veszi figyelembe) (ld. 3. Példa)
    
    Értékadó:

    =,
    +=, -=, *=, /= stb.  Összetett értékadások, bármely kétoperandusú aritmetikai, bitenkénti műveletre.
    Értelmezése: a += b egyenértékű: a = a + b

    3_2. Példa: Számológép1 forrás, futtatás
    3_3. Példa: Számológép2 futtatás
    3_1. Feladat: Jelenjen meg három nyomógomb a weblapon piros, kék ill. fehér felirattal. Amelyikre kattintunk, olyan színű legyen a háttér.
    Segítség: a háttérszín elérése: document.bgColor.
    3_2. Feladat:Készítsünk valuta váltó programot!

    Feltételes kifejezés

    feltétel ? kifejezés1: kifejezés2    értéke: kifejezés1, ha a feltétel igaz, kifejezés2, ha a feltétel hamis.
    Pl.: c = a > b ? a: b;     c értéke a és b közül a nagyobbik lesz

    3_4. Példa: Párosság forrás, futtatás

    3_3. Feladat: Két számról döntsük el, hogy a második osztója-e az elsőnek! forrás, futtatás
    

4. Utasítások
4.1 Utasítás blokk, összetett utasítás
Kapcsos zárójelek között bármennyi utasítás. Mindenütt állhat, ahol egy utasítás állhat. (Pl. ciklusok, szelekciók belsejében.)

4.2 for ciklus
Szintaktikája:
for(inicializáló kifejezés;feltétel;léptető kifejezés)
    utasítás

Az inicializáló kifejezés egyszer, amikor a ciklusra kerül a vezérlés, hajtódik végre. A ciklus addig ismétli az utasítás vére hajtását, amíg a feltétel (logikai kifejezés) igaz. Az utasítás után mindig végrehajtja a léptető kifejezést. Az inicializáló kifejezés több részből is állhat, vesszővel elválasztva. A ciklusfej bármely része elhagyható. Az utasítás lehet blokk is.

4_1. Példa: Összegzés futtatás
4_2. Példa: Csillagok futtatás

Feladatok:
  4_1. N! kiszámítása
  4_2. Írjunk ki csillagokat háromszög alakban!
  4_3. Állítsuk elő a szorzótáblát ciklusok segítségével!
4.3 while utasítás
Szintaktikája:

while (feltétel)
    utasítás

Addig ismétli az utasítást, amíg a feltétel (logikai kifejezés) igaz. Az utasítás lehet blokk is.

4_3. Példa: Írjuk ki, hogy a 10%-os kamatra elhelyezett pénzünk hány év alatt éri el az egymillió Ft-ot! futtatás

4.4 do while utasítás
Szintaktikája:
do{
    utasítások
}while(feltétel)

Hátul tesztelő ciklus. Addig ismétli az utasítást, amíg a feltétel (logikai kifejezés) igaz.

4_4. Példa: Írjuk ki, hogy a 10%-os kamatra elhelyezett pénzünk hány év alatt éri el az egymillió Ft-ot! futtatás

4.5 Az if... else... utasítás
Szintaktikája:
if (feltétel)
   utasítás1
else
   utasítás2

Ha a feltétel (logikai kifejezés) igaz, akkor akkor az utasítás1 kerül végrehajtásra, majd az if szerkezet utáni utasításokkal folytatódik a program. Ha a feltétel hamis, akkor az utasítás2 kerül végrehajtásra. Az else ág elhagyható. Mindkét utasítás lehet összetett utasítás is.

4_5. Példa: Üdvözöljük a napszaknak megfelelően a felhasználót! futtatás

Feladatok:
  4_4. Az üdvözlés négy féle legyen: Jó reggelt!, Jó napot!, Jó estét!, ill. Jó éjszakát!
  4_5. Írjunk JavaScript függvényt, amely kiértékeli a következő űrlapot!

4.6 A switch utasítás
Többágú szelekciót tesz lehetővé. Szintaktikája:

switch (kifejezés)
{
     case érték1:
        utasítások
        break
     case érték2:
        utasítások
        break
        ...
     default:
        utasítások
}

A kifejezés kiértékelése után az értelmező azon a case ágon folytatja a futtatást, ahol az érték megegyezik a kifejezés értékével. Ha ilyen ág nincs, akkor a default ágra kerül a vezérlés. A default ág elhagyható. A break utasítással érhetjük el azt, hogy a megfelelő ág végrehajtása után a vezérlés a switch utáni első utasításra kerüljön.

4_6. Példa: Írjuk ki, hogy milyen nyelvű böngészőt használunk! forrás, futtatás


5. Egyszerű párbeszédablakok
Az alert, a  confirm, valamint a prompt az előre definiált window objektum elemfüggvényei. A window objektum az aktuális ablakot reprezentálja, ez az alapértelmezés, nem szükséges kiírnunk a nevét (pl. window.alert...).

alert: A felhasználót tájékoztathatjuk egy üzenettel. Szintaktikája: alert(üzenet). Az argumentumként kapott stringet (üzenet) egy OK gomb társaságában kiírja egy kis párbeszédablakba.

confirm: A felhasználó igaz/hamis döntést hozhat. Szintaktikája: confirm(üzenet). Az argumentumként kapott stringet (üzenet) egy OK és egy Cancel gomb társaságában kiírja egy kis párbeszédablakba. A függvény true értékkel tér vissza, ha az OK, és false értékkel, ha a Cancel gombot nyomtuk meg.

prompt: Egy szövegbeviteli mezőt nyúj. Szintaxisa: változó = prompt(kiírandó, alapérték). Megjeleníti a kiírandó stringet, valamint egy szövegbeviteli mezőt benne az alapértékkel (string), amit felülírhatunk. Visszatérési értéke a beírt szöveg (, ha az OK-ra kattintottunk).

5_1. Példa: futtatás

5_1. Feladat: Egy gombra kattintva jelenjen meg egy dialógusablak, melyben angolul megadhatjuk az oldal kívánt háttérszínét! (A document objektum bgColor elemváltozójának kell értéket adnunk.)

6. Időzítés
A setTimeout függvény időzített programvégrehajtásra szolgál. Szintaxisa: setTimeout("kifejezés", msec). Egy időzítés indul el, és az msec-ben megadott milliszekundum múlva a kifejezés (ami általában JavaScript utasítás, vagy függvény) végrahajtódik.

6_1. Példa: Egy link automatikus aktivizálódása (letöltése) egy megadott időintervallum letelte után. futtatás
6_2. Példa: Egy oldal automatikus frissítése. futtatás
6_3. Példa: Egy szöveg futtatása a státuszsorban. futtatás

6_1. Feladat: Digitális óra megjelenítése. Használjuk a dátum objektum getHours(), getMinutes() és getSeconds() függvényeit!

7. Űrlap ellenőrzése elküldés előtt
Az űrlapokat általában elküldjük egy a szerveren lévő programnak, amely feldolgozza a benne szereplő adatokat. Ha az űrlapot hibásan töltöttük ki, akkor feleslegesen terheljük mind a hálózatot, mind a szerver oldali programot. Egy JavaScript programmal a kliens oldalon el lehet végezni a kitöltött mezők ellenőrzését (a JavaScript programot a böngésző futtatja), és így csak a hibátlan űrlapot küldjük el a szervernek.

Az alábbi példa négy különböző mező ellenőrzését végzi el. Ehhez használjuk a stringek kezelését megvalósító string objektum elemváltozóit, elemfüggvényeit:

string objektum:
  Elemváltozó:
    length   a string hosszát tartalmazza.
  Elemfüggvények:
    charAt(index)  az index-edik pozícióban lévő karakterrel tér vissza. (A karakterek sorszámozása 0-va kezdődik!)
    indexOf(minta) a minta-t keresi, visszatérési értéke a megtalált pozíció, ill. ha nem talál: -1.
    substring(index1, index2) egy részlánccal tér vissza az index1-től az index2 előtti karakterrel bezárólag.
    toLowerCase() kisbetűssé konvertálja a stringet.
    toUpperCase() nagybetűssé konvertálja a stringet.

A JavaScript

Mi a JavaScript?

A JavaScriptet a Netscape fejlesztette ki. Ez egy olyan parancsnyelv, amely segítségével létrehozhatunk interaktív Web-oldalakat. A cikk során számos klasszikus példával megismerkedhet az olvasó, ezeket könnyedén beépítheti a saját oldalaiba, vagy továbbfejlesztheti õket saját igényeinek megfelelõen. Az Internetrõl is letölthetõ sok egyszerû és kevésbé egyszerû példa. Tanácsos ezek forrását is áttanulmányozni, hiszen jó ötletek leshetõk el belõlük.

A JavaScript nem Java!

Mielõtt mélyebben belekezdenénk a JavaScript tanulmányozásába, érdemes egy fontos különbségre felhívni a figyelmet. A JavaScript nem tévesztendõ össze a Java-val! A hasonló név ellenére a Java önálló programozási nyelv, szükség van fordító programra, amivel a forráslistából bájtkódot készíthetünk. A JavaScript pedig parancsnyelv, futtatásához nem kell más, mint egy böngészõ, amely kezelni képes a JavaScriptet.

Hasonlóság azonban nem csak a névben van, ugyanis a két nyelv szintaxisa a C nyelvhez hasonlatos, a manapság divatos objektumorientáltságot pedig egyikük sem kerülhette el.

JavaScript futtatása

Mint korábban említettem, csak egy JavaScriptet "értõ" böngészõre van szükségünk. Ez lehet akár a Netscape Navigator, amely a 2.0-as verzió óta ismeri a JavaScriptet, vagy a Microsoft Internet Explorer (3.0 vagy nagyobb verzió). Mivel ezek a böngészõk a legelterjedtebbek, így a legtöbb ember képes JavaScriptet futtatni.
Ha az olvasó nem ismerné a HTML alapjait, érdemes most utána olvasni az Interneten található leírásokban, vagy az errõl szóló szaklapokban, mielôtt tovább olvasná a leírást.

JavaScript beágyazása HTML dokumentumba

A JavaScript utasítások közvetlenül a HTML oldalba kerülnek be. Lássunk erre egy egyszerû példát:

<HTML>
<BODY>
Ez itt egy hagyományos HTML dokumentum.<BR>
  <SCRIPT LANGUAGE="JavaScript"> 
    document.write("Ez már JavaScriptben íródott!!!<BR>")
  </SCRIPT>
Ez a sor újra HTML!<BR>
</BODY>
</HTML>


Ha a böngészõnk értelmezni tudja a JavaScriptet, akkor ez a pár sor a következõt eredményezi:

Ez itt egy hagyományos HTML dokumentum.
Ez már JavaScriptben íródott!!!
Ez a sor újra HTML.

A három sor közül az elsõ és utolsó HTML-ben íródott, míg a középsõt a JavaScript document.write() parancsával írattuk ki. Látható, hogy a HTML <SCRIPT> elemét használtuk arra, hogy JavaScript utasításokat ágyazzunk a HTML dokumentumunkba. Minden, amit a <SCRIPT> és a </SCRIPT> elemek közé teszünk JavaScript utasításokként értékelõdnek ki. A LANGUAGE attribútum segítségével a JavaScript verziószámát határozhatjuk meg. A lehetséges verziók:

    <SCRIPT LANGUAGE="JavaScript"> 1.0-ás JavaScript-et támogató böngészõkhöz
    (pl. Netscape 2.0)
    <SCRIPT LANGUAGE="JavaScript1.1"> 1.1-es JavaScript-et támogató bôngészõkhöz
    (pl. Netscape 3.0)
    <SCRIPT LANGUAGE="JavaScript1.2"> 1.2-es JavaScript-et támogató bôngészõkhöz
    (pl. Netscape 4.0)

Ez azt jelenti, hogy például a Netscape 2.0 a JavaScript1.1, a Netscape 3.0 a JavaScript1.2 verziójú kódot figyelmen kívül hagyja.

Mi történik akkor, ha a böngészõnk régebbi, JavaScriptet nem ismerõ típus? Mivel a böngészõ nem ismeri a <SCRIPT> elemet, ezért azt nem veszi figyelembe, és a közötte lévõ utasításokat szövegként jeleníti meg a HTML dokumentumon belül. Természetesen van megoldás ennek elkerülésére. Amint az ismert, a HTML dokumentumokba megjegyzéseket az alábbi módon tehetünk:

<!-- A megjegyzés eleje
....................................
A megjegyzés vége -->

Javítsuk ki az elõbbi egyszerû példát az alábbi módon:

<HTML>
<BODY>
Ez itt egy hagyományos HTML dokumentum.<BR>
  <SCRIPT LANGUAGE="JavaScript">
  <!-- A JavaScript kód elrejtése, amennyiben szükséges
    document.write("Ez már JavaScriptben íródott!!!<BR>")
  // A kód elrejtésének vége -->
  </SCRIPT>
Ez a sor újra HTML!<BR>
</BODY>
</HTML>

A JavaScript utasításokat HTML megjegyzések közé tesszük, így a nyelvet nem ismerõ böngészõk nem jelenítik meg az utasításokat, ugyanis azt megjegyzésként értelmezik. A JavaScriptet nem ismerõ böngészõ ezt a kódot az alábbi módon jelenítené meg:

Ez itt egy hagyományos HTML dokumentum.
Ez a sor újra HTML.

Ellenkezõ esetben igen zavaros sorokat kaphatunk:

Ez itt egy hagyományos HTML dokumentum.
document.write("Ez már JavaScriptben íródott!!!<BR>")
Ez a sor újra HTML.

Fontos viszont megemlíteni, hogy a JavaScript nem védhetõ meg a "kíváncsiskodó szemek" elöl, hiszen a HTML dokumentumok forrása megtekinthetõ a legtöbb böngészõ segítségével, a JavaScript utasítások pedig ennek közvetlen részét képezik.

Események

A programoknak gyakran kell reagálnia olyan eseményekre, mint billentyû lenyomása, vagy az egér mozgatása. Az események és eseménykezelõk a JavaScript programozásban is nagyon fontosak. Az ilyen események kezeléséhez különféle függvények, eseménykezelõk léteznek.
Tekintsük a következõ példát. Azt akarjuk, hogy a JavaScript programunk reagáljon valamilyen eseményre, pontosabban létrehozunk egy gombot, amire kattintva egy ablak jelenik meg a képernyõn. Ez gyakorlatilag azt jelenti, hogy az ablaknak egy kattintás-esemény (click-event) hatására kellene megjelenni. Az itt használt eseménykezelõ neve: onClick.

<form>
<input type="button" value="Kattints rám!" onClick="alert('Hello!')">
</form>

Ebben a példában létrehoztunk egy ûrlapot, amely egyetlen gombból áll. Ennek így még semmi köze nincs a JavaScripthez, hiszen ezt HTML-ben írtuk meg. Az újdonság az onClick="alert('Hello!')" rész, ami az <INPUT> HTML elem belsejében található, és ez már valóban JavaScript (vegyük azt is észre, hogy itt nem használtuk a <SCRIPT> HTML elemet!). Ez mondja meg, hogy mi történjen akkor, ha a felhasználó megnyomja a gombot. Ha ez bekövetkezik, akkor valójában egy onClick esemény generálódik, és ez végrehajtja az alert('Hello!') JavaScript kódot. Ez egy függvény, amely létrehoz egy üzenetablakot, melyben a zárójelen belül idézõjelek közé írt szöveget jeleníti meg.

Figyeljük meg azt is, hogy lehet idézõjelen belül idézõjelet használni! JavaScriptben mindkét idézõjelet lehet használni, csak arra kell ügyelni, hogy ez a számítógép számára is egyértelmû legyen. Az alábbi idézõjelhasználat is helyes lett volna:

onClick='alert("Hello!")'

Általánosan így írható le az eseménykezelés szintaxisa:

<HTML_elem eseménykezelõ_neve="JavaScript_utasítás">


Még sok más eseménykezelõ létezik. Ezek közül néhánnyal még találkozunk a cikk során, de addig is a következõ táblázat összefoglalja a fontosabb eseményeket:


Események     Mire alkalmazható?     Mikor következik be?     Az eseménykezelõ neve
abort
    képek     A felhasználó megszakítja a kép betöltését    
onAbort
blur     ablak, keret, és minden ûrlapmezõ     Az egérrel az aktuális mezõn kívülre kattintunk    
onBlur
change     szövegmezõ, listaablak     Megváltoztatunk egy ûrlap beli értéket    
onChange
click     gombok, rádió gomb, csatolások (linkek)     Az ûrlap valamely elemére, vagy egy csatolásra (link) kattintunk    
onClick
error
    ablak, képek     Ha kép vagy dokumentum betöltésekor hiba lép fel    
onError
focus     ablak, keret, minden ûrlapmezõ     Kijelöljük az ûrlap egy elemét    
onFocus
load     dokumentum törzse (BODY)     A böngészõ új lapot tölt be    
onLoad
mouseout
    linkek     Az egérmutató elhagyja a linket    
onMouseOut
mouseover     linkek     Az egérmutató valamely link felett tartózkodik    
onMouseOver
reset
    ûrlapokra     Ûrlap törlésekor    
onReset
select     szövegmezõ     Új mezõt jelölünk ki    
onSelect
submit     submit típusú nyomógomb     Ûrlap elküldésekor    
onSubmit
unload     dokumentum törzse (BODY)     Ha másik HTML oldalra lépünk    
onLoad



Függvények

Minden programozási nyelvben, így a JavaScript-ben is rendkívül fontos szerepet kapnak a függvények. A nyelv számos függvényt tartalmaz, például a korábban megismert alert() függvény is ezek közül való. A függvényeknek adhatunk át paramétereket, amelyekkel dolgozni fognak (az alert() függvény paramétere az idézõjelek között átadott szöveg volt, amit a függvény egy üzenetablakban jelenített meg). Mi magunk is írhatunk függvényeket, hogy a nagyobb, összetettebb feladatokat kisebb, jobban kezelhetõbb részekre bontsuk. Ezek a függvények szintén átvehetnek paramétereket, sõt értéket is adhatnak vissza, csakúgy, mint más progamozási nyelvekben. A függvények mûködését egy rövid példán keresztül mutatom be:

<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése, amennyiben szükséges

function szamol_1(x,y){
  var eredmeny = x + y;
  document.write("<H2>" + x + " + " + y + " =
" + eredmeny + "</H2><BR>");
}

function szamol_2(x,y){
  return x+y;
}

szamol_1(23,11);
szamol_1(17,27);
szamol_1(3,45);

document.write("<H2>13 + 5 = " + szamol_2(13,5) + "<H2>");

//-->
</SCRIPT>
</HTML>


A program eredménye a következô lesz:

23 + 11 = 34

17 + 27 = 44

3 + 45 = 48

13 + 5 = 18

Ebben a rövid programban két függvényt hoztunk létre szamol_1 és szamol_2 néven. Figyeljünk arra, hogy a JavaScript a kis- és nagybetûk között különbséget tesz, így például a JAVASCRIPT, javascript, JavaScript három különbözõ függvénynévnek bizonyulna.
A JavaScript-ben írt függvények elé kötelezôen be kell írni a function kulcsszót, viszont ellentétben pl. a C++ vagy a Java függvényeivel nem kell a visszatérési értéknek, valamint a paramétereknek a típusát megadni.
Nézzük most meg részletesen a szamol_1 nevû függvényt, hogyan épül fel, és hogy mûködik!


function szamol_1(x,y){
  var eredmeny = x + y;
  document.write("<H2>" + x + " + " + y + " = " + eredmeny + "</H2><BR>");
}

A function kulcsszót közvetlenül a függvény neve követi, majd zárójelekben a paramétereket adjuk meg. Ez a függvény két paraméterrel rendelkezik, x-szel és y-nal (amelyek típusát nem adtuk meg). A függvény törzse kapcsos zárójelek között van, és ide helyezzük el a függvényhez tartozó utasításokat.
A függvényben három változót is használunk (x, y és eredmeny). A JavaScript programok változókban tárolják az információkat, adatokat. A példánál maradva x illetve y tárolja el az összeadandó számok értékeit, és az eredmeny nevû változó tárolja el az összeget.
Eltérôen más programozási nyelvektôl, a JavaScript-ben nem kell definiálnunk a változók típusát (mint pl. int, float, char stb.), hanem azt a programot végrehajtó böngészô állapítja meg a változók használata alapján.
JavaScript-ben a változók neve betûvel, vagy aláhúzással (_) kezdôdhet, és a függvénynevekhez hasonlóan szintén különbség van kis- és nagybetûk között.
Változót a var kulcsszóval, majd a változó nevének megadásával deklarálhatunk. Deklaráláskor az értékadó operátor (=) segítségével kezdôértéket is rendelhetünk a változókhoz. Ezt tettük a példánkban is:

var eredmeny = x + y;

Azaz létrehoztuk az eredmeny nevû változót, és kezdôértéknek a paraméterként átadott x és y változók összegét adtuk. A függvény törzsének második sora elvégzi a számolás eredményének kiírását. A document.write utasítást használtuk itt fel, amivel már találkoztunk. Az egyetlen érdekesség az argumentumban található, a zárójeleken belül, ugyanis a kiírandó szöveget részekbôl fûztük össze. A "<H2>" rész HTML-bôl ismerôs, a kiírás típusát határozza meg. Ehhez fûzzük hozzá az x változót. Mivel x nem idézôjelek között van, ezért nem egy x karakter, hanem az x változó értéke kerül kiírásra. És így tovább, elôször egy "+" karaktert, majd y változó értékét, egy "=" karaktert, ill. az eredmeny változó értékét fûzzük az eddigi karakterláncunkhoz, legvégül a "</H2>" HTML elemmel zárjuk le a karakterláncunkat a HTML szabályainak megfelelôen. Ha x értéke 23, y értéke 11, akkor az eredmeny változó értéke x és y összege, azaz 34 lesz, és a kiírandó karakterlánc a következônek felel meg:

"<H2> 23 + 11 = 34 </H2>"

A függvényeket a nevükkel hívjuk meg, és híváskor adjuk át a paraméterek aktuális értékét. Példánkban az elsô függvényt háromszor hívtuk meg:

szamol_1(23,11);
szamol_1(17,27);
szamol_1(3,45);

Látható, hogy a függvény nevét követi az ún. aktuális paraméter lista, ami az elsô esetben 23 és 11, azaz a függvényben szereplô x változó értéke 23, míg az y értéke 11 lesz. Az aktuális paraméterlistát ugyanúgy zárójelek közé tesszük, mint a függvények definíciójában szereplô formális paraméterlistát. A második esetben ez alapján x 17, y 27, a harmadik esetben x 3, y 45 értéket vesz fel.

A szamol_2 függvény egy lényeges dologban különbözik az elôbbitôl. Rendelkezik visszatérési értékkel.


function szamol_2(x,y){
  return x+y;
}

Amint említettem, JavaScript-ben eltérôen más programozási nyelvektôl nem kell a visszatérési érték típusát megadni. A függvény x+y értéket adja vissza a return utasítás felhasználásával. Figyeljük meg a függvény hívását!


document.write("<H2>13 + 5 = " + szamol_2(13,5) + "</H2>");

A szamol_2 függvényt a 13 és 5 paraméterekkel hívtuk meg, amely kiszámolja azok összegét és visszatér ezzel az értékkel. Ez az érték behelyettesítôdik a hívás helyére, így a document.write függvény argumentuma gyakorlatilag a következô lesz:


"<H2>13 + 5 = 18 </H2>"

A HTML dokumentum

A JavaScript felépítése

A JavaScript egy HTML oldal minden elemét, és a böngészô ablakát is objektumként kezeli. Minden ilyen objektum rendelkezik tulajdonságokkal (adatmezõkkel) és megfelelô függvényekkel, amelyeken keresztül az oldal szinte minden tulajdonságát megváltoztathatjuk, a böngészô egyes részeit programozhatjuk. A böngészô ablaka a JavaScript szemszögébôl egy ún. window objektum (window-object). Ez bizonyos elemeket tartalmaz, mint például a státuszsort. Az ablak belsejébe HTML oldalt tölthetünk, amit a JavaScript a document objektumon keresztül kezel. A document objektum az aktuálisan betöltött oldalt kezeli, és ezáltal egyike a leggyakrabban használt és legfontosabb objektumoknak. Segítségével módosíthatjuk az oldalunk megjelenését, például beállíthatjuk a színeket! Próbáljuk ki az alábbi példát!

Nézzük meg a kódot!

<HTML>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- A kód elrejtése, ha szükséges

function sarga(){
  document.bgColor="#FFFF00";
}

function kek(){
  document.bgColor="#00FFFF";
}

function eredeti(){
  document.bgColor="#FFFFFF";
}

// --> Elrejtés vége
</SCRIPT>
</HEAD>

<BODY>
<CENTER>
<P>
<FORM>
<INPUT TYPE="button" VALUE="Sárga háttér" onClick="sarga()">
<INPUT TYPE="button" VALUE="Kék háttér" onClick="kek()">
<INPUT TYPE="button" VALUE="Eredeti háttér" onClick="eredeti()">
</FORM>
</P>
</CENTER>

</BODY>
</HTML>

Létrehoztunk három függvényt sarga(), kek() és eredeti() néven. Mindegyik egyetlen értékadó utasítást tartalmaz, amellyel a document objektum bgColor nevû mezôjének adunk új értéket. Ebben az adatmezôben tárolódik ugyanis a háttérszín aktuális beállítása. Ha ezt felülírjuk valami más értékkel, akkor megváltozik a dokumentum háttérszíne is. Az új színt a HTML-bôl jól ismert RGB színkód formájában kell megadni. A gombokat egy ûrlappal állítottuk elô, és a Bevezetésben már bemutatott onClick esemény hatására hívódnak meg a megfelelô függvények.

Megváltoztathatók a HTML oldalunk egyéb színbeállításai is, ha a document objektum más adatmezôjének adunk az elôbbihez hasonló módon értéket. Egy táblázatban foglaljuk össze a színekkel kapcsolatos mezôket:

alinkColor     Az aktív linkek színe
bgColor     Háttérszín
fgColor     Az elôtér színe
linkColor     A linkek színe
vlinkColor     Már meglátogatott linkek színe

Ezek ismeretében a linkek színét például a következô utasítással vátoztathatjuk meg:



document.linkColor = "#xxxxxx"


ahol xxxxxx helyére a kívánt RGB színkódot kell beírni.

Ennél sokkal fontosabb azonban, hogy a HTML objektumok is a document objektum mezôi. HTML objektumok például az oldalon megjelenô képek, linkek, ûrlapok. Mielôtt megnéznénk, hogy milyen módon kezelhetjük ezeket az objektumokat, hozzunk létre egy egyszerû HTML oldalt!

<HTML>
<HEAD><TITLE>Példa oldal</TITLE></HEAD>
<BODY BGCOLOR=#FFFFFF>

<CENTER>
<IMG SRC="pelda1.jpg" NAME="pelda_pic1">

<P>
<FORM NAME="pelda_urlap">
Név:
<INPUT TYPE="text" NAME="nev" VALUE="JavaScript"><BR><BR>
Cím:
<INPUT TYPE="text" NAME="cim" VALUE="www.netscape.com"><BR><BR>
<INPUT TYPE="button" VALUE="Kattints rám" NAME="gomb"
onClick="alert('Most megnyomtál! :-)')">
</FORM>

<P>
<P>
<IMG SRC="pelda2.jpg" NAME="pelda_pic2">

<P>
<P>
<A HREF="http://www.netscape.com">Nézd meg a Netscape JavaScript
oldalait is!</A>
</CENTER>

</BODY>
</HTML>


Ez a rövid HTML kód a következô dokumentumot eredményezi.


Hogyan hivatkozhatunk az oldal egyes elemeire? Ebben a példa HTML dokumentumban két kép, egy link és egy ûrlap található két szövegmezôvel valamint egy gombbal. A hivatkozás az egyes objektumok típusa szerint megy. Az oldalon elôforduló elsô képhez az images[0] névvel férhetünk hozzá, a másodikhoz az images[1] névvel és így tovább. A linkek a links[0], links[1], links[2]... néven szerepelnek. Az ûrlapokat forms[0], forms[1], forms[2]..., míg az ûrlapok egyes mezôit (pl. szövegmezô, listaablak, gombok) forms[X].elements[0], forms[X].elements[1], forms[X].elements[2]... névvel érhetjük el, ahol X valamely ûrlap sorszáma.

A példánál maradva nézzük meg sorrendben, hogy az oldalon található HTML objektumokra hogyan hivatkozhatunk (mivel a HTML objektumok a document objektum mezôi, ezért mindegyik hivatkozás ezzel kezdôdik):

    az elsô képre:
    document.images[0]
    az ûrlap Név nevû szövegmezôjére:
    document.forms[0].elements[0]
    az ûrlap Cím nevû szövegmezôjére:
    document.forms[0].elements[1]
    az ûrlap gombjára:
    document.forms[0].elements[2]
    a második képre:
    document.images[1]
    a linkre:
    document.links[0]

Azt, hogy egy hivatkozás révén milyen mûveleteket végezhetünk el az egyes HTML objektumokkal, különbözô JavaScript referencia könyvek tartalmazzák. Mi néhány alapvetô mûveletet nézünk csak meg. Hivatkozzunk az ûrlapunk elsô szövegmezôjére, olvassuk ki a tartalmát a nev nevû változóba! Ezt megtehetjük az alábbi utasítással (figyeljünk arra, hogy kis- és nagybetû itt is számít):



nev = documents.forms[0].elements[0].value;

A szövegmezô tartalma bekerült a változónkba, amivel továbbiakban különféle mûveleteket végezhetünk: pl. kiírathatjuk egy üzenetablakba az alert("Szia " + name) függvénnyel. Nézzük meg ezt mûködés közben, majd utána a kódot, amelyben már minden ismert!

Név:  

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- Elrejtés

function Udvozol(){
  var name = document.forms[0].elements[0].value; 
  alert("Szia "+name);
}
// -->
</SCRIPT>
</HEAD>

<BODY>
<FORM NAME="urlap"> Név:  <INPUT TYPE="text" NAME="nev">
<INPUT TYPE="button" VALUE="Írd be a neved, majd kattints rám!"
 onClick="Udvozol()">
</FORM>

</BODY>
</HTML>

Jogosan felmerülhet a kérdés, hogy nagyobb HTML dokumentumok esetén van-e egyszerûbb módszer a hivatkozásra, hiszen nem könnyû sok link, kép, ûrlapmezô esetén kiszámolni, hogy pontosan melyikkel szeretnénk dolgozni. Természetesen erre is van lehetôség, mégpedig úgy, hogy minden HTML objektumnak önálló, egyedi nevet adok. Ha az ûrlapunkat megnézzük, akkor látható, hogy ezt már meg is tettük az <INPUT> HTML elemen belül a NAME attribútum megadásával:



<FORM NAME="pelda_urlap">
Név:
<INPUT TYPE="text" NAME="nev" VALUE=""><BR>


Az ûrlapunknak a pelda_urlap nevet, az elsô szövegmezônek a nev nevet adtuk. Ez alapján, erre az objektumra document.forms[0].elements[0] helyett használhatjuk a document.pelda_urlap.nev hivatkozást is.

Új értéket is rendelhetünk bizonyos HTML objektumokhoz, például egy szövegmezôhöz:

És íme a kód: onClick esemény hatására új értéket rendelünk a az uj nevû ûrlap szoveg nevû mezôjéhez.

<FORM NAME="uj">
<INPUT TYPE="text" NAME="szoveg" VALUE="www.microsoft.com">
<INPUT TYPE="button" VALUE="Új szöveg"
  onClick="document.uj.szoveg.value='www.yahoo.com';">
</FORM>


A location objektum

Ez az objektum reprezentálja a betöltött HTML dokumentum címét. Ha például betöltöttük a Netscape oldalát, akkor a location objektum href mezôje (location.href) ennek az oldalnak a címét fogja tárolni (www.netscape.com). Ehhez a mezôhöz új értéket rendelve új oldalt tölthetünk be a böngészôbe:

<FORM>
<INPUT TYPE="button VALUE="Altavista"
  onClick="location.href='http://altavista.com';">
</FORM>


 Javascript példák
Űrlap "küldése" javascriptben
<head>
    <script type="text/javascript">
        function send() {
            var x = document.getElementById('posts');
            var u = document.f1.user.value;
            var v = document.f1.valami.value;
            x.innerHTML += "<b>"+u+"</b>:"+v+"<br>";         
        }
    </script>
</head>
<body>
<h1>Űrlap feldolgozása Javascriptben</h1>

<div style="padding:20px;border:solid 1px;width:500px;">
<form name="f1" action="javascript:send()">
Név:
<input type="text" name="user" size="30" maxlength="30"><br>
Mondj valamit:
<input type="text" name="valami" size="50" maxlength="50"><br>
<input type="submit" value="Mehet!">
</form>
</div>     
<div id="posts">  </div>
</body> </html>

Űrlap ellenőrzése

<head>
    <script type="text/javascript">
        function send() {
            var x  = document.getElementById('posts');
            var um = document.getElementById('umsg');
            var vm = document.getElementById('vmsg');
            var u  = document.f1.user.value;
            var v  = document.f1.valami.value;
            um.innerHTML = "";
            vm.innerHTML = "";
            if (u=="") {
                um.innerHTML = "Nem maradhat üresen!";
           } else
            if (v=="") {
                vm.innerHTML = "Nem maradhat üresen!";
            } else {
            x.innerHTML += "<b>"+u+"</b>:"+v+"<br>";         
            }
        }
    </script>
</head>

<body>
...
<form name="f1" action="javascript:send()">
    <table>
    <tr><td colspan="2"> <div id="umsg" style="height=20px;color:red;"> </div></td></tr>   
    <tr> <td>Név:</td> <td><input type="text" name="user" size="30" maxlength="30"></td></tr>    
    <tr><td colspan="2"><div id="vmsg" style="height=20px;color:red;"> </div></td></tr>
    <tr> <td>Mondj valamit: </td> <td><input type="text" name="valami" size="50" maxlength="50"></td></tr>
    <tr><td colspan="2"><input type="submit" value="Mehet!"></td></tr>
    </table>
</form>
...
<div id="posts" style="padding:10px;"> </div>
...
</body>
Matematikai algoritmusok

Czövek Márton programja
3k+1 probléma
<script>
    function send(){
        var x = document.getElementById("Szoveg");
        var i = document.f1.Bemenet.value;
        x.innerHTML = i+" , ";
        while( i != 1 ) {
            if ( i%2 == 1) {
                i= 3*i+1;
            } else { i = i/2; }
            x.innerHTML += i+" , ";                  
        }              
    }
</script>
...
<p>
    <strong style="font-size: 18px">Írj be egy számot:</strong>
    </p>  
    <form name="f1" action="javascript:send()">
        <input type="text" name="Bemenet" size="15" maxlength="15"> <br/>
        <input type="submit" value="Küldés">
        <p id="Szoveg"></p>  
    </form>
Eseménykezelők
Katona Dávid játéka:

<!DOCTYPE html>
<html>
<head>
    <title>Game!</title>
    <meta charset="utf-8">
    <style>
        #canvas {
                display: block;
                border: solid 1px;
                margin-top: 50px;
                margin-left: auto;
                margin-right: auto;
               
            }
    </style>
</head>

<body>
    <canvas id="canvas" width= "500" height= "500";></canvas>
    <table  align="center">
        <tr><td><form action="javascript:move()">
            <input type="submit" value="Start!" Onclick="">
        </form></td>
        <td><form>
        <input type="submit" value="Restart!" onClick="href='labda.html'">
        </form></td></tr>
        <tr><td colspan="2">
        <form>
        <select id="Level">
        <option value="Beginner" >Kezdő</option>
        <option value="Medium" > Közepes</option>
        <option value="Impossible" >Legyőzhetetlen</option>
        <option value="Multi" >2 játékos</option></select>
        </form></td></tr>
    </table>
    <script for=document event="onkeydown()" language="JScript">
        if (window.event) KeyDown(window.event.keyCode);
    </script>
    <script language="JavaScript1.2">
    if (navigator.appName != "Microsoft Internet Explorer")
        document.captureEvents(Event.KEYDOWN)
        document.onkeydown = NetscapeKeyDown;
    function NetscapeKeyDown(key){
         KeyDown(key.which);
    }
    </script>
    <script>
        function KeyDown(whichkey){
            if (line.x<=0 && whichkey == 37){line.x=line.x;}
            else{
                if (line.x>=W-l && whichkey == 39){line.x=line.x;}
                else{
                    if (whichkey == 37) {line.x-=linemove;}//Bal nyíl lenyomása esetén...
                    if (whichkey == 39) {line.x+=linemove;}//Jobb nyíl lenyomása esetén...
                    if (whichkey == 52) {line.x-=linemove;}//Bal nyíl a NumPad-on...
                    if (whichkey == 54) {line.x+=linemove;}//Jobb nyíl a NumPad-on...
                }
            }
            if (lv=="Multi"){
                if (enemy.x<=0 && whichkey == 65)
                {enemy.x=enemy.x;}
                else{
                    if (enemy.x>=W-l && whichkey == 68){enemy.x=enemy.x;}
                    else{
                    if (lv=="Multi")
                    {
                        if(whichkey == 65){enemy.x-=linemove;}
                        if(whichkey == 68){enemy.x+=linemove;}
                                            }
                    }
                }
            }
        }
        var c=document.getElementById("canvas");
        var beginner=0;
        var medium=0;
        var impossible=0;
        var pm=1;
        var ctx=c.getContext("2d");
        var x=250, y= 250;
        var frame = 1000/60;
        var H=500, W=500;
        var l=100;
        var score=0;
        var escore=0;
        var linemove= l/5;
        var enemy = {}
        enemy = {
            x : W/2-l/2,
            y : 10,
            vonal: function(){
                ctx.beginPath();
                ctx.moveTo(this.x,this.y);
                if (lv=="Beginner"){ctx.lineTo(this.x+l,this.y);}
                if (lv=="Medium"){ctx.lineTo(this.x+l,this.y);}
                if (lv=="Impossible"){ctx.lineTo(this.x+l/2,this.y);}
                if (lv=="Multi"){ctx.lineTo(this.x+l,this.y);}
                ctx.stroke();
            }
        }
        var ball = {}
        ball = {
            x : W/2,//labda indulási x koordinátája
            y : H-15,//labda indulási y koordinátája
            r : 4,//labda sugara
            vx: 4.10,//labda vízsintes mozgásának összetevője
            vy: 2.2,//labda függőleges mozgásának összetevője
            ax: 0.000,//labda vízszintes gyorsulása
            ay: 0.000,// labda függőleges gyorsulása
            rajz: function(){//Ez a függvény rajzolja le a labdát.
                ctx.beginPath();
                ctx.arc(this.x,this.y,this.r,0,Math.PI*2);
                ctx.stroke();
            }
        }
        var line = {}//Ez az alsó vonal
        line = {
            x : W/2-l/2,
            y : H-10,
            vonal: function(){
                ctx.beginPath();
                ctx.moveTo(this.x,this.y);
                ctx.lineTo(this.x+l,this.y);
                ctx.stroke();
            }
        }
        var anim;
        var lv;
        function move (){
            lv=document.getElementById("Level").value;//lekérdezzük a szintet induláskor.
            anim = setInterval(update,frame)
        }

        function update (){
            ctx.clearRect(0,0,W,H);
            ctx.font = "bold 20px Arial";
            ctx.fillText(escore,5,200);
            ctx.fillText(":",5,250);
            ctx.fillText(score,5,300);
            ball.rajz();
            line.vonal();
            enemy.vonal();
            if (lv=="Beginner")
            {if(pm==2){enemy.x=(ball.x+beginner/2-l/2);}
            else{enemy.x=(ball.x-beginner/2-l/2);}}
            if (lv=="Medium")
            {if(pm==2){enemy.x=(ball.x+medium/2-l/2);}
            else{enemy.x=(ball.x-medium/2-l/2);}}
            if (lv=="Impossible")
            {if(pm==2){enemy.x=(ball.x+impossible/2-l/4);}
            else{enemy.x=(ball.x-impossible/2-l/4);}}
            ball.x+=ball.vx;
            ball.y+=ball.vy;
            ball.vx +=ball.ax;
            ball.vy +=ball.ay;
           
            if (lv=="Beginner"){if (ball.y <=ball.r+enemy.y && ball.x>enemy.x && ball.x<enemy.x+l) {
                    ball.y=ball.r+enemy.y;
                    ball.vy=-ball.vy;
                }
            }//labda visszapattan
            if (lv=="Medium"){if (ball.y <=ball.r+enemy.y && ball.x>enemy.x && ball.x<enemy.x+l) {
                    ball.y=ball.r+enemy.y;
                    ball.vy=-ball.vy;
                }
            }//labda visszapattan
            if (lv=="Impossible")
            {if (ball.y <=ball.r+enemy.y && ball.x>enemy.x && ball.x<enemy.x+l/2) {
                    ball.y=ball.r+enemy.y;
                    ball.vy=-ball.vy;
                }
            }//labda visszapattan
            if (lv=="Multi"){if (ball.y <=ball.r+enemy.y && ball.x>enemy.x && ball.x<enemy.x+l) {
                ball.y=ball.r+enemy.y;
                ball.vy=-ball.vy;
                }
            }//labda visszapattan
            if(ball.y <enemy.y){score+=1;ball.vy=-ball.vy;
                if (score-escore==10){//10 pontkülönbségnél vége van!
                    ctx.fillText("Nyertel: "+score+" "+escore+"-re!", 195, 235);
                    ctx.fillText("Gratulalunk!", 210, 265);
                    clearInterval(anim);//megáll az animáció
                }
            }
            if (ball.y >= -ball.r+line.y && ball.x>line.x && ball.x<line.x+l) {
                ball.y=-ball.r+line.y;
                ball.vy=-ball.vy;
                pm=Math.floor(Math.random()*2)+1;
                if(lv=="Beginner"){beginner=Math.floor(Math.random()*(l+l/3))+1;}
                if(lv=="Medium"){medium=Math.floor(Math.random()*(l+l/5))+1;}
                if(lv=="Impossible"){impossible=Math.floor(Math.random()*(l/4-1))+1;}
            }
            if (ball.y >line.y){
                escore+=1;
                pm=Math.floor(Math.random()*2)+1;
                if(lv=="Beginner"){beginner=Math.floor(Math.random()*(l+l/3))+1;}
                if(lv=="Medium"){medium=Math.floor(Math.random()*(l+l/5))+1;}
                if(lv=="Impossible"){impossible=Math.floor(Math.random()*(l/4-1))+1;}
                ball.vy=-ball.vy;
                if (escore-score==10){//10 pontkülönbségnél vége van!
                    ctx.fillText("Vesztettel: "+score+" "+escore+"-re :S", 165, 235);
                    ctx.fillText("Probald ujra!", 205, 265);
                    clearInterval(anim);//megáll az animáció
                }
            }
            if (ball.x <= ball.r) {// az oldalsó falról való visszapattanás.
                ball.x=ball.r;
                ball.vx=-ball.vx;
            }
            if (ball.x >= W-ball.r) {// az oldalsó falról való visszapattanás.
                ball.x=W-ball.r;
                ball.vx=-ball.vx;
            }
        }
    </script>
</body>
</html>

2016. szeptember 22., csütörtök

Publikációsjegyzék


1. Keleten a helyzet változatlan / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 4. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140051&secId=28040

2. Adj uram... / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 8. p.

http://holnapmagazin.hu/vers.php?vers_id=25733

3. Igényes alkotások a gyémánt Galériában / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 10. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140055&secId=28314

4. Kinek kellett? / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

5. Piros-kék reményünk / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 25. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140057&secId=28315

6. Az eperfa / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  október 04. II. évf. 1. sz. 12. p. A holnapmagazin díjjazottja 2015-ben!

http://holnapmagazin.hu/proza.php?proza_id=17814

7. A téli út végén / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

8.  A televízió / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 17. p.

9. Portré / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

10. Kritika / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  szeptember 20. I. évf. 1. sz. 22. p.

11. Hajtás vezet a győzelemhez  / Szabó László István - In : Irány Szabolcs-Szatmár-Bereg megyei Közéleti és Kulturális lap 1996  október 4. I. évf. 2. sz. 28. p.


12. Az internethasználati képzések a könyvtárban / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2002 szeptember VII.évf. 3.(27)sz. 12. p.

13. Az e-könyv mint a virtuális könyvtárak alapja / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó – 2007. dec.XII.évf.4.(48)sz 6. p.


14. Számítástechnikai tanfolyam időseknek / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 március XIV.év.1.(53)sz. 8.p.

http://www.mzsk.hu/kepzesek/informatikai-kepzes/

15. A könyvtári weblapkészítés lehetőségei és buktatói / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009.június XIV.év.2.(54)sz.4-5p

http://www.matarka.hu/cikk_list.php?fusz=59570

16. Az infokommunikációs eszközök és szolgáltatások népszerűsítése / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 szeptember XIV.év. 3.(55)sz.6. p.

http://www.matarka.hu/cikk_list.php?fusz=60013

17. A könyvtárak szerepe a sérült emberek életében / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 december XIV.év. 56.sz.

http://www.matarka.hu/cikk_list.php?fusz=61216

18 Digitális írástudással az egyenlőesélyért / Szabó László István. – In : Szabolcs-Szatmár megyei Könyvtári kis híradó 2009 XIV.évf. 4.(56)sz. 5-6. p.

http://www.matarka.hu/cikk_list.php?fusz=61216

19. Beszélő számítógép / Szabó László István – In : Korszerű Könyvtár 2010 április Esélyteremtés G 1.2.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140060&secId=28037
http://www.odrportal.hu/kereso/index.php?stype=author&q=%22Szab%C3%B3+L%C3%A1szl%C3%B3+Istv%C3%A1n%22

20. E-könyvek (elektronikus könyvek)a modern könyvtárakban / Szabó László István – In : Korszerű Könyvtár 2010 augusztus Elektronizált könyvtár D 1.8.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140061&secId=28313

21. Felolvasó szoftverek érzékszervi hiányosságban szenvedő emberek számára / Szabó László István - In: Szabolcs-Szatmár megyei Könyvtári kishíradó (2010 decemberi szám.) XV.évf. 1/3. (57/58.) sz. 12-14. p.

http://szabolaszloistvan.blogspot.hu/2010/09/feolvaso-szoftverek-szamitastechnikaban.html

22.Melyik internetböngészőt válasszam? / Szabó László István - In: Szabolcs-Szatmár megyei Könyvtári kishíradó (2010 decemberi szám.) XV.évf. 59-60sz. 6. p.

http://www.matarka.hu/cikk_list.php?fusz=93531

23. Személyes adatok védelme az interneten / Szabó László István - In Könyvtári Levelező Lap 2011 februári szám, 18 p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140064&secId=28316

http://epa.oszk.hu/00300/00365/00111/pdf/kll1102_18-19.pdf

24. Szenvedélybetegségek jelei a könyvtárakban /Szabó László István - In : Korszerű Könyvtár 2011 májusi száma

http://www.tollal.hu/mu/a-jatek-fuggoseg-jelei-a-konyvtarban

25. Esélyegyenlőséget biztosító eszközök a könyvtárakban / Szabó László István - In : Könyv Könyvtár Könyvtáros 2011 májusi száma XX. évf. 5. sz. 43. p.

http://epa.oszk.hu/01300/01367/00243/pdf/EPA01367_3K_2011_05_43-47.pdf

26. A könyvtár mint játékterem / Szabó László István - In : Könyvtári levelező/lap, 2011. (23. évf.) 11. sz. 3-5. p.


http://epa.oszk.hu/00300/00365/00120/pdf/kll1111_003-005.pdf

27. A vadász a természetért van, nem a természet ellen / Szabó László István - In : Nimród Vadászújság,  2012. év Márciusi száma

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=158612&secId=42066
http://szabolaszloistvan.blogspot.hu/2014/09/cikkek.html

28. "Timeo hominem unius libri". Gondolatok könyvről, olvasásról, könyvtárról. / Szabó László István - In : Könyv Könyvtár Könyvtáros 2012 januári száma XXI. évf. 5. sz. 21-25. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=140077&secId=28041

http://ki.oszk.hu/3k/2012/09/timeo-hominem-unius-libri/

http://epa.oszk.hu/01300/01367/00197/pdf/EPA01367_3K_2012_01_021-025.pdf

29. Milyen a XXI. század könyvtárosa /Szabó László István - In : Könyv Könyvtár Könyvtáros,2012. (21. évf.) 10. sz. 3-5. old.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=158590&secId=42062

http://ki.oszk.hu/3k/2012/10/milyen-a-xxi-szazad-konyvtarosa/


http://epa.oszk.hu/01300/01367/00206/pdf/EPA01367_3K_2012_10_03-05.pdf

30. Felelősség a környezetért /Szabó László István - In : Kelet-Magyarország,2012. Szeptember 20.  LXIX. évfolyam 221.szám 5.p.

http://szabolaszloistvan.blogspot.hu/2014/09/cikkek.html

31. Milyen szerepet tölt be az olvasás az ember személyiségének fejlesztésében 1. /  Szabó László István - In : Nyírségi Gondolat 2013 március-áprilisi száma VI. évf. 5. sz. 37. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=160631&secId=43567

32. Milyen szerepet tölt be az olvasás az ember személyiségének fejlesztésében 2. /  Szabó László István - In : Nyírségi Gondolat 2013 május-júniusi száma VI. évf. 6. sz. 20. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=160633&secId=43568

33. Milyen szerepet tölt be az olvasás az ember személyiségének fejlesztésében 3. /  Szabó László István - In : Nyírségi Gondolat 2013 július-augusztusi száma VI. évf. 7-8. sz. 39. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=160816&secId=45459

34. Nem csak a húszéveseké a világháló /  Szabó László István - In : Nyugdíjasélet 2013 szeptemberi száma XVIII. évf. 9. sz. 13. p.

http://magyarparnasszus.hu/cikkek/nem-csak-a-huszeveseke-a-vilaghalo

35. Isten éltesse Szent Hubertusz legöregebb katonáját 1. /  Szabó László István - In : Nyírségi Gondolat 2013 szeptember-októberi száma VI. évf. 9-10. sz. Rovat: Társasági szalon 18. p.

http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=169236&secId=50685

36. Isten éltesse Szent Hubertusz legöregebb katonáját 2. /  Szabó László István - In : Nyírségi Gondolat 2013 november-decemberi száma VI. évf. 11-12. sz. Rovat: Társasági szalon 16p.

37. Isten éltesse Szent Hubertusz legöregebb katonáját 3. /  Szabó László István - In : Nyírségi Gondolat 2014 január-februári száma VII. évf. 1-2. sz. Rovat: Társasági szalon 17.p.

38. A könyv nemzedékünk végrendelete /  Szabó László István - In : Vigilia 79. évfolyam 1. szám 2014 januári szám Napjaink rovat

http://vigilia.hu/content/79-%C3%A9vfolyam-1-sz%C3%A1m


39. Szenvedélybetegségek jelei és következményei a családban / Szabó László István - In Könyvtári Levelező Lap 2014 márciusi szám, 17-20 p.

http://epa.oszk.hu/00300/00365/00150/pdf/EPA00365_konyvtari_levelezo_lap_2014_03_17-20.pdf

40. A tömegkommunikációs eszközök hogyan formálják a társadalmi morált?. /  Szabó László István - In : Nyírségi Gondolat 2014 március-április havi száma VII. évf. 3-4. sz. Rovat: Társasági szalon 47p.

http://tollal.hu/mu/a-tomegkommunikacios-eszkozok-hatasa-a-tarsadalmi-moralra

41. Gondolatok a könyvtári terápiákról. /  Szabó László István - In : Könyv Könyvtár Könyvtáros 2014 júliusi száma 23. évf. Rovat: Fórum  15-17p.
http://www.mzsk.hu:8123/JaDoX_Portlets/displayContent?docId=169076&secId=50565
http://ki.oszk.hu/3k/2014/07/gondolatok-a-konyvtari-terapiarol/#more-6321

42. Szenvedélybetegségek jelei és következményei a családban (1). /  Szabó László István - In : Nyírségi Gondolat 2014 május-június havi száma VII. évf. 5-6. sz. Rovat: Közösségi szalon 40p.

43. Szenvedélybetegségek jelei és következményei a családban (2). /  Szabó László István - In : Nyírségi Gondolat 2014 július-augusztus havi száma VII. évf. 7-8. sz. Rovat: Közösségi szalon 43p.

44. Szenvedélybetegségek jelei és következményei a családban (3).  /  Szabó László István - In : Nyírségi Gondolat 2014 szeptember-október havi száma VII. évf. 9-10. sz. Rovat: Közösségi szalon 40p.

45. Isten éltesse Szent-Hubertus legöregebb katonáját.  /  Szabó László István - In : Alkony Vadászmagazin 2014 augusztus-szeptember havi száma XI. évf.. Rovat: Portré 12p.

http://szabolaszloistvan.blogspot.hu/2014/09/cikkek.html

46. Digitalizálási tapasztalatok Nyíregyházán / Szabó László István - In : Könyvtári Levelező Lap 2014 augusztus havi száma Rovat:E-könyvtár 15p.

http://epa.oszk.hu/00300/00365/00155/pdf/EPA00365_konyvtari_levelezo_lap_2014_08_15-16.pdf

47. A könyv és a könyvtár társalami szerepe a XXI. századi ember életében /Szabó László István - In : Nyíregyháza Könyve 2014  47.-56.p.

48. Szenvedélybetegségek jelei és következményei a családban 3.  /  Szabó László István - In : Nyírségi Gondolat 2014 november-december havi száma VII. évf. 11-12. sz. Rovat: Közösségi szalon 40p.

49. Harc a demencia ellen 1 /  Szabó László István - In : Nyírségi Gondolat 2015 január-február havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 22p.


50. Adj Uram... /  Szabó László István - In : Nyírségi Gondolat 2015 január-február havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 36p.

51. A politikus szava  /  Szabó László István - In : Nyírségi Gondolat 2015 január-február havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 36p.

52. A könyv és az olvasás személyiség formáló szerepe  /  Szabó László István - In : Kláris Irodalmi-Kulturális Folyóirat  2015 15/3 márciusi száma XXIV. évf. 3. sz. Rovat: Tanulmányok rovat - Közművelődés - 45-46 p.


http://klarisujsag.hu/index.php?oldal=0381


53. Harc a demencia ellen 2  /  Szabó László István - In : Nyírségi Gondolat 2015 március- április havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 22p.


54. Harc a demencia ellen 3  /  Szabó László István - In : Nyírségi Gondolat 2015 május- június havi száma VIII. évf. 1-2. sz. Rovat: Közösségi szalon 12p.


55. Harc a demencia ellen 4  /  Szabó László István - In : Nyírségi Gondolat 2015 július- augusztus havi száma VIII. évf. 1-2. sz. Rovat: Kulturális szalon 15p.

56 A könyv és az olvasás személyiség formáló szerepe 2  /  Szabó László István - In : Kláris Irodalmi-Kulturális Folyóirat  2015 15/4 áprilisi száma XXIV. évf. 4. sz. Rovat: Tanulmányok rovat - Közművelődés - 41-42 p.

57.  Nem csak a húsz éveseké a világ-háló /Szabó László István - In : Nyugdíjas élet 2015  4.p.

58. Csak mesélek /Szabó László István - In : Nyíregyháza Könyve 2015  90.-92.p.

59.MEMENTÓ Farkas"Schultz" Tibor /Szabó László István - In :Nyírségi gondolat 2015 szeptember-október havi száma VIII. évfolyam 9-10. sz. Társasági rovat  28.p.

60.Gyerekkori emlékek /Szabó László István - In :Nyírségi gondolat 2015 szeptember-október havi száma VIII. évfolyam 9-10. sz. Közösségi Szalon -  43.p.

61.Gondolatok könyvről könyvtárról és az olvasás fontosságáról /Szabó László István - In :Irodalmi Kávéház Magazin 2015 évi száma  -  241.p.

62.A disznóölés /Szabó László István - In :Nyírségi gondolat 2015 november-december havi száma VIII. évfolyam 11-12. sz. Társasági Szalon -  25.p.

63. Versek(Adni hittel, Adj Uram...,  A provokátor hangja, Menj csak, ha menned kell, A csalódás, Nőnapi köszöntő!) /Szabó László István - In :Négy dimenzió  2015 év  17 kötet -107-109 p.

64.  A jégszszív /Szabó László István - In :Nyírségi Gondolat 2016  január-február havi száma IX. évfolyam 1-2. sz. Közösségi szalon - 33 p.

65. A Plutó kutya /Szabó László István - In :Nyírségi Gondolat 2016  március-április havi száma IX. évfolyam 3-4. sz. Közösségi szalon - 40 p. Mécs László díjjas alkotás!

66. A szegény ember baltája /Szabó László István - In :Nyírségi Gondolat 2016  május-június havi száma IX. évfolyam 5-6. sz. Társasági szalon - 29 p.

67. Üdv a vadásznak /Szabó László István - In :Magyar Vadászlap 2016 július havi száma XXV. évfolyam 7. sz. - 73 p.

68. A kiskoszos és a kontyosrádiók /Szabó László István - In :Nyírségi Gondolat 2016 július- augusztus havi száma IX. évfolyam 7-8. sz. - Kultúrális szalon - 15 p.

69. Csak mesélek (A Vártanya)/Szabó László István - In : Nyíregyháza Könyve 2016  90.-92.p.


Szakmai előadások:

1. Határon túli magyar könyvtárosok továbbképzése Az internet szerepe a könyvtári tájékoztatásban. Elhangzott: 2001. október 4.-én az MZSK.-ban NKÖM program keretében

2.2009 január 26. SZAKMAI TOVÁBBKÉPZÉS Elektronikus  adatszolgáltatás és honlapszerkesztés Elhangzott: 2009 január 26.-án Szakmai továbképzé az MZSK. Konferenciatermében

3. A weblapkészítés lehetőségei a vidéki könyvtárakban Elhangzott: 2009 április 10.-én az MZSK.-ban NIIF Program keretében

4. Hasznos információk az interneten Elhangzott: 2009.szeptember 07. 9-től - 10-ig az MZSK.-ban MENET 2008 Program keretében NFÜ, E-Magyarország

5. Álláskeresés az interneten Elhangzott: 2009.szeptember 07. 10-től - 11-ig az MZSK.-ban MENET 2008 Program keretében NFÜ, E-Magyarország

6. Intézzen mindent otthonról Elhangzott: 2009.szeptember 07. 12-től - 13-ig az MZSK.-ban MENET 2008 Program keretében NFÜ, E-Magyarország

7. A játékszenvedély jelei a könyvtárakban: Elhangzott: 2011.március 25. 10-től 12-ig az MZSK-ban InternetFiesta 2011 Program keretében NKA, E-Magyarország

8. A szenvedélybetegség jelei a családban Elhangzott:2013. március 20. 8-tól 10-ig a Váci Mihály Művelődési Ház  Levelek Ady Endre ut 1. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

9.  Az internetben rejlő lehetőségek: ügyfélkapu, szórakozás, kultúra, információ Elhangzott: 2013. március 24. 10-től 12-ig MZSMVK Oktatóterem Nyíregyháza, Szabadság tér 2. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

10. Álláskeresés az interneten , kísérőlevél, motivációs levél, önéletrajz, megjelenés, stílus. Elhangzott: 2013. március 26. 10-től 12-ig. MZSMVK oktatóterem Nyíregyháza Szabadság tér 2. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

11. A szenvedélybetegség jelei a családban Elhangzott:2013. március 27. 8-tól 10-ig a   Budai Nagy Antal Gimnázium  Nagykálló Vasváry Pál ut 1. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

12.A szenvedélybetegség jelei a családban Elhangzott:2013. március 29. 11-tól 12-ig a Faluház  Nyírvasvári Kossuth ut 1. Internet Fiesta 2013 Program keretében  NKA, IKSZ.

13.A szenvedélybetegség ay interneten Elhangzott:2015. március 20. 10-tól 11-ig a Túróczy Zoltán Evangélikus Angol Két Tanítási Iskola  Nyíregyháza, Luther ut 7. Internet Fiesta 2015 Program keretében  NKA. támogatásával.