/* Stampi.cz - (c) Tomas Lanik, 2009 - 2011 */
/* JS tridy - vykonne jadro systemu */

// Zamaskovani vsech objektu stranky pri dialozich
function MASKA()
 {
  this.Objekt = Objekt;
  this.Zobraz = Zobraz;
  this.Skryj = Skryj;
  
  this.maska = null;

/****************************************************************************************************************************************************/
  
// Nacteni DOM obejktu prekryvaci masky
   function Objekt()
    {
     this.maska = document.getElementById("maska");
    }  

/****************************************************************************************************************************************************/
  
// Zobrazeni prekryvaci masky
   function Zobraz()
    {
     this.Objekt();

// Nastaveni vlastnosti prekryvaci masky     
     this.maska.style.cssText = "height: "+Rozmery("1")+"px;";
     this.maska.style.display = "Block";
		}
	
/****************************************************************************************************************************************************/  
  	
// Skryti prekryvaci masky
   function Skryj()
    {
     this.Objekt();		 
     
     this.maska.style.display = "None";
		}	  
 } 

/****************************************************************************************************************************************************/
/****************************************************************************************************************************************************/

// Zvyraznovani radku v prehledech pri najeti kurzoru mysi
function RADKOVANI()
 {
  this.Zvyrazni = Zvyrazni;
  this.Puvodni = Puvodni;
  
/****************************************************************************************************************************************************/
  
 // Podbarvovani radku 
  function Zvyrazni(radek)
   {
    radek.className = "radek_aktivni"; 
   }

/****************************************************************************************************************************************************/

// Nastaveni puvodniho pozadi
  function Puvodni(radek, puvodni)
   {
    radek.className = puvodni; 
   }
 }

/****************************************************************************************************************************************************/
/****************************************************************************************************************************************************/

// Zobrazeni informace o zpracovavani stranky na pozadi
function INDIKATOR()
 {
  this.Zobraz = Zobraz;
  this.Skryj = Skryj;

/****************************************************************************************************************************************************/

// Zobrazeni indikatoru
  function Zobraz()
   {
// Nacteni ukazatele na DOM objekt    
    var indikator = document.getElementById("indikator");

// Zjisteni a osetreni hodnoty posunuti stranky    
	  var posuv_Y = Posuv("Y");
	  if(!posuv_Y) posuv_Y = 0;

// Nastaveni pozice indikatoru 
	  indikator.style.cssText = "top: "+posuv_Y+"px;";
	  indikator.style.display = "Block";
   }	 

/****************************************************************************************************************************************************/

// Skryti indikatoru
  function Skryj()
   {
    var indikator = document.getElementById("indikator");

// Nastaveni vlastnosti bloku zvyraznujiciho praci systemu
	  indikator.style.display = "None";
   } 
 }

/****************************************************************************************************************************************************/
/****************************************************************************************************************************************************/

// Zpracovani pozadavku AJAXu
function AJAX()
 {
  this.Vytvor_xmlHttp = Vytvor_xmlHttp;
	this.Parser_odpoved = Parser_odpoved;
	this.Pozadavek_asynchronni = Pozadavek_asynchronni;
 	this.Pozadavek_synchronni = Pozadavek_synchronni;  
  this.Dokonci_asynchronni_pozadavek = Dokonci_asynchronni_pozadavek;

  this.xmlHttp = null;
  this.odpoved = "";

/****************************************************************************************************************************************************/
   
// Vytvoreni objektu pro komunikaci
  function Vytvor_xmlHttp()
   {
    if(window.XMLHttpRequest) AJAX.xmlHttp = new XMLHttpRequest();
    if(window.ActiveXObject) AJAX.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");	 
	 
	  return AJAX.xmlHttp;
	 }

/****************************************************************************************************************************************************/

// Vyber podretezce s pozadovanou odpovedi
  function Parser_odpoved(odpoved)
   {
// Vypocet pozic podretezce
	  var zacatek = odpoved.indexOf("**");
	  var konec = odpoved.lastIndexOf("**");

// Vyber podretezce v zavislosti na pozicich
    return odpoved.substr(zacatek + 2, konec - zacatek - 2);	 
	 }

/****************************************************************************************************************************************************/

// Vytvoreni a odeslani asynchronniho pozadavku
  function Pozadavek_asynchronni(metoda, adresa, promenne, funkce)
	 {
// Volani metody pro informovani uzivatele o provadeni akce na pozadi
    INDIKATOR.Zobraz();

// Vytvoreni objektu pro komunikaci
    xmlHttp = this.Vytvor_xmlHttp();	 

// Odeslani pozadavku
	  AJAX.xmlHttp.open(metoda, adresa, true);
    AJAX.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    AJAX.xmlHttp.onreadystatechange = function() { AJAX.Dokonci_asynchronni_pozadavek(funkce); }
		AJAX.xmlHttp.send(promenne);	 
	 } 

/****************************************************************************************************************************************************/

// Vytvoreni a odeslani synchronniho pozadavku
  function Pozadavek_synchronni(metoda, adresa, promenne)
   {
// Volani metody pro informovani uzivatele o provadeni akce na pozadi
    INDIKATOR.Zobraz(); 

// Vytvoreni objektu pro komunikaci
    xmlHttp = this.Vytvor_xmlHttp();	
	
// Odeslani AJAX pozadavku
    AJAX.xmlHttp.open(metoda, adresa, false);
    AJAX.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    AJAX.xmlHttp.send(promenne);
      
// Overeni, zda-li dorazila odpoved od serveru
    if(AJAX.xmlHttp.readyState == 4)
		 {
// Overeni spravnosti prijatych dat		 
		  if(AJAX.xmlHttp.status == 200) 
		   {
// Volani metody pro informovani uzivatele o provadeni akce na pozadi
        INDIKATOR.Skryj();

// Vyber podretezce s odpovedi  	  
			  return this.Parser_odpoved(AJAX.xmlHttp.responseText);      
       }
		 } 
	 }	
 
/****************************************************************************************************************************************************/ 
 
// Kontrola spravnoti prijatych dat a dokonci pozadavek 
  function Dokonci_asynchronni_pozadavek(funkce)
   { 
// Overeni, zda-li dorazila odpoved od serveru
    if(AJAX.xmlHttp.readyState == 4)
     {
// Overeni spravnosti prijatych dat	    
			if(AJAX.xmlHttp.status == 200)
       {
// Navrat odpovedi skriptu      
        AJAX.odpoved = this.Parser_odpoved(AJAX.xmlHttp.responseText);
 
// Volani metody pro informovani uzivatele o provadeni akce na pozadi
        INDIKATOR.Skryj(); 
 
// Spusti funkci, ktera se ma provest po prijeti odpovedi serveru        
        eval(funkce);
        
		    return true;
		   } 
	     else return false;
	   }
     else return false;
   }
 }
 
/****************************************************************************************************************************************************/
/****************************************************************************************************************************************************/

// Inicializace tridy pro obsluhu maskovani stranky
 var MASKA = new MASKA();

// Inicializace tridy śrp obsluhu zvyraznovani radku v prehledech
 var RADKOVANI = new RADKOVANI();

// Inicializace tridy pro obsluhu AJAXu
 var AJAX = new AJAX();

// Inicializace tridy pro obsluhu indikatoru zpracovavani dat na pozadi
 var INDIKATOR = new INDIKATOR();

