var initOK=true;
var reference=null;
var onlink=false;

function addEvent(obj, evType, fn)
	{
	if (obj.addEventListener)
		{
		obj.addEventListener(evType, fn, true);
		return true;
		}
	else if (obj.attachEvent)
		{
		var r = obj.attachEvent("on"+evType, fn);
		return r;
		}
	else { return false; }
	}

function mouseChecker(e)
  { // by fczbkk
  if (initOK)
    {
    if (!e)
      {
      mousePositionX = window.event.clientX;
      mousePositionY = window.event.clientY;
      }
    else
      {
      mousePositionX = e.pageX;
      mousePositionY = e.pageY;
      }
    refMove(mousePositionX,mousePositionY);
    }
  }

getDivsByClassName = function(srcElm,clName,dive)
  { // by fczbkk
  if (document.getElementsByTagName)
    {
    this.srcElm = srcElm;
    this.clName = clName;
    this.dive=(dive)?true:false;
    this.foundElements=[];
    this.allElements=this.srcElm.getElementsByTagName("div");
    for (var i = 0; i < this.allElements.length; i++)
      {
      if (this.allElements[i].className == this.clName)
        {
        if (this.dive)
          {
          if (this.allElements[i].parentNode == this.srcElm)
            this.foundElements[this.foundElements.length] = this.allElements[i];
          }
        else this.foundElements[this.foundElements.length] = this.allElements[i];
        }
      }
    return this.foundElements;
    }
  else return [];
  }

function refShow(element)
  {
  if(onlink)
    {
    desc=getDivsByClassName(element,"description");
    desc[0].style.display="block";
    reference=desc[0];
    return(desc[0]);
    }
  }

function refHide(element)
  {
  desc=getDivsByClassName(element,"description");
  desc[0].style.display="none";
  reference=null;
  return(desc[0]);
  }

function refMove(x,y)
  {
  if(reference!=null)
    {
// relativni pozice vzhledem ke kurzoru mysi
    if(document.all)
      {
      Xpos = x+winL()+20;
      Ypos = y+winT()-50;
      }
    else
      {
      Xpos = x+20;
      Ypos = y-50;
      }
    if ((Ypos+gH(reference)) > (winT()+winH())) Ypos = winT()+winH()-gH(reference);	// osetri preteceni pres dolni okraj obrazu
    if (Ypos < winT()) Ypos = winT();	// osetri preteceni pres horni okraj obrazu
    if ((Xpos+gW(reference)) > (winW()+winL())) Xpos = winW()+winL()-gW(reference);	// osetreni preteceni praveho okraje
    if (Xpos < winL()) Xpos = winL();	// osetreni preteceni leveho okraje
    sX(reference,Xpos);
    sY(reference,Ypos);
    }
  }
