/* Javascript Document
 *
 *	Created by fire.crow@firecrow.com 2009
 */

(function(){
    
    if(!window.com) window.com = {};
    if(!window.com.firecrow) window.com.firecrow = {}; 
    var path = window.com.firecrow;
    var alert = function(message)
    {
        if(path.alert) path.alert(message);
        else window.alert(message);
    }

    function BasicAnim(node)
    { 
        this.node = node;
        this._timeout = null;
    }
    
    BasicAnim.prototype._animIncrement = function()
    {
        this._currentValue += this._incrementValue;
        this._setValue(this._currentValue); 
        this._checkStatus(); 
    }
    
    BasicAnim.prototype._setValue = function(value)
    {
        alert('override me' + value);
    }

    BasicAnim.prototype._checkStatus = function()
    {
        if(
            ((this._incrementValue > 0) && ((this._currentValue += this._incrementValue) >= this._endValue))
            ||
            ((this._incrementValue < 0) && ((this._currentValue += this._incrementValue) <= this._endValue))
        )
        {
            this._currentValue = this._endValue;
            this._setValue(this._currentValue); 
            this._animInProcess = false;
            clearTimeout(this._timeout);
            this._timeout = null;
            return;
        }

        var anim = this;
        var callIt = function()
        {
            anim._animIncrement();
        }
        this._timeout = setTimeout(callIt,anim._increment * 1000);
    }
    
    BasicAnim.prototype.start = function(startValue,endValue,duration,increment)
    {
        if(this._animInProcess) return;

        this._startValue = startValue;
        this._endValue = endValue;
        this._duration = duration;
        this._increment = increment;
        
        this._currentValue = startValue;
        this._animInProcess = true;
        
        this._animSetup();
        this._animIncrement();
    }
    
    BasicAnim.prototype.stop = function()
    {
        if(this._animInProcess)
        {
            clearTimeout(this._timeout);
            this._animInProcess = false;
        }
    }

    BasicAnim.prototype._animSetup = function()
    {
        this._incrementValue = (this._endValue - this._startValue) / (this._duration / this._increment );
    }
    
    if(!window.com) window['com'] = {}; 
    if(!window.com.firecrow) window.com['firecrow'] = {};
    window.com.firecrow['BasicAnim'] = BasicAnim;

})();

