function NvScroll() {
    this.version = "0.2";
    this.name = "NvScroll";
    this.item = new Array();
    this.itemcount = 0;
    this.currentspeed = 0;
    this.scrollspeed = 50;
    this.pausedelay = 1000;
    this.pausemouseover = false;
    this.stop = false;
    this.type = 1;
    this.height = 100;
    this.width = 100;
    this.stopHeight=0;
    this.i=0;

    this.add = function () {
        var text = arguments[0];
        this.item[this.itemcount] = text;
        this.itemcount = this.itemcount + 1;
    };

    this.add2 = function () {
        var url = arguments[0];
        var title = arguments[1];
        this.item[this.itemcount] = "<a href=" + url + ">" + title + "</a>";
        this.itemcount = this.itemcount + 1;
    };

    this.start = function () {
        if ( this.itemcount == 1 ) {
            this.add(this.item[0]);
        }
        this.display();
        this.currentspeed = this.scrollspeed;
        if ( this.type == 1 || this.type == 2 ) {
            this.stop = true;
            setTimeout(this.name+'.scroll()',this.currentspeed);
            window.setTimeout(this.name+".stop = false", this.pausedelay);
        } else if ( this.type == 3 ) {
            this.stop = true;
            setTimeout(this.name+'.rolling()',this.currentspeed);
            window.setTimeout(this.name+".stop = false", this.pausedelay);
        }
    };

    this.display = function () {
        document.write('<div id="'+this.name+'" style="height:'+this.height+'; width:'+this.width+'; position:relative; overflow:hidden; " OnMouseOver="'+this.name+'.onmouseover(); " OnMouseOut="'+this.name+'.onmouseout(); ">');
        for(var i = 0; i < this.itemcount; i++) {
            if ( this.type == 1 ) {
                document.write('<div id="'+this.name+'item'+i+'"style="left:0px; width:'+this.width+'; position:absolute; top:'+(this.height*i)+'px; ">');
                document.write(this.item[i]);
                document.write('</div>');
            } else if ( this.type == 2 || this.type == 3 ) {
                document.write('<div id="'+this.name+'item'+i+'"style="left:'+(this.width*i)+'px; width:'+this.width+'; position:absolute; top:0px; ">');
                document.write(this.item[i]);
                document.write('</div>');
            }
        }
        document.write('</div>');
    };

    this.scroll = function () {
        if ( this.pause == true ) {
            window.setTimeout(this.name+".scroll()",this.pausedelay);
            this.pause = false;
        } else {
            this.currentspeed = this.scrollspeed;
            if ( !this.stop ) {
                for (i = 0; i < this.itemcount; i++) {
                    obj = document.getElementById(this.name+'item'+i).style;
                        if ( this.type == 1 ) {
                            obj.top = parseInt(obj.top) - 1;
                            if ( parseInt(obj.top) <= this.height * (-1) ) obj.top = this.height * (this.itemcount-1);
                            if ( parseInt(obj.top) == 0 ) this.currentspeed = this.pausedelay;
                        } else if ( this.type == 2 ) {
                            obj.left = parseInt(obj.left) - 1;
                            if ( parseInt(obj.left) <= this.width * (-1) ) obj.left = this.width * (this.itemcount-1);
                            if ( parseInt(obj.left) == 0 ) this.currentspeed = this.pausedelay;
                        }
                }
            }
            window.setTimeout(this.name+".scroll()",this.currentspeed);
        }
    };

    this.rolling = function () {
        if ( this.stop == false  ) {
            this.next();
        }
        window.setTimeout(this.name+".rolling()",this.scrollspeed);
    }

    this.onmouseover = function () {
        if ( this.pausemouseover ) {
            this.stop = true;
        }
    };

    this.onmouseout = function () {
        if ( this.pausemouseover ) {
            this.stop = false;
        }
    };

    this.next = function() {
        for (i = 0; i < this.itemcount; i++) {
            obj = document.getElementById(this.name+'item'+i).style;
            if ( parseInt(obj.left) < 1 ) { 
                width = this.width + parseInt(obj.left);
                break;
            }
        }
        for (i = 0; i < this.itemcount; i++) {
            obj = document.getElementById(this.name+'item'+i).style;
            if ( parseInt(obj.left) < 1 ) { 
                obj.left = this.width * (this.itemcount-1);
            } else {
                obj.left = parseInt(obj.left) - width;
            }
        }
    }

    this.prev = function() {
        for (i = 0; i < this.itemcount; i++) {
            obj = document.getElementById(this.name+'item'+i).style;
            if ( parseInt(obj.left) < 1 ) { 
                width = parseInt(obj.left) * (-1);
                break;
            }
        }
        if ( width == 0 ) {
            total_width = this.width * (this.itemcount-1);
            for (i = 0; i < this.itemcount; i++) {
                obj = document.getElementById(this.name+'item'+i).style;
                    if ( parseInt(obj.left) + 1 > total_width ) { 
                    obj.left = 0;
                } else {
                    obj.left = parseInt(obj.left) + this.width;
                }
            }
        } else {
            for (i = 0; i < this.itemcount; i++) {
                obj = document.getElementById(this.name+'item'+i).style;
                if ( parseInt(obj.left) < 1 ) { 
                    obj.left = 0;
                } else {
                    obj.left = parseInt(obj.left) + width;
                }
            }
        }
    }

    this.unext = function () {
        this.onmouseover();
        this.next();
        window.setTimeout(this.name+".onmouseout()",this.pausedelay);
    }

    this.uprev = function () {
        this.onmouseover();
        this.prev();
        window.setTimeout(this.name+".onmouseout()",this.pausedelay);
    }
}
