$(document).ready(function(){

	$.extend($.fancybox, ({

		adjustWidth : function(elems, index, options)
		{

			var
				navWidth = $('#fancybox-list').width(),
				imgWidth = $('#fancybox-inner').width();

			if (navWidth < imgWidth) {
				return false;
			}

			$('#fancybox-wrap').width(navWidth + 2 * options.padding);
			$('#fancybox-title').width(navWidth);
			$('#fancybox-inner').css('left', options.padding + (navWidth - imgWidth) / 2);

			$.fancybox.center();

			return false;

		},

		titleFormatFunc : function(title, elems, index, options)
		{

			var
				i,
				html = '',
				span = 5,
				navigation = [],
				total = elems.length;
				margin = Math.ceil( (span - 1) / 2 ),

			html = '<table id="fancybox-list"><tbody><tr>';

			navigation.push('«');

			if (index > span) {
				for (i = 0; i < margin + 1; i++) {
					navigation.push(i);
				}
				navigation.push('…');
				for (i = index - margin; i < index; i++) {
					navigation.push(i);
				}
			}
			else {
				for (i = 0; i < index; i++) {
					navigation.push(i);
				}
			}

			navigation.push(true);

			if (index < total - span - 1) {
				for (i = index + 1; i < index + 1 + margin; i++) {
					navigation.push(i);
				}
				navigation.push('…');
				for (i = total - margin; i < total; i++) {
					navigation.push(i);
				}
			}
			else {
				for (i = index + 1; i < total; i++) {
					navigation.push(i);
				}
			}

			navigation.push('»');

			$.each(navigation, function(i, value) {

				html += '<td>';

				if (value === true) {
					html += '<span class="active">' + (index + 1) + '</span>';
				}
				else if (value === '…') {
					html += '<span>…</span>';
				}
				else if (value === '«') {
					html += index ? '<a href="#" class="prev">«</a>' : '<span>«</span>';
				}
				else if (value === '»') {
					html += index < total - 1 ? '<a href="#" class="next">»</a>' : '<span>»</span>';
				}
				else {
					html += '<a href="#">' + (value + 1) + '</a>';
				}

				html += '</td>';

			});

			html += '</tr></tbody></table>';

			return title + html;

		}

	}));

	$(

		'div.fotogal_img   > a,' +
		'div.fotogal_nazev > a,' +
		'div.fotogalspec_img > a, div.fotogalspec_wrapper > a,' +
		'div.fotogalspec_nazev > a, div.fotogalspec_wrapper > a'

	).fancybox({

		titlePosition : 'inside',

		titleFormat : $.fancybox.titleFormatFunc,

		onComplete : $.fancybox.adjustWidth

	});

	$('#fancybox-list a').live('click', function() {

		if ($(this).hasClass('prev')) {
			$.fancybox.prev();
		}
		else if ($(this).hasClass('next')) {
			$.fancybox.next();
		}
		else {
			$.fancybox.pos( parseInt($(this).text()) - 1 );
		}

		return false;

	});

});

