// JavaScripty do Severskych listu - www.severskelisty.cz
// Copyright by Michael.Stanovsky

var noveokno     = window.noveokno; 
var noveoknogoog = window.noveoknogoog;

// ===========================================================================
// script, kterej umi includovat jiny seznam scriptu
//         jmeno souboru musi byt relativni vzhledem k tomu, odkud to je volano
function include(script_filename) {
   document.write('<' + 'script');
   document.write(' language="javascript"');
   document.write(' type="text/javascript"');
   document.write(' src="' + script_filename + '">');
   document.write('</' + 'script' + '>');
}
// ===========================================================================
// trasovani
//    pouziva se system jsTrace v1.3 Aarona Gustafsona (www.easy-designs.net/code/jsTrace) ... knihovna jstrace.js
//         vcetne drag&drop API Aarona Boodmana (www.youngpup.net/projects/dom-drag) ...... knihovna dom-drag.js
//         tyhle knihovny by se mely pripojit v pripade potreby na zacatku HTML dokumentu
//         jejich pripojenim vznikne trasovaci okno
//    ja pouzivam pro zapnuti trasovani booleovskou promennou "trasuj", musi se definovat pred pripojenim tohoto souboru,
//         nejlepe v zahlavi u souboru "sesstart.php" nebo v nem
//    POZOR - funguje jen ve vnoreni 1. urovne

// tohle se udela pri pripojeni toho souboru - nebude-li existovat promenna trasuj, trasovani se nezapne
if (typeof(trasuj)!='undefined') { if (trasuj) { include(src="../jsTrace.js");
                                                 include(src="../dom-drag.js");
                                               }
                                 };
// vlastni trasovaci funkce - je osetreno, aby neexistence pripojeni knihovny jsTrace.js nezpusobilo chybu
function trace(msg) {
   if (typeof(jsTrace)!='undefined') {jsTrace.send('<p style="color:white;text-align:left">'+msg);} 
}
// ===========================================================================
// test na MSIE prohlizec
function testMSIE()  {
   if (testFP()) return;
   if (navigator.appName.substr(0,1)=="M") {return true};
}
// ===========================================================================
// test na MSIE5 prohlizec
function testMSIE5()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="M") && (navigator.appVersion.indexOf("MSIE 5.")>0)) {return true};
}
// ===========================================================================
// test na MSIE6 a starsi prohlizec
function testMSIE6()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="M") && (navigator.appVersion.indexOf("MSIE 6.")>0)) {return true};
}
// ===========================================================================
// test na MSIE7 prohlizec
function testMSIE7()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="M") && (navigator.appVersion.indexOf("MSIE 7.")>0)) {return true};
}
// ===========================================================================
// test na MSIE8,9 prohlizec
function testMSIE8()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="M") && ((navigator.appVersion.indexOf("MSIE 8.")>0) ||
                                                (navigator.appVersion.indexOf("MSIE 9.")>0))    ) {return true};
}
// ===========================================================================
// test na NETSCAPE prohlizec
function testNetscape()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="N") && (navigator.vendor.substr(0,1)=="N")) {return true};
}
// ===========================================================================
// test na SAFARI prohlizec
function testSafari()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="N") && (navigator.vendor.substr(0,1)=="A")) {return true};
}
// ===========================================================================
// test na CHROME prohlizec
function testChrome()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="N") && (navigator.vendor.substr(0,1)=="G")) {return true};
}
// ===========================================================================
// test na MOZILLA/FIREFOX/FLOCK prohlizec
function testMozilla()  {
   if (testFP()) return;
   if ((navigator.appName.substr(0,1)=="N") && (navigator.vendor.substr(0,1)!="N") && (navigator.vendor.substr(0,1)!="A")) {return true};
}
// ===========================================================================
// test na OPERA prohlizec
function testOpera()  {
   if (testFP()) return;
   if (navigator.appName.substr(0,1)=="O") {return true};
}
// ===========================================================================
// test na zobrazeni ve FrontPage
function testFP()  {
   var adres=" "+window.location;       // URL bezneho okna
   if (adres.substr(1,20)=="file:///C:/Documents") {return true};
}
// ===========================================================================
// test na ne-WEBSERVER
function testNEINET()    {
   if (location.hostname=="") {return true};
}
// ===========================================================================
// test na lokalni server nebo ne-WEBSERVER
function testLOCAL()    {
   if (location.hostname.indexOf(".")==-1) {return true};
}
// ===========================================================================
// uklada cookie
function setcook(jmeno)    {
   var vyprsi=new Date();
   vyprsi.setTime(vyprsi.getTime()+5000);                         // platnost 5 vterin
   var nazevcookie="ymssl99=";
   document.cookie=nazevcookie+jmeno+";path=/;expires="+vyprsi.toGMTString();
}
// ===========================================================================
// cte cookie
function getcook()    {
   var nazevcookie="ymssl99=";
   zacatek=document.cookie.indexOf(nazevcookie);
   if (zacatek != -1) {zacatek+=nazevcookie.length;
                       konec=document.cookie.indexOf(";",zacatek);
                       if (konec == -1) {konec=document.cookie.length}; 
                       jmeno=document.cookie.substring(zacatek,konec);
                      }
                 else {jmeno="xxxxxx";
                      };
   return jmeno;
} 
// ===========================================================================
// otevreni okna s alertovou zpravou
function openAlert(co,id,x,y) {
xx=200+x;
yy=200+y;
   window.open(co,"slalert"+id,"toolbar=no,location=no,directories=no,status=no,menubar=no,"+
                            "scrollbars=yes,resizable=yes,copyhistory=no,width="+xx+",height="+yy) ;
}
// ===========================================================================
// zhasnutí watermarku například v poli input text
// inspirace: http://www.davidjrush.com/blog/2009/06/javascript-creating-a-simple-textbox-watermark/
// příklad:   <input type="text" ... id="box1" onfocus="hideWatermark('box1')" style="background:url('../images/textmail.gif');">
function hideWatermark(theID) {
    var element = document.getElementById(theID);
    element.style.backgroundImage = 'none';
    element.style.backgroundColor = 'white';
}
// ===========================================================================
// onclick funkce pri vytvareni okna s externim odkazem mimo SL
//    zaridi, aby stranka byla v samostatnem okne XXXBLANK
//    kdyz se nepovede otevrit samostatne okno, zobrazi to v okne stavajicim
// do tagu <a ...> je treba vlozit: onclick="javascript:return !openoknoext(this);" - to delam preprocesorem
// pouziva globalni promennou "noveokno" uvedenou v zahlavi souboru
// ??? funguje to vůbec ??? jednodušší test a snad fungující - viz google
function openoknoext(link) { 
   var retvalue=true; 
   if (noveokno!=null && !noveokno.closed) {noveokno.focus(); 
                                            noveokno.location.href=link.href;} 
                                     else  {noveokno=window.open(link.href,"xxxblank"); 
                                            if (noveokno==null || typeof(noveokno)=="undefined") {retvalue=false;}
                                                                                           else  {link.target="xxxblank"; 
                                                                                                  noveokno.focus();} 
                                           } 
   return retvalue; 
} 
// ===========================================================================
// okno pro zobrazeni Googlový mapy (a případně dalších věcí), převážně v zpravičky2
//    zaridi, aby to bylo v samostatnem okne xxxgoog
//    kdyz se nepovede otevrit samostatne okno, zobrazi to v okne stavajicim
//    pouziva globalni promennou "noveoknogoog" uvedenou v zahlavi souboru  
function openoknogooglemap(url,x,y) {
   var param="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width="+x+",height="+y;
   noveoknogoog=window.open(url,"xxxgoog",param);                                         // otevrit v novem okne
   if (noveoknogoog==null || typeof(noveoknogoog)=="undefined") {location.href=url;}      // nepovedlo se - dat do puvodniho okna
                                                          else  {noveoknogoog.focus();}   // povedlo se - dat nove okno do popredi            
}   
// ===========================================================================
// kontroluje správnost emailu - dvě varianty, pomocí funkce VALIDATE_EMAIL/ODESILATEL jsou volány obě
// v PHP - http://www.root.cz/clanky/php-kontrola-e-mail/

// varianta 3 ... http://interval.cz/clanky/javascript-kontrola-spravnosti-e-mailove-adresy-3
function zkontroluj_email_3(adresa)  {
    re = /^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,3}$/;
    return adresa.search(re) == 0;
}    

// varianta 2 ... http://interval.cz/clanky/javascript-kontrola-spravnosti-e-mailove-adresy-2
function zkontroluj_email_2(adresa)  {
// zjištění pozice znaku @
    var pozice_zavinace = adresa.indexOf("@");
// kontrola pravidla 1, je aspoň jeden @ v adrese?
    if (pozice_zavinace < 0)
        return false;
// získání částí před a po znaku @
    var cast_pred_zavinacem = adresa.substring(0,pozice_zavinace);
    var cast_po_zavinaci = adresa.substring(pozice_zavinace+1,adresa.length);
// kontrola pravidla 1, zda tam není ještě další @
    if (cast_po_zavinaci.indexOf("@") >= 0)
        return false;
// kontrola pravidla 2
    if (cast_pred_zavinacem.length <= 0)
        return false;
// kontrola pravidla 3
    if (cast_po_zavinaci.length <= 0)
        return false;
// zjištění pozice poslední tečky
    var pozice_posledni_tecky = cast_po_zavinaci.lastIndexOf(".");
// kontrola pravidla 4
    if (pozice_posledni_tecky < 0)
        return false;
// kolik znaků je ještě za poslední tečkou?
    var pocet_znaku_za_posledni_teckou = cast_po_zavinaci.length - pozice_posledni_tecky - 1;
// kontrola pravidla 6
    if (pocet_znaku_za_posledni_teckou < 2  ||  pocet_znaku_za_posledni_teckou > 3)   // ?????
        return false;
// kontrola pravidla 7
    var pozice_dvou_tecek_vedle_sebe = adresa.indexOf("..");
    if (pozice_dvou_tecek_vedle_sebe >= 0)
        return false;
// kontrola pravidla 5 u části před @
    if (cast_pred_zavinacem.charAt(0) == "."  ||  cast_pred_zavinacem.charAt(cast_pred_zavinacem.length-1) == ".")
        return false;
// kontrola pravidla 5 u části po @
    if (cast_po_zavinaci.charAt(0) == "."  ||  cast_po_zavinaci.charAt(cast_po_zavinaci.length-1) == ".")
        return false;
// pokud jsme se dostali až sem, vše je O.K.
    return true;
}

function validate_email(form) {  
    if (!zkontroluj_email_3(form.email.value) || !zkontroluj_email_2(form.email.value))
          { alert("Musíte správně vyplnit svoji e-mailovou adresu!");
            form.odesilatel.focus(); 
            return false;
          }
    return true; 
}

function validate_odesilatel(form) {  
    if (!zkontroluj_email_3(form.odesilatel.value) || !zkontroluj_email_2(form.odesilatel.value))
          { alert("Musíte správně vyplnit svoji e-mailovou adresu!");
            form.odesilatel.focus(); 
            return false;
          }
    return true; 
} 
// ===========================================================================
// otevři okno s Ethno Radiem 64 kbps
function OpenEthno64() {
window.open('http://ethnoradio.cz/ethno-play-64.html','PLAY', 'toolbar=0, location=0, scrollbars=0, resizable=0, top=40, left=40, width=480, height=200'); 
}
// ===========================================================================






// ===========================================================================
// spousteni skriptu s galerii pri kliknuti na obrazek
// ===================================================
// melo by byt na konci celeho dokumentu
// vyuziva se objektovy model dokumentu DOM1, mozna i DOM2 (formatovani/css)

// bacha na velka/mala pismena, 
//    napr. vlastnost "event" v MSIE je neco uplne jinyho, nez "Event" ve Firefoxu, element "A" se nekdy muze psat i malym pismem

// vse se dela pouze v pripade, ze se obrazek nachazi v adresari xxxxxxj a je maly (tj. jmeno nekonci x)
// 1. obrazek nema onclick a je obalen tagem <a href="#"> - kriminal nahradim volanim javascriptu
// 2. obrazek nema onclick a neni obalen tagem <a....> - pridam vastnost onclick (Mozilla/Firefox+Opera+Netscape)
// 3. resp. to resim pres globalni onclick podminku - (MSIE+Safari+Chrome)
//    globalni onclick podminka funguje i pro Firefox+Opera+Netscape, ale v tomto pripade neumim dekodovat nektere parametry obrazku, 
//    napr. nadrazeny element aj... 
// zobrazime obrazek velky (jmeno konci x) - zavola se skript pro zobrazeni galerie tohoto tvaru: OpenOknoSlideShow('../xxxxxxxj/yyyyyyyx.jpg');

// -------------------------------------
// testuje, zda je obrazek maly (jmeno nekonci x) z zda je z adresare xxxxxxj, vrati adresu velkeho obrazku
function testadresarfoto(nam)  { 
  lomlast=nam.lastIndexOf("/");  // posledni lomitko
  lomprelast=nam.lastIndexOf("/",lomlast-1)
  teclast=nam.lastIndexOf(".");  // posledni tecka
  adresar=nam.substr(0,lomlast); // zacatek jmena koncici adresarem
  obrazek=nam.substr(0,teclast); // zacatek jmena koncici obrazkem
  obrazek=".."+obrazek.substr(lomprelast); // povinne to musi byt ve tvaru "../adresar/fotka.jpg"
  if ((adresar.substr(adresar.length-1,1).toLowerCase()=="j") &&
      (obrazek.substr(obrazek.length-1,1).toLowerCase()!="x")) { return(obrazek+"x"+nam.substr(teclast,nam.length-teclast)); }
                                                               { return(null) }
}
// -------------------------------------
// zobrazi obrazek lupy v pravem dolnim rohu obrazku
function zobrazlupu(element) {
  lomlast=element.src.lastIndexOf("/");              // posledni lomitko
  lomprelast=element.src.lastIndexOf("/",lomlast-1)  // predposledni lomitko
  obrazek=".."+element.src.substr(lomprelast);       // povinne to musi byt ve tvaru "../adresar/fotka.jpg"
  element.src="../prsafoto/thumb.php?photo="+obrazek+"&lupa=yes&x="+element.width;
}
// -------------------------------------
// akce MSIE pri splneni on-podminky ONCLICK
function kliknutoIE() {
  n=window.event.srcElement;               // window.event.type=typ(napr.click), ...srcElement=element,
                                           //                                    ...screenX,screenY=souradice
  if ((n.tagName=="IMG")&&                 // IMG velkymi !!!
      (n.parentNode.nodeName!="A")&&       // A velkymi   !!!
      (n.onclick==null)&&
      testadresarfoto(n.src))   OpenOknoSlideShow(testadresarfoto(n.src));
}
// -------------------------------------
// hlavni funkce obhospodarujici fotky na strance - doplni lupy a onclick
function obrazkynastrance() {
  for (var i=0;i<document.images.length;i++)  
      { n=document.images[i];             // cyklus pres vsechny obrazky - naplneni pole
        // zobrazeni lupy jestlize se obrazek nachazi v adresari xxxxxxj a je maly (tj. jmeno nekonci x)
        //                                         // muze byt i jinak, v tom pripade uprav funkci testadresarfoto()
        // odkazy netestuju, protoze tam bud neco je nebo se timto scriptem doplni
           if (testadresarfoto(n.src))  zobrazlupu(n);
        // 1. zmena vlastnosti href nadrazeneho elementu A - pouze tehdy, ma-li hodnotu #
           if ((n.parentNode.nodeName=="A")&&      // A velkymi !!!
               (n.parentNode.href==(document.location.href+"#"))&&
               testadresarfoto(n.src))  n.parentNode.href='javascript:OpenOknoSlideShow("'+testadresarfoto(n.src)+'");';
        // 2. vlastnost ONCLICK v elementu IMG - pouze tehdy, neni-li jiz nastavena a neexistuje-li nadrazeny element A
           if ((testMozilla() || testOpera() || testNetscape())&&    // funguje Firefox+Opera+Netscape, 
                                                                     // nefunguje Safari+Chrome+MSIE (viz globalni onclick)
               (n.parentNode.nodeName!="A")&&      // A velkymi !!!
               (n.onclick==null)&&
               testadresarfoto(n.src))  n.setAttribute('onclick','javascript:OpenOknoSlideShow("'+testadresarfoto(n.src)+'");');
      }
  // 3. globalni ONCLICK podminka, testuji zda jsem na spravnem elementu IMG a nadrazeny element je A
  if (testMSIE() || testSafari() || testChrome()) document.onclick=kliknutoIE;    // ostatni - viz onclick vlastnost elementu IMG
}
// ===========================================================================



// ====================================================================================
// vlození pozadi pod obrázek
// ===================================================   vynález a použití VaN (6/2010)
// melo by byt na konci celeho dokumentu, raději však před doplňování lupy a linků na fotogalerie (funkce obrazkynastrance)
// vyuziva se objektovy model dokumentu DOM1, mozna i DOM2 (formatovani/css)

// !!!!!!!!!!!!!!!!
// tenhle skript je nedokonalej, pokud vrazím na obrázek nějaký odkaz, nenalezne mi to předchozí taq <p> kam musím
// vrazit pozadí. Pokud zřetězím "parentNode" (n.parentNode.parentNode.style.background), nechytám se ve všech 
// browserech. Také je blbé, že do nadřazeného tagu <P> nemůžu dát více než jeden obrázek - to by se dalo obejít
// tím, že před obrázek vložím nový uzel (třeva <span> s potřebným pozadím) a obrázek pověsím na něj
// !!!!!!!!!!!!!!!!

function frame() {
  for (var i=0;i<document.images.length;i++)  
      { n=document.images[i];             // cyklus pres vsechny obrazky
        if ((n.parentNode.className=="pop-left")||(n.parentNode.className=="pop-right"))
           // asi by se to melo jeste testovat na nodeName, ale asi je to zbytecne, pop-right nebude mit nkdo jinej
           { // do nadrazeneho uzlu s classname pop-left nebo pop-right pozadi musim vlozit pozadi
             // vytvori mi jej php-script, jako parametr pozaduje rozmery obrazku n.width, n.height
             // Safari a Chrome neumějí n.width, n.height, pokud není explicitně zadáno v tagu IMG !!!!
             n.parentNode.style.background='url("../prsafoto/frame.php?x='+n.width+'&y='+n.height+'") no-repeat';
           }

      }
}
// ===========================================================================

