﻿                function StartCount(digits, speed, startValue)
                {
                    setNumber(startValue, digits);
                    timePassed(digits, speed, new Date().getTime(), startValue);
                }
                
                function timePassed(digits, speed, dateStarted, startValue)
                {
                    var timeElapsed = new Date().getTime() - dateStarted;
                    var amountAdded = Math.floor(timeElapsed / speed);
                    var currentValue = startValue + amountAdded;
                    animateNumber(currentValue, digits);
                    
                    setTimeout("timePassed(" + arrayToString(digits) + ", " + speed + ", " + dateStarted + ", " + startValue + ")", speed);
                }
                
                function arrayToString(arr)
                {
                    var strArr = "[\"";
                    for(var i = 0; i<arr.length-1; i++)
                    {
                        strArr += arr[i] + "\",\"";
                    }
                    strArr += arr[arr.length-1] + "\"]";
                    return strArr;
                }
                
                function setNumber(number, digits)
                {
                    var strNumber = number + "";
                    var zeros = digits.length - strNumber.length;
                    
                    for(var i = 0; i<digits.length; i++)
                    {
                        
                        var digitContainer = document.getElementById(digits[i]).getElementsByTagName('div')[0];
                                                
                        if(i < zeros)
                        {
                            digitContainer.innerHTML = "0";
                        }
                        else
                        {
                            digitContainer.innerHTML = strNumber.charAt(i - zeros);
                        }
                    }
                }
                
                function animateNumber(number, digits)
                {
                    var strNumber = number + "";
                    var zeros = digits.length - strNumber.length;
                    for(var i = 0; i<digits.length; i++)
                    {
                        var digitContainer = document.getElementById(digits[i]).getElementsByTagName('div')[0];
                        
                        if(i < zeros)
                        {
                            digitContainer.innerHTML = "0";
                        }
                        else
                        {
                            var oldValue = digitContainer.innerHTML;
                            var newValue = parseInt(strNumber.charAt(i - zeros));
                            if(newValue != oldValue)
                                animateNew(i, newValue, digits[i]);
                        }
                    }
                }
                
                function animateNew(digitIndex, newValue, digitContainer)
                {
                    var digitNew = document.getElementById(digitContainer).getElementsByTagName('div')[1]; //document.getElementById("digitNew" + digitIndex);
                    digitNew.innerHTML = newValue;
                    rollUp(digitIndex, 0, digitContainer);
                    
                }
                
                function rollUp(digitIndex, currentPosition, digitContainer)
                {
                    var digit = document.getElementById(digitContainer);
                    if(currentPosition == -17)
                    {
                        var digitCurrent = document.getElementById(digitContainer).getElementsByTagName('div')[0];
                        var digitNew = document.getElementById(digitContainer).getElementsByTagName('div')[1];
                        digitCurrent.innerHTML = digitNew.innerHTML;
                        digit.style.top = 0 + "px";
                    }
                    else
                    {
                        digit.style.top = currentPosition - 1 + "px";
                        setTimeout("rollUp(" + digitIndex + ", " + (currentPosition-1) + ", \"" + digitContainer + "\");", 75);
                    }
                }