var macCmdKeyDepressed = false;
var ignoreNextKeyPress = false;

// Routine based on code by Danny Goodman
function handleKeyDown(evt) {
   evt = (evt ? evt : (window.event ? window.event : null));

   // Hack to follow the Mac command key, which isn't represented
   // in the event object
   // (this hack doesn't seem to actually be working: in Safari, getting no
   // keyDown/keyUp for cmd)
   if (evt && !macCmdKeyDepressed && evt.keyCode == 91)
   {
   	  macCmdKeyDepressed = true;
   }
   if (macCmdKeyDepressed)
   {
      return true;
   }
   
   if (evt && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey)
   {
      var id;
      switch (evt.keyCode)
      {
         // 38 is up, 40 is down
         
         case 37:    // left
            id = "prevLink";
            break;
            
         case 39:    // right
            id = "nextLink";
			break;
			
         case 84:    // T)humbnails
			id = "upLink";
			break;
			
		 case 65:    // A)ll photos
		    id = "allLink";
		    break;
		    
		 case 77:    // M)ain menu
		    id = "mainLink";
		    break;			
       }
       
       // Numbered pages
       if (id == null && evt.keyCode >= 48 && evt.keyCode <= 57)
       {
       	  if (evt.keyCode == 48)
       	     id = 'page10Link';
       	  else
             id = 'page' + (evt.keyCode - 48) + 'Link';
       }
       
       if (id != null)
       {
          var elt = document.getElementById(id);
          if (elt != null)
          {
	         elt.className += '-simulated-click';
             document.location = elt.href;
	         ignoreNextKeyPress = true;    // see handleKeyPress()
             return false;
          }
       }
       
       ignoreNextKeyPress = false;   // see handleKeyPress()
       return true;
   }
}

// This is a hack to handle a Firefox situation where a keyDown significant
// to us, despite being handled and returning false, was then followed by
// the corresponding keyPress event, trigging messy behavior like typeahead
// searching.  This code suppresses that keyPress.
function handleKeyPress(evt)
{
	var ignore = ignoreNextKeyPress;
	ignoreNextKeyPress = false;
	return !ignore;
}

document.onkeydown = handleKeyDown;
document.onkeypress = handleKeyPress;
