﻿var durationValue = 800; // speed of transition (.8 seconds)
var displayWidth = 0; 
var transitionHeight = 100; 
var displayPlacement = 0; 
//var maxItems = 1; 
var showJumpLinks = false; 
var jumpLinkSeparator = ""; //"&nbsp;||&nbsp;"
var showNumberLinks = false;
var isMozilla = false;
var fullRotation = true;
var isRunning = 0;
var numberToDisplay = 2;
function InitalizeImageSlider(controlClientID) {
    if ($("div#" + controlClientID + "_holder").length > 0) {
        var leftControlWidth = $("#" + controlClientID + "_leftMove").outerWidth();
        if ($.browser.mozilla) {
            var mozillaAdjust = $("#" + controlClientID + "_scrollDisplay").width() - leftControlWidth;
            $("#" + controlClientID + "_scrollDisplay").css("width", mozillaAdjust);
            $("#" + controlClientID + "_rightMove").parent().css("margin-left", mozillaAdjust);
        }
        var transitionPlacement = $("#" + controlClientID + "_scrollDisplay").width();
        if (numberToDisplay > 1) {
            transitionPlacement = $("#" + controlClientID + "_scrollDisplay").find("div.item:eq(0)").width();
        }
        
       var currentView = 0;
        var maxItems = 1;
        displayWidth = transitionPlacement;
        var holderXCoord = $("div#" + controlClientID + "_holder").position().left;
        var holderWidth = $("div#" + controlClientID + "_holder").outerWidth();
//        if ($.browser.mozilla) {
//            $("#scrollRow").children("div.item").css("width", displayWidth);
        //        }
        
        $("#" + controlClientID + "_scrollDisplay").find("div.item:eq(0)").css("left", 0);
        for (var setupCounter = 1; setupCounter < numberToDisplay; setupCounter++) {
            $("#" + controlClientID + "_scrollDisplay").find("div.item:eq(" + setupCounter + ")").css("left", (setupCounter * transitionPlacement));
        }
        if (numberToDisplay > 1) {
            $("#" + controlClientID + "_scrollDisplay").find("div.item:gt(" + (numberToDisplay - 1) + ")").css("left", (holderWidth));
        } else {
            $("#" + controlClientID + "_scrollDisplay").find("div.item:gt(0)").css("left", (holderWidth));
        }
        maxItems = $("#" + controlClientID + "_scrollRow").children().length;

        $("#" + controlClientID + "_scrollDisplay").data("maxItems", maxItems);
        $("#" + controlClientID + "_scrollDisplay").data("transitionPlacement", transitionPlacement);
        $("#" + controlClientID + "_scrollDisplay").data("currentView", currentView);
//        if (currentView >= maxItems) { currentView = maxItems - 1; }
//        for (var m = currentView; m >= 0; m--) {
//            //if (m != currentView) { $("#" + controlClientID + "_scrollDisplay").find(".item:eq(" + m + ")").css("left", "-" + transitionPlacement + "px"); }
//        }
        var jumpLinks = "";
        if (showJumpLinks) {
            for (var a = 0; a < maxItems; a++) {
                var linkText = $("#" + controlClientID + "_scrollDisplay").find(".item:eq(" + a + ") > .title").text();
                if (jumpLinks != "") { jumpLinks += jumpLinkSeparator; }
                jumpLinks += "<a href=\"#\" id=\"" + controlClientID + "_jumplink" + a + "\" onclick=\"return jump('" + a + "', '" + controlClientID + "');\">" + linkText + "</a>";
            }
            $("#" + controlClientID + "_itemlinks").html(jumpLinks);
            $("#" + controlClientID + "_jumplink" + currentView).css("font-weight", "bold").css("background-color", "#cbcaca");
        } else {
            if (showNumberLinks) {
                for (var a = 0; a < maxItems; a++) {
                    var linkText = (a + 1);
                    if (jumpLinks != "") { jumpLinks += jumpLinkSeparator; }
                    jumpLinks += "<a href=\"#\" id=\"" + controlClientID + "_jumplink" + a + "\" onclick=\"return jump('" + a + "', '" + controlClientID + "');\">" + linkText + "</a>";
                }
                $("#" + controlClientID + "_itemlinks").html(jumpLinks);
                $("#" + controlClientID + "_jumplink" + currentView).css("font-weight", "bold").css("background-color", "#cbcaca");
            }
        }
        if (!showJumpLinks && !showNumberLinks) {
            $("#" + controlClientID + "_itemlinks").remove();
        }
    }
}
function getNextItem(index, controlClientID) {
    index++;
    var currentMaxItems = $("#" + controlClientID + "_scrollDisplay").data("maxItems");
    if (index >= currentMaxItems) {
        return 0;
    }
    return index;
}
function getPrevItem(index, controlClientID) {
    index--;
    var currentMaxItems = $("#" + controlClientID + "_scrollDisplay").data("maxItems");
    if (index < 0) {
        return currentMaxItems;
    }
    return index;
}
function moveItem(direction, controlClientID) {
    if (isRunning > 0) { return false; }
    var isRotationRestart = false;
    var currentView = $("#" + controlClientID + "_scrollDisplay").data("currentView");
    var oldItem = currentView;
    var controlID = controlClientID;
    var thisTransition = $("#" + controlClientID + "_scrollDisplay").data("transitionPlacement");
    var maxItems = $("#" + controlClientID + "_scrollDisplay").data("maxItems");
    if (direction == "left" && (currentView < maxItems - 1 || fullRotation)) {
        if (fullRotation && currentView >= maxItems - 1) {
            $("#" + controlID + "_scrollRow").children(".item:eq(0)").css("left", thisTransition + "px");
            isRotationRestart = true;
            currentView = -1;
        }
        if (showJumpLinks || showNumberLinks) {
            $("#" + controlID + "_jumplink" + oldItem).css("font-weight", "normal").css("background-color", "#ffffff");
        }
        isRunning++;
        if (isRotationRestart && numberToDisplay > 1) {
            $("#" + controlID + "_scrollRow").children(".item:gt(0)").each(function(i, domelement) {
                if (i < (maxItems - 2)) {
                    $(domelement).css("left", (thisTransition * numberToDisplay) + "px");
                }
            });
        } else {
            if (isRotationRestart) {
                $("#" + controlID + "_scrollRow").children(".item:lt(" + (maxItems-1) + ")").each(function(i, domelement) {
                    $(domelement).css("left", thisTransition + "px");
                });
            }
        }
        $("#" + controlID + "_scrollRow").children(".item:eq(" + oldItem + ")").animate({ left: "-" + thisTransition + "px" }, { queue: true, duration: durationValue, complete: function() {
            if (isRotationRestart) {
                $("#" + controlID + "_scrollRow").children(".item:eq(" + oldItem + ")").css("left", (thisTransition * numberToDisplay) + "px");
            }
            isRunning--;
        }
        });
        currentView++;
        if (showJumpLinks || showNumberLinks) {
            $("#" + controlID + "_jumplink" + currentView).css("font-weight", "bold").css("background-color", "#cbcaca");
        }
        isRunning++;
        $("#" + controlID + "_scrollRow").children(".item:eq(" + currentView + ")").animate({ left: displayPlacement + "px" }, { queue: false, duration: durationValue, complete: function() {
            isRunning--;
        }
        });
        if (numberToDisplay > 1) {
            var extraView = currentView;
            for (var n = 1; n < numberToDisplay; n++) {
                extraView = getNextItem(extraView, controlClientID);
                if (extraView == 0) {
                    $("#" + controlID + "_scrollRow").children(".item:eq(0)").css("left", (thisTransition * numberToDisplay) + "px");
                }
                isRunning++;
                $("#" + controlID + "_scrollRow").children(".item:eq(" + extraView + ")").animate({ left: (thisTransition * n) + "px" }, { queue: false, duration: durationValue, complete: function() {
                    isRunning--;
                }
                });
            }
        } 
    }
    if (direction == "right" && (currentView > 0 || fullRotation)) {
        if (numberToDisplay > 1) {
            var extraView = currentView;
            for (var n = 1; n < numberToDisplay; n++) {
                extraView = getNextItem(extraView, controlClientID);
                if (extraView == 0) {
                    $("#" + controlID + "_scrollRow").children(".item:eq(0)").css("left", thisTransition + "px");
                }
                isRunning++;
                $("#" + controlID + "_scrollRow").children(".item:eq(" + extraView + ")").animate({ left: (thisTransition * (n+1)) + "px" }, { queue: false, duration: durationValue, complete: function() {
                    isRunning--;
                }
                });
            }
            extraView = currentView;
            extraView = getPrevItem(extraView, controlClientID);
            $("#" + controlID + "_scrollRow").children(".item:eq(" + extraView + ")").css("left", "-" + thisTransition + "px");
        }
        if (fullRotation && currentView == 0) {
            $("#" + controlID + "_scrollRow").children(".item:eq(" + (maxItems - 1) + ")").css("left", "-" + thisTransition + "px");
            isRotationRestart = true;
            currentView = maxItems;
        }
        if (showJumpLinks || showNumberLinks) {
            $("#" + controlID + "_jumplink" + oldItem).css("font-weight", "normal").css("background-color", "#ffffff");
        }
        isRunning++;
        if (isRotationRestart && numberToDisplay > 1) {
            $("#" + controlID + "_scrollRow").children(".item:lt(" + (maxItems - 1) + ")").each(function(i, domelement) {
                if (i > 0) {
                    $(domelement).css("left", "-" + (thisTransition * numberToDisplay) + "px");
                }
            });
        } else {
            if (isRotationRestart) {
                $("#" + controlID + "_scrollRow").children(".item:gt(0)").each(function(i, domelement) {
                    $(domelement).css("left", "-" + thisTransition + "px");
                });
            }
        }
        $("#" + controlID + "_scrollRow").children(".item:eq(" + oldItem + ")").animate({ left: thisTransition + "px" }, { queue: true, duration: durationValue, complete: function() {
//            if (isRotationRestart) {
//                $("#" + controlID + "_scrollRow").children(".item:lt(" + (maxItems - 1) + ")").css("left", "-" + (thisTransition * numberToDisplay) + "px");
//            }
            isRunning--;
        }
        });
        currentView--;
        if (showJumpLinks || showNumberLinks) {
            $("#" + controlID + "_jumplink" + currentView).css("font-weight", "bold").css("background-color", "#cbcaca");
        }
        $("#" + controlID + "_scrollRow").children(".item:eq(" + currentView + ")").animate({ left: displayPlacement + "px" }, { queue: false, duration: durationValue, complete: function() {
            isRunning--;
        }
        });
    }
    $("#" + controlClientID + "_scrollDisplay").data("currentView", currentView);
    return false; 
}
function jump(id, controlClientID) {
    var currentView = $("#" + controlClientID + "_scrollDisplay").data("currentView");
    var turnspan = currentView - id;
    var dirString = "right";
    if (turnspan == 0) { return false;}
    if (turnspan < 0) { dirString = "left"; turnspan = turnspan * -1; }
    for(var turncount = 1; turncount <= turnspan; turncount++) { moveItem(dirString, controlClientID); }
    return false;
}

