Translated using Weblate (Bulgarian)
[phpmyadmin.git] / js / keyhandler.js
blob65e78e85dff3a2704c0fb11fbe5626153fc35c2f
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     var nO = null;
56     switch (e.keyCode) {
57     case 38:
58         // up
59         y--;
60         break;
61     case 40:
62         // down
63         y++;
64         break;
65     case 37:
66         // left
67         x--;
68         break;
69     case 39:
70         // right
71         x++;
72         break;
73     default:
74         return;
75     }
77     var is_firefox = navigator.userAgent.toLowerCase().indexOf("firefox/") > -1;
79     var id = "field_" + y + "_" + x;
80     nO = document.getElementById(id);
81     if (! nO) {
82         id = "field_" + y + "_" + x + "_0";
83         nO = document.getElementById(id);
84     }
86     // skip non existent fields
87     if (! nO) {
88         return;
89     }
91     // for firefox select tag
92     var lvalue = o.selectedIndex;
93     var nOvalue = nO.selectedIndex;
95     nO.focus();
97     if (is_firefox) {
98         var ffcheck = 0;
99         var ffversion;
100         for (ffversion = 3 ; ffversion < 25 ; ffversion++) {
101             var is_firefox_v_24 = navigator.userAgent.toLowerCase().indexOf('firefox/'+ffversion) > -1;
102             if (is_firefox_v_24) {
103                 ffcheck = 1;
104                 break;
105             }
106         }
107         if (ffcheck == 1) {
108             if (e.which == 38 || e.which == 37) {
109                 nOvalue++;
110             }
111             else if (e.which == 40 || e.which == 39) {
112                 nOvalue--;
113             }
114             nO.selectedIndex=nOvalue;
115         }
116         else {
117             if (e.which == 38 || e.which == 37) {
118                 lvalue++;
119             }
120             else if (e.which == 40 || e.which == 39) {
121                 lvalue--;
122             }
123             o.selectedIndex=lvalue;
124         }
125     }
127     if (nO.tagName != 'SELECT') {
128         nO.select();
129     }
130     e.returnValue = false;
133 AJAX.registerTeardown('keyhandler.js', function () {
134     $('#table_columns').die('keydown keyup');
135     $('table.insertRowTable').die('keydown keyup');
138 AJAX.registerOnload('keyhandler.js', function () {
139     $('#table_columns').live('keydown keyup', function (event) {
140         onKeyDownArrowsHandler(event.originalEvent);
141     });
142     $('table.insertRowTable').live('keydown keyup', function (event) {
143         onKeyDownArrowsHandler(event.originalEvent);
144     });