function jcarousel_itemLoadCallback(carousel, state)
{
//alert('in: jcarousel_itemLoadCallback');
    // Fetch the visible range first (should be already preloaded)
    jcarousel_itemFetchCallback(carousel, carousel.first, carousel.last);

    var visible = carousel.last - carousel.first + 1;

    // ---

    var first = carousel.last + 1;
    var last  = first + visible - 1;

    var first2 = last + 1;
    var last2  = first2 + visible - 1;

    jcarousel_itemFetchCallback(carousel, first, last, first2, last2);

    // ---

    var last  = carousel.first - 1;
    var first = last - visible + 1;

    var last2  = first - 1;
    var first2 = last2 - visible + 1;

    jcarousel_itemFetchCallback(carousel, first, last, first2, last2);

};

function jcarousel_itemFetchCallback(carousel, first, last, first2, last2)
{
	// Remove items to avoid big lists
    jcarousel_itemRemoveCallback(carousel, first2, last2);

	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;

    jcarousel_itemQueryCallback(carousel, first, last);

};

function jcarousel_itemQueryCallback(carousel, first, last, realFirst)
{
    // Check if the requested items already exist
    if (carousel.has(first, last))
        return;
//	if(document.getElementById('searchdate')){
		if($('#searchdate').val()!=""){
			var searchdate=document.getElementById('searchdate').value;
			jQuery.get(
				'/assets/js/jcarousel_ajax.php',
				{
					first: first,
					last: last,
					searchstring: searchstring,
					searchdate: searchdate,
					catsel:catsel,
					featured: 1,
					nbd: nbd
				},
				function(xml) {
					jcarousel_itemAddCallback2(carousel, first, last, xml);
				},
				'xml'
			);
		} else {
			jQuery.ajax({
				url:'/assets/js/jcarousel_ajax.php',
				data: ({
					first: first,
					last: last,
					searchstring: searchstring,
					featured: 1,
					catsel:catsel,
					nbd: nbd
				}),
				success: function(xml) {
					jcarousel_itemAddCallback2(carousel, first, last, xml);
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
//					alert(textStatus);
				},
				dataType: 'xml'
			});
//		}
	}};

function jcarousel_itemAddCallback(carousel, first, last, xml)
{
    var items = jQuery('item', xml);

    // Set the size of the carousel
    if (items.length < (last - first + 1))
    	carousel.size(first + items.length - 1);

    items.each(function(i) {
        carousel.add(first + i, jcarousel_getItemHTML(this));
    });
};

function jcarousel_itemRemoveCallback(carousel, first, last)
{
    if (!first || !last)
	    return;

    for (var i = first; i <= last; i++)
    	carousel.remove(i);
};

/**
 * Item html creation helper.
 */
function jcarousel_getItemHTML(item)
{
//    return '<img src="' + jQuery('src', item).text() + '" width="75" height="75" alt="' + jQuery('title', item).text() + '" />';
	var retstr='';
	retstr='<div id="eventid-jc-'+jQuery('EventID',item).text()+'" class="top jcdiv';
	if(firstone){
		retstr+=' current';
		firstone=false;
	}
	retstr+='">';
	retstr+='<span class="image"><img src="'+jQuery('photo_image', item).text()+'" width="100" height="60" onclick="loadeventdetails(this,'+jQuery('EventID', item).text()+')" /></span>';
    retstr+=jQuery('FormatStartDate',item).text()+'<br />';
	retstr+='<span class="date">'+jQuery('displaydate',item).text()+'</span><br />';
	retstr+='<span class="title"><a href="javascript://" onclick="loadeventdetails(this,'+jQuery('EventID', item).text()+')">'+jQuery('Name',item).text()+'</a></span>';
	retstr+='</div>';

	return retstr;

};

function jcarousel_itemLoadCallback2(carousel, state)
{
//alert('in: jcarousel_itemLoadCallback');
    // Fetch the visible range first (should be already preloaded)
    jcarousel_itemFetchCallback2(carousel, carousel.first, carousel.last);

    var visible = carousel.last - carousel.first + 1;

    // ---

    var first = carousel.last + 1;
    var last  = first + visible - 1;

    var first2 = last + 1;
    var last2  = first2 + visible - 1;

    jcarousel_itemFetchCallback2(carousel, first, last, first2, last2);

    // ---

    var last  = carousel.first - 1;
    var first = last - visible + 1;

    var last2  = first - 1;
    var first2 = last2 - visible + 1;

    jcarousel_itemFetchCallback2(carousel, first, last, first2, last2);
};

function jcarousel_itemFetchCallback2(carousel, first, last, first2, last2)
{
	// Remove items to avoid big lists
    jcarousel_itemRemoveCallback2(carousel, first2, last2);

	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;

    jcarousel_itemQueryCallback2(carousel, first, last);

};

function jcarousel_itemQueryCallback2(carousel, first, last, realFirst)
{
    // Check if the requested items already exist
    if (carousel.has(first, last))
        return;
//	if(document.getElementById('searchdate')){
		if($('#searchdate').val()!=""){
			var searchdate=document.getElementById('searchdate').value;
			jQuery.get(
				'/assets/js/jcarousel_ajax.php',
				{
					first: first,
					last: last,
					searchstring: searchstring,
					searchdate: searchdate,
					catsel:catsel,
					nbd: nbd
				},
				function(xml) {
					jcarousel_itemAddCallback2(carousel, first, last, xml);
				},
				'xml'
			);
		} else {
			jQuery.get(
				'/assets/js/jcarousel_ajax.php',
				{
					first: first,
					last: last,
					searchstring: searchstring,
					catsel:catsel,
					nbd: nbd
				},
				function(xml) {
					jcarousel_itemAddCallback2(carousel, first, last, xml);
				},
				'xml'
			);
		}
//	}
};

function jcarousel_itemAddCallback2(carousel, first, last, xml)
{
    var items = jQuery('item', xml);

    // Set the size of the carousel
    if (items.length < (last - first + 1))
    	carousel.size(first + items.length - 1);

    items.each(function(i) {
        carousel.add(first + i, jcarousel_getItemHTML2(this));
    });
	$('ul#carousel2').css('width','1008px');

	$('#noresults.loading').css('display','none');
};

function jcarousel_itemRemoveCallback2(carousel, first, last)
{
    if (!first || !last)
	    return;

    for (var i = first; i <= last; i++)
    	carousel.remove(i);
};

/**
 * Item html creation helper.
 */
function jcarousel_getItemHTML2(item)
{
//    return '<img src="' + jQuery('src', item).text() + '" width="75" height="75" alt="' + jQuery('title', item).text() + '" />';
	var retstr='';
	retstr='<div id="eventid-jc2-'+jQuery('EventID',item).text()+'" class="top jcdiv';
	if(firstone){
		retstr+=' current';
		firstone=false;
	}
	retstr+='" onclick="loadeventdetails(this,'+jQuery('EventID', item).text()+')">';
	retstr+='<span class="image"><img src="'+jQuery('photo_image', item).text()+'" onclick="loadeventdetails(this,'+jQuery('EventID', item).text()+')" /></span>';
//    retstr+=jQuery('FormatStartDate',item).text()+'<br />';
	retstr+='<span class="date">'+jQuery('displaydate',item).text()+'</span><br />';
	retstr+='<span class="title"><a href="javascript://" onclick="loadeventdetails(this,'+jQuery('EventID', item).text()+')">'+jQuery('Name',item).text()+'</a></span>';
	retstr+='</div>';

	return retstr;

};
