/**
 * Modified by Lindsey Simon for Idearranger from:
 * jQuery Keyboard Navigation Plugin - Current
 *   http://www.amountaintop.com/projects/keynav/
 */

$.keynav = new Object();

$.fn.keynav = function (onClass, offClass) {
  //Initialization
  var kn = $.keynav;
  if(!kn.init) {
    kn.el = new Array();
    kn.currentEl = false;

    $(document).keydown(function(e) {
        var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
        //console.debug('key:' + key);
        switch(key) {
        case 75: // j
          $.keynav.goUp();
          //e.preventDefault();
          break;
        case 38: // up arrow
          $.keynav.goUp();
          break;
        case 40: // down arrow
          $.keynav.goDown();
          break;
        case 74: // k
          $.keynav.goDown();
          //e.preventDefault();
          break;
        case 13: // return
          $.keynav.activate();
          break;
        case 48: // 0, etc...
          $.keynav.rate(0);
          break;
        case 49:
          $.keynav.rate(1);
          break;
        case 50:
          $.keynav.rate(2);
          break;
        case 51:
          $.keynav.rate(3);
          break;
        case 52:
          $.keynav.rate(4);
          break;
        case 53:
          $.keynav.rate(5);
          break;

        }
    });
    kn.init = true;
  }

  return this.each(function() {
      $.keynav.reg(this, onClass, offClass);
  });

}
$.keynav.reg = function(el, onClass, offClass) {
  el.onClass = onClass;
  el.offClass = offClass;
  $.keynav.el.push(el);
}
$.keynav.setActive = function(el) {
  if ($.keynav.currentEl && $.keynav.currentEl != el) {
    $.keynav.currentEl.removeClass().addClass(el.offClass);
  }
  jqEl = $(el);
  jqEl.removeClass().addClass(el.onClass);
  jqEl.trigger('focus');
  $.keynav.currentEl = jqEl;

  var td = $.keynav.currentEl.find('td.description').get(0);
  idr.showDescriptionTooltip(td);
}


$.keynav.goUp = function() {

  // activate first row if nothing's selected
  if (!$.keynav.currentEl) {
    $.keynav.setActive($.keynav.el[0]);
    return;
  }
  var prevs = $.keynav.currentEl.prev();
  if (prevs.length == 1) {
    $.keynav.setActive(prevs[0]);
  }
}

$.keynav.goDown = function() {
  // activate first row if nothing's selected
  if (!$.keynav.currentEl) {
    $.keynav.setActive($.keynav.el[0]);
    return;
  }
  var nexts = $.keynav.currentEl.next();
  if (nexts.length == 1) {
    $.keynav.setActive(nexts[0]);
  }
}

$.keynav.activate = function() {
  if (!$.keynav.currentEl) {
    return;
  }
  var a = $.keynav.currentEl.find('td.description a')[0];
  window.top.location.href = $(a).attr('href');
}

$.keynav.rate = function(stars) {
  if (!$.keynav.currentEl) {
    return;
  }
  var yesno = $.keynav.currentEl.find('.yesno');
  var current = $.keynav.currentEl.find('.current');
  if (yesno) {
    if (stars == 0) {
      $.keynav.currentEl.find('.yesno-no a').trigger('click');
    } else if (stars == 1) {
      $.keynav.currentEl.find('.yesno-yes a').trigger('click');
    }
  }
  else if (current) {
    var currentLI = current[0];
    idr.updateStars(stars, currentLI);
  }
}

