<!--
/** 
 * JavaSript - AJAX 
 * version - 1.110311
 * -------------------------------------------------------------------------- */

if (!LANG) {
  var LANG = new Array();
}
if (!PSID) {
  var PSID = '';
}
if (typeof(ErrAlert) != 'function') {
  var ErrAlert = window.alert;
}

var AJAX_OXMLHTTP_VERSION     = '';
var AJAX_OXMLHTTP_ACTIVEX     = false;
var AJAX_OXMLHTTP_SET_ACTIVEX = false;
var AJAX_OXMLHTTP             = AJAX_Request();  
var AJAX_CACHE                = new Array();
var AJAX_SENDREGUEST_NUM      = 0; 
var AJAX_CHECK_TIMEOUT        = false;
var AJAX_ONLOADING            = false;
var AJAX_RESTARTING           = false;

var AJAX_TRANS_TRANSID        = null;
var AJAX_TRANS_CHECK          = false;
var AJAX_TRANS_CHECK_OPEN     = true;
var AJAX_TRANS_TIME_CHECK     = 10;

if (typeof(onLoading) == 'function' && typeof(offLoading) == 'function' && typeof(onLoadingStatus) == 'function') {
  AJAX_ONLOADING = true;
}

 /* AJAX REGUEST
 * -------------------------------------------------------------------------- */
LANG['ajax_no_url']         = 'AJAX: parametr URL není nastaven!';
LANG['ajax_no_browser']     = 'AJAX: Lituji, ale váš prohlížeč nepodporuje objekt XmlHttpRequest :-(';
LANG['ajax_no_process']     = 'AJAX: Požadavek nelze zpracovat!';
LANG['ajax_no_error']       = 'AJAX: Nastala chyba v přenosu !';
LANG['ajax_no_status']      = 'AJAX: cíl nenalezen !';
LANG['ajax_no_readystate']  = 'AJAX: chyba spojení !';

function AJAX_Request()
{
  if (window.XMLHttpRequest 
  && (AJAX_OXMLHTTP_SET_ACTIVEX == false || AJAX_OXMLHTTP_SET_ACTIVEX == null)) {
    // Mozilla + Opera + Safari
    AJAX_OXMLHTTP_VERSION = 'XMLHttpRequest';
    AJAX_OXMLHTTP_ACTIVEX = false;
    return new XMLHttpRequest();
  }
  else if (window.ActiveXObject 
       && (AJAX_OXMLHTTP_SET_ACTIVEX == true || AJAX_OXMLHTTP_SET_ACTIVEX == null)) {
    try {
      // MSIE 6+
      AJAX_OXMLHTTP_VERSION = 'Msxml2.XMLHTTP';
      AJAX_OXMLHTTP_ACTIVEX = true;
      return new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) {
      try {
        // MSIE 5.5+
        AJAX_OXMLHTTP_VERSION = 'Microsoft.XMLHTTP';
        AJAX_OXMLHTTP_ACTIVEX = true;
        return new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) {
        // return false        
      }
    }
  }
    
  // nelze otevřít - Váš prohlížeč nepodporuje
  AJAX_OXMLHTTP_VERSION = '';
  AJAX_OXMLHTTP_ACTIVEX = false;   
  ErrAlert(LANG['ajax_no_browser']);   
  return false;   
}

function AJAX_transCheck(transid) 
{
  var transid;
  AJAX_TRANS_CHECK       = true;
  AJAX_TRANS_CHECK_OPEN  = true;
  
  if (transid) {
    var rsch = 0;
  
    // vytvoření objektu
    var transCheck = AJAX_Request();
    
    if (transCheck) {
      transCheck.onreadystatechange = function() {
        if (transCheck.readyState == 4) {  
          if (transCheck.status == 200) {          
            rsch = (transCheck.responseText * 1);
            if (rsch == 22) {
              AJAX_TRANS_CHECK_OPEN = false;
            }
            else {
              AJAX_TRANS_CHECK_OPEN = true;  
            } 
          }                       
        }
      }
      
      // parametry
      var param = '_ajax=1&_ajax_transid_check=' + transid + (PSID ? '&' + PSID : '');
      
      // nastavení parametrů
      transCheck.open('POST', '_ajax_trans_check.php', true);
      transCheck.setRequestHeader('Content-Type', 
                                  'application/x-www-form-urlencoded');
      // odeslat
      transCheck.send(param);
    }
  }
}

function AJAX_checkRequest(t)
{
  var t;
  var pr = AJAX_CACHE.length;
  
  if (AJAX_CHECK_TIMEOUT) {
    clearTimeout(AJAX_CHECK_TIMEOUT);
    AJAX_CHECK_TIMEOUT = false;
  }
  
  if (typeof(t) == 'undefined') {
    t = 0;
  }
  
  if (pr > 0) {
    if (!t && AJAX_ONLOADING) {
      ONLOADING_STATUS = (100 / pr) - (pr == 1 ? 30 : 0);
    }
    if (t && AJAX_ONLOADING) {
      ONLOADING_STATUS = ONLOADING_STATUS + (ONLOADING_STATUS == 100 ? (Math.round((Math.random()*90))*(-1)) : 1) + Math.round(Math.random()*(ONLOADING_STATUS < 90 ? 11 : 2));
      var att_txt = AJAX_CACHE[0];
      if (att_txt[4]) {
        att_txt = att_txt[4].split("|");
        att_txt = (att_txt[t] ? att_txt[t] : '');
      }
      else {
        att_txt = '';
      }      
      if (typeof(onLoadingStatus) == 'function') {
        onLoadingStatus(att_txt);
      }      
    }
    
    if (!AJAX_cacheRequest()) {
      // ověření otevřené transakce
      if (t == AJAX_TRANS_TIME_CHECK && AJAX_TRANS_TIME_CHECK > 0) {
        if (!AJAX_TRANS_CHECK && AJAX_TRANS_TRANSID != null && AJAX_TRANS_TRANSID) {
          AJAX_transCheck(AJAX_TRANS_TRANSID);          
        }
      }
      else if (t > AJAX_TRANS_TIME_CHECK && AJAX_TRANS_TIME_CHECK > 0) {
        if (AJAX_TRANS_CHECK && AJAX_TRANS_CHECK_OPEN == false && AJAX_TRANS_TRANSID != null && AJAX_TRANS_TRANSID) {
          if (typeof(offLoading) == 'function') {
            offLoading();
          }
          if (AJAX_restartRequest()) {
            t = 0;
            //CBubble(AJAX_TRANS_TRANSID + ' - Restart ...');
            if (typeof(onLoading) == 'function') {
              onLoading('Restart ...', '', '', true);
            }            
          }            
        }  
      }
    }
    else {
      t = 0;
    }
    
    t++;
    AJAX_CHECK_TIMEOUT = setTimeout(function(){AJAX_checkRequest(t)}, 1000);
  }
  else {
    if (typeof(offLoading) == 'function') {
      offLoading();
    }
  } 
}

function AJAX_searchRequest(idreq)
{
  var idreq;
  var p = AJAX_CACHE.length;
  var s;
  if (idreq && p > 0) {
    for(var i = 0; i < p; i++) {
      s = AJAX_CACHE[i][8];
      if (s == idreq) {
        return true;  
      }      
    }  
  }
  return false;    
}

function AJAX_restartRequest()
{
  if (AJAX_CACHE.length > 0) {
    if (AJAX_OXMLHTTP.readyState == 1 || AJAX_OXMLHTTP.readyState == 0) {
      AJAX_RESTARTING = true;
      AJAX_OXMLHTTP.abort(); // stornovat spojení
      return true;
    }  
  }
  return false;    
}

function AJAX_closeRequest()
{
  if (AJAX_OXMLHTTP.readyState == 1 || AJAX_OXMLHTTP.readyState == 0) {
    if (AJAX_CACHE.length > 0) {
      AJAX_RESTARTING = false;
      AJAX_CACHE.shift(); // odstranit
    } 
    AJAX_OXMLHTTP.abort(); // stornovat spojení
    return true;
  }
  return false;    
}

function AJAX_cacheRequest()
{
  if (AJAX_SENDREGUEST_NUM > 3) {
    AJAX_SENDREGUEST_NUM = 0;    
  }  
  if ((AJAX_OXMLHTTP.readyState == 4 || AJAX_OXMLHTTP.readyState == 0 || AJAX_OXMLHTTP.readyState == null || !AJAX_OXMLHTTP.readyState) 
    && AJAX_CACHE.length > 0) {
    var att_send = AJAX_CACHE[0];
    AJAX_sendRequest(att_send[0], att_send[1], att_send[2], att_send[3], att_send[4], att_send[5], att_send[6], att_send[7], att_send[9]);
    return true;
  }
  return false;  
}

function AJAX_sendRequest(url, param, fcstatechange, fcerror, loading_txt, cache, fcstart, fcload, transid)
{
  var url, param, fcstatechange, fcerror, loading_txt, cache, fcstart, fcload, transid;
  
  AJAX_RESTARTING = false;
  
  AJAX_TRANS_TRANSID    = (transid ? transid : null);
  AJAX_TRANS_CHECK      = false;
  AJAX_TRANS_CHECK_OPEN = true;
  
  // fcstart
  if (typeof(fcstart) == 'function') {
    fcstart();
  }
  
  // vytvoření objektu
  AJAX_OXMLHTTP = AJAX_Request();
  
  if (AJAX_OXMLHTTP) {
    // když url neexistuje
    if (!url) {
      ErrAlert(LANG['ajax_no_url']);
      return false;
    }
    // parametry AJAX
    if (param) {
      param = param + '&_ajax=1' + (transid ? '&_ajax_transid=' + transid : '') + (PSID ? '&' + PSID : '');
    }
    else {
      param = '_ajax=1' + (transid ? '&_ajax_transid=' + transid : '') + (PSID ? '&' + PSID : '');  
    }
    // cache
    if (typeof(cache) == 'undefined' || cache == null) {
      cache = true;
    }
        
    // cache_send_num
    AJAX_SENDREGUEST_NUM++;
    
    // load_open
    var load_open = false;        
    AJAX_OXMLHTTP.onreadystatechange = function() {
      // loading
      if (AJAX_OXMLHTTP.readyState == 1) {
        if (!load_open) {
          load_open = true;
          
          // loading_txt
          if (typeof(loading_txt) == 'undefined') {
            loading_txt = LANG['onloading_loading'];
          }
          if (loading_txt !== null && AJAX_ONLOADING) {
            if (typeof(onLoading) == 'function') {
              onLoading(loading_txt);
            }        
          }
          else {
            ONLOADING_RUN = true;
            if (parent.top.onLoading) {
              parent.top.ONLOADING_RUN = true;
            }                
          }
          // fcload
          if (typeof(fcload) == 'function') {
            fcload();
          }
        }
      }
      else if (AJAX_OXMLHTTP.readyState == 4) {
        AJAX_TRANS_TRANSID   = null;  
        AJAX_SENDREGUEST_NUM = 0;        
        if (loading_txt !== null && AJAX_ONLOADING) {
          if (typeof(offLoading) == 'function') {
            offLoading();
          }            
        }
        else {
          ONLOADING_RUN = false;
          if (parent.top.onLoading) {
            parent.top.ONLOADING_RUN = false;
          }                
        }
        if (cache && AJAX_CACHE.length > 0 && !AJAX_RESTARTING) {
          AJAX_CACHE.shift(); // odstranit
        }        
        if (AJAX_OXMLHTTP.status == 200) {          
          // fcstatechange
          if (fcstatechange) {
            fcstatechange();
          }                    
          AJAX_checkRequest();
        }
        else if (!AJAX_RESTARTING) { 
          if (fcerror) { 
            fcerror();
          }
          else {
            ErrAlert(LANG['ajax_no_status']);  
          }            
        }                        
      }
      else if (AJAX_OXMLHTTP.readyState == 0 || AJAX_OXMLHTTP.readyState == null || !AJAX_OXMLHTTP.readyState) {
        AJAX_TRANS_TRANSID = null;
        AJAX_OXMLHTTP.abort(); // stornovat spojení
        if (AJAX_SENDREGUEST_NUM > 3) {
          AJAX_SENDREGUEST_NUM = 0;
          if (cache && AJAX_CACHE.length > 0) {
            AJAX_CACHE.shift(); // odstranit
          }
          ErrAlert(LANG['ajax_no_readystate']);
          if (fcerror) {
            fcerror();
          }
        }
        if (loading_txt !== null && AJAX_ONLOADING) {
          if (typeof(offLoading) == 'function') {
            offLoading();
          }            
        }
        else {
          ONLOADING_RUN = false;
          if (parent.top.onLoading) {
            parent.top.ONLOADING_RUN = false;
          }                
        } 
      }                     
    }
    
    AJAX_OXMLHTTP.ontimeout = function() {
      ErrAlert('AJAX-Chyba: spojení !');
    }
                
    // nastavení parametrů
    AJAX_OXMLHTTP.open('POST', url, true);
    AJAX_OXMLHTTP.setRequestHeader('Content-Type', 
                                   'application/x-www-form-urlencoded');
    // odeslat
    AJAX_OXMLHTTP.send(param);
    
    if (AJAX_OXMLHTTP.readyState == 0 || AJAX_OXMLHTTP.readyState == null || !AJAX_OXMLHTTP.readyState) {
      AJAX_TRANS_TRANSID = null;
      AJAX_OXMLHTTP.abort(); // stornovat spojení
      if (AJAX_SENDREGUEST_NUM > 3) {
        AJAX_SENDREGUEST_NUM = 0;
        if (cache && AJAX_CACHE.length > 0) {
          AJAX_CACHE.shift(); // odstranit
        }
        ErrAlert(LANG['ajax_no_readystate']);
        if (fcerror) {
          fcerror();
        }
      }
      if (loading_txt !== null && AJAX_ONLOADING) {
        if (typeof(offLoading) == 'function') {
          offLoading();
        }          
      }
      else {
        ONLOADING_RUN = false;
        if (parent.top.onLoading) {
          parent.top.ONLOADING_RUN = false;
        }                
      }      
    }
    
    return true;
  }
  return false;  
}


function AJAX_makeRequest(url, param, fcstatechange, fcerror, loading_txt, idreq, cache, fcstart, fcload) 
{
  var url, param, fcstatechange, fcerror, loading_txt, idreq, cache, fcstart, fcload;
  var att_cache = new Array();
  
  if (AJAX_OXMLHTTP) {
    // když url neexistuje
    if (!url) {
      ErrAlert(LANG['ajax_no_url']);
      return false;
    }   
    // idreq
    if (typeof(idreq) == 'undefined' || idreq == null) {
      idreq = '';
    }
    if (idreq) {
      if (AJAX_searchRequest(idreq)) {
        return false;
      }
    }    
    // cache
    if (typeof(cache) == 'undefined' || cache == null) {
      cache = true;
    }        
    if (cache) {
      // id transakce
      var transid = (Math.ceil(Math.random() * 1111111) + Math.ceil(Math.random() * 1000000)) * Math.ceil(Math.random() * 6);
    
      // zapsání do CACHE
      att_cache.push(url, param, fcstatechange, fcerror, loading_txt, cache, fcstart, fcload, idreq, transid);
      AJAX_CACHE.push(att_cache);
      AJAX_checkRequest();      
    }
    else {
      AJAX_sendRequest(url, param, fcstatechange, fcerror, loading_txt, cache, fcstart, fcload)  
    }   
  }
  else {
    ErrAlert(LANG['ajax_no_browser']);  
  }
  
  return false;
}
/* -------------------------------------------------------------------------- */


// -->
