﻿$(document).ready(function() {

    var containerWidth = $("div.carouselContainer div.carousel").width();
    var sliderWidth = 0;
    var panelWidth = $("div.carouselContainer div.carousel > ul > li").outerWidth();
    var sliderSpeed = 600;
    var fadeSpeed = 400;
    var isMoving = false;
    var didPrepend = false;
    var didAppend = false;

    // IE6 Fixes
    if ($.browser.msie && parseInt($.browser.version) == 6) {
        $("div.carouselContainer div.carousel > ul > li > h2 > img").each(function() {
            $(this).attr("src", $(this).attr("src").replace(".png", ".gif"));
        });
        $("div.carouselContainer div.carouselTabs > ul > li").hover(function() {
            $(this).css("text-decoration", "underline");
        }, function() {
            $(this).css("text-decoration", "none");
        });
        containerWidth = containerWidth + 3;
    }

    // SET SLIDER POSITION
    $("div.carouselContainer div.carousel > ul").css("left", "0px");

    // SET SLIDER UL WIDTH
    $("div.carouselContainer div.carousel > ul > li").each(function() {
        sliderWidth += panelWidth;
    })
    $("div.carouselContainer div.carousel > ul").width(sliderWidth);

    // SET SLIDER BUTTON CLICK EVENTS
    $("div.carouselContainer > a.btnPrevious").click(function() {
        sliderLeft(0);
    })
    $("div.carouselContainer > a.btnNext").click(function() {
        sliderRight(0);
    })

    var count = 0;
    $("div.carouselContainer div.carouselTabs > ul > li").each(function(li) {
        $(this).bind("click", { index: li }, function(event) {
            var tab = event.data.index + 1;
            var count = 0;
            var selectedTab = 0;
            $("div.carouselContainer div.carouselTabs > ul > li").each(function() {
                count++;
                if ($(this).hasClass("selected")) {
                    selectedTab = count;
                }
            });
            if (tab < selectedTab) {
                sliderLeft(tab);
            }
            else if (tab > selectedTab) {
                sliderRight(tab);
            }
        });
    });

    //CHECK BUTTON STATUS
    checkButtons(0);

    function sliderLeft(newTab) {
        var currentPosition = parseInt($("div.carouselContainer div.carousel > ul").css("left"));

        if (newTab == 0) {
            var newPosition = currentPosition + containerWidth;
        }
        else {
            var newPosition = (-1 * panelWidth * newTab) + panelWidth;
        }
        
        var tab = 0;

        if (newPosition > 0 && didPrepend == false) {
            newPosition = 0;
            didPrepend = true;
            $("div.carouselContainer div.carousel > ul").prepend("<li>" + $("div.carouselContainer div.carousel > ul > li:last").html() + "</li>");
            sliderWidth += panelWidth;
            $("div.carouselContainer div.carousel > ul").width(sliderWidth);
            $("div.carouselContainer div.carousel > ul").css("left", (-1 * panelWidth) + "px");
            tab = $("div.carouselContainer div.carouselTabs > ul > li").size();
        }

        if (newPosition <= 0 && isMoving == false) {

            checkButtons(newPosition);
            if (tab == 0) {
                tab = Math.abs(newPosition) / panelWidth + 1;
            }
            selectTab(tab);
            isMoving = true;
            $("div.carouselContainer div.carousel > ul").animate({
                left: newPosition + "px"
            }, sliderSpeed, function() {
                isMoving = false;
                if (didPrepend == true) {
                    sliderWidth -= panelWidth;
                    $("div.carouselContainer div.carousel > ul").width(sliderWidth);
                    $("div.carouselContainer div.carousel > ul").css("left", (-1 * (sliderWidth - panelWidth)) + "px");
                    $("div.carouselContainer div.carousel > ul > li:first").remove();
                    didPrepend = false;
                }
            });
        }
    }

    function sliderRight(newTab) {
        var currentPosition = parseInt($("div.carouselContainer div.carousel > ul").css("left"));

        if (newTab == 0) {
            var newPosition = currentPosition - containerWidth;
        }
        else {
            var newPosition = (-1 * panelWidth * newTab) + panelWidth;
        }

        var tab = 0;

        if (Math.abs(newPosition) + containerWidth > sliderWidth && didAppend == false) {
            didAppend = true
            $("div.carouselContainer div.carousel > ul").append("<li>" + $("div.carouselContainer div.carousel > ul > li:first").html() + "</li>")
            sliderWidth += panelWidth;
            $("div.carouselContainer div.carousel > ul").width(sliderWidth);
            tab = 1;
        }

        if (Math.abs(newPosition) + containerWidth <= sliderWidth && isMoving == false) {
            checkButtons(newPosition);
            if (tab == 0) {
                tab = Math.abs(newPosition) / panelWidth + 1;
            }
            selectTab(tab);
            isMoving = true;
            $("div.carouselContainer div.carousel > ul").animate({
                left: newPosition + "px"
            }, sliderSpeed, function() {
                isMoving = false;
                if (didAppend == true) {
                    sliderWidth -= panelWidth;
                    $("div.carouselContainer div.carousel > ul").width(sliderWidth);
                    $("div.carouselContainer div.carousel > ul").css("left", "0px");
                    $("div.carouselContainer div.carousel > ul > li:last").remove();
                    didAppend = false;
                }
            });
        }
    }

    function checkButtons(position) {

        if (position == 0) {
            $("div.carouselContainer > a.btnPrevious").addClass("disabled");
        }
        else {
            $("div.carouselContainer > a.btnPrevious").removeClass("disabled");
        }

        if (Math.abs(position) >= sliderWidth - containerWidth) {
            $("div.carouselContainer > a.btnCarouselNext").addClass("disabled");
        }
        else {
            $("div.carouselContainer > a.btnCarouselNext").removeClass("disabled");
        }
    }

    function selectTab(tab) {
        var count = 0;
        $("div.carouselContainer div.carouselTabs > ul > li").each(function() {
            count++;
            if (count == tab) {
                $(this).addClass("selected");
            }
            else {
                $(this).removeClass("selected");
            }
        });
    }

    function clickTab(tab) {
        alert(tab);
    }

})

