function jcarousel_itemLoadCallback(carousel, state)
{
    // 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;

    jQuery.get(
        'ajax_video_index.php',
        {
            first: first,
            last: last
        },
        function(xml) {
            jcarousel_itemAddCallback(carousel, first, last, xml);
        },
        '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 '<a href="javascript:void();" onclick="previewVideo(\'' + jQuery('id', item).text() + '\');return false;"><img src="' + jQuery('src', item).text() + '" width="65" height="60" alt="' + jQuery('title', item).text() + '" border="0" /></a>';
};


var xmlHttp2;
function createXMLHttp2Request() {
	if (window.ActiveXObject) {
		xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest) {
		xmlHttp2 = new XMLHttpRequest();
	}
}

// preview element
function previewVideo(eleID)
{

	createXMLHttp2Request();	
	var getstr = "./preview_video.php?cid=" + eleID + "&rand=" + parseInt(Math.random()*99999999999);
	xmlHttp2.open("GET", getstr, true);
	xmlHttp2.onreadystatechange = callbackVideo;
	xmlHttp2.send(null);

}

function callbackVideo() {
	if (xmlHttp2.readyState == 4) {
		if (xmlHttp2.status == 200) {
			document.getElementById("VidPreview").style.display='block';
			document.getElementById('VidPreview').innerHTML = xmlHttp2.responseText;
		}
	}
}
