var visualQueue = new Array();
function getTimer()
{
        var visualTimer = new Date();
        return visualTimer.getTime();
        return ms;
}

function addVisualEffect(effectString,startValue,stopValue,effectTime)
{
  newPos = visualQueue.length;
  for(i=0; i<visualQueue.length; i++)
  {
        if(visualQueue[i][0]==effectString)
        {
                newPos=i;
                i = visualQueue.length;
        }
  }
  startTime=getTimer();
  visualQueue[newPos] = [effectString,startValue,stopValue,startTime,effectTime,true];
}

function doVisual(visualWait)
{
        currentTime = getTimer();
        for(i=0; i<visualQueue.length; i++)
        {
                if((visualQueue[i][5]))
                {
                        relVal = (currentTime-visualQueue[i][3])/visualQueue[i][4];
                        if(relVal>1)
                        {
                                relVal=1;
                                visualQueue[i][5]=false;
                        }
                        newVal = ((visualQueue[i][2] - visualQueue[i][1]) * relVal)+visualQueue[i][1];
                        try{
                        eval(visualQueue[i][0].replace("%%", newVal));
                        }
                        catch (e)
                        {
                        }
                }
        }
        setTimeout('doVisual('+visualWait+')',visualWait);
}
doVisual(10);

