var debug = false;
var canvas = null;
var ctx = null;
var bufferContext = null;
var gameLoop = null;
var gameSpeed = 10; // Milliseconds 
var gameTime = 0;
var startTime = 0;
var matchTime = 99;

var frameRate = null;
// var frameTime = 0;
//var frameRate = 60;
//var frameCount = 0;

var tick = 0;
var tickCount = 0;
var lastTick = -1;
var tickTime = null;

var canvasWidth = 800;
var canvasHeight = 300;

var player1 = null;
var player2 = null;

var keys = {};                    // Key activation list
var keyMapper = null;       // User key input mapping object

var collision = new Collision();

var mainMessage = new Message();
var timeCounter = new TimeCounter();

var OPTIONS = {};
OPTIONS.showFps = true;

function init(){
    
    mainMessage.setMessage("Fight!");
    mainMessage.displayMessage();
    
    timeCounter.init();
    timeCounter.run();
    
    // Canvas Initialization
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");
    
    bufferContext = document.getElementById("buffer").getContext("2d");
    
    frameRate = new FrameRate();
    frameRate.init( { show: OPTIONS.showFps } );
        
    // Initialize Player 1
    player1 = new Player();
    player1.init({
        name: "Eddy",
        actorID: "player1",
        bufferID: "pa1",
        animationInfo: { spriteMapLayout: "spriteHash_Ryu"  },
        width: 110,
        height: 110,
        position:{ x: 275, y: 130 }
    });
    
    
     // Initialize Player 2
    player2 = new Player();
    player2.init({
        name: "dummy",
        actorID: "player2",
        bufferID: "pa2",
        direction: "west",
        animationInfo: { spriteMapLayout: "spriteHash_Ken"  },
        width: 110,
        height:110,
        position:{ x: 410, y: 130 }
    });
    
    // Set the time our game started
    startTime = (new Date()).getTime();
    
    keys = {};
    keyMapper = new KeyMapper();
    initInputListeners();
    
    gameLoop = setInterval( run, gameSpeed );    
    
}

function run(){ 
    
    process_input(keys);
    //collision.check( player1, player2 );
    draw();
    
}

function draw(){    
    
    tick++;
    tickTime = (new Date()).getTime();
    frameRate.calculate();
    
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");
    
    ctx.clearRect(0,0, canvasWidth, canvasHeight);
    
	 if( player1.getPosition().x < player2.getPosition().x  ){
        player1.setDirection("east");
        player2.setDirection("west");
    }
    else{
        player1.setDirection("west");
        player2.setDirection("east");
    }
	
    player2.animate();
    player1.animate();    
    
    ctx.save();
    var buff = document.getElementById( player1.getBufferID() );
    ctx.drawImage( buff, player1.getPosition().x, player1.getPosition().y  );
    ctx.restore();
    
    if( player1.isJumping ) player1.doJump();
    
    ctx.save();
    var buff = document.getElementById( player2.getBufferID() );
    ctx.drawImage( buff, player2.getPosition().x, player2.getPosition().y  );
    ctx.restore();
    
    if( player2.isJumping ) player2.doJump();
    
    
                
}

