Translated using Weblate (Slovenian)
[phpmyadmin.git] / js / keyhandler.js
blob387e717da691b22467aaaf2bde1fe5349949660e
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 // global var that holds: 0- if ctrl key is not pressed 1- if ctrl key is pressed
4 var ctrlKeyHistory = 0;
6 /**
7   * Allows moving around inputs/select by Ctrl+arrows
8   *
9   * @param object   event data
10   */
11 function onKeyDownArrowsHandler(e)
13     e = e || window.event;
15     var o = (e.srcElement || e.target);
16     if (!o) {
17         return;
18     }
19     if (o.tagName != "TEXTAREA" && o.tagName != "INPUT" && o.tagName != "SELECT") {
20         return;
21     }
22     if ((e.which != 17) && (e.which != 37) && (e.which != 38) && (e.which != 39) && (e.which !=40)) {
23         return;
24     }
25     if (!o.id) {
26         return;
27     }
29     if (e.type == "keyup") {
30         if (e.which==17) {
31             ctrlKeyHistory = 0;
32         }
33         return;
34     }
35     else if (e.type == "keydown") {
36         if (e.which == 17) {
37             ctrlKeyHistory = 1;
38         }
39     }
41     if (ctrlKeyHistory != 1) {
42         return;
43     }
45     e.preventDefault();
47     var pos = o.id.split("_");
48     if (pos[0] != "field" || typeof pos[2] == "undefined") {
49         return;
50     }
52     var x = pos[2], y = pos[1];
54     switch (e.keyCode) {
55     case 38:
56         // up
57         y--;
58         break;
59     case 40:
60         // down
61         y++;
62         break;
63     case 37:
64         // left
65         x--;
66         break;
67     case 39:
68         // right
69         x++;
70         break;
71     default:
72         return;
73     }
75     var is_firefox = navigator.userAgent.toLowerCase().indexOf("firefox/") > -1;
77     var id = "field_" + y + "_" + x;
79     var nO = document.getElementById(id);
80     if (! nO) {
81         id = "field_" + y + "_" + x + "_0";
82         nO = document.getElementById(id);
83     }
85     // skip non existent fields
86     if (! nO) {
87         return;
88     }
90     // for firefox select tag
91     var lvalue = o.selectedIndex;
92     var nOvalue = nO.selectedIndex;
94     nO.focus();
96     if (is_firefox) {
97         var ffcheck = 0;
98         var ffversion;
99         for (ffversion = 3 ; ffversion < 25 ; ffversion++) {
100             var is_firefox_v_24 = navigator.userAgent.toLowerCase().indexOf('firefox/'+ffversion) > -1;
101             if (is_firefox_v_24) {
102                 ffcheck = 1;
103                 break;
104             }
105         }
106         if (ffcheck == 1) {
107             if (e.which == 38 || e.which == 37) {
108                 nOvalue++;
109             }
110             else if (e.which == 40 || e.which == 39) {
111                 nOvalue--;
112             }
113             nO.selectedIndex=nOvalue;
114         }
115         else {
116             if (e.which == 38 || e.which == 37) {
117                 lvalue++;
118             }
119             else if (e.which == 40 || e.which == 39) {
120                 lvalue--;
121             }
122             o.selectedIndex=lvalue;
123         }
124     }
126     if (nO.tagName != 'SELECT') {
127         nO.select();
128     }
129     e.returnValue = false;
132 AJAX.registerTeardown('keyhandler.js', function () {
133     $(document).off('keydown keyup', '#table_columns');
134     $(document).off('keydown keyup', 'table.insertRowTable');
137 AJAX.registerOnload('keyhandler.js', function () {
138     $(document).on('keydown keyup', '#table_columns', function (event) {
139         onKeyDownArrowsHandler(event.originalEvent);
140     });
141     $(document).on('keydown keyup', 'table.insertRowTable', function (event) {
142         onKeyDownArrowsHandler(event.originalEvent);
143     });