Merge branch 'master' of ssh://repo.or.cz/srv/git/phpmyadmin/madhuracj into OpenGIS
[phpmyadmin/madhuracj.git] / js / keyhandler.js
blob63a13facfdc55eb06cd23251f9d4e0b7c0108cab
1 /**
2   * Allows moving around inputs/select by Ctrl+arrows
3   *
4   * @param   object   event data
5   */
6 function onKeyDownArrowsHandler(e)
8     e = e||window.event;
9     var o = (e.srcElement||e.target);
10     if (!o) return;
11     if (o.tagName != "TEXTAREA" && o.tagName != "INPUT" && o.tagName != "SELECT") return;
12     if (navigator.userAgent.toLowerCase().indexOf('applewebkit/') != -1) {
13         if (e.ctrlKey || e.shiftKey || !e.altKey) return;
14     } else {
15         if (!e.ctrlKey || e.shiftKey || e.altKey) return;
16     }
17     if (!o.id) return;
19     var pos = o.id.split("_");
20     if (pos[0] != "field" || typeof pos[2] == "undefined") return;
22     var x = pos[2], y=pos[1];
24     // skip non existent fields
25     for (i=0; i<10; i++)
26     {
27         if (switch_movement) {
28             switch(e.keyCode) {
29                 case 38: x--; break; // up
30                 case 40: x++; break; // down
31                 case 37: y--; break; // left
32                 case 39: y++; break; // right
33                 default: return;
34             }
35         } else {
36             switch(e.keyCode) {
37                 case 38: y--; break; // up
38                 case 40: y++; break; // down
39                 case 37: x--; break; // left
40                 case 39: x++; break; // right
41                 default: return;
42             }
43         }
45         var id = "field_" + y + "_" + x;
46         var nO = document.getElementById(id);
47         if (!nO) {
48             var id = "field_" + y + "_" + x + "_0";
49             var nO = document.getElementById(id);
50         }
51         if (nO) break;
52     }
54     if (!nO) return;
55     nO.focus();
56     if (nO.tagName != 'SELECT') {
57         nO.select();
58     }
59     e.returnValue = false;