|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /home/queenjbs/xe/modules/layout/tpl/js/ |
Upload File : |
/*
* jQuery Hotkey Plug-in
*
* @author Kim Taegon(gonom9@nhncorp.com)
*/
(function($){
// virtual keys
var VKEY = {
'TAB' : 9,
'ESC' : 27,
'ENTER,RETURN' : 13,
'UP' : 38,
'DOWN' : 40,
'LEFT' : 37,
'RIGHT' : 39,
'BACKSPACE,BKSP' : 8,
'DEL' : 46,
'SPACE' : 32
};
var Hotkey = new Object;
$.fn.hotkey = function(key, func) {
if (typeof key == "object" && key.toString() == '[object Object]') {
for(var x in key) $(this).hotkey(x, key[x]);
return this;
}
if (!$.isString(key)) return this;
if (key == 'disable' || key == 'enable') {
this.attr('hotkey_disabled', (key=='disable'));
return this;
}
if (!$.isFunction(func)) return this;
if ($.isObject(key)) key = hk2str(key);
Hotkey[key] = func;
if (!this.attr('assign-hotkey')) {
this.attr('assign-hotkey', true);
this.keydown(function(evt){
if ($(this).attr('hotkey_disabled')) return;
var stroke = hk2str(evt).split(',');
for(var i=0; i < stroke.length; i++) {
if (Hotkey[stroke[i]]) {
if ($(evt.target).is(':input') && (evt.ctrlKey||evt.altKey||evt.metaKey)) break;
Hotkey[stroke[i]](evt, stroke[i]);
evt.stopPropagation();
evt.preventDefault();
}
}
});
}
return this;
};
$.extend({
isObject : function(obj) {
return (typeof obj == 'object' && obj.toString() == '[object Object]');
},
isArray : function(arr) {
return (Object.prototype.toString.call(arr) == '[object Array]');
},
isString : function(str) {
return (typeof str == 'string');
}
});
// hotkey to string
function hk2str(key) {
var str = [], vkey = false;
var _ = null; // do nothing. It is just dummy.
for(var x in VKEY) {
if (VKEY[x] == key.keyCode) {
vkey = x;
break;
}
}
if (!vkey) {
vkey = String.fromCharCode(key.keyCode).toUpperCase();
if (vkey.length != 1) return '';
}
key.altKey?str.push('Alt'):_;
key.ctrlKey?str.push('Ctrl'):_;
key.shiftKey?str.push('Shift'):_;
str.push(vkey);
return str.join('+');
}
// string to hotkey
function str2hk(str) {
var key = {altKey:false,ctrlKey:false,shiftKey:false,keyCode:0};
var lastKey = str.match(/\+([A-Z0-9]+)$/)[1];
if (!lastKey) return key;
str += '+';
key.altKey = str.indexOf('Alt+') > -1;
key.ctrlKey = str.indexOf('Ctrl+') > -1;
key.shiftKey = str.indexOf('Shift+') > -1;
key.keyCode = VKEY[lastKey] || lastKey.charCodeAt(0);
}
})(jQuery);