/**
* zda se jedna o Operu
*
* @return bool
*/
function isOpera()
{
	return (window.opera) ? true : false;
}

/**
* zda se jedna o MSIE
*
* @return bool
*/
function isMSIE()
{
//alert (document.all);
//alert (window);
//alert ( window.showModalDialog);
//	return (document.all && window.showModalDialog) ? true : false;
return (document.all && !isNetscape() && !isOpera());
}

/**
* zda se jedna o Mozillu
*
* @return bool
*/
function isNetscape()
{
	return (navigator.appName.indexOf("Netscape") >= 0) ? true : false;
}

/**
* vraci, kam sem klikl
*
* @param e event,
* @return object,
*/
function getTarget(e)
{
	if (e == null) e = window.event;
	var o;
	if (e.target) o = e.target;
	else if (event.srcElement) o = event.srcElement;
	return o;
}

/**
* odstrani bublani;
*
* @param e event,
*/
function cancelBubble(e){
	if (e == null) e = event;
	if (e.stopPropagation) e.stopPropagation() ;
	else e.cancelBubble = true;
}

/**
* vrati x souradnici v dokumentu
*
* @param e event,
* @return int,
*/
function getDocX(e)
{
//alert ('gx');
var x= 0;
var m = isMSIE();
//alert ('getDocX ' + m.toString());
	if (e == null) e = event;
	if (isMSIE()) x =  e.offsetX + absLeft(getTarget(e));
	else x= e.pageX;
return x;
}

/**
* vrati y souradnici v dokumentu
*
* @param e event,
* @return int,
*/
function getDocY(e)
{
//alert ('gy');
  var y = 0;
var m = isMSIE();
//alert ('getDocY ' + m.toString());

	if (e == null) e = event;
	if (isMSIE()) y =  e.offsetY + absTop(getTarget(e));
	else y = e.pageY;
	return y;
	//alert (y);
}

/**
* vrati x souradnici na objektu
*
* @param e event,
* @return int,
*/
function getTargetX(e)
{
	if (e == null) e = event;
	if (isNetscape()) return e.layerX;
	else return e.offsetX;
}

/**
* vrati y souradnici na objektu
*
* @param e event,
* @return int,
*/
function getTargetY(e)
{
	if (e == null) e = event;
	if (isNetscape()) return e.layerY;
	else return e.offsetY;
}

/**
* zjisteni x objektu v dokumentu
*
* @param o objekt,
* @return int,
*/
function absLeft(o)
{
	var ret = o.offsetLeft;
	if (o.offsetParent) ret += absLeft(o.offsetParent);
	return ret;
}

/**
* zjisteni y objektu v dokumentu
*
* @param o objekt,
* @return int,
*/
function absTop(o)
{
	var ret = o.offsetTop;
	
	if (o.offsetParent) ret += absTop(o.offsetParent);
	return ret;
}

/**
* testuje, zda je cislo int, pokud ne, vrati false
*
* @param x int,
* @return null/int,
*/
function toInt(x)
{
	if (x != null)
	{
		x = parseInt(x);
		if (isNaN(x)) x = null;
	}
	return x;
}
