﻿var bannersList;
var numberBanners;
var rotateTimeout;
var numberRotations;
var endAnim;
var timeoutActive;
var mouseOver = false;


function bannersInit() {
    numberRotations = 0;
    bannersList = $("#allBanners").children();
    numberBanners = bannersList.length;
    if (numberBanners > 1) {
        bannersList.each(function(i) {
            var positionning = 783 * i + "px";
            $(this).css("left", positionning);
            $(this).children("a").mouseover(function() { mouseOver = true; clearRotationTimeout(); });
            $(this).children("a").mouseout(function() { mouseOver = false; setRotationTimeout(); });
            appendControl($(this), i);
            if (positionning == "0px")
                toggleLinkImage("bannerLink" + i, false);
        });

        endAnim = numberBanners;
        setRotationTimeout();
    }
    $("#defaultBanner").css("display", "none");
}

function setRotationTimeout() {
    if (endAnim == numberBanners) {
        rotateTimeout = setTimeout("startRotation()", 8000);
    }
}

function clearRotationTimeout() {
    clearTimeout(rotateTimeout);
}

function startRotation() {
    if (mouseOver == false) {
        clearRotationTimeout();
        numberRotations++;
        endAnim = 0;

        if (numberRotations == numberBanners)
            numberRotations = 0;

        bannersList.each(function(i) {
            if (numberRotations != 0 && i + 1 == numberRotations) {
                $(this).animate({ left: "-783px" }, 1000, "swing", function() { endAnim++; setRotationTimeout(); });
            }
            else if (numberRotations == 0 && i == (numberBanners - 1)) {
                $(this).animate({ left: "-783px" }, 1000, "swing", function() { endAnim++; setRotationTimeout(); });
            }
            else if (i == numberRotations) {
                $(this).animate({ left: "783px" }, 0, "swing", function() { $(this).animate({ left: "0px" }, 1000); endAnim++; setRotationTimeout(); });
                toggleLinkImage("bannerLink" + i, false);
            }
            else {
                endAnim++;
                setRotationTimeout();
            }
        });
        
    }

}

function appendControl(banner, linkOrder) {
    var alternateText = banner.find("img").attr("alt");
    var newLink = "<a href='javascript:void(0);' onmouseover='javascript:toggleLinkImage(&#39;bannerLink" + linkOrder + "&#39;, true); mouseOver = true;'  onmouseout='javascript:toggleLinkImage(&#39;bannerLink" + linkOrder + "&#39;, true);  mouseOver = false;' onclick='controlledRotation(&#39;" + linkOrder + "&#39;);'><img src='Images/Common/btn/dot_gray_small.gif' class='bannerLinkImg' id='bannerLink" + linkOrder + "' alt='" + alternateText + "' title='" + alternateText + "' /></a>";
    $("#bannersControls").append(newLink);
}

function toggleLinkImage(linkId, active) {
    var nextLink = $("#" + linkId);
    if (active == true) {
        if (nextLink.attr("src").indexOf("Images/Common/btn/dot_gray_small.gif") > -1)
            nextLink.attr("src", "Images/Common/btn/dot_gray_big.gif");
        else if (nextLink.attr("src").indexOf("Images/Common/btn/dot_gray_big.gif") > -1)
            nextLink.attr("src", "Images/Common/btn/dot_gray_small.gif");
    }
    else {
        var prevLinks = $("#bannersControls").children();

        prevLinks.each(function() {
            $(this).children("img").attr("src", "Images/Common/btn/dot_gray_small.gif");
        });

        nextLink.attr("src", "Images/Common/btn/dot_black_big.gif");
    }
}

function controlledRotation(linkOrder) {
    if (endAnim == numberBanners) {
        endAnim = 0;
        clearRotationTimeout();
        var leftPosition;
        linkOrder = parseInt(linkOrder);

        if (linkOrder > numberRotations) {
            var bannersToMove = linkOrder - numberRotations;
            bannersList.each(function(i) {
                if (i > numberRotations && i <= linkOrder) {
                    var pixelsToMove = 783 * (i - numberRotations);
                    $(this).animate({ left: pixelsToMove + "px" }, 0);
                }
            });

            bannersList.each(function(i) {
                if (i >= numberRotations && i <= linkOrder) {
                    var rawPosition = $(this).css("left");
                    var intPosition = parseInt(rawPosition.substring(0, rawPosition.indexOf("px")));
                    var pixelsToMove = intPosition - (783 * bannersToMove);
                    $(this).animate({ left: pixelsToMove + "px" }, 1000, "swing", function() { endAnim++; setRotationTimeout(); });
                    if (i == linkOrder)
                        toggleLinkImage("bannerLink" + i, false);
                }
                else {
                    endAnim++;
                    setRotationTimeout();
                }
            });
        }
        else if (numberRotations > linkOrder) {
            var bannersToMove = numberRotations - linkOrder;
            bannersList.each(function(i) {
                if (i >= linkOrder && i < numberRotations) {
                    var pixelsToMove = -783 * (numberRotations - i);
                    $(this).animate({ left: pixelsToMove + "px" }, 0);
                    
                }
            });

            bannersList.each(function(i) {
                if (i >= linkOrder && i <= numberRotations) {
                    var rawPosition = $(this).css("left");
                    var intPosition = parseInt(rawPosition.substring(0, rawPosition.indexOf("px")));
                    var pixelsToMove = intPosition + (783 * bannersToMove);
                    $(this).animate({ left: pixelsToMove + "px" }, 1000, "swing", function() { endAnim++; setRotationTimeout(); });
                    if (i == linkOrder)
                        toggleLinkImage("bannerLink" + i, false);
                }
                else {
                    endAnim++;
                    setRotationTimeout();
                }
            });
        }
        
        numberRotations = linkOrder;
        
    }
}