/*
    tooltip.js, (c) fv.cz <devel@fv.cz>
    -- zalozeno na: http://www.scriptasylum.com/mouse/alttxt/alttxt.html (by: Brian Gosselin)
    --
    -- rev.0.6, 12.06.2008, 10:51, smid  :: +howto na pouziti
    -- rev.0.5, 06.11.2006, 18:24, j3nda :: *tt_moveobj() [konqueror/mozilla]
    -- rev.0.4, 19.10.2006, 22:53, j3nda :: *spravne umisteni tooltipu i pri scrollovani stranky (testovano: konqueror)
    -- rev.0.3, 19.07.2006, 14:12, j3nda :: kompletni revize; odladeni; *chyby pri mouseout && fading out
    -- rev.0.2, 15.06.2006, 14:49, j3nda :: otestovani +tt_config*
    -- rev.0.1, 15.06.2006, 12:43, j3nda :: procisteni/zapracovani, upgrade 1.4 -> 1.6
    
    do html stranky pridat:
    <script language="javascript" src="[%__ESTER_URL__%]src/tooltip.js"></script>
    <div id="tooltip" class="tooltip" style="position:absolute; top:-100px; left:0px; visibility:hidden"></div>

    pomoci CSS pridat:
    .tooltip {}
    ---[ mozno doplnit vlastni vzhled: width; height; border; color; background-color; ...]---
    
    a pomoci akci: onmouseover(), onmouseout() ovlivnovat tooltip, napr:
    
    <div class="titulek" onmouseover="tt_write('toto je tooltip.');" onmouseout="tt_write(0);">
    Prejed na text a zobrazi se tooltip
    </div>

    tooltip se da take konfigurovat pomoci:
    tt_config(_mousefollow, _class, _dofade, _hideDelay, _centertext);
    tt_config(true, "tooltip2", false, 300, false);

*/

/*
    default nastaveni - dalsi chovani lze ovlivnit online pomoci: tt_config(); volane v ramci onmouseover()
*/
var tt_mousefollow=true;  // zapne/vypne posouvani tooltipu pri pohybu mysi, pri: false je mozne klikat na odkazy v tooltipu
var tt_dofade=false;      // zapne/vypne fade efekt (pro: ie4, nn6)
var tt_centertext=false;  // zapne/vypne centrovani textu v tooltipu (pri vypnutem, je zarovnani vlevo)
var tt_xoffset=10;        // x-ovy posun tooltipu
var tt_yoffset=16;        // y-ovy posun tooltipu
var tt_hideDelay=300;     // [ms] pauza po kterou se tooltip zvyraznuje/mizi (pouze pri zapnutem fade efektu)
var tt_class="tooltip";   // trida pro tooltip, lze menit pomoci tt_config()


////////////////////////////// NO NEED TO EDIT BEYOND THIS POINT //////////////////////////////////////

function tt_altProps() {
    this.w3c=(document.getElementById)?true:false;
    this.ns4=(document.layers)?true:false;						// netscape / mozilla-old
    this.ie4=(document.all && !this.w3c)?true:false;					// IE 4
    this.ie5=(document.all && this.w3c)?true:false;					// IE 5
    this.ns6=(this.w3c && navigator.appName.indexOf("Netscape")>=0 )?true:false;	// mozilla-new / firefox
    this.kq3=(this.w3c && navigator.appName.indexOf("Konqueror")>=0)?true:false;	// konqueror


    this.w_y=0;
    this.w_x=0;
    this.navtxt=null;
    this.boxheight=0;
    this.boxwidth=0;
    this.ishover=false;
    this.ieop=0;
    this.op_id=0;
    this.oktomove=false;
    this.dy=0;

    // default hodnoty
    this.cfg_class=tt_class;
    this.cfg_mouseFollow=tt_mousefollow;
    this.cfg_centerText=tt_centertext;
    this.cfg_xoffset=tt_xoffset;
    this.cfg_yoffset=tt_yoffset;
    this.cfg_doFade=tt_dofade;
    this.cfg_hideDelay=tt_hideDelay;
    this.cfg_state=0;
}

var tt_AT=new tt_altProps();


function tt_configDefault(_mousefollow, _class, _xoff, _yoff, _dofade, _hideDelay, _centertext) {
    if (_mousefollow == true || _mousefollow == false || _mousefollow == 0 || _mousefollow == 1) { tt_AT.cfg_mouseFollow=_mousefollow; } else { tt_AT.cfg_mouseFollow=tt_mousefollow; }
    if (_class != '') { tt_AT.cfg_class=_class; } else { tt_AT.cfg_class=tt_class; }
    if (_xoff >= 10 && _xoff <= 100) { tt_AT.cfg_xoffset=_xoff; } else { tt_AT.cfg_xoffset=tt_xoffset; }
    if (_yoff >= 16 && _yoff <= 100) { tt_AT.cfg_yoffset=_yoff; } else { tt_AT.cfg_yoffset=tt_yoffset; }
    if (_dofade == true || _dofade == false || _dofade == 0 || _dofade == 1) { tt_AT.cfg_doFade=_dofade; } else { tt_AT.cfg_doFade=tt_dofade; }
    if (_hideDelay >= 0 && _hideDelay <= 5000) { tt_AT.cfg_hideDelay=_hideDelay; } else { tt_AT.cfg_hideDelay=tt_hideDelay; }
    if (_centertext  == true || _centertext  == false || _centertext  == 0 || _centertext  == 1) { tt_AT.cfg_centerText=_centertext; } else { tt_AT.cfg_centerText=tt_centertext; }

}


function tt_config(_mousefollow, _class, _dofade, _hideDelay, _centertext) {
    tt_configDefault(_mousefollow, _class, tt_xoffset, tt_yoffset, _dofade, _hideDelay, _centertext);
    tt_AT.cfg_state=1;
}


function tt_toggleCenterText() { tt_AT.cfg_centerText=!tt_AT.cfg_centerText; }
function tt_toggleMouseFollow() { tt_AT.cfg_mouseFollow=!tt_AT.cfg_mouseFollow; }
function tt_toggleDoFade() {
    tt_AT.cfg_doFade=!tt_AT.cfg_doFade;
    if (!tt_AT.cfg_doFade) tt_AT.ieop=100;
}


function tt_setHideDelay(_hd) {
    if (_hd >= 0 || _hd <= 5000) tt_AT.cfg_hideDelay=_hd;
}


function tt_getwindowdims() {
    tt_AT.w_y=(tt_AT.ie5 || tt_AT.ie4) ? document.body.clientHeight:window.innerHeight;
    tt_AT.w_x=(tt_AT.ie5 || tt_AT.ie4) ? document.body.clientWidth:window.innerWidth;
}


function tt_getboxwidth() {
         if (tt_AT.ns4) tt_AT.boxwidth=(tt_AT.navtxt.document.width)   ? tt_AT.navtxt.document.width   : tt_AT.navtxt.clip.width;
    else if (tt_AT.ie4) tt_AT.boxwidth=(tt_AT.navtxt.style.pixelWidth) ? tt_AT.navtxt.style.pixelWidth : tt_AT.navtxt.offsetWidth;
    else tt_AT.boxwidth=(tt_AT.navtxt.style.width) ? parseInt(tt_AT.navtxt.style.width) : parseInt(tt_AT.navtxt.offsetWidth);
}


function tt_getboxheight() {
         if (tt_AT.ns4) tt_AT.boxheight=(tt_AT.navtxt.document.height)   ? tt_AT.navtxt.document.height   : tt_AT.navtxt.clip.height;
    else if (tt_AT.ie4) tt_AT.boxheight=(tt_AT.navtxt.style.pixelHeight) ? tt_AT.navtxt.style.pixelHeight : tt_AT.navtxt.offsetHeight;
    else tt_AT.boxheight=parseInt(tt_AT.navtxt.offsetHeight);
}


function tt_movenavtxt(x,y) {
    if (tt_AT.ns4) tt_AT.navtxt.moveTo(x,y);
    else {
	tt_AT.navtxt.style.left=x+'px';
	tt_AT.navtxt.style.top=y+'px';
    }
}


function tt_getpagescrolly() {
    if (tt_AT.ie5 || tt_AT.ie4) return document.body.scrollTop;
    else return window.pageYOffset;
}


function tt_getpagescrollx() {
    if (tt_AT.ie5 || tt_AT.ie4) return document.body.scrollLeft;
    else return window.pageXOffset;
}


function tt_writeindiv(text) {
    if (tt_AT.ns4) {
	tt_AT.navtxt.document.open();
	tt_AT.navtxt.document.write(text);
	tt_AT.navtxt.document.close();

    } else tt_AT.navtxt.innerHTML=text;
}


function tt_write(text) {
    if (text == null) { text=0; }
    if (tt_AT.cfg_doFade && (tt_AT.ie4 || tt_AT.w3c)) clearInterval(tt_AT.op_id);
    if (text != 0) {

	if (!tt_AT.cfg_state) { tt_configDefault(tt_mousefollow, tt_class, tt_xoffset, tt_yoffset, tt_dofade, tt_hideDelay); }
	if ((tt_AT.w3c || tt_AT.ie4) && !tt_AT.cfg_doFade) {
	    tt_AT.ieop=100;
	    if (tt_AT.ie4 || tt_AT.ie5) tt_AT.navtxt.style.filter='alpha(opacity='+tt_AT.ieop+')';
	    if (tt_AT.ns6) tt_AT.navtxt.style.MozOpacity=(tt_AT.ieop/100);
	    clearInterval(tt_AT.op_id);
	}

	if (!tt_AT.cfg_mouseFollow) clearTimeout(tt_AT.dy);
	tt_AT.oktomove=true;
	tt_AT.ishover=true;
	tt_AT.navtxt.className=tt_AT.cfg_class;	
	if (tt_AT.ns4) text='<div class="'+tt_AT.cfg_class+'">'+((tt_AT.cfg_centerText)?'<center>':'')+text+((tt_AT.cfg_centerText)?'</center>':'')+'</div>';
	if (tt_AT.w3c || tt_AT.ie4) tt_AT.navtxt.style.textAlign=(tt_AT.cfg_centerText)?"center":"left";
	tt_writeindiv(text);
	    
	if (tt_AT.ns4) tt_AT.navtxt.visibility="show";
	else {
	    tt_AT.navtxt.style.visibility="visible";
	    tt_AT.navtxt.style.display="block";
	}
	tt_getboxheight();

	if ((tt_AT.w3c || tt_AT.ie4) && tt_AT.cfg_doFade) {
	    if (tt_AT.ie4 || tt_AT.ie5) tt_AT.navtxt.style.filter="alpha(opacity=0)";
	    if (tt_AT.ns6) tt_AT.navtxt.style.MozOpacity=0;
	    tt_AT.ieop=0;
	    tt_AT.op_id=setInterval('tt_incropacity()',50);
	}

    } else {
	// je v ramci tooltip divu?
	// ANO: --> nesmi zmizet
	//  NE: --> zmizi

	// je mimo objekt a sleduje mys --> skryju tooltip
	if (tt_AT.cfg_mouseFollow) tt_hide();
	else tt_AT.dy=setTimeout('tt_hide()', tt_AT.cfg_hideDelay);

	tt_AT.cfg_state=0;
    }
}


function tt_hide() {
    if (tt_AT.ns4) tt_AT.navtxt.visibility="hide";
    else{
	tt_AT.navtxt.style.display="none";
	tt_AT.navtxt.style.visibility="hidden";
    }
    tt_movenavtxt(-tt_AT.boxwidth-10,0);
    tt_writeindiv('');
}


function tt_incropacity(){
    if (tt_AT.ieop <= 100) {
	tt_AT.ieop+=7;
	if (tt_AT.ie4 || tt_AT.ie5) tt_AT.navtxt.style.filter="alpha(opacity="+tt_AT.ieop+")";
	if (tt_AT.ns6)tt_AT.navtxt.style.MozOpacity=tt_AT.ieop/100;

    } else clearInterval(tt_AT.op_id);
}


function tt_moveobj(evt) {
    mx=((tt_AT.ie5 || tt_AT.ie4) ? event.clientX : evt.pageX);
    my=((tt_AT.ie5 || tt_AT.ie4) ? event.clientY : evt.pageY);

    if (tt_AT.kq3) {
	mx=mx-tt_getpagescrollx();
	my=my-tt_getpagescrolly();
    }

    if (tt_AT.ishover && tt_AT.oktomove) {
	margin=(tt_AT.ie4 || tt_AT.ie5) ? 5 : 25;
	if (tt_AT.ns6) if (document.height+27-window.innerHeight<0) margin=15;
	if (tt_AT.ns4) if (document.height-window.innerHeight<0) margin=10;
	if (tt_AT.ns4 || tt_AT.ns6) mx-=tt_getpagescrollx();
	if (tt_AT.ns4) my-=tt_getpagescrolly();
	xoff=mx+tt_AT.cfg_xoffset;
	yoff=(my+tt_AT.boxheight+tt_AT.cfg_yoffset-((tt_AT.ns6)?tt_getpagescrolly():0)>=tt_AT.w_y)? -5-tt_AT.boxheight-tt_AT.cfg_yoffset: tt_AT.cfg_yoffset;
	tt_movenavtxt( Math.min(tt_AT.w_x-tt_AT.boxwidth-margin , Math.max(2,xoff))+tt_getpagescrollx(), my+yoff+((!tt_AT.ns6)?tt_getpagescrolly():0));
	if (!tt_AT.cfg_mouseFollow) tt_AT.oktomove=false;
    }
}


window.onload=function() {
    tt_configDefault(tt_mousefollow, tt_class, tt_xoffset, tt_yoffset, tt_dofade, tt_hideDelay);
    tt_AT.navtxt=(tt_AT.ns4)?document.layers['tooltip']:(tt_AT.ie4)?document.all['tooltip']:(tt_AT.w3c)?document.getElementById('tooltip'):null;
    tt_getboxwidth();
    tt_getboxheight();
    tt_getwindowdims();
    if (tt_AT.ie4 || tt_AT.ie5 && tt_AT.cfg_doFade) tt_AT.navtxt.style.filter="alpha(opacity=100)";

    // kurzor je nad tooltipem
    tt_AT.navtxt.onmouseover=function() {
	if(!tt_AT.cfg_mouseFollow) clearTimeout(tt_AT.dy);
    }

    // kurzor je mimo tooltip
    tt_AT.navtxt.onmouseout=function() {
	if(!tt_AT.cfg_mouseFollow) tt_AT.dy=setTimeout('tt_hide()', tt_AT.cfg_hideDelay);
    }

    if (tt_AT.ns4) document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove=tt_moveobj;
    window.onresize=tt_getwindowdims;
}

