/*
* Key Setup, save each keypress into an array
* @author: Joseph 'Pcjoe' Florencio
* @date: 12-03-05
*/

// Allocate new array to hold keys and set all to false
var keys =new Array(256)
for(i=0;i<256;i++)
{	keys[i] = false;
}

// Key down callback
function keydown(e)
{   var x = false;
	if (!e) var e = window.event;
	if (e.keyCode) x = e.keyCode;
	else if (e.which) x = e.which;
	if(x)
	{  keys[x] = true;
	}
}
// Key up callback
function keyup(e)
{   var x = false;
	if (!e) var e = window.event;
	if (e.keyCode) x = e.keyCode;
	else if (e.which) x = e.which;
	if(x)
	{  keys[x] = false;
	}
}
// Setup callbacks
document.onkeydown = keydown;
document.onkeyup = keyup;

/*
* Key and direction
*/
// Key constants
KEY_AUP = 38;
KEY_ADOWN = 40;
KEY_ALEFT = 37;
KEY_ARIGHT = 39;
KEY_A_W = 87;
KEY_A_A = 65;
KEY_A_S = 83;
KEY_A_D = 68;

// Direction constants
DIR_FRONT = 0;
DIR_FRONTLEFT = 1;
DIR_FRONTRIGHT = 2;
DIR_BACK = 3;
DIR_BACKLEFT = 4;
DIR_BACKRIGHT = 5;
DIR_LEFT = 6;
DIR_RIGHT = 7;


// Get directional vector from key presses
function getVectorFromKeys()
{
    var vecDir = new Vector();
	if(keys[KEY_ARIGHT] || keys[KEY_A_D])
	{	vecDir.addVectorXY(1,0);
	}
	if(keys[KEY_ALEFT] || keys[KEY_A_A])
	{	vecDir.subVectorXY(1,0);
	}
	if(keys[KEY_AUP] || keys[KEY_A_W])
	{	vecDir.subVectorXY(0,1);
	}
	if(keys[KEY_ADOWN] || keys[KEY_A_S])
	{	vecDir.addVectorXY(0,1);
	}
	vecDir.normalizeVector();
	return vecDir;
}
