/*
  Hlavní Javascriptový modul


*/

var xr_p = 291;		// přehledka
var yr_p = 166;

ar_icolnk = Array('<img border=0 width=12 height=12 src="img/i_link.gif">', '<img border=0 width=14 height=11 src="img/i_wiki.gif">');	// pole s ikonami typů

var editmode = 0;
var znac_cnt = 0;


function getCookieValue(cookieName)	// načti cookie údaj
{
 var cookieValue = document.cookie;
 var cookieStartsAt = cookieValue.indexOf(" " + cookieName + "=");
 if(cookieStartsAt == -1)
    cookieStartsAt = cookieValue.indexOf(cookieName + "=");
 if(cookieStartsAt == -1)
    cookieValue = null;
 else
  {
   cookieStartsAt = cookieValue.indexOf("=", cookieStartsAt) + 1;
   var cookieEndsAt = cookieValue.indexOf(";", cookieStartsAt);
   if(cookieEndsAt == -1)
      cookieEndsAt = cookieValue.length;

   cookieValue = unescape(cookieValue.substring(cookieStartsAt, cookieEndsAt));
  }
 return cookieValue;
}

function SourCook(xsr,ysr) {	// nastavení cookie
 var today = new Date();
 var expire = new Date();
 expire.setTime(today.getTime() + 3600000*24);

 document.cookie = "x_sr="+ escape(xsr) +";expires="+ expire.toGMTString() +";path=/;";
 document.cookie = "y_sr="+ escape(ysr) +";expires="+ expire.toGMTString() +";path=/;";
}

// ------------------  konstruktor objektu výpisu objektů v řádcích  -------------------
function objkt_list(vdat, div, nadp, objname)
{
  this.poc_list = 10;
  this.page    = 0;
  this.poleobj = vdat;
  this.nadpis  = nadp;
  this.divtxt  = div;
  
  this.xlist = function()
  {
   obsah  = '<table border="0" cellspacing="0" width="350">';
   obsah += '<tr><td width="100%" class="top_left" colspan="2"><a href="javascript:document.getElementById(\''+ this.divtxt +'\').style.display=\'none\'; void(0);"><img border="0" src="img/x.gif" align="right" vspace="4" width="10" height="9"></a><img border="0" src="img/sip.gif" hspace="5" width="7" height="9">'+ this.nadpis +'</td></tr>';

   nofound = '<tr><td width="100%" colspan="2"> Nebyl nalezen žádný objekt !  </td></tr>';

   start = this.page*this.poc_list;
   konec = this.poc_list*(this.page + 1);

   sw = 0;						//  0      1        2         3        4
   for(p=start; p<konec && p<this.poleobj.length; p++)	// id * nazobj * skupiny * x_sour * y_sour
    { 
     radek = this.poleobj[p];
     ln    = radek.split("*");

     skupi  = ln[2];			// skupiny  např. 01,22,35
     znacky = '';			// obsah značek
     if(skupi != '')			// je zařazen v nějaké skupině ?
       {
        skpi = skupi.split(",");
        for(d=0; d<skpi.length; d++)     // projeď skupiny
           { ztyp = parseInt(skpi[d]);
             znacky += '<img border=0 src="img/'+znacdata[ztyp][7]+'.gif" alt="'+znacdata[ztyp][8]+'" height=15 hspace=2>';  }
       }
     if(sw == 1) { prokl = ' class="tbprokl"'; sw = 0; }
     else        { prokl = ''; sw = 1; }
     obsah += '<tr'+ prokl +'><td> <a href="javascript:obj_info('+ ln[0] +', 1);">'+ ln[1] +'</a> </td><td>'+znacky+'</td></tr>';

     nofound = '';
    }

   if(this.page > 0) prev = '<a href="javascript:'+ objname +'.predch();">&lt;&lt; předchozí</a>';
   else              prev = '<font color="#808080">&lt;&lt; předchozí</font>';

   if(p < this.poleobj.length) next = '<a href="javascript:'+ objname +'.dalsi();">další &gt;&gt;</a>';
   else                        next = '<font color="#808080">další &gt;&gt;</font>';

   obsah += nofound;
   obsah += '<tr><td colspan=2 align="right">'+ prev +' &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; '+ next +'</td></tr>';
   obsah += '</table>';

   document.getElementById(this.divtxt).innerHTML = obsah;		// vypis info o objektu
   document.getElementById(this.divtxt).style.display='block';
  } // end function

  this.predch = function()
  {
   this.page--;
   this.xlist();
  }

  this.dalsi = function()
  {
   this.page++;
   this.xlist();
  }
} // konec konstruktoru


function dvojklik(lat, lon)	// ---------  funkce volaná z mapy při kliknutí  ----------------------
{
 if(editmode == 1)
  {
   document.form_foto.x_sour.value = lat;
   document.form_foto.y_sour.value = lon;

   document.getElementById('imapa').contentWindow.umistiZnac(lat, lon, 0, 0, 0); 
  } // end if
}


function uloz_foto()		// odeslání formuláře s rychlým vložením
{
 err = '';
 if(document.form_foto.x_sour.value == '') err += "Musíte nastavit polohu objektu (dvojklikem na mapě) !\r\n";
 if(document.form_foto.nazev.value == '')  err += "Musíte vyplnit název !\r\n";
 if(document.form_foto.obsah.value == '')  err += "Musíte vyplnit popisek !\r\n";
 if(document.form_foto.foto1.value == '')  err += "Musíte přiložit fotografii !\r\n";
 
 if(err == '' || document.form_foto.heslo.value != '' || document.form_foto.email.value != '') document.form_foto.submit();
 else          window.alert(err);
}

function call_ajax(link, callback)	// aktivuje formulář rychlého vložení
{
  var rq = new SZN.HTTPRequest();
  rq.setMethod("get");
  rq.setFormat("txt");
  rq.setMode("async");
  rq.send(link, window, callback);
}

function uploaduj(popis, clr)	// aktivuje formulář rychlého vložení
{
 document.getElementById('i_vloz').style.display='block';
 document.getElementById('i_srch').innerHTML = '';
 document.getElementById('i_box1').style.display='none';
 document.getElementById('i_box2').style.display='none';

 if(clr == 1)
  {
   document.form_foto.nazev.value = '';
   document.form_foto.obsah.value = '';
   document.form_foto.foto1.value = '';
   document.form_foto.foto2.value = '';
   document.form_foto.foto3.value = '';
   document.form_foto.skupina.selectedIndex = 0;
   document.form_foto.jmeno.value = usr_jmeno;
   document.form_foto.email.value = usr_email;
   document.form_foto.www.value   = usr_www;
  }

 document.getElementById('i_hlaska').innerHTML = popis;
 
 document.getElementById('i_box0').innerHTML = '';
 editmode = 1;	// editační režim zapnut

 

 // moje objekty
 idu = getCookieValue('idu');
 if(idu != null)
   {
    call_ajax("/ajax_srch.php?idusr="+idu, "_mojeobj");
    // vypiš moje jméno
    obsah  = '<table border="0" cellSpacing="0" width="100%">';
    obsah += '<tr><td width="100%"><b>přihlášený uživatel '+ usr_jmeno +'</b></td></tr></table>';
    document.getElementById('i_usr').innerHTML = obsah;	// zapis do DIVu
    document.getElementById('i_usr').style.display='block';
    document.getElementById('i_reg').style.display='none';
   }

}
// -------------------------------  moje objekty  ------------------------------------
function _mojeobj(txt, status)
{
 if(status == 200)  vrdat = txt.split("|");
  else
    { vrdat[0] = '0*Nepodařilo se načíst data ze serveru.*0'; }

 if(txt != '')
  {
   obj_moje.poleobj = vrdat;	// ulož data
   obj_moje.page    = 0;	// stránka 0
   obj_moje.xlist();
  }
}

// ------------------------------  nejnovější objekty   -------------------------------
function _nejnovejsi(txt, status)
{
 if(status == 200)  vrdat = txt.split("|");
  else
    { vrdat[0] = '0*Nepodařilo se načíst data ze serveru.*0'; }

  obj_nejn.poleobj = vrdat;	// ulož data
  obj_nejn.page    = 0;	// stránka 0
  obj_nejn.xlist();
}

// -------------------------------  vyhledávání objektu  --------------------------------------
function vyhledej()
{
 text = document.getElementById('hledej').value;
 call_ajax('/ajax_srch.php?nazev='+text, 'vyhl_resp');
}
function vyhl_resp(txt, status)	// ----- odpověd ze serveru  -----------
 {
  if(status == 200)  vrdat = txt.split("|");
  else
    { vrdat[0] = '0*Nepodařilo se načíst data ze serveru.'; }

  obj_vyhl.poleobj = vrdat;	// ulož data
  obj_vyhl.page    = 0;	// stránka 0
  obj_vyhl.xlist();
}

function trasa(trs)  // -------------------------------- zobraz trasu --------------------------------
{
 var url = "/ajax_trasa.php?co=0&idt="+trs;
 var rq = new SZN.HTTPRequest();
 rq.setMethod("get");
 rq.setFormat("txt");
 rq.setMode("async");
 rq.send(url,window,"trasa_resp");
}

function trasa_resp(txt, status)	// ----- odpověd ze serveru  -----------
 {
  if(status == 200)  document.getElementById('imapa').contentWindow.kresli_trasu(txt.split("|"));
  else
    { obj_list[0] = '0*Nepodařilo se načíst data ze serveru.'; }
}




function showbox(xx,yy,xr,yr)	// zobraz overlay na přehledce v abs. pixelech
{
  if(xx < 0) { xr += xx; xx = 0; }
  if(yy < 0) { yr += yy; yy = 0; }

  if(xx > xr_p)  xx = xr_p;
  if(yy > yr_p)  yy = yr_p;
  
  if( (xx+xr) > xr_p ) xr -= xx+xr-xr_p;
  if( (yy+yr) > yr_p ) yr -= yy+yr-yr_p;

  xx += 68;
  var mbx = document.getElementById('mapbox');
  mbx.style.top = yy + "px";
  mbx.style.left = xx + "px";
  if(xr > 4 && yr > 4)
   {
    mbx.style.width  = xr + "px";
    mbx.style.height = yr + "px";
    mbx.style.backgroundColor = '#2040ff';
    mbx.style.opacity = 0.56;
    mbx.style.filter = 'alpha(opacity=56)';
   }
  else
   {
    mbx.style.width  = "4px";
    mbx.style.height = "4px";
    mbx.style.backgroundColor = '#ff2000';
    mbx.style.opacity = 1;
    mbx.style.filter = 'alpha(opacity=99)';
   }
}

// ------------------------------  zavolá se při změně výřezu  -------------------------------
function vyrez_zmena(rigtop_x, rigtop_y, lefbot_x ,lefbot_y,  xx,yy,xr,yr)
{
 showbox(xx,yy,xr,yr);
}


function getMouse(obj)	// ----------  kliknutí na přehledku, nastaví 
{
 var posx = 0;
 var posy = 0;
 var e = window.event;
 if(e.pageX || e.pageY)
   { posx = e.pageX; posy = e.pageY; }
 else if(e.clientX || e.clientY)
   {
    posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
    posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
   }
 // posx and posy contain the mouse position relative to the document

 // --- gex x position of the element
 var curleft = 0;
 if(obj.offsetParent)
      while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)  break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;

  // --- gex y position of the element
  var curtop = 0;
  if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)   break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;

 // --- uprav souradnice k přesnému rohu mapy
 posx -= curleft; posx -= 68;
 posy -= curtop;  posy -= 1;

 if(posx>0 && posy>0)	// zavolej do mapy funkci přehledky
  {
   document.getElementById('imapa').contentWindow.prehledka_stred(posx, posy); 
  }
}



// ---------------------------------------  zobraz informace o objektu  --------------------------------------------------
var mode_objvyp = 0;

function obj_info(id, mode)		// ------- vypis info o objektu volané z mapy --------
{					// mode=1 - nastav střed a zoom
 mode_objvyp = mode;
 call_ajax("/ajax_map.php?co=31&ido="+id, "obj_resp");

 document.getElementById('i_vloz').style.display='none';	// vypni vkládání
}
function obj_resp(txt, status)	// ----- odpověd ze serveru  -----------
{
  if(status == 200)
    {
      vrdat = txt.split("|");	// ido | nazev | popis | x | y | skupiny | fotky | panorama | odkazy | user
      nazev = vrdat[1];
      popisek = vrdat[2];

      // -------------  generuj popis  -------------
      popis = popisek+'<br>';
      okoli_fot = '';
      okoli_pan = '';

      // vymaž značky objektu z mapy
      document.getElementById('imapa').contentWindow.clearZnac(); 	// vymaž značky v mapě
      znac_cnt = 0;

      // -----  zpracuj fotky  -----
      if(vrdat[6] != '' && vrdat[6] != null)
       {
       ar_fot = vrdat[6].split("*");	// máš pole s fotkami
       pc = 0; pc2 = 0;			// čítač sloupce a sloupce "okolí"
       for(p=0;p<ar_fot.length;p++)
        {                               //  0     1      2       3       4      5      6     7     8       9     10
         fdat = ar_fot[p].split(";");	// idf  popis  x_sour  y_sour  x_roz  y_roz  typp  smer  poradi  fname  typ2
         // ulož zmenšeninu obrázku
         popval = "<a href=\"javascript:obraz("+ fdat[0] +", "+ fdat[4] +", "+ fdat[5] +"); void(0);\"><img border=0 src=\""+ fdat[9] +"\" alt=\""+ fdat[1] +"\"></a>&nbsp;";
         if(fdat[2] != 0) popval += '<span class="cisl">'+ znac_cnt +'.</span>';	// u fota ze souřadnicemi vlož číslo do obrázku
         
         if(fdat[10] == 0)	// přímo objekt
           { popis += popval;  pc++;
             if(pc == 3) { pc = 0; popis += '<br>'; }	// 3 na řádek
           }
         else			// jiná fota do 100m v okolí
           { okoli_fot += popval;  pc2++;
             if(pc2 == 3) { pc2 = 0; okoli_fot += '<br>'; }
           }

         if(fdat[2] != 0)   // má-li své souřadnice, umísti je do mapy
           { document.getElementById('imapa').contentWindow.umistiZnac(fdat[2], fdat[3], znac_cnt, 0, fdat[0]); znac_cnt++; }

        }
        if(pc != 0) popis += '<br>';
        if(pc2 != 0 && okoli_fot != '') okoli_fot += '<br>';
       }

      // -----  zpracuj panorama  -----
      if(vrdat[7] != '' && vrdat[7] != null)
       {
        map_txt = '';			// umístění u značek virtuální prohlídky
        popis += "Panorama:<br>";
        ar_pan = vrdat[7].split("*");	// máš pole s panoramaty
        pc = 0;
        for(p=0;p<ar_pan.length;p++)
          {                               //  0     1      2       3    4    5     6       7         8    9
           pdat = ar_pan[p].split(";");	// idf  popis  x_sour  y_sour  xp   yp   sever  natoceni   file  typ2

           if(vrdat[10] == '1' && pdat[4] != 0 && pdat[5] != 0) // u virtuální prohlídky s mapkou přidej klikací body a nedělej náhledy panorama
             { map_txt += '<a href="javascript:panorama('+ pdat[0] +'); void(0);"><img src="/city_pano/point.gif" border=0 width=11 height=11 STYLE="position:absolute; left:'+pdat[4]+'px; top:'+pdat[5]+'px"></a>'; }
           else
             { 							// jinak přidej panorama
              popval = "<a href=\"javascript:panorama("+ pdat[0] +"); void(0);\"><img border=0 width=280 vspace=2 src=\""+ pdat[8] +"\" alt=\""+ pdat[1] +"\"></a>";
              if(pdat[2] != 0) popval += '<span class="cisl">'+ znac_cnt +'.</span>';	// u fota ze souřadnicemi vlož číslo do obrázku
              if(pdat[9] == 0)  popis += popval +"<br>";	// přímo objekt
              else              okoli_pan += popval +"<br>";
             }

           if(pdat[2] != 0)   // má-li své souřadnice, umísti je do mapy
             { document.getElementById('imapa').contentWindow.umistiZnac(pdat[2], pdat[3], znac_cnt, 1, pdat[0]); znac_cnt++; }

          }
       }


      // zpracuj odkazy
      if(vrdat[8] != '' && vrdat[8] != null)
       {
        popis += "Odkazy:<br>";
        ar_lnk = vrdat[8].split("*");	// máš pole s panoramaty
        pc = 0;
        for(p=0;p<ar_lnk.length;p++)
          {                             //  0     1      2
           pdat = ar_lnk[p].split(";"); // typ  nazev  link
           imgn = parseInt(pdat[0]);
           popis += '<a href="'+ pdat[2] +'" target="_blank">'+ ar_icolnk[imgn] +'&nbsp;'+ pdat[1] +'</a><br>';
          }
       }

      // ukaz uzivatele
      user = '';
      if(vrdat[9] != '' && vrdat[9] != null)
       {
        ar_usr = vrdat[9].split("*");	// máš pole s panoramaty
        user   = '<tr><td width="100%" colspan="2"><i><font size="1" color="#808080">vložil: <a href="javascript:userinfo('+ ar_usr[0] +');void(0);">'+ ar_usr[1] +'</a></font></i></td></tr>';
       }


      // je to virtuální prohlídka, zobraz přehledku
      if(vrdat[10] == '1')
        {
         prohlp =  vrdat[11].split("*");	// cesta*xr*yr
         
         map_obrzk = '../city_pano/'+ prohlp[0] +'/'+ vrdat[0] +'.jpg';	// mapka
         x_obr = parseInt(prohlp[1]);		// 
         y_obr = parseInt(prohlp[2]);
         virt_znac = map_txt;		// značky u virtuální prohlídky
         ShowZoomImage();		// aktivuj mapku
        }
      else
        {
         document.getElementById('i_prohlmap').innerHTML = '';		// vymaž
         document.getElementById('i_prohlmap').style.display='none';
        }

       // ---- konec popis ----
    }
  else
    {
     nazev = 'Chyba !';
     popis = 'Nepodařilo se načíst data ze serveru.';
     popisek = 'Nepodařilo se načíst data ze serveru.';
    }

 // ----- zapiš obsah do DIVu -----
 obsah  = '<table border="0" cellspacing="0" width="350">';
 obsah += '<tr><td width="100%" colspan="2" class="nadpis"> '+ nazev +' </td></tr>';
 obsah += '<tr><td valign="top"> '+ popis +' </td></tr>';
 obsah += '<tr><td width="100%" colspan="2" height="5" valign="top"><img border="0" src="img/dot_dif.gif" width="332" height="3"></td></tr>';

 if(okoli_fot != '' || okoli_pan != '')  // objekty v místě
    obsah += '<tr><td width="100%" colspan="2"><b>V bezprostředním okolí:</b><br>' + okoli_fot + okoli_pan + '</td></tr> <tr><td width="100%" colspan="2" height="5" valign="top"><img border="0" src="img/dot_dif.gif" width="332" height="3"></td></tr>';

 obsah += user ;
 obsah += '<tr><td width="100%" colspan="2" height="22"></td></tr>';
 obsah += '</table>';

 document.getElementById('i_box0').innerHTML = obsah;	// zapis do DIVu

 if(mode_objvyp == 1) document.getElementById('imapa').contentWindow.mapa_stredz(vrdat[3],vrdat[4],13, nazev, popisek ); // nastav stred a ZOOM
}

// --------------------------  funkce z mapy, zobr. fotky a panorama  -----------------------
function obraz(idf, xxr,yyr)
{
 if(xxr < 450) xxr  = 480;
 else          xxr += 45;
 yyr += 130;
 window.open('/mapy/foto.php?idf='+idf, 'foto', 'toolbar=no,scrollbars=yes,resizable=yes,top=5,left=9,height='+yyr+',width='+xxr );
}

function panorama(idpano)
{
 window.open('/pano/pano.php?pan='+idpano, 'panorama', 'toolbar=no,menubar=no,location=no,directories=no,scrollbars=no,resizable=no,status=no,width=1020,height=550');
}

function userinfo(usr)
{
 window.open('uzivatel.php?usr='+usr, 'uzivatel', 'toolbar=no,menubar=no,location=no,directories=no,scrollbars=no,resizable=no,status=no,width=620,height=500');
}

// vytvoření objektů k listování
var obj_vyhl = new objkt_list(null, 'i_srch', 'Nalezené objekty', 'obj_vyhl');		// vyhledávání objektů
var obj_moje = new objkt_list(null, 'i_moje', 'Moje objekty', 'obj_moje');		// moje objekty
var obj_nejn = new objkt_list(null, 'i_box1', 'Nejnovější objekty', 'obj_nejn');	// nejnovější objekty