﻿function ScrollText(content, btnPrevious, btnNext, autoStart, timeout, isSmoothScroll) {
    this.Speed = 5;
    this.Timeout = timeout;
    this.stopscroll = false;
    this.isSmoothScroll = isSmoothScroll;
    this.LineHeight = 20;
    this.NextButton = this.$(btnNext);
    this.PreviousButton = this.$(btnPrevious);
    this.ScrollContent = this.$(content);
    this.ScrollContent.innerHTML += this.ScrollContent.innerHTML;

    if (this.PreviousButton) {
        this.PreviousButton.onclick = this.GetFunction(this, "Previous");
        this.PreviousButton.onmouseover = this.GetFunction(this, "MouseOver");
        this.PreviousButton.onmouseout = this.GetFunction(this, "MouseOut");
    }
    if (this.NextButton) {
        this.NextButton.onclick = this.GetFunction(this, "Next");
        this.NextButton.onmouseover = this.GetFunction(this, "MouseOver");
        this.NextButton.onmouseout = this.GetFunction(this, "MouseOut");
    }
    this.ScrollContent.onmouseover = this.GetFunction(this, "MouseOver");
    this.ScrollContent.onmouseout = this.GetFunction(this, "MouseOut");

    if (autoStart) {
        //this.Start();
    }
}

ScrollText.prototype = {

    $: function(element) {
        return document.getElementById(element);
    },
    Previous: function() {
        this.stopscroll = true;
        this.Scroll("up");
    },
    Next: function() {
        this.stopscroll = true;
        this.Scroll("down");
    },
    Start: function() {
        if (this.isSmoothScroll) {
            this.AutoScrollTimer = setInterval(this.GetFunction(this, "SmoothScroll"), this.Timeout);
        }
        else {
            this.AutoScrollTimer = setInterval(this.GetFunction(this, "AutoScroll"), this.Timeout);
        }
    },
    Stop: function() {
        clearTimeout(this.AutoScrollTimer);
        this.DelayTimerStop = 0;
    },
    MouseOver: function() {
        this.stopscroll = true;
    },
    MouseOut: function() {
        this.stopscroll = false;
    },
    AutoScroll: function() {
        if (this.stopscroll) {
            return;
        }
        this.ScrollContent.scrollTop++;
        if (parseInt(this.ScrollContent.scrollTop) % this.LineHeight != 0) {
            this.ScrollTimer = setTimeout(this.GetFunction(this, "AutoScroll"), this.Speed);
        }
        else {
            if (parseInt(this.ScrollContent.scrollTop) >= parseInt(this.ScrollContent.scrollHeight) / 2) {
                this.ScrollContent.scrollTop = 0;
            }
            clearTimeout(this.ScrollTimer);
            //this.AutoScrollTimer = setTimeout(this.GetFunction(this,"AutoScroll"), this.Timeout);
        }
    },
    SmoothScroll: function() {
        if (this.stopscroll) {
            return;
        }
        this.ScrollContent.scrollTop++;
        if (parseInt(this.ScrollContent.scrollTop) >= parseInt(this.ScrollContent.scrollHeight) / 2) {
            this.ScrollContent.scrollTop = 0;
        }
    },
    Scroll: function(direction) {

        if (direction == "up") {
            this.ScrollContent.scrollTop--;
        }
        else {
            this.ScrollContent.scrollTop++;
        }
        if (parseInt(this.ScrollContent.scrollTop) >= parseInt(this.ScrollContent.scrollHeight) / 2) {
            this.ScrollContent.scrollTop = 0;
        }
        else if (parseInt(this.ScrollContent.scrollTop) <= 0) {
            this.ScrollContent.scrollTop = parseInt(this.ScrollContent.scrollHeight) / 2;
        }

        if (parseInt(this.ScrollContent.scrollTop) % this.LineHeight != 0) {
            this.ScrollTimer = setTimeout(this.GetFunction(this, "Scroll", direction), this.Speed);
        }
    },
    GetFunction: function(variable, method, param) {
        return function() {
            variable[method](param);
        }
    }
}

function ignoreError() {
    return true;
}
window.onerror = ignoreError; 
