$("document").ready(function() {
	myLinks.initialize();
});

var myLinks = {
	designerArr : null,
	pageNumber : null,
	totalJsonItems : null,
	listClosed : null,
	
    initialize : function() {
        this.pageNumber = $.trim($("#linksPageNumber").html());
        this.bindEvents();
    },
    
    bindEvents : function() {
        // adjusts myLinks left so users with smaller screens can view the window
        $(window).scroll(function() {
            $("#myLinksWindowAbsoluteDiv").css( {
                "padding-left" : (1024 - $(window).scrollLeft()) + "px"
            });

            // tests for ie6 and moves the myLinks window
            if ($.browser.msie && jQuery.browser.version.substr(0, 3) == "6.0") {
                $("#myLinksWindowAbsoluteDiv").css( {
                    "top" : (139 + $(window).scrollTop()) + "px"
                });
            }
        });

        // if a user sizes the window to 1240 this ensures myLinks pops back into the proper position
        $(window).resize(function() {
            if ($(window).width() >= 1240) {
                $("#myLinksWindowAbsoluteDiv").css( {
                    "padding-left" : (1024) + "px"
                });
            }
        });

        $("#myDesignerArrowImage").click(function() {
            if ($("#myDesignersListItems").is(':visible')) {
                myLinks.listClosed = true;
                myLinks.hideButtons();
                myLinks.swapDesignerArrow();

                // adding to send across the listClosed param
                myLinks.populateJsonList();
            } else if (myLinks.totalJsonItems != 0) {
                myLinks.listClosed = false;
                myLinks.refreshDesignerList();

                myLinks.swapDesignerArrow();
            }
        });

        $("#nextButton").click(function() {
            myLinks.pageNumber++;
            myLinks.refreshDesignerList();
        });

        $("#previousButton").click(function() {
            myLinks.pageNumber--;
            myLinks.refreshDesignerList();
        });
    },

    populateJsonList : function() {
        var pageNum = 0
        if (myLinks.pageNumber != null || myLinks.pageNumber != "") {
            pageNum = myLinks.pageNumber;
        }

        var postData = { "pageNumber" : pageNum, "listClosed" :  myLinks.listClosed};

        $.ajax({
            url: "/actions/myLinksAction.action",
            async: false,
            cache: false,
            dataType: "json",
            type : "GET",
            data : postData,
            success: function(json) {
                myLinks.designerArr = json.responseData.designers;
                myLinks.listClosed = json.responseData.listClosed;
                myLinks.pageNumber = json.responseData.pageNumber;
                myLinks.totalJsonItems = myLinks.designerArr.length;
            }
        });
    },

    addDesigners : function() {
        var parentThis = this;

        //gets the json data and adds labels and urls under the designer tab
        var i = 0;
        var maxPopNumber = 20;
        if(parentThis.pageNumber != 20) {
            i = (parentThis.pageNumber * 20)
            if((i + 20) > parentThis.totalJsonItems) {
                maxPopNumber = (parentThis.totalJsonItems - i) + (parentThis.pageNumber * 20);
            } else{
                maxPopNumber = (parentThis.pageNumber * 20) + 20;
            }
        }

        while(i < maxPopNumber) {
            var designerListItem = $("<li><a href=" + myLinks.designerArr[i].url + ">" + myLinks.designerArr[i].label + "</a></li>");
            designerListItem.attr("id", ("designerListItem" + i));
            designerListItem.attr("class", "designerListItem");
            designerListItem.appendTo("#myDesignersList");
            i++;
        }

        parentThis.showButtons(i);
    },
	
    refreshDesignerList : function() {
        var parentThis = this;

        myLinks.populateJsonList();

        if (parentThis.totalJsonItems == 0)
            return;

        if (parentThis.totalJsonItems > 0) {
            $("#myDesignersList").empty();

            myLinks.addDesigners();
        }
    },

    hideButtons : function() {
        $("#myDesignersButtonsItem").hide();
        $("#myDesignersListItems").hide();
    },

    showButtons : function(lastItemCreatedIndex) {
        $("#myDesignersListItems").show();
        var nextButtonVisible = $("#nextButton").is(':visible');
        var prevButtonVisible = $("#previousButton").is(':visible');

        // shows or hides next button based on last item created index
        if (!nextButtonVisible && (lastItemCreatedIndex != myLinks.totalJsonItems)) {
            $("#nextButton").show();
            nextButtonVisible = true;
        } else if (nextButtonVisible && (lastItemCreatedIndex == myLinks.totalJsonItems)) {
            $("#nextButton").hide();
            nextButtonVisible = false;
        }

        // shows or hides prev button based on page number
        if (!prevButtonVisible && (myLinks.pageNumber >= 1)) {
            $("#previousButton").show();
            prevButtonVisible = true;
        } else if (prevButtonVisible && (myLinks.pageNumber < 1)) {
            $("#previousButton").hide();
            prevButtonVisible = false;
        }

        if (nextButtonVisible || prevButtonVisible) {
            $("#myDesignersList").removeClass("linksInnerBottomBorder");
            $("#myDesignersButtonsItem").show();
        }
    },

    swapDesignerArrow : function() {
        var parentThis = this;
        var currentArrow = $("#myDesignerArrowImage");

        if (!parentThis.listClosed && myLinks.totalJsonItems > 0) {
            currentArrow.attr("src", $.trim($("#downArrowImage").html()));
        } else {
            currentArrow.attr("src", $.trim($("#rightArrowImage").html()));
        }
    }
};
