/*
 * Thickbox 2.0 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2006 cody lindley
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 * Thickbox is built on top of the very light weight jQuery library.
 */

//on page load call TB_init



tb = 
{
	imageArray: null,
	imageGroup:  false,
	currentImage: 0,
	boxWidth: 400 + 40,
	boxHeight: 400 + 40,
	langcode: "cs",
	lang: {
		"cs": { close: "Zavřít", prev: "předchozí", next: "další" },
		"en": { close: "Close", prev: "previous", next: "next" }
	},
	
	init: function()
	{
		$("a.thickbox").click(tb.show);
		tb.langcode = $("html").attr("xml:lang");
	},	

	clickNumber: function()
	{
		tb.showImage(this.rel - 1);
		return false;
	},	
	
	show: function()
	{
		if (document.getElementById("TB_HideSelect") == null) 
		{
			$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
			$("#TB_overlay").click(tb.remove);
		}

		tb.imageGroup = this.rel || false;

		// $(window).scroll(tb.positionBox);
 		
		tb.overlaySize();
		
		var urlString = /\.jpg|\.jpeg|\.png|\.gif/g;
		var urlType = this.href.toLowerCase().match(urlString);
		
		if(urlType)
		{
			//code to show images
			htmlPaging =  "<div id='TB_secondLine'><div id='prevnext'><a href='#' id='TB_prev' rel=''>" + tb.lang[tb.langcode]["prev"] + "</a><a href='#' id='TB_next' rel=''>" + tb.lang[tb.langcode]["next"] + "</a></div><div id='TB_pages'></div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='" + tb.lang[tb.langcode]["close"] + "'>" + tb.lang[tb.langcode]["close"] + "</a></div><div class='break'></div><h2 id='TB_caption'></h2> <p id='TB_desc'></p> <a href='' id='TB_ImageOff' title='" + tb.lang[tb.langcode]["close"] + "'></a>";		
			$("#TB_window").append(htmlPaging);
			
			tb.positionBox();		

			htmlPages = "";
			if(tb.imageGroup)
			{			
				tb.imageArray = $("a[@rel= "+ tb.imageGroup + "]");
				currHref = this.href;
				tb.imageArray.each(function(i)
				{ 
					if(this.href == currHref) tb.currentImage = i;
					htmlPages += " <a href='#' rel='" + (i + 1) + "'>" + (i + 1) + "</a> ";					 
				});
				if(tb.imageArray.length > 1)
				{
					$("#TB_pages").append(htmlPages); 
					$("#TB_prev").click(tb.clickNumber);
					$("#TB_next").click(tb.clickNumber);
					$("#TB_pages a").click(tb.clickNumber);
				}
			}
			else tb.imageArray = $(this);

			$("#TB_closeWindowButton").click(tb.remove);						
			tb.showImage(tb.currentImage);
			return false;
		}
		else
		{	//code to show html pages
			/*
			var queryString = url.replace(/^[^\?]+\??/,'');
			var params = tb.parseQuery( queryString );
			
			TB_WIDTH = (params['width']*1) + 30;
			TB_HEIGHT = (params['height']*1) + 40;
			ajaxContentW = TB_WIDTH - 30;
			ajaxContentH = TB_HEIGHT - 45;
			
			if(url.indexOf('TB_iframe') != -1){				
					urlNoQuery = url.substr(0,tb.strPos(url, "?"));			
					$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div><iframe src='"+urlNoQuery+"' id='TB_iframeContent' style='width:"+(ajaxContentW + 30)+"px;height:"+(ajaxContentH + 18)+"px;'></iframe>");
				}else{
					$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
			}
					
			$("#TB_closeWindowButton").click(tb.remove);
			
				if(url.indexOf('TB_inline') != -1){	
					$("#TB_ajaxContent").html($('#' + params['inlineId']).html());
					TB_position();
					$("#TB_load").remove();
					$("#TB_window").css({display:"block"}); 
				}else if(url.indexOf('TB_iframe') != -1){
					TB_position();
					$("#TB_load").remove();
					$("#TB_window").css({display:"block"}); 
				}else{
					$("#TB_ajaxContent").load(url, function(){
						TB_position();
						$("#TB_load").remove();
						$("#TB_window").css({display:"block"}); 
					});
				}
			*/
		}		
				
		return false;
		
	},
	
	showImage: function(i)
	{
		$(document).unkeyup();
		tb.currentImage = i;
		if ( ioff = document.getElementById('TB_ImageOff'))
		{ 
			$(ioff).height( ioff.offsetHeight + "px");
		}
		$("#TB_Image").remove();
		imgPreloader = new Image();
		imgPreloader.onload = tb.imgLoad;
		
		imgPreloader.src = tb.imageArray.get(i).href;
	
	},
	
	imgLoad: function()
	{			
		var i = tb.currentImage;
		var oThis = tb.imageArray.get(i);
		var oPrev = tb.imageArray.get(i - 1);
		var oNext = tb.imageArray.get(i + 1);
		
		this.onload = null;
						
		// Resizing large images - orginal by Christian Montoya edited by me.
		
		var pagesize = tb.getPageSize();
		var x = pagesize[0] - 150;
		var y = pagesize[1] - 150;
		var imageWidth = imgPreloader.width;
		var imageHeight = imgPreloader.height;
		/*
		if (imageWidth > x) 
		{
			imageHeight = imageHeight * (x / imageWidth); 
			imageWidth = x; 
			if (imageHeight > y) 
			{ 
				imageWidth = imageWidth * (y / imageHeight); 
				imageHeight = y; 
			}
		} 
		else if (imageHeight > y) 
		{ 
			imageWidth = imageWidth * (y / imageHeight); 
			imageHeight = y; 
			if (imageWidth > x) 
			{ 
				imageHeight = imageHeight * (x / imageWidth); 
				imageWidth = x;
			}
		}
		*/
		// End Resizing
		

		// tb.boxWidth = imageWidth + 40;
		// tb.boxHeight = imageHeight + 60;
		
		url = oThis.href;
		caption = oThis.firstChild.alt;
		desc = oThis.firstChild.title;
		
		$("#TB_pages a").removeClass("active").eq(i).addClass("active");				
	
		if(oPrev)
		{ 
			$("#TB_prev").removeClass("hidden").rel(i - 1 + 1);
			$(document).keyup( function(e){ if(e.keyCode == 37) tb.showImage(i - 1); });		
		}				
		else $("#TB_prev").addClass("hidden");
	
		if(oNext)
		{ 
			$("#TB_next").removeClass("hidden").rel(i + 1 + 1);
			$(document).keyup( function(e){ if(e.keyCode == 39) tb.showImage(i + 1); });		
		}
		else $("#TB_next").addClass("hidden");
		
		if(caption)	$("#TB_caption").removeClass("hidden").html(caption);
		else $("#TB_caption").addClass("hidden").html(caption);
		
		if(desc)	$("#TB_desc").removeClass("hidden").html(desc);
		else $("#TB_desc").addClass("hidden").html(desc);				

		tbw = document.getElementById("TB_window");
		ioff = document.getElementById('TB_ImageOff');
		
		tb.boxWidth = (tbw.offsetWidth - ioff.offsetWidth) + imageWidth + 2*15+10;
		// tb.boxHeight = (tbw.offsetHeight - ioff.offsetHeight) + imageHeight + 10;

		tb.positionBox();
		
		// alert(tb.boxWidth);
		$("#TB_ImageOff").height("auto").append("<img id='TB_Image' src='" + url + "' width='" + imageWidth + "' height='" + imageHeight + "' alt='" + caption + "'/>").click(tb.remove);
	
							
		$("#TB_window").css({display:"block"}); //for safari using css instead of show			
		
		tb.overlaySize();					
		
	},
	
	remove: function() 
	{
		$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').remove();});
		// $("#TB_load").remove();
		$(document).unkeyup();
		return false;
	},
	
	positionBox: function() 
	{	
		var arrayPageScroll = tb.getPageScrollTop();
		var pagesize = tb.getPageSize();
		
		$("#TB_window").css({marginLeft: '-' + parseInt(tb.boxWidth / 2) + 'px', width: tb.boxWidth + 'px', top: (arrayPageScroll[1] + 40)+"px"});
				
		if(!(jQuery.browser.msie && typeof XMLHttpRequest == 'function')) 
		{	// take away IE6
			// $("#TB_window").css({marginTop: '-' + parseInt(tb.boxHeight / 2) + 'px'});
		}	
		
	},
	
	overlaySize: function()
	{
		if (window.innerHeight && window.scrollMaxY) 
		{	
			yScroll = window.innerHeight + window.scrollMaxY;
		}
		else if (document.body.scrollHeight > document.body.offsetHeight)
		{	// all but Explorer Mac
			yScroll = document.body.scrollHeight;
		} 
		else 
		{	// Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			yScroll = document.body.offsetHeight;
	  	}
		$("#TB_overlay").css("height",yScroll + 10 + "px");
		$("#TB_HideSelect").css("height",yScroll +"px");
	},
	

	getPageScrollTop: function ()
	{
		var yScrolltop;
		if (self.pageYOffset) 
		{
			yScrolltop = self.pageYOffset;
		} 
		else if (document.documentElement && document.documentElement.scrollTop)
		{	// Explorer 6 Strict
			yScrolltop = document.documentElement.scrollTop;
		} 
		else if (document.body) 
		{	// all other Explorers
			yScrolltop = document.body.scrollTop;
		}
		arrayPageScroll = new Array('',yScrolltop) 
		return arrayPageScroll;
	},

	getPageSize: function()
	{
		var de = document.documentElement;
		var w = window.innerWidth || self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
		var h = window.innerHeight || self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;		
		arrayPageSize = new Array(w, h);
		return arrayPageSize;
	},

	strPos: function(str, ch) 
	{
		for (var i = 0; i < str.length; i++) if (str.substring(i, i+1) == ch) return i;
		return -1;
	},

	
	parseQuery: function(query) 
	{
		var Params = new Object();
		if (!query) return Params; // return empty object
		var Pairs = query.split(/[;&]/);
		for (var i = 0; i < Pairs.length; i++) 
		{
		  var KeyVal = Pairs[i].split('=');
		  if(!KeyVal || KeyVal.length != 2) continue;
		  var key = unescape(KeyVal[0]);
		  var val = unescape(KeyVal[1]);
		  val = val.replace(/\+/g, ' ');
		  Params[key] = val;
		}
		return Params;
	}

		
};

// $(document).ready(tb.init);
