var autoTimer;
var bannerName;
var currentElement = 1;
var currentPosition = 0;
var increment = 0;
var numElements;
var BannerWidth;
var isThereText;
var autoTime = 10000;
var previousElement = 1;
var isAnimating = false;
var isLocked = false;
var itemsInTray = 0;
var itemsDisplayedInTray = 4;
var trayPosition = 1;
var trayStartPosition = 0;
var trayStartOffset = 0;
var maxPositionsToMove = 0;
var itemsPerTray = 10; // this is the number of items visible in the tray
var trayLeftPosition = 0; // THIS IS THE CURRENT POSITION OF THE TRAY, IT IS UPDATED BY THE BACK AND NEXT BUTTON LACHLANN ADDED THIS TO REPLACE THE UNRELIABLE POSITION.LEFT CODE

function bannerAnimator(name, withtext, incrementIn) {
    bannerName = name;
    isThereText = withtext; // if this script needs to control a text element
    increment = incrementIn;
    numElements = countOfItems; //$('#eventBanner').children().size();
    BannerWidth = numElements * increment;
    //  buttonState();
  //  autoMoveBanner();
	
		
	
    $("#" + bannerName).css("width", BannerWidth + "px");
    $("#mycarousel").css("overflow", "hidden");
    $("#" + bannerName).addClass("jcarousel-list jcarousel-list-horizontal");
    $("#" + bannerName).addClass("jcarousel-container jcarousel-container-horizontal");
	$("div#mycarousel2 ul li:first-child ").addClass("current");
		
    $("#" + bannerName).hover(
        function() {
            isLocked = true;
        },
        function() {
            isLocked = false;
        }
    );
	

}
function updateClass(on, off) {
    if (on != off) { // if this button is clicked twoce we dont want to switch the class
	//alert(on + "and "+off);
       $('div#mycarousel2 ul.jcarousel-list li:nth-child(' + off + ')').removeClass("current");
        $('div#mycarousel2 ul.jcarousel-list li:nth-child(' + on + ')').addClass("current");
    }
};

//function autoMoveBanner() {
//    autoTimer = window.setTimeout(function() {
//        if (!isLocked) {
//           // $("#bannerTray > li").eq(previousElement).removeClass('current');
//		   
//            previousElement = currentElement;
//            currentElement = (currentElement == numElements) ? 1 : currentElement + 1;
//          //  $("#bannerTray > li").eq(currentElement - 1).addClass('current');
//            diff = previousElement - currentElement;
//            amount = currentPosition + diff * increment;
//            currentPosition = amount;
//            moveBanner(amount, bannerName);
//            updateClass(currentElement, previousElement);
//            autoMoveBanner();
//        } else {
//            window.clearTimeout(autoTimer);
//            autoMoveBanner();
//        }
//    }, autoTime);
//}

function moveBanner(amount, objectName) {
/*
    $("#" + objectName).animate({
        left: amount
    }, { duration: 1000, easing: 'easeOutCubic' });
	*/
	
    $("#" + objectName).parent().fadeOut('fast', function() {
		// Fade out banner 
		$("#" + objectName).css('left',amount);
		$("#" + objectName).parent().fadeIn('0');
    });
	
}


function moveBannerTo(moveToElement) {
    window.clearTimeout(autoTimer);
	
	updateClass(moveToElement, currentElement);
    previousElement = currentElement;
    currentElement = moveToElement;
	
    diff = previousElement - moveToElement;
    amount = currentPosition + diff * increment;
    currentPosition = amount;
    moveBanner(amount, bannerName);
    //autoMoveBanner()
}
function trayAnimator(name, countItems) {
    var trayName = name;
    trayStartPosition = $("#bannerTray").position();
    trayStartOffset = $("#bannerTray").offset().left;
    itemsDisplayedInTray = countItems;
    totalItems = $("#" + name + " > li").length;
    var trayWidth = numElements * increment;
    //$('div.jcarousel-control a:nth-child(1)').toggleClass('current');
    $("#" + trayName).css("width", trayWidth + "px");
    $("#mycarousel").css("overflow", "hidden");
    $("#" + trayName).addClass("jcarousel-list jcarousel-list-horizontal");
    $("#" + trayName).addClass("jcarousel-container jcarousel-container-horizontal");
   // $("#" + trayName + " > li").eq(0).addClass('current');
    maxPositionsToMove = $("#bannerTray > li").length - itemsPerTray;

}

function buttonState(){
// updates hte button disable state
    
    if(trayPosition == 1){
        $("#trayBack").addClass("disableBack");
    }else if (trayPosition > 1){
         $("#trayBack").removeClass("disableBack");
    }
    if(trayPosition > maxPositionsToMove){
        $("#trayNext").addClass("disableNext");
    }else if (trayPosition <= maxPositionsToMove){
         $("#trayNext").removeClass("disableNext");
    }
}

function trayBack() {
    if (trayPosition > 1) {
        var offset = $("#bannerTray").offset();
        var itemWidth = trueWidth($("#bannerTray > li").eq(0));
        scrollAmount = itemWidth;
        moveTrayToPosition = (trayLeftPosition + scrollAmount); //Im offsetting with -1px due to error in return from position.left
        moveTray(moveTrayToPosition);
        trayPosition--;
    }
    buttonState();
}

function trayNext() {
	    if (trayPosition <= maxPositionsToMove) {
        var offset = $("#bannerTray").offset();
        var itemWidth = trueWidth($("#bannerTray > li").eq(0));
        scrollAmount = itemWidth;
        moveTrayToPosition = (trayLeftPosition - scrollAmount); //Im offsetting with -1px due to error in return from position.left		
        moveTray(moveTrayToPosition);
        trayPosition++;
    }
    buttonState();
}
function calculateTrayScrollAmount() {
    var itemWidth = trueWidth($("#bannerTray > li").eq(0));
    return (itemWidth * itemsDisplayedInTray);
}
function moveTray(newPosition) {
	trayLeftPosition = newPosition;
    $("#bannerTray").animate({
        left: newPosition
    }, { duration: 300, easing: 'easeOutCubic' });
}
function trueWidth(obj) {
    var totalWidth = obj.width();
    totalWidth += parseInt(obj.css("padding-left"), 10) + parseInt(obj.css("padding-right"), 10); //Total Padding Width
    totalWidth += parseInt(obj.css("margin-left"), 10) + parseInt(obj.css("margin-right"), 10); //Total Margin Width
    totalWidth += parseInt(obj.css("borderLeftWidth"), 10) + parseInt(obj.css("borderRightWidth"), 10); //Total Border Width
    return totalWidth;
}
