function carousel_itemLoadCallback(carousel, state) {
	var carousel_instance = carousel.options.custom_carousel_instance;
	eval('var this_carousel = ' + carousel_instance + 'carousel;');
	
    eval('var this_first = ' + carousel_instance +'carousel.first');
    eval('var this_last = ' + carousel_instance +'carousel.last');
    eval('var this_size = ' + carousel_instance +'carousel.size()');

    if (this_carousel.has(this_first, this_last)) {
    	//return true;
    }
    $.get(
        base_url+'/ajax/carousel_list_xml.php'+window.force_refresh_trigger,
        {
        	carousel_instance: carousel_instance,
        	list_type: this_carousel.options.custom_list_type,
            first: this_first,
            last: this_last,
            blocksize: this_carousel.options.custom_list_size,
            total: this_size
        },
        function(xml) {
            //newdata = xml;
            var total = parseInt($('total', xml).text());
		           
			$('.' + carousel_instance + 'carousel-control').unbind('click');    
		    $('#' + carousel_instance + 'carousel-dots').empty();
		
		    eval('this_size = ' + carousel_instance +'carousel.size()');            
		
		    //alert(this_size);
		    for(var i=1;i<=total;i++){
		    	if(i==this_first) {
		    		$('#' + carousel_instance + 'carousel-dots').append('<a href="#" onclick="return false;" alt="' + i + '" class="' + carousel_instance + 'carousel-control"><img src="' + base_url + '/images/carousel_dot_dark.png" border="0" /></a>');
		    	} else {
		    		$('#' + carousel_instance + 'carousel-dots').append('<a href="#" onclick="return false;" alt="' + i + '" class="' + carousel_instance + 'carousel-control"><img src="' + base_url + '/images/carousel_dot_light.png" border="0" /></a>');
		    	}
		    }     
		    
		    $('.' + carousel_instance + 'carousel-control').bind('click', function() {
		        eval(carousel_instance + 'carousel.scroll($.jcarousel.intval($(this).attr(\'alt\')), false);')
		        return false;
		    });             
            
            carousel_itemAddCallback(carousel, this_first, this_last, xml);
        },
        'xml'
    );

    
}

function carousel_itemAddCallback(carousel, first, last, xml) {
	var carousel_instance = carousel.options.custom_carousel_instance;

    var total = parseInt($('total', xml).text());
    var page = parseInt($('page', xml).text());
        
    carousel.size(total);
    eval(carousel_instance +'carousel.size(total)'); 
    
    $('block', xml).each(function(i) {
        carousel.add(first + i, carousel_getItemHTML($(this)));
    });
}
 
function carousel_getItemHTML(xml) {
	var block = '<div class="carousel-items clearfix">';
	$('item', xml).each(function(i) {
		var stars_on = parseInt($('rating', this).text());
		var stars_off = 5-stars_on;
		var stars = '';
		for(var i=0;i<stars_on;i++) {
			stars = stars + '<img class="star on" src="images/rating_star_small_on.png" border="0">';
		}
		for(var i=0;i<stars_off;i++) {
			stars = stars + '<img class="star off" src="images/rating_star_small_off.png" border="0">';
		}
		var freestyle='';
		if(urldecode($('price', this).text())=='FREE') {
			freestyle=' free';
		}
		var sale_price='';
		if(urldecode($('price', this).text()) != urldecode($('default_price', this).text()) && urldecode($('default_price', this).text())!='$0.00') {
			sale_price='<span class="price" style="text-decoration:line-through;color:#999;">' + urldecode($('default_price', this).text()) + '</span>&nbsp;&nbsp;';
			freestyle=' free';
		}
        block = block 
        + '<div class="item-box">' 
        	+ '<a class="item-icon-link ' + urldecode($('type', this).text()) + '" href="' + urldecode($('link', this).text()) + '" title="' + urldecode($('title', this).text()) + '">' 
        		+ '<img class="item-icon" src="' + urldecode($('image', this).text()) + '" alt="' + urldecode($('title', this).text()) + ' Icon" width="120" height="120" border="0"/>' 
        	+ '</a>' 
	        //+ stars + '<br />'
    	    + '<div class="item-title"><div>' + urldecode($('title', this).text()) + '</div></div>' 
        	+ '<div class="studio">' + urldecode($('studio', this).text()) + '</div>'
        	+ sale_price
	        + '<span class="price ' + urldecode($('type', this).text()) + freestyle + '">' + urldecode($('price', this).text()) + '</span>'
        + '</div>';
    });
	return block + '</div>';
}

function carousel_initCallback(carousel, state) {
    var carousel_instance = carousel.options.custom_carousel_instance;
    if (state == 'init') {
    	eval(carousel_instance + 'carousel = carousel;');
    }    	
}

function carousel_buttonNextCallback(carousel, element, state) {
	var carousel_instance = carousel.options.custom_carousel_instance;
	//eval('var carousel = ' + carousel_instance + 'carousel;');
	if(state==true) {
	    $('#' + carousel_instance + 'carousel-next').bind('click', function() {
	        eval(carousel_instance + 'carousel.next();')
	        return false;
	    });
	} else {
		$('#' + carousel_instance + 'carousel-next').unbind('click');
	}
}

function carousel_buttonPrevCallback(carousel, element, state) {
	var carousel_instance = carousel.options.custom_carousel_instance;
	//eval('var carousel = ' + carousel_instance + 'carousel;');
	if(state==true) {
	    $('#' + carousel_instance + 'carousel-prev').bind('click', function() {
	        eval(carousel_instance + 'carousel.prev();')
	        return false;
	    });
	} else {
		$('#' + carousel_instance + 'carousel-prev').unbind('click');
	}
}

function init_carousel(carousel_instance, list_type, list_size, pages) {
    $('#' + carousel_instance + 'carousel').jcarousel({
        // Configuration goes here
        visible: 1,
        scroll: 1,
        size: pages,
        buttonNextHTML: null,
        buttonPrevHTML: null,
        itemFallbackDimension: 750,
        initCallback: carousel_initCallback,
        // wrap: 'last',
        // auto: 10,
        animation: 100,
        buttonNextCallback: carousel_buttonNextCallback,
        buttonPrevCallback: carousel_buttonPrevCallback,
        itemLoadCallback: carousel_itemLoadCallback,
        custom_list_type: list_type,
        custom_list_size: list_size,
        custom_carousel_instance: carousel_instance
    });
}

function setup_carousel(carousel_instance, list_type, list_size, pages) {
    init_carousel(carousel_instance, list_type, list_size, pages);
}

$(document).ready(function() {
	$('.carousel-link').bind('click', function() {
		var this_id = $(this).attr('id');
		var split_result = this_id.split('_');
		var carousel_instance = split_result[0];
		var list_type = split_result[1];

		var this_alt = $(this).attr('alt');
		var alt_split_result = this_alt.split('_');
		var list_size = alt_split_result[0];
		var pages = alt_split_result[1];

		//alert(this_alt);
		
		//var carousel = $('#' + carousel_instance + 'carousel').data('jcarousel');
		
		eval('var ' + carousel_instance + 'carousel = null;');
		$('#' + carousel_instance + 'carousel').empty();
		$('#' + carousel_instance + 'carousel').append('<ul></ul>');
		
		init_carousel(carousel_instance, list_type, list_size, pages);
		
		$(this).parent().parent().find('.selected').removeClass('selected');
	    $(this).addClass('selected');
	    return false;
	});
});	

