/*
 * Thickbox 3.1 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2007 cody lindley
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 *
 * edited and modified by vaca (vaca.jara@gmail.com) 29.7.2009 15:31:56
*/

var __DICT_TBX__ = new Array();
__DICT_TBX__['next']  = new Array();
__DICT_TBX__['prev']  = new Array();
__DICT_TBX__['close'] = new Array();
__DICT_TBX__['esc']   = new Array();
__DICT_TBX__['img']   = new Array();
__DICT_TBX__['of']    = new Array();

__DICT_TBX__['next']['cs']  = 'Další';
__DICT_TBX__['prev']['cs']  = 'Předchozí';
__DICT_TBX__['close']['cs'] = 'Zavřít';
__DICT_TBX__['esc']['cs']   = 'nebo Esc';
__DICT_TBX__['img']['cs']   = 'Obrázek';
__DICT_TBX__['of']['cs']    = 'z';

__DICT_TBX__['next']['en']  = 'Next';
__DICT_TBX__['prev']['en']  = 'Previous';
__DICT_TBX__['close']['en'] = 'Close';
__DICT_TBX__['esc']['en']   = 'or Esc';
__DICT_TBX__['img']['en']   = 'Image';
__DICT_TBX__['of']['en']    = 'of';

var __TRANS_LANG__ = null;
var tb_pathToImage = '/media/pagebase/loading-animation.gif';

function thxTrans(key)
{
	if (!__DICT_TBX__[key]) {
		return 'unknown';
	}

	return __DICT_TBX__[key][__TRANS_LANG__];
}

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

// template fot TB_window element
var __TB_WIN_TPL__ = "<div id='TB_window' class='lang'></div>";
// template to close button
var __TB_CLOSE__ = "<div id='%id'><a href='#' id='TB_closeWindowButton' title='%t'><span>%t</span></a><span class='TB_closeWindowButtonText'> %e</span></div>";

// on page load call tb_init
$(document).ready(function()
{
	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage;

	// set language for translations
	var htmlel = $('html');
	__TRANS_LANG__ = htmlel.attr('lang');

	if (!__TRANS_LANG__) {
		__TRANS_LANG__ = htmlel.attr('xml:lang');
	}

	if (!__TRANS_LANG__) {
		__TRANS_LANG__ = $('head meta[http-equiv="Content-Language"]').attr('content');
	}

	if (__TRANS_LANG__ != 'cs') {
		__TRANS_LANG__ = 'en';
	}

	__TB_WIN_TPL__ = __TB_WIN_TPL__.replace('lang', __TRANS_LANG__);
	__TB_CLOSE__ = __TB_CLOSE__.replace(/%e/g, thxTrans('esc')).replace(/%t/g, thxTrans('close'));
});

// object ktery zapl thickbox
var clicked;

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk, emptyContent)
{
	$(domChunk).click(function()
	{
		clicked = this;
		var t = this.title || this.name || null;
		var a = this.href || this.alt;
		var g = this.rel || false;

		if (emptyContent) {
			$('#TB_ajaxContent').html('').css({'width': 0, 'height': 0});
		}

		tb_show(t,a,g);
		this.blur();

		return false;
	});
}

//function called when the user clicks on a thickbox link
function tb_show(caption, url, imageGroup, notClickRemove, classa)
{
	try {
		var w_close = function(e)
		{
			var unb = function()
			{
				$(document).unbind('keydown', keyStrokes);
			};

			if (27 == e.keyCode) { // close
				if (!notClickRemove) {
					unb();
					tb_remove();
				}
			}

			return unb;
		};

		if (typeof document.body.style.maxHeight === 'undefined') {//if IE 6
			$('body', 'html').css({height: '100%', width: '100%'});
			$('html').css('overflow', 'hidden');

			if (document.getElementById('TB_HideSelect') === null) {//iframe to hide select elements in ie6
				$('body').append("<iframe id='TB_HideSelect' src='javascript:false;'></iframe><div id='TB_overlay'></div>" + __TB_WIN_TPL__);

				if (!notClickRemove) {
					$('#TB_overlay').click(tb_remove);
				}
			}
		} else {//all others
			if (document.getElementById('TB_overlay') === null) {
				$('body').append("<div id='TB_overlay'></div>" + __TB_WIN_TPL__);
				if (!notClickRemove) {
					$('#TB_overlay').click(tb_remove);
				}
			}
		}

		if (tb_detectMacXFF()) {
			$('#TB_overlay').addClass('TB_overlayMacFFBGHack');//use png overlay so hide flash
		} else {
			$('#TB_overlay').addClass('TB_overlayBG');//use background and opacity
		}

		if (caption === null){
			caption = '';
		}

		$('body').append("<div id='TB_load'><img src='" + imgLoader.src + "' /></div>");//add loader to the page
		$('#TB_load').show();//show loader

		var baseURL;

		if (-1 !== url.indexOf('?')) { //ff there is a query string involved
			baseURL = url.substr(0, url.indexOf('?'));
		} else {
			baseURL = url;
		}

		var urlString = /\.jpg$|\.jpeg?$|\.png$|\.gif$|\.bmp$/;
		var urlType = baseURL.toLowerCase().match(urlString);

		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.jpe' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp') {
			//code to show images
			TB_PrevCaption = '';
			TB_PrevURL = '';
			TB_PrevHTML = '';
			TB_NextCaption = '';
			TB_NextURL = '';
			TB_NextHTML = '';
			TB_imageCount = '';
			TB_FoundURL = false;

			if(imageGroup){
				gal = $('a[rel="' + imageGroup + '"]').get();

				for (i = 0; ((i < gal.length) && (TB_NextHTML === '')); i++) {
					var urlTypeTemp = gal[i].href.toLowerCase().match(urlString);

					if (!(gal[i].href == url)) {
						if (TB_FoundURL) {
							TB_NextCaption = gal[i].title;
							TB_NextURL = gal[i].href;
							TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>" + thxTrans('next') + " &gt;</a></span>";
						} else {
							TB_PrevCaption = gal[i].title;
							TB_PrevURL = gal[i].href;
							TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; " + thxTrans('prev') + "</a></span>";
						}
					} else {
						TB_FoundURL = true;
						TB_imageCount = thxTrans('img') + ' ' + (i + 1) + ' ' + thxTrans('of') + ' ' + (gal.length);
					}
				}
			}

			imgPreloader = new Image();
			imgPreloader.onload = function()
			{
				imgPreloader.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_WIDTH = imageWidth + 30;
				TB_HEIGHT = imageHeight + 60;
				$('#TB_window').append("<a href='' id='TB_ImageOff' title='" + thxTrans('close') + "'><img id='TB_Image' src='" + url + "' width='" + imageWidth + "' height='" + imageHeight + "' alt='" + caption + "'/></a>" + "<div id='TB_caption'>" + caption + "<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div>" + __TB_CLOSE__.replace('%id', 'TB_closeWindow'));

				$('#TB_closeWindowButton').click(tb_remove);

				if (TB_PrevHTML) {
					function goPrev()
          {
						if ($(document).unbind('click', goPrev)) {
							$(document).unbind('click', goPrev);
						}

						$('#TB_window').remove();
						$('body').append(__TB_WIN_TPL__);
						tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);

						return false;
					}

					$('#TB_prev').click(goPrev);
				}

				if (TB_NextHTML) {
					function goNext()
					{
						$('#TB_window').remove();
						$('body').append(__TB_WIN_TPL__);
						tb_show(TB_NextCaption, TB_NextURL, imageGroup);

						return false;
					}

					$('#TB_next').click(goNext);
				}

				$(document).bind('keydown', { callback: w_close }, keyStrokes);
				tb_position();
				$('#TB_load').remove();
				$('#TB_ImageOff').click(tb_remove);
				$('#TB_window').css({display: 'block'}); //for safari using css instead of show
			};

			imgPreloader.src = url;
		} else {
			//code to show html
			var queryString = url.replace(/^[^\?]+\??/, '');
			var params = tb_parseQuery(queryString);

			TB_WIDTH = (params['width']*1) /*+ 30*/ || 630; //defaults to 630 if no paramaters were added to URL
			TB_HEIGHT = (params['height']*1) /*+ 40*/ || 440; //defaults to 440 if no paramaters were added to URL
			ajaxContentW = TB_WIDTH;// - 30;
			ajaxContentH = TB_HEIGHT;// - 45;

			if(-1 != url.indexOf('TB_iframe')) {// either iframe or ajax window
					urlNoQuery = url.split('TB_');
					$('#TB_iframeContent').remove();

					if ('true' == params['modal']) {//iframe modal
						$('#TB_overlay').unbind();
						$('#TB_window').append("<iframe frameborder='0' hspace='0' src='" + urlNoQuery[0] + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random()*1000) + "' onload='tb_showIframe()' style='width:" + (ajaxContentW + 29) + "px; height:" + (ajaxContentH + 17) + "px;'> </iframe>");
					} else {//iframe no modal
						$('#TB_window').append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>" + caption + "</div>" + __TB_CLOSE__.replace('%id', 'TB_closeAjaxWindow') + "</div><iframe frameborder='0' hspace='0' src='" + urlNoQuery[0] + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random()*1000) + "' onload='tb_showIframe()' style='width:" + (ajaxContentW + 29) + "px; height:" + (ajaxContentH + 17) + "px;' ></iframe>");
					}
			} else {// not an iframe, ajax
					if ('block' == $('#TB_window').css('display')) {
						//this means the window is already up, we are just loading new content via ajax
						$('#TB_ajaxContent')[0].style.width = ajaxContentW + 'px';
						$('#TB_ajaxContent')[0].style.height = ajaxContentH + 'px';
						$('#TB_ajaxContent')[0].scrollTop = 0;
						$('#TB_ajaxWindowTitle').html(caption);
					} else {
						if ('true' == params['modal']) {//ajax modal
							$('#TB_overlay').unbind();
							$('#TB_window').append("<div id='TB_ajaxContent' class='TB_modal' style='width:" + ajaxContentW + "px; height:" + ajaxContentH + "px;'></div>");
						} else {//ajax no modal
							$('#TB_window').append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>" + caption + "</div>" + __TB_CLOSE__.replace('%id', 'TB_closeAjaxWindow') + "</div><div id='TB_ajaxContent' style='width:" + ajaxContentW + "px; height:" + ajaxContentH + "px'></div>");
						}
					}
			}

			$('#TB_closeWindowButton').click(tb_remove);

			if (-1 != url.indexOf('TB_inline')) {
				$('#TB_ajaxContent').append($('#' + params['inlineId']).children());
				$('#TB_window').unload(function()
				{
					$('#' + params['inlineId']).append($('#TB_ajaxContent').children()); // move elements back when you're finished
				});
				tb_position();
				$('#TB_load').remove();
				$('#TB_window').css({display: 'block'});
			} else if(-1 != url.indexOf('TB_iframe')) {
				tb_position();

				if($.browser.safari) {//safari needs help because it will not fire iframe onload
					$('#TB_load').remove();
					$('#TB_window').css({display: 'block'});
				}
			} else {
				$('#TB_ajaxContent').load(url += '&random=' + (new Date().getTime()), function()
				{//to do a post change this load method
					tb_position();
					$('#TB_load').remove();
					tb_init('#TB_ajaxContent a.thickbox', true);
					$('#TB_window').css({display: 'block'});
				});
			}
		}

		if (!params['modal'] || ('true' == params['modal'])) {
			$(document).bind('keyup', { callback: w_close }, keyUpBind);
		}
		
        if ("" != classa) {
    		$('#TB_window').addClass(classa);
        }
	} catch(e) {
		//nothing here
	}
}

//helper functions below
function tb_showIframe()
{
	$('#TB_load').remove();
	$('#TB_window').css({display: 'block'});
}

function tb_remove()
{
 	$('#TB_imageOff').unbind('click');
	$('#TB_closeWindowButton').unbind('click');
	$('#TB_window').fadeOut('fast', function()
	{
		$('#TB_window, #TB_overlay, #TB_HideSelect').trigger('unload').unbind().remove();
	});
	$('#TB_load').remove();

	if (typeof document.body.style.maxHeight == 'undefined') {//if IE 6
		$('body', 'html').css({height: 'auto', width: 'auto'});
		$('html').css('overflow', '');
	}

	$(document).unbind('keyup', keyUpBind);

	return false;
}

function tb_position()
{
	$('#TB_window').css({marginLeft: '-' + parseInt((TB_WIDTH / 2), 10) + 'px', width: TB_WIDTH + 'px'});

	if (jQuery.browser.msie && (jQuery.browser.version < 7)) {
		var tmp = navigator.userAgent.toLowerCase().split('compatible; msie ');

		if (2 < tmp.length) {
			var re = /^\d+(\.\d+)*/;

			for (var i = 0; i < tmp.length; i++) {
				var r = tmp[i].match(re);

				if (!r) {
					continue;
				}

				if (6 < parseFloat(r[0])) {
					// it's IE v. >6
					jQuery.browser.version = parseFloat(r[0]);
					break;
				}
			}
		}
	}

	if (!jQuery.browser.msie || (jQuery.browser.version >= 7)) {
		$('#TB_window').css({marginTop: '-' + parseInt((TB_HEIGHT / 2), 10) + 'px'});
		// due to posible attendance of ie7-standard-p.js script
		$('#TB_overlay, #TB_window').css({ position: 'fixed' });
	}
}

function tb_parseQuery(query)
{
	var Params = {};

	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 || (2 != KeyVal.length)) {
			continue;
		}

		var key = unescape(KeyVal[0]);
		var val = unescape(KeyVal[1]);
		val = val.replace(/\+/g, ' ');
		Params[key] = val;
	}

	return Params;
}

function tb_getPageSize()
{
	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 = [w,h];

	return arrayPageSize;
}

function tb_detectMacXFF()
{
	var userAgent = navigator.userAgent.toLowerCase();

	if ((-1 != userAgent.indexOf('mac')) && (-1 != userAgent.indexOf('firefox'))) {
		return true;
	}
}

function clickNext()
{
	$('#TB_next').click();
}

function clickPrev()
{
	$('#TB_prev').click();
}

function keyStrokes(e)
{
	var c = e.keyCode;

	if ((82 == c) || (116 == c)) {
		// on refresh by F5, CTRL+F5 and CTRL+r default behavior
		return;
	}

	e.preventDefault();
	e.stopPropagation();

	var c_call;
	var el = [];

	if (e.data.callback) {
		c_call = e.data.callback(e);
	}

	if ((37 == c) || (190 == c) || (8 == c)) {
		el = $('#TB_prev');
	} else if ((39 == c) || (188 == c) || (32 == c)) {
		el = $('#TB_next');
	}

	if (el.length) {
		if (c_call) {
			c_call();
		}

		el.click();
	}

	return false;
}

function keyUpBind(e)
{
	if (e.data.callback) {
		e.data.callback(e);
	}
}

