// JavaScripty do VCD http://www.vcd.cz
// Copyright by Michael.Stanovsky

// ===========================================================================
// test na prilis stary browser - chybná intrepretace CSS, neumí ramce a co ja vim jeste
function testbrowser() {
  document.write('<p class="chyba">Používáte příliš starou verzi internetového prohlížeče. Tyto stránky zřejmě nebudou ');
  document.write('korektně zobrazeny. Nainstalujte si, prosím, novější verzi!</p>');
}
// ===========================================================================
// 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};
}
// ===========================================================================
// uloz cookie
function setcook (jmeno)    {
  var vyprsi=new Date();
  vyprsi.setTime(vyprsi.getTime()+15000);               // platnost 15 vterin
  var nazevcookie="ymsvcd99=";
  document.cookie=nazevcookie+jmeno+";path=/;expires="+vyprsi.toGMTString();
}
// ===========================================================================
// cte cookie
function getcook ()    {
  var nazevcookie="ymsvcd99=";
  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="xxx";
                   };
  return jmeno;  
} 
// ===========================================================================
// samostatne okno pro zobrazeni jednoho fermanu
function oknoferman(dokument) {
sir=screen.width;
vys=screen.height;
xls="http://www.vcd.cz/fermand/"+dokument;
window.open(xls,"vcdferman","toolbar=yes,location=yes,directories=yes,status=yes,"+
                            "menubar=yes,scrollbars=yes,resizable=yes,copyhistory=no,width="+sir+",height="+vys);}
// ===========================================================================
// otevreni okna s alertovou zpravou
function openAlert(co,sirka,vyska) {
   sir=sirka;
   vys=vyska;
   if (sirka==null) {sir=200};
   if (vyska==null) {vys=200};
   window.open(co,"vcdalert","toolbar=no,location=no,directories=no,status=no,menubar=no,"+
                            "scrollbars=yes,resizable=yes,copyhistory=no,width="+sir+",height="+vys) ;
}
function openAlertGFS10(zvuk,text,nadpis) {
   openAlert("../audio/gfs10.htm?zvuk="+zvuk+"&text="+text+"&nadpis="+nadpis) ;
}
function openAlertVideo(video,preview,x,y) {
   openAlert("../video/video.htm?video="+video+"&preview="+preview+"&x="+x+"&y="+y) ;
}
function openAlertYT(video,x,y) {
   openAlert("../video/yutube.htm?video="+video+"&x="+x+"&y="+y) ;
}
// ===========================================================================
// do zahlavi programu - odkaz na aktualni mesic
function aktualniprogram() {
var dt=new Date();
mm=dt.getMonth()+1;
yy=dt.getYear();
m=mm; m='00'+m;
y=yy; y='00'+y;
nam=y.substr(y.length-2,2)+m.substr(m.length-2,2);
document.write('<a href="',nam,'.htm">» aktuální program tohoto měsíce</a>');
}
// ===========================================================================
// oznameni na strankach programu
function oznameni() {
document.write('<h2><u>Rezervace a předprodej vstupenek</u></h2>');
document.write('<p class="al0">Představení neoznačená písmenem abonentní skupiny nejsou obsazována abonenty, vstupenky jsou ');
document.write('po vyřízení hromadných objednávek určeny k volnému prodeji. ');
document.write('Na představení pro abonentní skupiny jsou rovněž volné vstupenky k doprodeji.</p>');
document.write('<p class="al0">Chcete-li si rezervovat vstupenky do našeho divadla, klikněte na symbol nákupního košíčku. ');
document.write('Automaticky se dostanete na stránky rezervačního systému Ticketportal, kde se nejprve musíte zaregistrovat, ');
document.write('a až poté můžete provést rezervaci. Stane-li se, že nejsou volné vstupenky (nelze tedy nic ');
document.write('rezervovat), zkuste ještě kontaktovat obchodní oddělení VČD - předprodej vstupenek.</p>');
document.write('<p class="al0">Předprodej vstupenek na konkrétní měsíc na představení z repertoáru VČD (s výjimkou Kunětické hory) ');
document.write('se zahajuje vždy první pracovní den předcházejícího měsíce v 10 hodin (předprodej na září je již od června). ');
document.write('Datum zahájení prodeje ostatních představení se řídí dle pokynů pořadatele, bližší informace v předprodeji ');
document.write('vstupenek.</p><hr>');
}
// ===========================================================================
// onclick funkce pri vytvareni okna s fotkou - zaridi, aby fotka byla v samostanem okne VCDOBR - bez rolovaci listy
// kdyz se nepovede otevrit samostatne okno, zobrazi to v one stavajicim
// http://interval.cz/clanek.asp?article=3484
var myTWin = window.myTWin; 
function openoknofoto(link) { 
var retvalue=true; 
  if (myTWin!=null && !myTWin.closed) {myTWin.focus(); 
                                       myTWin.location.href=link.href;   } 
                                else  {myTWin=window.open(link.href,"vcdobr",
      "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=510,height=510"); 
                                       if (myTWin==null || typeof(myTWin)=="undefined") {retvalue=false;}
                                                                                  else  {link.target="vcdobr"; 
                                                                                         myTWin.focus();} 
                                      } 
  return retvalue; 
}                  
// ===========================================================================
// onclick funkce pri vytvareni okna s externím odkazem - zaridi, aby stranka byla v samostanem okne XXXBLANK
// kdyz se nepovede otevrit samostatne okno, zobrazi to v one stavajicim
function openoknoext(link) { 
var retvalue=true; 
  if (myTWin!=null && !myTWin.closed) {myTWin.focus(); 
                                       myTWin.location.href=link.href;   } 
                                else  {myTWin=window.open(link.href,"xxxblank"); 
                                       if (myTWin==null || typeof(myTWin)=="undefined") {retvalue=false;}
                                                                                  else  {link.target="xxxblank"; 
                                                                                         myTWin.focus();} 
                                      } 
  return retvalue; 
}                             
// ===========================================================================
// vola se v kazde FOTCE jeste v HEAD
function oknohlavafoto(sirka) {
sir=sirka;
if (sirka==null) {sir=550};
if (sirka==0) {sir=550};
vys=578 + 20 + 50 + 50;          // 20 = navíc kvuli popisku pod obrázkem na výšku
                                 // 50 = navíc, protoze obcas jsou fotky vysoke 500px
                                 // 120 == nekdy to holt nestaci


// velikost okna – vyska: trochu mene nez obrazovka, ale ne vice nez 800
//      (vyska=800 je trapnej odhad, ale sofistikovat to nejde; sice znam vysku obrazku, ale pripojuji se texty dolu)
   var vys=Math.min(screen.availHeight-50,800); 


sir=sir + 8;                     // 8 = navic kvuli tloustce ramecku
if (testMSIE) {sir=sir + 20};    // zustava lista
if (window.name=="vcdobr") {self.resizeTo(sir,vys);
                            self.focus();
                            return;
                           }
}
// ===========================================================================
// 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; 
} 
// ===========================================================================




// ===========================================================================
// 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 ZMENA !!!!!
// jako náhled od obrázku obrazekx.jpg se považuje nejen obrazek.jpg, ale i obrazekb.jpg
// !!!!! BACHA ZMENA !!!!!

// 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")) 
                 { if (obrazek.substr(obrazek.length-1,1).toLowerCase()=="b") {obrazekxxx=obrazek.substr(0,obrazek.length-1);}
                                                                         else {obrazekxxx=obrazek;}
                   return(obrazekxxx+"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

}
// ===========================================================================
