// ---------------------------------------------
// ---- Objekt DYNAMIC --- definition start ----
// ---------------------------------------------

function _httpReqInit() {
//  var win = window.top;
  var _http_request;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    _http_request = new XMLHttpRequest();
  } else if (window.ActiveXObject) { // IE
    try {
      _http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        _http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  return _http_request;
}

function _httpReqGo(index, loc, echofnc) {
  var _http_request = http_request[index];
 
  if (_http_request && location) {
    eval("_http_request.onreadystatechange = function() { _httpReqEcho(" + index + ",'" + echofnc + "'); }");

    _http_request.open('post', loc, true);
    _http_request.setRequestHeader('Content-Type', 'text/xml');
    _http_request.send(loc);
  }
}

function _httpReqEcho(index, echofnc) {
  var _http_request = http_request[index];

  if (_http_request.readyState == 4) {
    if (_http_request.status == 200) {
      data = _http_request.responseText;
      _http_request.abort();

      if (data)
        eval(echofnc);

      else
        _http_request = false;
    }
    else {
      alert("Problém pri načítavaní okolitých kapitol!!!\n\nKód chyby: " + _http_request.status + " - " + _http_request.responseText);
    }
  }
}

// ---------------------------------------------
// ---- Objekt DYNAMIC --- definition end ------
// ---------------------------------------------


var http_request = new Array();

//if (!onlyReq) {
  var dDoc, dStep, diPrev, diNext;
  var _up = 0, _down = 1, _scrollFactor = 1, _interval = 3000;  //333;
  http_request[_up] = http_request[_down] = false;

  var dRef = window.location.href.replace(/([&?])in=/, "$1din=");
  var dLoc = dRef.split(/\?/)[0];

  if (http_request[_up] = _httpReqInit()) {
    http_request[_down] = _httpReqInit();
  }
//}
// ---------------------------------------------
// ---------------------------------------------
// ---------------------------------------------

function setParam(location, par, newValue) {
  var loc = location.split(/\?/);
  if (loc.length == 1) location = location + '?' + par + '=' + newValue;

  var pars = loc[1].split("&");
  var twins;

  for(_k in pars) {
    twins = pars[_k].split('=');
    if (twins[0] == par) {
      return location.replace(pars[_k], par + "=" + newValue);
    }
  }

  return location + '&' + par + '=' + newValue; 
}


function dynamicInit(doc, startIndex, step) {
  if (!startIndex) startIndex = 1;
  if (!step) step = 1;

  if (document) {
    diPrev = diNext = startIndex;
    dStep = step;
    dDoc = doc;
  }

//  debug_info = "dRef=" + dRef + ";\n" + "dLoc=" + dLoc + ";\n" + "dynamicInit("+doc+", "+startIndex+", "+step+");";

  dynamicControl();
}


function dynamicControl() {
  var __wb = document.body;
  var _height = eval(__wb.clientHeight);
  var _hranica = _height/_scrollFactor;

  if (dStep) {
    if (http_request[_down])
      if (!http_request[_down].readyState)
        if (__wb.scrollHeight - __wb.scrollTop - _height < _hranica) {
          // STEP +1;
          dynamicLoad(dStep);
        }

    if (http_request[_up])
      if (!http_request[_up].readyState)
        if (__wb.scrollTop < _hranica) {
          // STEP -1;
          dynamicLoad(-dStep);
        }
  }
}


function dynamicLoad(step) {
  var doc = window.document;
  var kap, i;

  if (step > 0) {
    if (http_request[_down]) {
      kap = diPrev += dStep;
      i = _down;
    }
  }
  else {
    kap = diNext -= dStep;
    i = _up;
    if (kap < 1) {
      http_request[_up] = false;
      return;
    }
  }

  if (http_request[i]) {
    var param = setParam(setParam(dRef, 'din', dDoc + kap), 'step', step);
    _httpReqGo(i, param, 'echo(index,data);');
  }
}


function echo(index, data) {
  div = document.createElement('div');
  div.innerHTML = data;

  var before = (index > 0) ? null : document.body.firstChild;
  var __wb = document.body;
  var oldHeight = __wb.scrollHeight;
  var oldTop = __wb.scrollTop;
	document.body.insertBefore(div, before);
	if (before) {
    var plusHeight = __wb.scrollHeight - oldHeight;
		window.scrollTo(__wb.scrollLeft, __wb.scrollTop + plusHeight);

    // posun PPC
    var i;
    if (i = aPPC.length) {
      for (i-- ; i >= 0; i--) {
        aPPC[i].style.top = (parseInt(aPPC[i].style.top) + plusHeight) + "px";
      }
    }
    // pre prípad aktívneho drag & drop posúvania PPC
    if (oDragObj) iDragObjTopDiff += plusHieght;
  }

//document.body.ondblclick = function() { alert(document.body.scrollTop); };
  window.setTimeout('dynamicControl()', _interval);
}


function scroll2(obj) {
  if (typeof(obj) == 'string')
    obj = document.getElementById(obj);

  if (objX = obj) {
    y = 0;
    do
      y += objX.offsetTop;
    while (objX = objX.offsetParent);

    window.scrollTo(0, y);
    blikON(obj);
  }
}


// ---------------------------------------------
// ------------------ BLIKANIE -----------------
// ---------------------------------------------

var gcBlikTime = 300;
var gBlikObject;
var gBlikTimer;
var gNumBlik;

function blik() {
  if (gBlikObject.className == "")
    gBlikObject.className = "blink";
  else {
    gBlikObject.className = "";
  }

  if (--gNumBlik <= 0) blikOFF();
}

function blikON(obj) {
  blikOFF();
  if (obj) {
    if (obj.innerHTML.length < 300) {
      gNumBlik = 10;
      gBlikObject = obj;
      gBlikTimer = setInterval("blik()", gcBlikTime);
    }
  }
}

function blikOFF() {
  if("number" == typeof(gBlikTimer)) {
    clearInterval(gBlikTimer);
    gBlikObject.className = "";
  }
}
