jQuery(document).ready(function($) {

	$('#photo-carousel').jcarousel({
		//itemVisibleOutCallback: {onAfterAnimation: function(carousel, item, i, state, evt) { carousel.remove(i); }},
		//size: 88,
		//size: 10,
		//wrap: 'circular',
		//vertical: true,
		//start: 9,
		itemLoadCallback: jcarousel_itemLoadCallback,
    initCallback: mycarousel_initCallback
		//scroll: 4
	});


	function mycarousel_initCallback(carousel) {
		$('#photo-carousel')
			.mousewheel(function(event, delta) {
			if (delta < 0) {
				carousel.next();
			}
			else if (delta > 0) {
				carousel.prev();
			}
			return false; // prevent default
		});
	};

});




function jcarousel_itemLoadCallback(carousel, state)
{
    // Fetch the visible range first (should be already preloaded)
    jcarousel_itemQueryCallback(carousel, carousel.first, carousel.last, state);
		// количество видимых элементов карусели
    var visible = carousel.last - carousel.first + 1;

		var last  = carousel.first - 1 - visible;
    var first = last - visible + 1;


	// Remove items to avoid big lists
  //  jcarousel_itemRemoveCallback(carousel, first, last);

    var first = carousel.last + 1 + visible;
    var last = first + visible - 1;


	// Remove items to avoid big lists
  //  jcarousel_itemRemoveCallback(carousel, first, last);


};


function jcarousel_itemQueryCallback(carousel, first, last, state)
{

		if (first < 1) first = 1;

    // Check if "first" is out of range if the size was already set
    //var size = carousel.size();
		//if (carousel.options.wrap != 'circular' && size && first > size) return;


		// Check if the requested items already exist

    if (carousel.has(first, last)) return;
		// Lock carousel until request has been made
    //carousel.lock();


    // Set the size of the carousel
//    if (first + carousel.visible > carousel.size()) {
//			carousel.first = carousel.size() - carousel.visible;
//		alert(carousel.options.visible);
//			carousel.last	= carousel.first + carousel.visible - 1;
//			return;
//		 }

    jQuery.get(
        '/photo/jcarousel_ajax.asp',
        {
						div_id: carousel.options.div_id,
						state: state,
						first: first,
            last: last
        },
        function(xml) {
            jcarousel_itemAddCallback(carousel, first, last, state, xml);
        },
        'xml'
    );


  };



function jcarousel_itemAddCallback(carousel, first, last, state, xml) {
	if (state == 'init') {
		var data = jQuery('data', xml);
		var size = jQuery(data).attr('items');
		if(size>0) carousel.size(size);
	}
	var items = jQuery('item', xml);
	items.each(function(i) {carousel.add(first + i, jcarousel_getItemHTML(jQuery(this)));});
	// Lock carousel until request has been made
  //carousel.unlock();
};


/**
 * Item html creation helper.
 */
function jcarousel_getItemHTML(item) {
	return '<a href="/photo/show2.asp?id=' + item.attr("id") + '" title="' + (item.attr("title") ? item.attr("title") : "")  + '" style="background-image:url('+ item.attr("src") + ')"></a>';
};


function jcarousel_itemRemoveCallback(carousel, first, last) {
	if (!first || !last) return;
	for (var i = first; i <= last; i++)	carousel.remove(i);
};


