PageSourceSearch

https://www.loenborggaard-feriecenter.dk/x/js/shortcut.js

js loenborggaard-feriecenter.dk collected 2026-10-02 19:48:48 UTC 8,109 bytes, 225 lines download raw bytes

1/**
2* http://www.openjs.com/scripts/events/keyboard_shortcuts/
3* Version : 2.01.B
4* By Binny V A
5* License : BSD
6*/
7shortcut = {
8    'all_shortcuts': {}, //All the shortcuts are stored in this array
9    'add': function(shortcut_combination, callback, opt) {
10        //Provide a set of default options
11        var default_options = {
12            'type': 'keydown',
13            'propagate': false,
14            'disable_in_input': false,
15            'target': document,
16            'keycode': false
17        }
18        if (!opt) opt = default_options;
19        else {
20            for (var dfo in default_options) {
21                if (typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
22            }
23        }
24
25        var ele = opt.target;
26        if (typeof opt.target == 'string') ele = document.getElementById(opt.target);
27        var ths = this;
28        shortcut_combination = shortcut_combination.toLowerCase();
29
30        //The function to be called at keypress
31        var func = function(e) {
32            e = e || window.event;
33
34            if (opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
35                var element;
36                if (e.target) element = e.target;
37                else if (e.srcElement) element = e.srcElement;
38                if (element.nodeType == 3) element = element.parentNode;
39
40                if (element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
41            }
42
43            //Find Which key is pressed
44            if (e.keyCode) code = e.keyCode;
45            else if (e.which) code = e.which;
46            var character = String.fromCharCode(code).toLowerCase();
47
48            if (code == 188) character = ","; //If the user presses , when the type is onkeydown
49            if (code == 190) character = "."; //If the user presses , when the type is onkeydown
50
51            var keys = shortcut_combination.split("+");
52            //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
53            var kp = 0;
54
55            //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
56            var shift_nums = {
57                "`": "~",
58                "1": "!",
59                "2": "@",
60                "3": "#",
61                "4": "$",
62                "5": "%",
63                "6": "^",
64                "7": "&",
65                "8": "*",
66                "9": "(",
67                "0": ")",
68                "-": "_",
69                "=": "+",
70                ";": ":",
71                "'": "\"",
72                ",": "<",
73                ".": ">",
74                "/": "?",
75                "\\": "|"
76            }
77            //Special Keys - and their codes
78            var special_keys = {
79                'esc': 27,
80                'escape': 27,
81                'tab': 9,
82                'space': 32,
83                'return': 13,
84                'enter': 13,
85                'backspace': 8,
86
87                'scrolllock': 145,
88                'scroll_lock': 145,
89                'scroll': 145,
90                'capslock': 20,
91                'caps_lock': 20,
92                'caps': 20,
93                'numlock': 144,
94                'num_lock': 144,
95                'num': 144,
96
97                'pause': 19,
98                'break': 19,
99
100                'insert': 45,
101                'home': 36,
102                'delete': 46,
103                'end': 35,
104
105                'pageup': 33,
106                'page_up': 33,
107                'pu': 33,
108
109                'pagedown': 34,
110                'page_down': 34,
111                'pd': 34,
112
113                'left': 37,
114                'up': 38,
115                'right': 39,
116                'down': 40,
117
118                'f1': 112,
119                'f2': 113,
120                'f3': 114,
121                'f4': 115,
122                'f5': 116,
123                'f6': 117,
124                'f7': 118,
125                'f8': 119,
126                'f9': 120,
127                'f10': 121,
128                'f11': 122,
129                'f12': 123
130            }
131
132            var modifiers = {
133                shift: { wanted: false, pressed: false },
134                ctrl: { wanted: false, pressed: false },
135                alt: { wanted: false, pressed: false },
136                meta: { wanted: false, pressed: false}	//Meta is Mac specific
137            };
138
139            if (e.ctrlKey) modifiers.ctrl.pressed = true;
140            if (e.shiftKey) modifiers.shift.pressed = true;
141            if (e.altKey) modifiers.alt.pressed = true;
142            if (e.metaKey) modifiers.meta.pressed = true;
143
144            for (var i = 0; k = keys[i], i < keys.length; i++) {
145                //Modifiers
146                if (k == 'ctrl' || k == 'control') {
147                    kp++;
148                    modifiers.ctrl.wanted = true;
149
150                } else if (k == 'shift') {
151                    kp++;
152                    modifiers.shift.wanted = true;
153
154                } else if (k == 'alt') {
155                    kp++;
156                    modifiers.alt.wanted = true;
157                } else if (k == 'meta') {
158                    kp++;
159                    modifiers.meta.wanted = true;
160                } else if (k.length > 1) { //If it is a special key
161                    if (special_keys[k] == code) kp++;
162
163                } else if (opt['keycode']) {
164                    if (opt['keycode'] == code) kp++;
165
166                } else { //The special keys did not match
167                    if (character == k) kp++;
168                    else {
169                        if (shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
170                            character = shift_nums[character];
171                            if (character == k) kp++;
172                        }
173                    }
174                }
175            }
176
177            if (kp == keys.length &&
178						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
179						modifiers.shift.pressed == modifiers.shift.wanted &&
180						modifiers.alt.pressed == modifiers.alt.wanted &&
181						modifiers.meta.pressed == modifiers.meta.wanted) {
182                callback(e);
183
184                if (!opt['propagate']) { //Stop the event
185                    //e.cancelBubble is supported by IE - this will kill the bubbling process.
186                    e.cancelBubble = true;
187                    e.returnValue = false;
188
189                    //e.stopPropagation works in Firefox.
190                    if (e.stopPropagation) {
191                        e.stopPropagation();
192                        e.preventDefault();
193                    }
194                    return false;
195                }
196            }
197        }
198        this.all_shortcuts[shortcut_combination] = {
199            'callback': func,
200            'target': ele,
201            'event': opt['type']
202        };
203        //Attach the function with the event
204        if (ele.addEventListener) ele.addEventListener(opt['type'], func, false);
205        else if (ele.attachEvent) ele.attachEvent('on' + opt['type'], func);
206        else ele['on' + opt['type']] = func;
207    },
208
209    //Remove the shortcut - just specify the shortcut and I will remove the binding
210    'remove': function(shortcut_combination) {
211        shortcut_combination = shortcut_combination.toLowerCase();
212        var binding = this.all_shortcuts[shortcut_combination];
213        delete (this.all_shortcuts[shortcut_combination])
214        if (!binding) return;
215        var type = binding['event'];
216        var ele = binding['target'];
217        var callback = binding['callback'];
218
219        if (ele.detachEvent) ele.detachEvent('on' + type, callback);
220        else if (ele.removeEventListener) ele.removeEventListener(type, callback, false);
221        else ele['on' + type] = false;
222    }
223}
224
225shortcut.add('CONTROL+SHIFT+A', function() {window.location = '/admin';});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.