﻿/// <reference path="jquery-1.3.2-vsdoc2.js" />

jQuery.fn.initScroller = function(options) {
    var settings = {
        itemContainerID: "",
        itemClass: "",
        itemWidth: 0,
        itemsVisible: 0,
        pagingContainerID: "",
        viewAllSelector: "",
        scrollSpeed: "slow"
    };

    jQuery.extend(settings, options);

    var $scrollcontainer = this;
    var $pagingContainer = $("#" + settings.pagingContainerID);
    var $viewallcontainer = $(settings.viewAllSelector);
    var $itemcontainer = $scrollcontainer.find("#" + settings.itemContainerID);
    var itemcount = $itemcontainer.find("." + settings.itemClass).length;
    var pagecount = Math.ceil(itemcount / settings.itemsVisible);
    var itemsRemaining = itemcount % settings.itemsVisible;
    var inProgress = false;

    //hide view all container
    $viewallcontainer.css("display", "none");

    //set item container width
    $itemcontainer.width(itemcount * settings.itemWidth);

    //set up paging
    if (itemcount > settings.itemsVisible) {
        var $pager = $("<ul></ul>");

        for (var page = 0; page < pagecount; page++) {
            $("<li>&nbsp;/&nbsp;<a class='scrollbtn'>" + (page + 1) + "</a></li>")
            .appendTo($pager);
        }

        $pager.appendTo($pagingContainer);

        $pager.find(".scrollbtn").click(function() {
            if (pagecount > 1) {
                if (!inProgress) {
                    inProgress = true;
                    var page = parseInt($(this).text()) - 1;
                    var leftpos;

                    if ((page + 1) == pagecount && itemsRemaining > 0) //is it the last page
                        leftpos = ((settings.itemWidth * settings.itemsVisible) * (page - 1)) + (itemsRemaining * settings.itemWidth);
                    else
                        leftpos = ((settings.itemWidth * settings.itemsVisible) * page);

                    $itemcontainer.animate({ left: ("-" + leftpos) }, settings.scrollSpeed, function() {
                        inProgress = false;
                    });
                }
            }
            return false;
        });
    }

    $(".viewall").click(function() {
        /*$scrollcontainer.removeClass("scrolllist");
        $scrollcontainer.addClass("scrolllist2");*/
        $viewallcontainer.fadeIn("slow").queue(function() {
            $scrollcontainer.slideUp("slow");
        });

        $pagingContainer.fadeOut("slow");
        return false;
    });
}
