function init()
{
	var gallery_index = 0;
	
	$('#gallery_carousel').jcarousel({
		size: galleries.length,
		scroll: 1,
		itemLoadCallback: {onBeforeAnimation: gallery_itemLoadCallback},
		itemVisibleInCallback: {onAfterAnimation: gallery_move}
    });

	$('.gallery-prev').hide();
	if (galleries.length > 0) {
		gallery_subgalleries(0);
		gallery_images(0)
	}
};

function fn_onload_callback(data)
{
	init();
};

function gallery_itemLoadCallback(carousel, state)
{
    for (var i = carousel.first; i <= carousel.last; i++) {
        if (carousel.has(i)) {
            continue;
        }

        if (i > galleries.length) {
            break;
        }

        carousel.add(i, gallery_getItemHTML(galleries[i-1]));
    }
};

function gallery_getItemHTML(item)
{
	try {
		icon = item['icon']['path'];
		detailed = item['detailed']['path'];
	} catch (e) {
		icon = '';
		detailed = '';
	}

	ret = '<table><tr><td colspan="2" align="left" width="250"><b>' + item['gallery'] + '</b></td></tr><tr><td width="110" valign="top"><a href="' + detailed + '" class="cm-thumbnails-opener"><img class="cm-thumbnails cm-single" src="' + icon + '" width="100" alt="' + item['gallery'] + '" border="0" /></a></td><td valign="top">' + item['description'] + '</td></tr></table>';
	
    return ret;
};

function gallery_subgalleries(idx)
{
	var subgalleries = galleries[idx]['subgalleries'];
	var back_link = '';
	
	if (galleries[idx]['parent_id'] != 0) {
		back_link = '<br /><br /><a name="onload_callback" class="cm-ajax cm-ajax-force" href="index.php?dispatch=galleries.get&gallery_id=' + galleries[idx]['parent_id'] + '" rev="gallery_information">> ' + lang.back + '</a>';
	}
	
	if (subgalleries.length > 0) {
		var links = '<ol>';
		for (i in subgalleries) {
			links += '<li><a name="onload_callback" class="cm-ajax cm-ajax-force" rev="gallery_information" href="index.php?dispatch=galleries.get&gallery_id=' + subgalleries[i].id + '">' + subgalleries[i].name + '</a></li>';
		}
		links += '</ol>';
		$("#subgalleries").html(links + back_link);
// 		$("#subgalleries").html('<b>' + lang.additional_galeries + '</b><br />' + links + back_link);
	} else {
		$("#subgalleries").html(back_link);
// 		$("#subgalleries").html('<b>' + lang.no_additional_galeries + '</b>' + back_link);
	}
}

function gallery_images_getItemHTML(item)
{
	return '<a href="' + item['detailed'] + '" class="cm-thumbnails-opener"><img class="cm-thumbnails cm-single" src="' + item['icon'] + '" width="100" border="0" /></a>';
};

function gallery_images_itemVisibleInCallback(carousel, item, i, state, evt)
{
    var idx = carousel.index(i, images[gallery_index].length);
    var idx_next = carousel.index(i + 1, images[gallery_index].length);

    carousel.add(i, gallery_images_getItemHTML(images[gallery_index][idx - 1]));

	if (state == 'next') {
    	carousel.add(i + 1, gallery_images_getItemHTML(images[gallery_index][idx_next - 1]));
    }
};

function gallery_images_itemVisibleOutCallback(carousel, item, i, state, evt)
{
	//carousel.remove(i);
};

function gallery_images(idx)
{
	if (images[idx].length > 0) {

		count = 0;
// 		html = '<h3>' + lang.gallery_images + '</h3>';
		html = '<hr/><h3 class="center">' + lang.gallery_images + '</h3>';
		html += '<ul id="gallery_images_carousel" class="gallery-skin-images">';
		for (i in images[idx]) {
			html += '<li><a href="' + images[idx][i]['detailed'] + '" class="cm-thumbnails-opener"><img class="cm-thumbnails cm-single" src="' + images[idx][i]['icon'] + '" width="100" border="0" /></a></li>';
			count++;
			if (count > 3) break;
		}
		html += '</ul>';
		$('#gallery_images').html(html);
		
		if (images[idx].length <= 3) {
			$('#gallery_images_carousel').jcarousel({
				buttonNextHTML: null,
				buttonPrevHTML: null
			});
		} else {
			$carousel = $('#gallery_images_carousel').jcarousel({
				scroll: 1,
				size: images[idx].length,
				itemVisibleInCallback: {onAfterAnimation: gallery_images_itemVisibleInCallback},
		        itemVisibleOutCallback: {onAfterAnimation: gallery_images_itemVisibleOutCallback}
			});
			
			//var idx_prev = carousel.index(i - 1, images[gallery_index].length);
			//carousel.add(i - 1, gallery_images_getItemHTML(images[gallery_index][idx_prev - 1]));
		}
	} else {
// 		$('#gallery_images').html('<h3>' + lang.gallery_images + '</h3>' + lang.no_gallery_images);
		$('#gallery_images').html('<hr/>');
	}
};

function gallery_move(carousel, item, i, state, evt)
{
	gallery_index = i - 1;
	
		if (gallery_index == galleries.length - 1) {
			$('.gallery-next').hide();
		} else {
			$('.gallery-next').show();
		}
	
		if (gallery_index == 0) {
			$('.gallery-prev').hide();
		} else {
			$('.gallery-prev').show();
		}
	
	gallery_subgalleries(gallery_index);
	gallery_images(gallery_index);
	
};

jQuery(document).ready(function() {

  init();

});