// ---------------------------------------------
// ---- Objekt DYNAMIC --- definition start ----
// ---------------------------------------------
/*
function dynamic(_loc, _echoCmd) {
	// properties
	this.location = _loc;
//	this.destination = _dest;
	this.echo = _echoCmd;
	this.http_request = false;

	// methods
	this.setPar = _dynamicSetParam;
	this.go = _httpReqGo;
	this.getReadyState = _dynamicReadyState;
	this.httpEcho = _httpReqEcho;	// private
	this.init = _httpReqInit;	// private;
	this.init();
alert("http :" + this.http_request.readyState);
}
*/
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) {}
		}
 	}
/*	if (!http_request) {
		return false;
	}
*/
	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("Problem!!! >" + _http_request.status + " " + _http_request.responseText);
		}
	}
}

// ---------------------------------------------
// ---- Objekt DYNAMIC --- definition end ------
// ---------------------------------------------

// ----------------------------------------------------------------------------------
var http_request = new Array();
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];
// ----------------------------------------------------------------------------------

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;
	}
//alert(1);
	dynamicControl();
//alert(2);
//	window.setInterval("dynamicControl();", _interval);
}


function dynamicControl() {
	var __wb = document.body;
	var _height = eval(__wb.clientHeight);
	var _hranica = _height/_scrollFactor;

	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;
//alert("load");
	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;
	document.body.insertBefore(div, before);
	if (before) {
		window.scrollTo(window.scrollLeft, __wb.scrollTop + __wb.scrollHeight - oldHeight);
//alert(__wb.scrollTop + __wb.scrollHeight - oldHeight);
	}
	window.setTimeout('dynamicControl()', _interval);
//		dynamicControl();
}


if (http_request[_up] = _httpReqInit()) {
	http_request[_down] = _httpReqInit();
}


//alert("load OK");


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);
	}
//	else alert(obj + " nie je objekt!!!");
}

////////////////
/// 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 = "";
	}
}


//alert("load OK.");
