// ===== TRAIL ================================================================
/*
	Zobrazi plovouci nahled obrazu s pozici kurzoru.
	Vyzaduje v tele html dokumentu div: <div id="{trailname}"></div>
	Zpusoby volani:
		<img src="nahledovy_obraz" width="114" height="116" alt="" border="0"
			onmouseover="showTrailObj(this,'popis');" onmouseout="hideTrail();">
		<img src="nahledovy_obraz" width="114" height="116" alt="" border="0"
			onmouseover="showTrail('cesta_k_obrazu', 'popis', 'sirka_obrazu', 'vyska_obrazu');"
			onmouseout="hideTrail();">
*/

var trail = false; // dhtml trail pro zobrazeni nahledu
var trailname = 'trailimg'; // id trailu pro zobrazeni nahledu
var trailmin = 50; // minimalni testovana velikost trailu
var trailwidth = 0; // aktualni sirka trailu
var trailheight = 0; // aktualni vyska trailu
var traildelta = 15; // vzdalenost kurzoru od trailu
var trailtimer = null; // timer pro skryti
var trailtimeout = 0; // pocitadlo timeru
var trailtimerenabled = true; // povoleni timeru
var trailtimerstep = 15; // pocet kroku pri ztmavovani

var ie=0; // test na IE
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	ie = parseInt(RegExp.$1);
	trailtimerstep = 5;
}

// ----- GETTRAIL -------------------------------------------------------------
function getTrail() {
	if (document.getElementById) {
		return document.getElementById(trailname);
	} else if (document.all) {
		return document.all[trailname];
	} else if (document.layers) {
		return document.layers[trailname];
	} else return false;
}

// ----- HIDETRAIL ------------------------------------------------------------
function hideTrail() {
	if(trailtimeout>0 && trailtimerenabled) {
		trailtimeout--;
		trail.style.opacity = trailtimeout/trailtimerstep;
		trail.style.filter = 'alpha(opacity='+trailtimerstep*trailtimeout+')';
		trailtimer = setTimeout(hideTrail, 20);
	} else {
		document.onmousemove = '';
		if(trail) {
			trail.style.display = 'none';
			trail.style.left = '-500px';
			trail.style.top = '0px';
			trail.style.opacity = '1';
			trail.style.filter = 'alpha(opacity=100)';
			trail.innerHTML = ' ';
			trail = false;
		}
	}
}

// ----- SHOWTRAIL ------------------------------------------------------------
function showTrail(path, note, width, height) {
	if(trailtimer) {clearTimeout(trailtimer);}
	trailtimeout = trailtimerstep;
	trail = getTrail();
	if(trail) {
		trail.style.opacity = '1';
		trail.style.filter = 'alpha(opacity=100)';
		var html = '<img src="'+path+'"';
		if (height>0 && width>0){
			html = html+' height="'+height+'" width="'+width+'"';
		}
		html = html+' alt="" border="0"/><p>'+note+'</p>';
		trail.innerHTML = html;
		trail.style.display = 'block';
		document.onmousemove = followMouse;
	}
}

// ----- SHOWOBJTRAIL ---------------------------------------------------------
function showTrailObj(obj, note) {
	showTrail(obj.src, note ? note : obj.alt);
}

// ----- FOLLOWMOUSE ----------------------------------------------------------
function followMouse(e) {

	trailwidth = isNaN(trail.clientWidth) ? trail.innerWidth : trail.clientWidth;
	trailheight = isNaN(trail.clientHeight) ? trail.innerHeight : trail.clientHeight;

	var xcoord = traildelta;
	var ycoord = traildelta;

	var docwidth = document.all ? trueBody().scrollLeft+trueBody().clientWidth : pageXOffset+window.innerWidth-traildelta;
	var docheight = document.all ? Math.min(trueBody().scrollHeight, trueBody().clientHeight) : Math.min(window.innerHeight);
	var mousex = mousePos(e, false);
	var mousey = mousePos(e, true);

	xcoord += mousex;
	if (2*traildelta+trailwidth > docwidth-mousex) {
		xcoord -= trailwidth+2*traildelta;
	}
	scrollTop = document.body ? Math.max(trueBody().scrollTop, document.body.scrollTop) : trueBody().scrollTop;
	ycoord += mousey;
	if (2*traildelta+trailheight > docheight-mousey && 2*traildelta+trailheight < mousey-scrollTop) {
		ycoord -= trailheight+2*traildelta;
	}
	if (ycoord<0) {
		ycoord += trailheight+2*traildelta;
	}
	if(trailwidth>trailmin && trailheight>trailmin) {
		trail.style.left = xcoord+'px';
		trail.style.top = ycoord+'px';
	}

}

// ----- MOUSEPOS -------------------------------------------------------------
function mousePos(e, axis) {
	var cord = 0;
	if (typeof e != "undefined") {
		cord = axis ? e.pageY : e.pageX;
	} else if (typeof window.event != "undefined") {
		cord = axis ? event.clientY + trueBody().scrollTop : event.clientX + trueBody().scrollLeft;
	}
	return cord;
}

// ----- TRUEBODY -------------------------------------------------------------
function trueBody(){
	return (!window.opera && document.compatMode && document.compatMode!="BackCompat")
		? document.documentElement : document.body;
}