/**
* @author Stéphane Roucheray 
* @extends jquery
*/

var slideDuration = 4000;
var sliderList;
var firstElementOnViewPort = 1 ;
var increment;

function slideTo(goto) {
   
    var viewPort = $('#viewport ul');

    if (goto != firstElementOnViewPort) {
        if (goto > $('#carouselNav tr').children().length) {
            viewPort.animate({ left: "-=" + increment, y: 0 }, 1000, "swing", function () {jQuery(sliderList).css('left', "0px");});
            firstElementOnViewPort = 1;
            setTicker(1);
        }
        else {
            var distance = increment * (goto - firstElementOnViewPort);
            viewPort.animate({ left: "-=" + distance, y: 0 }, 1000, "swing", function () { });
            firstElementOnViewPort = goto;
            setTicker(goto)
        }
    }
}

function setTicker(item) {
    if (item > $('#carouselNav tr').children().length) {item = 1; }
    var tickmark = $('#tickmark');
    var currentItem = $('#carouselNav td:nth-child(' + item + ')');
	
	//alert(currentItem.offset().left  + 'px');
	
    tickmark.css('left', (currentItem.position().left + 50 ) + 'px');
    tickmark.css('border-bottom-color', currentItem.css('background-color'));
    var nextitem = (parseInt(item) + 1);
    tickmark.animate({ left: '+=' + (currentItem.outerWidth() - tickmark.outerWidth() ) + 'px' }, slideDuration, "linear", function () {slideTo((parseInt(item) + 1)); });

	
	}

jQuery.fn.carousel = function () {

    sliderList = jQuery(this).children()[0];

    if (sliderList) {
        increment = 960;
        var elmnts = jQuery(sliderList).children();
        jQuery(sliderList).css('visibility', 'visible');
        jQuery(sliderList).css('width', (elmnts.length + 1) * increment + increment + "px");
        jQuery(sliderList).append(jQuery(elmnts[0]).clone());
        jQuery("#carouselNav td").click(function (event) {
            var goto = $(this).attr("data-val");

            if (goto != firstElementOnViewPort) {
                $('#viewport ul').stop(true, true)
                $('#tickmark').stop(true, false)
                slideTo(goto);
            }
        });

        setTicker(1);

    }
};


