
function game_loop()
{
    // Update collision objects every other second
    if(!(engine.time % 2000))
        collisions.update();
    
    engine.player.update();
    
    var t = engine.time;
    
    setTimeout(game_loop, 20 - (engine.time - engine.lastTime));
    engine.lastTime = engine.time;
}

function loadAngelGame()
{
    var func = arguments.callee;
    
    function doRest() {
        
        var condition = false;
        
        if(!window.Engine)
            condition = true;
        else if(!window.Collisions)
            condition = true;
        else if(!window.Animation)
            condition = true;
        else if(!window.Player)
            condition = true;
        else if(!window.engine) {
            
            window.engine = new Engine();
            window.collisions = new Collisions();
            condition = true;
        }
        else if(window.engine && !window.engine.isDone())
            condition = true;
        
        if(condition) {
            
            setTimeout(func, 33);
            return;
        }
        
        window.engine.player = new Player();
        
        setTimeout(function()
        {
            window.engine.startTimer();
            game_loop();
        }, 1000);
    }
    
    doRest();
}

var engine = null;

if(!window.doc)
    window.doc = {add_onLoad:function(f){f()}};

doc.add_onLoad(loadAngelGame);
