﻿ScrollManager = function() {
}

ScrollManager.prototype = {
    elementId: null,

    scrollToElement: function() {
        if (this.elementId) {
            var el = document.getElementById(this.elementId);
            if (el != null)
                $.scrollTo(el, 800)
                //el.scrollIntoView(true);
            this.elementId = null;
        }
    }
}

ScrollManager.getInstance = function() {
    if (!ScrollManager.instance)
        ScrollManager.instance = new ScrollManager();
    return ScrollManager.instance;
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
    function(sender, args) {
        ScrollManager.getInstance().scrollToElement();
    }
);

// -------------------------------------------------------------------

// Scrolls to top of a page...

var goto_top_type = -1;
var goto_top_itv = 0;

function goto_top_timer()
{
    var y = goto_top_type == 1 ? document.documentElement.scrollTop : document.body.scrollTop;
    
    var moveby = 15; // set this to control scroll seed. minimum is fast

    y -= Math.ceil(y * moveby / 100);
    if (y < 0)
    y = 0;

    if (goto_top_type == 1)
        document.documentElement.scrollTop = y;
    else
    document.body.scrollTop = y;

    if (y == 0) 
    {
        clearInterval(goto_top_itv);
        goto_top_itv = 0;
    }
}

function goto_top()
{
    if (goto_top_itv == 0)
    {
        if (document.documentElement && document.documentElement.scrollTop)
            goto_top_type = 1;
        else if (document.body && document.body.scrollTop)
            goto_top_type = 2;
        else
            goto_top_type = 0;

        if (goto_top_type > 0)
            goto_top_itv = setInterval('goto_top_timer()', 25);
    }
}

// Scrolls to bottom of a page...

var goto_bottom_type = -1;
var goto_bottom_itv = 0;

function goto_bottom_timer() {
    var y = goto_bottom_type == 1 ? document.documentElement.scrollBottom : document.body.scrollBottom;
    
    var moveby = 15; // set this to control scroll seed. minimum is fast

    y += Math.ceil(y * moveby / 100);
    if (y < 0)
        y = 0;

    if (goto_bottom_type == 1)
        document.documentElement.scrollBottom = y;
    else
        document.body.scrollBottom = y;

    if (y == 0) {
        clearInterval(goto_bottom_itv);
        goto_bottom_itv = 0;
    }
}

function goto_bottom() {
    if (goto_bottom_itv == 0) {
        if (document.documentElement && document.documentElement.scrollBottom)
            goto_bottom_type = 1;
        else if (document.body && document.body.scrollBottom)
            goto_bottom_type = 2;
        else
            goto_bottom_type = 0;

        if (goto_bottom_type > 0)
            goto_bottom_itv = setInterval('goto_bottom_timer()', 25);
    }
}

if (typeof (Sys) !== 'undefined')
    Sys.Application.notifyScriptLoaded();
