/*
 * Main JavaScripts functions
 * Author: Jiri Thiemel <Thiemel.Jiri@seznam.cz>
 */
 
/* addEvent functions *********************************************************/
/* see http://dean.edwards.name/weblog/2005/10/add-event/ *********************/
function addEvent(element, type, handler) {
    // assign each event handler a unique ID
    if (!handler.$$guid) handler.$$guid = addEvent.guid++;
    // create a hash table of event types for the element
    if (!element.events) element.events = {};
    // create a hash table of event handlers for each element/event pair
    var handlers = element.events[type];
    if (!handlers) {
        handlers = element.events[type] = {};
        // store the existing event handler (if there is one)
        if (element["on" + type]) {
            handlers[0] = element["on" + type];
        }
    }
    // store the event handler in the hash table
    handlers[handler.$$guid] = handler;
    // assign a global event handler to do all the work
    element["on" + type] = handleEvent;
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
    // delete the event handler from the hash table
    if (element.events && element.events[type]) {
        delete element.events[type][handler.$$guid];
    }
};

function handleEvent(event) {
    // grab the event object (IE uses a global event object)
    event = event || window.event;
    // get a reference to the hash table of event handlers
    var handlers = this.events[event.type];
    // execute each event handler
    for (var i in handlers) {
        this.$$handleEvent = handlers[i];
        this.$$handleEvent(event);
    }
};

/* Function goToBookmark() ****************************************************/
function goToBookmark(bookmark)
{
	url=window.location.href.split("#");
	window.location.href=url[0]+"#"+bookmark;
}

/* Gallery functions **********************************************************/
// ProgresImg declaration and preload
progressImg="/media/progressbar.gif";
progressPreload=new Image();
progressPreload.src=progressImg;

function showFullImage()
{
	if (document.getElementById("selected-photo"))
	{
		src=document.getElementById("selected-photo").getElementsByTagName("img")[0].src;
		src=src.replace(/\/normal\//g,'\/full\/');
		alt=document.getElementById("selected-photo").getElementsByTagName("img")[0].alt;
		inner='<a href="javascript:hideFullImage()" title="Zavřít fotografii"><span><img src="'+progressImg+'" alt="'+alt+'" /></span></a>';
		
		if (document.getElementById("photo-full"))
		{
			document.getElementById("photo-full").innerHTML=inner;
		}
		else
		{
			document.getElementById("photo-navbar").innerHTML='<div id="photo-full">'+inner+'</div>'+document.getElementById("photo-navbar").innerHTML;
		}
		//goToBookmark("photo-full");

		imageFullPreload=new Image();
		imageFullPreload.src=src;
		imageFullPreload.onload=document.getElementById("photo-full").getElementsByTagName("img")[0].src=src;
	}
}

function hideFullImage()
{
	if (document.getElementById("photo-full"))
	{
		document.getElementById("photo-full").innerHTML="";	

		// Odscrollovaní
		//goToBookmark("selected-photo");
	}
}

function initImageFull()
{
	if (document.getElementById("selected-photo"))
	{
		document.getElementById("selected-photo").getElementsByTagName("a")[0].href="javascript:showFullImage()";
	}
}

function changeImageSrc(src)
{
	document.getElementById("selected-photo").getElementsByTagName("img")[0].src=src;
}

function changeImage(numberTo)
{
	if (document.getElementById("selected-photo") && document.getElementById("photos-list") && document.getElementById("selected-photo-header"))
	{
		elements=document.getElementById("photos-list").getElementsByTagName("a");
		// Nadpis
		name=elements[numberTo].title;
		document.getElementById("selected-photo-header").innerHTML="<span>"+name+"</span>";
		// Title
		title=document.getElementsByTagName("title")[0].innerHTML.split(": ");
		document.title=title[0]+": "+title[1]+": "+name+" | Květinová síň Ivan";
		// Fotografie
		src=elements[numberTo].getElementsByTagName("img")[0].src;
		src=src.replace(/\/thumb\//g,'\/normal\/');
		alt=elements[numberTo].getElementsByTagName("img")[0].alt;

		document.getElementById("selected-photo").getElementsByTagName("img")[0].src=progressImg;
		//document.getElementById("selected-photo").getElementsByTagName("img")[0].src=src;
		document.getElementById("selected-photo").getElementsByTagName("img")[0].alt=alt;

		imagePreload=new Image();
		imagePreload.src=src;
		//imagePreload.onload=changeToRightPhoto(src);
		addEvent(imagePreload, changeImageSrc(src), "load");

		// Navigace
		initPhotoNav();

		elements=document.getElementById("photos-list").getElementsByTagName("li");		
		// Zrušení současného zvýraznění
		for (i=0; i<elements.length; i++)
		{
			if (elements[i].getElementsByTagName("strong")[0])
			{
				elements[i].innerHTML=elements[i].getElementsByTagName("strong")[0].innerHTML;
			}
		}
		// Zvýraznění miniatury
		elements[numberTo].innerHTML='<strong class="selected">'+elements[numberTo].innerHTML+'</strong>';
		
		// Odscrollovaní
		goToBookmark("selected-photo-header");
	}
}

function initPhotoNav()
{
	if (document.getElementById("photos-list"))
	{
		src=document.getElementById("selected-photo").getElementsByTagName("img")[0].src;
		elements=document.getElementById("photos-list").getElementsByTagName("img");
		for (i=0; i<elements.length; i++)
		{
			if (elements[i].src==src.replace(/\/normal\//g,'\/thumb\/'))
			{
				prev=i-1;
				next=i+1;
			}
		}
		
		if (prev<0)
			document.getElementById("photo-navbar").getElementsByTagName("strong")[0].innerHTML='<span class="disabled"><span>předchozí</span></span>';
		else
			document.getElementById("photo-navbar").getElementsByTagName("strong")[0].innerHTML='<a href="javascript:changeImage('+prev+')" title="Předchozí fotografie"><span>předchozí</span></a>';
		
		if (next>(elements.length-1))
			document.getElementById("photo-navbar").getElementsByTagName("strong")[1].innerHTML='<span class="disabled"><span>následující</span></span>';
		else
			document.getElementById("photo-navbar").getElementsByTagName("strong")[1].innerHTML='<a href="javascript:changeImage('+next+')" title="Následující fotografie"><span>následující</span></a>';
	}
}

function initImageThumbs()
{
	if (document.getElementById("photo-navbar") && document.getElementById("photos-list"))
	{
		elements=document.getElementById("photos-list").getElementsByTagName("a");
		for (i=0; i<elements.length; i++)
		{
			elements[i].href="javascript:changeImage("+i+")";
		}
	}
}

function initGallery()
{
	initImageFull();
	initPhotoNav();
	initImageThumbs();
	
	if (document.getElementsByTagName("body")[0] && document.getElementById("photos-list"))
		document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML+"<div id=\"load-preload-img\"><img src=\""+progressImg+"\" alt=\"načítám&hellip;\" width=\"0\" onload=\"document.getElementById('load-preload-img').innerHTML=''\" />";
}

/* Function for inicialization which applies functions specified above ********/
initialized=false;
function init()
{
	if (!initialized)
	{
		initGallery();
	}
	initialized=true;
}

/* Inicialization *************************************************************/
window.onscroll=init;
window.onload=init;
