/**
 * (c) 2008 Martin Žaloudek, ICQ 56371711 - všechna práva vyhrazena
 *
 * verze: 09.07.14.1
 *    
 * použití:
 *  		prohlizeniObrazku_seznam.push({
 *				"id": "fotogalerie/pokus1/P8270615.JPG",
 *				"url": "prilohy/fotogalerie/pokus1/P8270615.JPG",
 *				"url_nahled": "nahled.php?w=800&h=533&img=fotogalerie/pokus1/P8270615.JPG",
 *				"popis": "P8270615.JPG"
 *			});
 *			prohlizeniObrazku_seznam.push({
 *				"id": "fotogalerie/pokus1/P8270620_cb.jpg",
 *				"url": "prilohy/fotogalerie/pokus1/P8270620_cb.jpg",
 *				"url_nahled": "nahled.php?w=800&h=533&img=fotogalerie/pokus1/P8270620_cb.jpg",
 *				"popis": "P8270620_cb.jpg"				
 *			});
 *
 *			<img alt="P8270615.JPG" src="nahled.php?img=fotogalerie%2Fpokus1%2FP8270615.JPG" onclick="return zobrazProhlizeniObrazku('fotogalerie/pokus1/P8270615.JPG')" />
 *			<img alt="P8270620_cb.jpg" src="nahled.php?img=fotogalerie%2Fpokus1%2FP8270620_cb.jpg" onclick="return zobrazProhlizeniObrazku('fotogalerie/pokus1/P8270620_cb.jpg')" />    
*/

/* ----- KONFIGURACE ----- */
var prohlizeniObrazku_config_zvetsitMaleObrazky = true;
var prohlizeniObrazku_config_zvetsovatAzOd = 1.2; // mensi zustanou na sve originalni velikosti
/* ----- konec KONFIGURACE ----- */


var prohlizeniObrazku_seznam = new Array();

/* false=skryte, jinak ID aktualniho obrazku */
var prohlizeniObrazku_zobrazeno = false;

/*
	0 .. zatim neprobehla inicializace
	1 .. prohlizeni nezobrazeno
	2 .. zobrazeno (idle stav)
	3 .. obrazek se nacita
*/
var prohlizeniObrazku_stav = 0;


// pridani windows.onLoad += inicializace;
addEvent(window, 'load', inicializace);

function inicializace()
{
	prohlizeniObrazku_stav = 1;
	var div = document.createElement("div");
	div.setAttribute('id', 'prohlizeniObrazku')
	div.innerHTML =
		'	<div id="prohlizeniObrazku_pozadi"></div>' +   
		'	<div id="prohlizeniObrazku_ramecek">' +
		'		<div id="prohlizeniObrazku_loading">' +
		'			<img src="img/prohlizeniobrazku/loading.gif" alt="načítání..." width="32" height="32" />' +
		'		</div>' +
		'		<div id="prohlizeniObrazku_error">' +
		'			<img src="img/prohlizeniobrazku/fail.png" alt="Error" width="64" height="64" />' +
		'			<strong>Nastala chyba.<br />Obrázek se bohužel nepodařilo načíst.<br /><br /><a href="#" onclick="return prohlizeniObrazku_nasledujici(0);">zkusit načíst znovu</a></strong>' +
		'		</div>' +
		'		<a id="prohlizeniObrazku_a" href="#" onclick="return skryjProhlizeniObrazku();">' +
		'			<img id="prohlizeniObrazku_img" src="" alt="" />' +
		'		</a>' +
		'		<div id="prohlizeniObrazku_navigation">' +
		'			<a onclick="return prohlizeniObrazku_nasledujici(-1);" href="#" title="Předchozí obrázek"><img src="img/prohlizeniobrazku/prev.png" alt="Předchozí obrázek" width="32" height="32" /></a>' +
		'			<a onclick="return prohlizeniObrazku_nasledujici(+1);" href="#" title="Následující obrázek"><img src="img/prohlizeniobrazku/next.png" alt="Následující obrázek" width="32" height="32" /></a>' +
		'			<a id="prohlizeniObrazku_fullscreen_href" target="_blank" href="#" title="Plná velikost"><img src="img/prohlizeniobrazku/fullsize.png" alt="Plná velikost" width="32" height="32" /></a>' +
		'			<a onclick="return skryjProhlizeniObrazku();" href="#" title="Zavřít"><img src="img/prohlizeniobrazku/exit.png" alt="Zavřít" width="32" height="32" /></a>' +
		'		</div>' +
		'		<div id="prohlizeniObrazku_popis">' +
		'		</div>' +
		'		<div id="prohlizeniObrazku_counter">' +
		'		</div>' +
		'	</div>';	
	document.body.insertBefore(div, document.body.childNodes[0]);
}

/* pomocna funkce: najde v seznamu obrazku ten se souhlasicim ID a vrati index teto hodnoty v poli */
function idObrazkuToIndex(id)
{
	for (var i = 0; i < prohlizeniObrazku_seznam.length; i++)
	{
		if (prohlizeniObrazku_seznam[i]['id'] == id)
		{
			return i;
		}
	}
	return -1; 
}

/* ZOBRAZI OBRAZEK SE ZVOLENYM ID */
function zobrazProhlizeniObrazku(id)
{
	if (prohlizeniObrazku_stav == 0)
	{
		//zatim neprobehla inicializace, vyckat na donacteni stranky
		setTimeout("zobrazProhlizeniObrazku(" + id + ");", 250);			
		return false;
	}
	
	//najit index hodnotu pole
	var index = idObrazkuToIndex(id);

	if (index >= 0)
	{
		// umisteni na stred
		var topUmisteni = Math.max((document.documentElement.clientHeight - 30 - 590) / 2, 1) + document.documentElement.scrollTop; 
		var leftUmisteni = Math.max((document.documentElement.clientWidth - 30 - 812) / 2, 1) + document.documentElement.scrollLeft; 
		document.getElementById('prohlizeniObrazku_ramecek').style.top = topUmisteni + "px";
		document.getElementById('prohlizeniObrazku_ramecek').style.left = leftUmisteni + "px";
	
		document.getElementById("prohlizeniObrazku").style.display = "block";
		document.getElementById("prohlizeniObrazku_error").style.display = "none";
		//OBRAZEK LOADING...
		document.getElementById("prohlizeniObrazku_loading").style.display = "block";
		
		prohlizeniObrazku_stav = 2; // zobrazeno, pred nactenim obrazku

		//NAVIGACE + POPIS
		document.getElementById('prohlizeniObrazku_fullscreen_href').href = prohlizeniObrazku_seznam[index]['url'];		
		document.getElementById('prohlizeniObrazku_popis').innerHTML = prohlizeniObrazku_seznam[index]['popis']; 		
		document.getElementById('prohlizeniObrazku_counter').innerHTML = (index + 1) + ' / ' + prohlizeniObrazku_seznam.length; 		


		prohlizeniObrazku_zobrazeno = id;
	
		//preload obrazku
		var preload = new Image();
		preload.onload = function() {
			zobrazProhlizeniObrazku_onPreload(prohlizeniObrazku_zobrazeno, preload);
		}
		preload.onerror = function() {
			prohlizeniObrazku_zobrazChybu();
		}
		prohlizeniObrazku_stav = 3; // nacitani obrazku
		preload.src = prohlizeniObrazku_seznam[index]['url_nahled'];

		return false;		
	}
	else
	{
		skryjProhlizeniObrazku();
		return true;
	}
}
 
/* pomocne funkce - je volane funkci zobrazProhlizeniObrazku(id) po nacteni celeho obrazku do cache */
function zobrazProhlizeniObrazku_onPreload(id, imgObject)
{
	if (prohlizeniObrazku_stav == 3)	//pouze, pokud je ještě prohlizeni aktivni
	{
		//najit index hodnotu pole
		var index = idObrazkuToIndex(id);
		if (index < 0)
		{
			alert("Chyba: Litujeme, ale odkaz na soubor se nepodařilo nalézt v seznamu obrázků.");
			return true;
		}

		document.getElementById("prohlizeniObrazku_loading").style.display = "none";

		document.getElementById('prohlizeniObrazku_img').style.display = 'none';
//		document.getElementById('prohlizeniObrazku_img').src = '';

		//VYPOCET SPRAVNYCH ROZMERU
		var zoom =  Math.min(800 / imgObject.width, 534 / imgObject.height);
		if (!prohlizeniObrazku_config_zvetsitMaleObrazky)
		{
			zoom = Math.min(1, zoom);
		}
		else
		{
			if (zoom > 1 && zoom < prohlizeniObrazku_config_zvetsovatAzOd)
				zoom = 1;
		}
		document.getElementById('prohlizeniObrazku_img').width = Math.floor(zoom * imgObject.width);
		document.getElementById('prohlizeniObrazku_img').height = Math.floor(zoom * imgObject.height);
		
		//vertical-align
		var topMargin = Math.max(0, Math.round((534 - zoom * imgObject.height) / 2));
		document.getElementById('prohlizeniObrazku_img').style.marginTop = topMargin + 'px';
		
		//ZOBRAZIT PREDNACTENY OBRAZEK
		document.getElementById('prohlizeniObrazku_img').src = prohlizeniObrazku_seznam[index]['url_nahled']; 
		document.getElementById('prohlizeniObrazku_img').alt = prohlizeniObrazku_seznam[index]['popis']; 
		document.getElementById('prohlizeniObrazku_img').style.display = "inline"; 
		prohlizeniObrazku_stav = 2; // nacteno

		return false;
	}
	else
		return true;
}

/* prepne na nasledujici obrazek */
function prohlizeniObrazku_nasledujici(offset)
{
	if (prohlizeniObrazku_stav == 2)
	{
		var index = idObrazkuToIndex(prohlizeniObrazku_zobrazeno);
		
		if ((offset > 0 && index < (prohlizeniObrazku_seznam.length - offset)) || (offset < 0 && index+offset >= 0) || offset == 0)
		{
			zobrazProhlizeniObrazku(prohlizeniObrazku_seznam[index + offset]['id']);			
		}
	}
	return false;
}

/* VYPNE PROHLIZENI OBRAZKU */
function skryjProhlizeniObrazku()
{
	document.getElementById("prohlizeniObrazku").style.display = "none";
	prohlizeniObrazku_zobrazeno = false;
	prohlizeniObrazku_stav = 1;
	document.getElementById('prohlizeniObrazku_img').src = ""; 
	document.getElementById('prohlizeniObrazku_img').alt = ""; 
	return false;
}

/* NAVIGACE KLAVESNICI */
document.onkeydown = ovladaniKlavesnici;
function ovladaniKlavesnici (event)
{
	//pouze pokud je nahled zobrazen
	if (!prohlizeniObrazku_zobrazeno && document.getElementById("prohlizeniObrazku").style.display == "none")
		return true;
	
	if (!document.getElementById)
		return true;

	if (window.event) event = window.event;

//	if ((event.ctrlKey) && (event.altKey))
	{
		switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
		{
			case 27: //Esc
				skryjProhlizeniObrazku();
				return false;
				break;
			case 33: //pageUp
			case 38: //up
			case 37: //left
				prohlizeniObrazku_nasledujici(-1);
				return false;
				break;
			case 34: //pageDown
			case 40: //down
			case 39: //right
				prohlizeniObrazku_nasledujici(+1);
				return false;
				break;
		}
	}
	return true; //tlacitko neodpovida, nechat osetrit udalost prohlizecem			
}
			   
function addslashes(str)
{
	str=str.replace("'", "\\'");
	str=str.replace('"', '\\"');
	return str;
}


window.getHeight = function ()
{
	if (window.innerHeight)
		/* NN4 a kompatibilní prohlížeče */
		return window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		/* MSIE6 v std. režimu - Opera a Mozilla již uspěly s window.innerHeight */
		return document.documentElement.clientHeight;
	else if (document.body && document.body.clientHeight)
		/* starší MSIE + MSIE6 v quirk režimu */
		return document.body.clientHeight;
	else
		return null;
}

window.getWidth = function ()
{
	if (window.innerWidth)
		/* NN4 a kompatibilní prohlížeče */
		return window.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth)
		/* MSIE6 v std. režimu - Opera a Mozilla již uspěly s window.innerWidth */
		return document.documentElement.clientWidth;
	else if (document.body && document.body.clientWidth)
		/* starší MSIE + MSIE6 v quirk režimu */
		return document.body.clientWidth;
	else
		return null;
}

function prohlizeniObrazku_zobrazChybu()
{
		document.getElementById('prohlizeniObrazku_img').style.display = "none"; 
		document.getElementById("prohlizeniObrazku_loading").style.display = "none";
		document.getElementById("prohlizeniObrazku_error").style.display = "block";
		prohlizeniObrazku_stav = 2; // idle stav
}

function addEvent(obj, evType, fn)
{ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}
	 
