/*
-----------------------------------------------------------
 keytap.js
-----------------------------------------------------------
*/

var keytapkey;
var keytapping = 1;
var keytapnodes = new Array();
$(function(){

   $(document).keyup(function(event){
      if (event.keyCode == 69) {
         keytap('e');
      }
   });
    
   $('input, textarea, select').focus(
     function() {
        keytapping = 0;
     }
   );
    
   $('input, textarea, select').blur(
     function() {
        keytapping = 1;
     }
   );

});

function keytap(key) {
   if (keytapkey == key && keytapping == 1) {
      // Double pressed. Do stuff
      switch(key) {
         case 'e':
            //alert(keytapnodes.toString());
            if (keytapnodes.length > 1) {
               nselTitle = keytapnodes.length +' nodes found. Choose one to edit.';
               nselContent = '<ul>';
               for (var i=0;i<keytapnodes.length;i++) {
                  nodestr = keytapnodes[i];
                  node = nodestr.split('|', 2);
                  nselContent += '<li><a href="/node/'+ node[0] +'/edit">'+ node[1] +'</a></li>';
               }
               nselContent += '</ul>';
               keytapwindow(nselTitle, nselContent);
               // Keyboard navigation
               $('.keytap-select ul a').each(
                  function(i) {
                     if (i == 0) {
                        this.focus();
                     }
                     $(this).keydown(function(event){
                        // key down
                        if (event.keyCode == 40) {
                           if (i + 1 != keytapnodes.length) {
                              $('.keytap-select ul a').eq(i+1).each(function(){this.focus();});
                           }
                           else {
                              $('.keytap-select ul a').eq(0).each(function(){this.focus();});
                           }
                           return false;
                        }
                        // key up
                        if (event.keyCode == 38) {
                           if (i != 0) {
                              $('.keytap-select ul a').eq(i-1).each(function(){this.focus();});
                           }
                           else {
                              $('.keytap-select ul a').eq(keytapnodes.length - 1).each(function(){this.focus();});
                           }
                           return false;
                        }
                        // delete
                        if (event.keyCode == 46) {
                           location.href = this.getAttribute('href').replace(/edit/, 'delete');
                        }
                     });
                  }
               );
               keytapping = 0;
               // Set esc keypress event
               $(document).keyup(function (e) {
                  if (e.keyCode == 27) {
                     closekeytap();
                  }
                });
            }
            else if (keytapnodes.length == 1) {
               nodestr = keytapnodes.shift();
               node = nodestr.split('|', 2);
               keytapwindow('Opening '+ node[1], 'Please wait...');
               location.href = '/node/'+ node[0] +'/edit';
            }
            break;
      }
   } else {
      keytapkey = key;
      setTimeout("killkeytapkey()", 200);
   }
}

function killkeytapkey() {
   keytapkey = null;
}

function closekeytap() {
   $('.keytap-wrapper').remove();
   keytapping = 1;
}

function keytapwindow(kTitle, kContent) {
   var kHtml;
   kHtml = '<div class="keytap-wrapper"><div class="keytap-select">';
   kHtml += '<h2>'+ kTitle +'</h2>';
   kHtml += kContent;
   kHtml += '<a href="javascript:void(0)" class="close" title="Close this Window" onclick="closekeytap()">close</a></div></div>';
   $('body').append(kHtml);
}
