function GetOS() {
	var OSName="Unknown OS";
	if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
	if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
	if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
	return OSName;
}

function KeyName(key) {
	if ((key >= 65 && key <= 90) || (key >= 48 && key <= 57)) {
		return String.fromCharCode(key);
	}
	else if (key >= 112 && key <= 123) { // F-keys
		return "F"+(key-111);
	}
	else if (key >= 16 && key <= 18) { // shift,ctrl,alt
		return '';
	}
	else if (key >= 96 && key <= 105) { // Num-..numbers
		return "NUM"+(key-96);
	}
	else {
		switch(key) {
			case 32: return "SPACE";
			case 8: return "BACKSPACE";
			case 9: return "TAB";
			case 13: return "RETURN";
			case 20: return "CAPSLOCK";
			case 107: return "PLUS"; // mozilla
			case 187: return "PLUS"; // IE
			case 109: return "MINUS"; // mozilla
			case 189: return "MINUS"; // ie
			case 188: return "COMMA";
			case 190: return "PERIOD";
			case 59: return "COLON"; // mozilla
			case 186: return "COLON"; // ie
			case 191: return "SLASH";
			case 192: return "GRAVE";
			case 219: return "LBOXBRACKET";
			case 221: return "RBOXBRACKET";
			case 220: return "BACKSLASH";
			case 222: return "QUOTE";
			case 145: return "SCROLLLOCK";
			case 19: return "PAUSE";
			case 33: return "PAGEUP";
			case 34: return "PAGEDOWN";
			case 35: return "END";
			case 36: return "HOME";
			case 45: return "INSERT";
			case 46: return "DELETE";
			case 37: return "LEFT";
			case 38: return "UP";
			case 39: return "RIGHT";
			case 40: return "DOWN";
			case 107: return "NUMADD";
			case 109: return "NUMSUB";
			case 111: return "NUMDIV";
			case 106: return "NUMMUL";
			case 110: return "NUMDEC";
			case 27: return "ESC";
			case 91: return "WIN";
			case 93: return "APPS";
			default:
				return "unknown["+key+']';
		};
	}
}

function Hotkey(obj, event) {
	if (event.preventDefault) event.preventDefault();
	if (event.stopPropagation) event.stopPropagation();
	var kc = KeyName(event.keyCode);
	var hk = '';
	if (GetOS() == 'Windows') {
		if (event.shiftKey) hk += 'LSHIFT+';
		if (event.ctrlKey) hk += 'LCONTROL+';
		if (event.altKey) hk += 'LALT+';
	}
	else if (GetOS() == 'MacOS') {
		if (event.shiftKey) hk += 'SHIFT+';
		if (event.ctrlKey) hk += 'CONTROL+';
		if (event.altKey) hk += 'OPTION+';
		if (event.metaKey) hk += 'COMMAND+';
	}
	else if (GetOS() == 'UNIX') {
		if (event.shiftKey) hk += 'SHIFT+';
		if (event.ctrlKey) hk += 'CONTROL+';
		if (event.altKey) hk += 'MOD1+';
		if (event.metaKey) hk += 'MOD2+';
	}
	hk += kc;
	obj.value = hk;
	return false;
}

