var keyCodes = {
	"left":37,
	"right":39,
	"up":38,
	"down":40,
	"plus":187,
	"minus":189,
	"enter":13,
	"space":32,
	"c":67,
	"esc":27,
	"backspace":8,
	"x":88
};

function setupKeyboardCommands() {
	$(document).keydown(function(e) {
		// If an item is open
		var key = e.keyCode ? e.keyCode : e.which;
		if($(".item:not(:hidden)").length) {
			//console.log("KEY PRESSED ("+key+"), ITEM OPEN.");
			switch(key) {
				case keyCodes.left:
					var currentItem = getCurrentItem();
					var currentImageNav = $(".imageNavItem.selected", currentItem);
					goToID = $(".imageNavItem", currentItem).index(currentImageNav)-1;
					currentItem.goToImage(goToID);
					break;
				case keyCodes.right:
					var currentItem = getCurrentItem();
					var currentImageNav = $(".imageNavItem.selected", currentItem);
					goToID = $(".imageNavItem", currentItem).index(currentImageNav)+1;
					currentItem.goToImage(goToID);
					break;
				case keyCodes.up:
				case keyCodes.minus:
					getCurrentItem().closeDescription();
					break;
				case keyCodes.down:
				case keyCodes.plus:
					getCurrentItem().openDescription();
					break;
				case keyCodes.enter:
					if($(".title a", getCurrentItem()).length) {
						window.location = $(".title a", getCurrentItem()).attr("href");
					}
					break;
				case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57:
					getCurrentItem().goToImage(key-49);
					break;
				case 48:
					getCurrentItem().goToImage(9);
					break;
				case keyCodes.space:
				case keyCodes.c:
					var currentImage = $(".imageContainer.selected", getCurrentItem());
					if($(".captionContainer:hidden", currentImage).length) {
						currentImage.showCaption();
					} else {
						currentImage.hideCaption();
					}
					break;
				case keyCodes.backspace:
					e.preventDefault;
				case keyCodes.esc:
				case keyCodes.x:
					getCurrentItem().closeItem();
					break;
				default:
					break;
			}
		// If no item is open
		} else {
			//console.log("KEY PRESSED ("+key+"), NO ITEM OPEN.");
			if(key == keyCodes.enter) {
				if($(".preview.selected").length) {
					var thisID = $(".preview.selected").attr("id").substr(8);
					$(".preview.selected").eq(0).openItem();
				}
			} else {
				if($(".preview.selected").length) {
					var changeIndex = false;
					var currentIndex = $(".preview").index($(".preview.selected"));
					var rows = 3;
					var cols = 4;
					switch(key) {
						case keyCodes.left:
							var newIndex = $(".preview").index($(".preview.selected"))-1;
							if(currentIndex % cols) changeIndex = true;
							break;
						case keyCodes.right:
							var newIndex = $(".preview").index($(".preview.selected"))+1;
							if((currentIndex+1) % cols) changeIndex = true;
							break;
						case keyCodes.up:
							var newIndex = $(".preview").index($(".preview.selected"))-cols;
							if(newIndex >= 0) changeIndex = true;
							break;
						case keyCodes.down:
							var newIndex = $(".preview").index($(".preview.selected"))+cols;
							if(newIndex < $(".preview").length) changeIndex = true;
							break;
					}
					if(changeIndex) {
						$(".preview.selected").removeClass("selected").hidePreviewInfo();
						$(".preview").eq(newIndex).addClass("selected").showPreviewInfo();
					}
				} else {
					var duration = globalAnimations ? 300 : 0;
					$(".preview").eq(0).addClass("selected").showPreviewInfo();
				}
			}
		}
		
	});
}
