function mycarousel_getItem(item, labelMore) {
	var div = document.createElement('div');
	
	var image = new Image();
	image.src = item.picture;
	
	var inHtml = '<div class="cover">';
	if (item.pictureLink) {
		inHtml += '<a href="' + item.pictureLink + '" title="' + item.title + '">';
	}
  	inHtml += '<img src="' + image.src + '" title="'+ item.title +'" alt="' + item.title + '"/>';
	if (item.pictureLink) {
		inHtml += '</a>';
	}
	inHtml += '</div>';
    inHtml += '<div class="no-display"><h3>' +
    	(item.titleLink ? '<a href="' + item.titleLink + '">' + item.title + '</a>' : item.title) +
		'</h3>';
    if (item.author != ''){
    	inHtml += '<strong>' + item.author + '</strong>';
    	}    	    
    inHtml +='<div class="desc"><div>' + item.desc ;
    if (item.moreLink && item.more == ''){
		inHtml += ' <a href="' + item.moreLink + '" title="' + item.title + '"> ' + labelMore + '</a>';
	}
    inHtml += '</div><div class="more">';
 	if (item.moreLink  && item.more != ''){
		inHtml += ' <a href="' + item.moreLink + '" title="' + item.title + '">' + item.more + '</a>';
	}
	inHtml += '</div></div>';
	
	jQuery(div).html(inHtml);
	return div;
}

function mycarousel_resizeImageForCarousel(item) {
	if (item == null) {
		return;
	}
	var container = jQuery(".cover", item).get(0);
	var image =	jQuery('img', container).get(0);
	var resize = function() {
		var containerWidth = jQuery(container).width();
		var containerHeight = jQuery(container).height();
		image.className = image.width / containerWidth > image.height / containerHeight ? 'fitToWidth' : 'fitToHeight';
		var margin = ((containerHeight - image.height) * 100 / containerHeight) / 2; // liczymy dla obrazka juz po przeskalowaniu
		jQuery(image).css({ 'margin-top': margin + '%' });
	}
	resize();
	jQuery(image).load(resize);
}

function mycarousel_itemVisibleInCallback(carousel, item, i, state, evt) {
    // The index() method calculates the index from az
    // given index who is out of the actual item range.
    var idx = carousel.index(i, carousel.options.itemList.length);
	item = carousel.add(i, carousel.options.itemList[idx - 1]); 
	mycarousel_resizeImageForCarousel(item);
	switch (state) {
		case 'next':
			carousel.setNextActiveItem();
			break;
		case 'prev':
			carousel.setPrevActiveItem();
			break;
	}
	if (i == carousel.activeItem) {
		carousel.toggleActiveItemState();
		carousel.updateActiveItemInfo();
	}
};

function mycarousel_itemVisibleOutCallback(carousel, item, i, state, evt) {
	carousel.remove(i);
};

jQuery.jcarousel.fn.extend({
	activeItem: 2,
	selectedItem: 1,

	setNextActiveItem: function() {
		this.toggleActiveItemState();
		this.activeItem++;
		this.selectedItem++;
		if (this.selectedItem > this.options.itemList.length) {
			this.selectedItem = 1;
		}
		this.toggleActiveItemState();
		this.updateActiveItemInfo();
	},

	setPrevActiveItem: function() {
		this.toggleActiveItemState();
		this.activeItem--;
		this.selectedItem--;
		if (this.selectedItem == 0) {
			this.selectedItem = this.options.itemList.length;
		}
		this.toggleActiveItemState();
		this.updateActiveItemInfo();
	},

	toggleActiveItemState: function() {
		var item = this.get(this.activeItem);
		item.toggleClass('hi');
	},

	updateActiveItemInfo: function() {
		jQuery('#carousel-info-' + this.options.carouselId).html(jQuery('.no-display', this.get(this.activeItem)).html());
		jQuery('#carousel-item-nr-' + this.options.carouselId).html(this.options.labelProduct + ' ' + this.selectedItem + '/' + this.options.itemList.length);
	}
});
