﻿function pausescroller(divobj, _width, _height, _delayShort, _delayLong, _stripe)
{
    divobj.style.width = _width;
    divobj.style.height = _height;
    this.ctlheight = _height;                
    this.tickerdiv = divobj;
    
    this.items = GUtil.ElemSByClass('scrollitem', this.tickerdiv, '*' );
    
    this.stripe = _stripe; //한번에 쉬지않고 스크롤하는 Item 갯수
    this.curStripe = 0;
    this.curTopItemIdx = 0;                
    this.delayShort = _delayShort; //최초 움직이기 전까지 딜레이
    this.delayLong = _delayLong; 
    this.mouseoverBol = 0; //0일때(onmouseout) 움직이고 1일때(onmouseover) 멈춤                 
         
    var scrollerinstance = this;
    if (window.addEventListener) window.addEventListener("load", function(){ scrollerinstance.initialize(); }, false); //run onload in DOM2 browsers
    else if (window.attachEvent) window.attachEvent("onload", function(){ scrollerinstance.initialize(); } );//run onload in IE5.5+
    else if (document.getElementById) setTimeout(function(){ scrollerinstance.initialize(); }, 0) ;//if legacy DOM browsers, just start scroller after 0.5 sec
}

pausescroller.prototype.initialize = function()
{   
    this.ReArrangeItems(this.items);
    var scrollerinstance=this;
    this.tickerdiv.onmouseover = function() { scrollerinstance.mouseoverBol = 1; }; //pause                
    this.tickerdiv.onmouseout = function() { scrollerinstance.mouseoverBol = 0; }; //continue
    
    if (window.attachEvent) //Clean up loose references in IE
        window.attachEvent("onunload", function(){ scrollerinstance.tickerdiv.onmouseover = scrollerinstance.tickerdiv.onmouseout = null;} );
   
    if(this.ctlheight < this.ItemHeightSum) //내용div의 합보다 외곽 div의 높이보다 클때만 animation 이벤트 발생.
        setTimeout( function(){ scrollerinstance.animateup(); }, 0);
}


pausescroller.prototype.animateup = function()
{
    var scrollerinstance = this;
    var nextcur = (this.curTopItemIdx + 1) % this.items.length; //두번째 div
    
    if ( parseInt(this.items[nextcur].style.top) > 0 )
    {                    
        if(scrollerinstance.mouseoverBol==0)
        {
            for(var i=0; i<this.items.length; i++)  this.items[i].style.top = parseInt( this.items[i].style.top ) - 1 + "px";
        }                    
        setTimeout( function(){ scrollerinstance.animateup(); }, this.delayShort);
    }
    else
    {
        this.ReArrangeItems(nextcur);
        this.curStripe = (this.curStripe+1)%this.stripe;
        
        if(this.curStripe==0)
            setTimeout( function(){ scrollerinstance.animateup(); }, this.delayLong);
        else
            setTimeout( function(){ scrollerinstance.animateup(); }, this.delayShort);
    }
}

pausescroller.prototype.ReArrangeItems = function(newTopItemNumber)
{
    if(newTopItemNumber != 'undefined' && newTopItemNumber != null && (typeof newTopItemNumber == "Number" || typeof newTopItemNumber == "number") )
        this.curTopItemIdx = newTopItemNumber;
    
    for(var k =0; k<this.items.length; k++) this.items[k].style.position = 'absolute';
            
    var cur = this.curTopItemIdx;
    var curH = 0;
    
    this.curTopItemIdx = this.curTopItemIdx % this.items.length;
    for(var k = 0; k<this.items.length; k++)
    {                    
        cur = (this.curTopItemIdx + k)%this.items.length;   
        this.items[cur].style.top = curH;
        curH += this.items[cur].offsetHeight;                    
    }
    
    this.ItemHeightSum = curH;
}