﻿/*
INDECA js Motions
*/
var attr;
var el;
var time;
var steps = 0;
var stepsDone = 0;

function setTween(_object, _attr, _time, _delay, _transition, _first)
{
    if(_first == null)
    {
        setTimeout(function() { setTween(_object, _attr, _time, _delay, _transition, false); }, _delay*1000);
    }
    else
    {
        attr = _attr;
        
        el = _object;
        
        steps = (_time*1000)/20;
        for(var i = 0; i < attr.length; i++)
        {
            var kvp = attr[i].split(":");
            updateAttr(kvp[0], kvp[1], steps, 0);
        }
    }
}

function updateAttr(_attr, _val, _steps, _stepsDone)
{
    var newVal;
    var oldVal;
    switch(_attr)
    {
        case "display":
        {
            el.style.display = _val;
            break;
        }    
        case "opacity":
        {
            if(navigator.appName == "Netscape")
            {
                oldVal = el.style.opacity;
            }
            else
            {
                oldVal = parseFloat(el.style.filter.replace("alpha(opacity=", "").replace(")", ""))/100;
            }
            //if(oldVal == "")
            //{
            //    oldVal = 1;
            //}
            newVal = parseFloat(oldVal) + parseFloat((_val - oldVal)/_steps)*(_stepsDone+1);
            if(navigator.appName == "Netscape")
            {
                el.style.opacity = newVal;
            }
            else
            {
                el.style.filter = "alpha(opacity=" + (newVal*100) + ")";
            }
            break;
        }            
        default:
        {
            oldVal =  el.style[_attr].replace("px", "");
            if(oldVal == "")
                oldVal = 0;
            newVal = parseFloat(oldVal) + parseFloat((_val - oldVal)/_steps)*(_stepsDone+1);
            el.style[_attr] = newVal + "px";
            break;
        }  
    }
    _stepsDone++;
    if(_stepsDone < _steps)
    {
        setTimeout(function() { updateAttr(_attr, _val, _steps, _stepsDone) }, 20);
    }
}