	var specialKeys = [
			{ code: 8, key:'BACKSPACE', state: false },
			{ code: 9, key:'TAB', state: false },
			{ code: 13, key:'RETURN', state: false },
			{ code: 27, key:'ESC', state: false },
			{ code: 37, key:'LEFT', state: false },
			{ code: 38, key:'UP', state: false },
			{ code: 39, key:'RIGHT', state: false },
			{ code: 40, key:'DOWN', state: false },
			{ code: 46, key:'DELETE', state: false },
			{ code: 36, key:'HOME', state: false },
			{ code: 35, key:'END', state: false },
			{ code: 33, key:'PAGEUP', state: false },
			{ code: 34, key:'PAGEDOWN', state: false },
			{ code: 32, key:'SPACE', state: false },
			{ code: 17, key:'CTRL', state: false },
			{ code: 18, key:'ALT', state: false },
			{ code: 16, key:'SHIFT', state: false },
			{ code: 20, key:'CAPSLOCK', state: false },
			{ code: 45, key:'INSERT', state: false },
			{ code: 19, key:'PAUSE', state: false },
			{ code: 112, key:'F1', state: false }, // Minden böngészőben foglalt
			{ code: 113, key:'F2', state: false }, // Foglalt: Opera
			{ code: 114, key:'F3', state: false }, // Foglalt: Opera
			{ code: 115, key:'F4', state: false }, // Foglalt: Opera
			{ code: 116, key:'F5', state: false }, // Minden böngészőben foglalt
			{ code: 117, key:'F6', state: false },
			{ code: 118, key:'F7', state: false }, // Foglalt: FireFox, Opera
			{ code: 119, key:'F8', state: false }, // Foglalt: Opera
			{ code: 120, key:'F9', state: false }, 
			{ code: 121, key:'F10', state: false }, 
			{ code: 122, key:'F11', state: false },// Minden böngészőben foglalt
			{ code: 123, key:'F12', state: false } // (Foglalt: FireFox - csak ha a FireBug kiterjesztés fent van)
		];



	Object.extend(Math,{
		
		AngleFromVectors : function(e1,e2,getToRadian,isSVG){
			var x1 = e1[0], y1 = e1[1];
			var x2 = e2[0], y2 = e2[1];
			var a = Math.sqrt( Math.pow((x2-x1),2) + Math.pow((y2-y1),2) );	
			var angle = Math.asin( Math.abs(y2-y1)/a );
			
			if (!getToRadian)
			{
				var angle = angle * (180 / Math.PI);
			}
			
			if (!isSVG) {
				// Meghatározzuk, melyik síknegyedben van, és aszerint adjuk vissza az értéket
				// # x2 >= x1 && y2 < y1 ----> Első síknegyed, nem bántjuk a szöget
				if (x2 <= x1 && y2 < y1) {
					angle = 180 - angle;
				}
				if (x2 <= x1 && y2 >= y1) {
					angle = 180 + angle;
				}
				if (x2 > x1 && y2 > y1) {
					angle = 360 - angle;
				}
			} else {
				if (x2 <= x1 && y2 < y1) {
					angle = angle;
				}
				if (x2 > x1 && y2 <= y1) {
					angle = 180 - angle;
				}
				if (x2 >= x1 && y2 > y1) {
					angle = 180 + angle;
				} 
				if (x2 < x1 && y2 >= y1) {
					angle = 360 - angle;
				}
			}
			return angle==360 ? 0 : angle;
			
		},
		
		
		vectorLength : function(e1,e2){
			return Math.sqrt(Math.pow((parseInt(e2[0]) - parseInt(e1[0])), 2) + Math.pow((parseInt(e2[1]) - parseInt(e1[1])), 2));				
		},
		
		vectorDiv : function(D){
			/*
			{
				A:  x1,y1
				B:  x2,y2
				F:  fix.x, fix.y
				dist: distance				
			}
			*/
			var gamma = D.dist;
			
			var delta = Math.vectorLength(D.A,D.B);			
			var fi = Math.vectorLength([D.F[0],D.F[1]],D.A);
			var alpha = fi+D.dist;
			var beta = delta-alpha;

			var Ex = ( (beta*D.A[0]) + (alpha*D.B[0]) ) / (alpha+beta);
			var Ey = ( (beta*D.A[1]) + (alpha*D.B[1]) ) / (alpha+beta);
			
			return [Ex,Ey];
		}	
		
	});
	
	
	Number.prototype.toFixed = function(fractionDigits)
	{
   		var m = Math.pow(10,fractionDigits);
   		return Math.round(this*m,0)/m;
	}