function ScrollPage(divName, divNextName, divPreviousName, size)
{
    var div=$("#"+divName);
    var divNext=$("#"+divNextName);
    var divPrevious=$("#"+divPreviousName);
    var pages=calculatePages(size);
    var currentPage=1;
    
    this.nextPage = nextPage;
    this.previousPage = previousPage;
    this.refineUp = refineUp;
    this.refineDown = refineDown;
    this.calculatePages = calculatePages;
    this.displayNumbers = displayNumbers;
    this.updateNumbers = updateNumbers;
    this.gotoPage = gotoPage;

    function nextPage()
    {
        pix=div.height()-10;    
        scrollMe(pix);
        currentPage++;
        if (currentPage>=pages)
        {
            releaseDiv(divNext);
        }

        activatePrevious();
        updateNumbers();
        return false;
    }

    function previousPage()
    {
        pix=0-div.height()+10;    
        scrollMe(pix);
        currentPage--;
        if (currentPage<=1)
        {
            releaseDiv(divPrevious);
        }
        activateNext();
        updateNumbers();
        return false;
    }
    
    function scrollMe(pix)
    {
        var pos=div.scrollTop();
        div.scrollTop(div.scrollTop()+pix);
    }
    
    function refineUp()
    {
        pix=12;
        div.scrollTop(div.scrollTop()+pix);
        return false;
    }

    function refineDown()
    {
        pix=-12;
        div.scrollTop(div.scrollTop()+pix);
        return false;
    }
    
    function updateNumbers()
    {
        var f1=$("#frame01");
        var f2=$("#frame02");
        var f3=$("#frame03");
        if (pages>=3)
        {
            if (currentPage+1<=pages)
            {
                if (currentPage>1)
                {
                    if (f1.hasClass("current"))
                        f1.removeClass("current");
                    if (f3.hasClass("current"))
                        f3.removeClass("current");
                    if (!f2.hasClass("current"))
                        f2.addClass("current");
                    
                    f2.text(currentPage);
                    f2.removeAttr("href");
                    f1.text(currentPage-1);
                    f1.attr("href", "Javascript: scroll.gotoPage("+(currentPage-1)+")");
                    f3.text(currentPage+1);
                    f3.attr("href", "Javascript: scroll.gotoPage("+(currentPage+1)+")");
                }
                else
                {
                    if (f2.hasClass("current"))
                        f2.removeClass("current");
                    if (f3.hasClass("current"))
                        f3.removeClass("current");
                    if (!f1.hasClass("current"))
                        f1.addClass("current");
                    f1.text('1');
                    f2.text('2');
                    f2.attr("href", "Javascript: scroll.gotoPage(2)");
                    f3.text('3');
                    f3.attr("href", "Javascript: scroll.gotoPage(3)");
                }
            }
            else
            {
                if (currentPage==pages && currentPage>2)
                {
                    if (f1.hasClass("current"))
                        f1.removeClass("current");
                    if (f2.hasClass("current"))
                        f2.removeClass("current");
                    if (!f3.hasClass("current"))
                        f3.addClass("current");
                    
                    f3.text(currentPage);
                    f3.removeAttr("href");
                    f1.text(currentPage-2);
                    f1.attr("href", "Javascript: scroll.gotoPage("+(currentPage-2)+")");
                    f2.text(currentPage-1);
                    f2.attr("href", "Javascript: scroll.gotoPage("+(currentPage-1)+")");
                }
            }
        }   
        else
        {   
            if (currentPage==1)
            {
                if (f2.hasClass("current"))
                    f2.removeClass("current");
                if (!f1.hasClass("current"))
                    f1.addClass("current");
                
                f1.text(currentPage);
                f1.removeAttr("href");
                f2.text(currentPage+1);
                f2.attr("href", "Javascript: scroll.gotoPage(2)");
            }
            else
            {
                if (f1.hasClass("current"))
                    f1.removeClass("current");
                if (!f2.hasClass("current"))
                    f2.addClass("current");
                    
                f1.text(currentPage-1);
                f1.attr("href", "Javascript: scroll.gotoPage(1)");
                f2.text(currentPage);
                f2.removeAttr("href");
            }
        } 
    }
    
    function displayNumbers(pages)
    {
        switch(pages)
        {
            case 1:
                $("#content_pager").css({'display' : 'none'});
                break;
            case 2:
                $("#frame03").css({'display' : 'none'});
                break;
            default:
                break;
        }
    }

    function releaseDiv(div)
    {
        div.removeClass("current");
        div.addClass("current");
        div.removeAttr("href");
        div.removeAttr("onclick");
    }   

    function activateNext()
    {
        divNext.removeClass("current");
        divNext.attr("href", "#");
        divNext.attr("onClick", "Javascript: scroll.nextPage()");
    }   

    function activatePrevious()
    {
        divPrevious.removeClass("current");
        divPrevious.attr("href", "#");
        divPrevious.attr("onClick", "Javascript: scroll.previousPage()");
    }   
     
    function gotoPage(page)
    {
        if (page==-1)
            page=pages;    

        currentPage=page;
            
        pix=(div.height()-10)*(page-1);    
        div.scrollTop(0);
        scrollMe(pix);
        activatePrevious();
        activateNext();
        if (currentPage==1)
        {
            releaseDiv(divPrevious);
        }
        if (currentPage==pages)
        {
            releaseDiv(divNext);
        }
        updateNumbers();
    }
    
    function calculatePages(size)
    {
        style="margin-bottom: 10px; height: 400px; overflow: hidden;" 
        div.css("height",size+'px');
        div.css("overflow",'hidden');
        div.css("margin-bottom",'10px');
        var pix=div.height()-10;
        div.scrollTop(0);
        var pos=div.scrollTop();
        var pages=0;
        while (pos!=div.scrollTop() || pages==0)
        {
            pos=div.scrollTop();
            div.scrollTop(div.scrollTop()+pix);
            pages++;
        }
        div.scrollTop(0);
        displayNumbers(pages);
        return (pages);
    }
}
