function getOperaVersion() {
var opver=navigator.userAgent.match(/Opera\s*([0-9.]+)/i);
return (opver&&opver.length>1)? parseFloat(opver[1]): 0;
}
HotKeyHandler.keys = {};
HotKeyHandler.convertSpecKey={"46":"del","13":"enter","37":"left","38":"up","39":"right","40":"down","45":"ins","114":"f3","27":"esc"};
function HotKeyReact(e) {
var key = HotKeyHandler.getStringKey(e);
if (key == "ctrl+shift+ ") {
HotKeyHandler.CallHotKeys(true);
}
return;
}
function HotKeyHandler(e) {
var key = HotKeyHandler.getStringKey(e);
if (typeof(HotKeyHandler.keys[key]) == "function") {
HotKeyHandler.keys[key](e);
return true;
}
return;
}
HotKeyHandler.killEventBrowser = function(e) {
e.cancelBubble = true;
e.returnValue = false;
if(e.preventDefault) e.preventDefault();
if(e.stopPropagation) e.stopPropagation();
}
HotKeyHandler.getStringKey = function(e) {
var e = e || window.event;
if(!e) return;
var key0 = (e.ctrlKey?"ctrl+":"");
key0 += (e.shiftKey?"shift+":"");
key0 += (e.altKey?"alt+":"");
var key = e.keyCode? e.keyCode: e.charCode;
key=HotKeyHandler.convertSpecKey[String(key)]? HotKeyHandler.convertSpecKey[String(key)]: String.fromCharCode(key).toLowerCase();
key = ((key0=="")?key:(key0 + key));
return key;
}
HotKeyHandler.windowInit=function() {
HotKeyHandler.windowDestroy();
var global_window = get_global_window();
if(global_window.document.addEventListener && (getOperaVersion()>6||getOperaVersion()==0)) {
global_window.document.addEventListener("keypress",HotKeyHandler,false);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.addEventListener("keypress",HotKeyHandler,false);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.addEventListener("keypress",HotKeyHandler,false);
} else {
global_window.document.attachEvent("onkeydown",HotKeyHandler);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.attachEvent("onkeydown",HotKeyHandler);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.attachEvent("onkeydown",HotKeyHandler);
}
}
HotKeyHandler.windowDestroy=function() {
var global_window = get_global_window();
if(global_window.document.removeEventListener && (getOperaVersion()>6||getOperaVersion()==0)) {
global_window.document.removeEventListener("keypress",HotKeyHandler,false);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.removeEventListener("keypress",HotKeyHandler,false);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.removeEventListener("keypress",HotKeyHandler,false);
} else {
global_window.document.detachEvent("onkeydown",HotKeyHandler);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.detachEvent("onkeydown",HotKeyHandler);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.detachEvent("onkeydown",HotKeyHandler);
}
}
HotKeyHandler.keys = {
"ctrl+t": function(e) {
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"] )
global_window.frames["maincontent"].focus();global_window.ShowHideSidebar();
},
"ctrl+d": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.RefreshData) == "function")
workWindow.global_table_obj.RefreshData();
}
if (typeof(workWindow.LoadReport) == "function") {
workWindow.LoadReport();
}
},
"ctrl+g": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.FilterButtonClick) == "function")
workWindow.global_table_obj.FilterButtonClick();
}
if (typeof(workWindow.FilterParams) == "function") {
workWindow.FilterParams();
}
},
"ctrl+e": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj)
if (typeof(workWindow.global_table_obj.EditRow) == "function" && workWindow.global_table_obj.activeRow)
if (get_child_marker(workWindow.global_table_obj.activeRow,"edit"))
workWindow.global_table_obj.EditRow(workWindow.global_table_obj.activeRow);
},
"ctrl+q": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj)
if (typeof(workWindow.global_table_obj.CardButtonClick) == "function")
workWindow.global_table_obj.CardButtonClick();
},
"ins": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj)
if (typeof(workWindow.global_table_obj.AddData) == "function")
workWindow.global_table_obj.AddData();
},
"ctrl+del": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj)
if (typeof(workWindow.global_table_obj.DeleteRow) == "function" && workWindow.global_table_obj.activeRow)
workWindow.global_table_obj.DeleteRow(workWindow.global_table_obj.activeRow);
},
"ctrl+k": function(e){
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.OpenDetails) == "function" && workWindow.global_table_obj.activeRow) {
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeData) {
workWindow.global_table_obj.OpenDetails(workWindow.global_table_obj.activeRow);
}
}
}
},
"left": function(e) {
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.CardToolsClick) == "function" && workWindow.global_table_obj.cardZone) {
var priorButton = get_child_marker(workWindow.global_table_obj.cardZone,"prior");
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeCard && priorButton) {
HotKeyHandler.killEventBrowser(e);
workWindow.global_table_obj.CardToolsClick(priorButton);
}
}
}
},
"right": function(e) {
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.CardToolsClick) == "function" && workWindow.global_table_obj.cardZone) {
var nextButton = get_child_marker(workWindow.global_table_obj.cardZone,"next");
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeCard && nextButton) {
HotKeyHandler.killEventBrowser(e);
workWindow.global_table_obj.CardToolsClick(nextButton);
}
}
}
},
"up": function(e) {
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.CardToolsClick) == "function" && workWindow.global_table_obj.cardZone) {
var priorButton = get_child_marker(workWindow.global_table_obj.cardZone,"prior");
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeData && priorButton) {
HotKeyHandler.killEventBrowser(e);
workWindow.global_table_obj.CardToolsClick(priorButton);
}
}
}
},
"down": function(e) {
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (typeof(workWindow.global_table_obj.CardToolsClick) == "function" && workWindow.global_table_obj.cardZone) {
var nextButton = get_child_marker(workWindow.global_table_obj.cardZone,"next");
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeData && nextButton) {
HotKeyHandler.killEventBrowser(e);
workWindow.global_table_obj.CardToolsClick(nextButton);
}
}
}
},
"ctrl+up": function(e) {
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (workWindow.global_table_obj.masterRow) {
var master_table_obj = workWindow.global_table_obj.masterRow.dataView;
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeData && master_table_obj)
master_table_obj.RowClickHandler(master_table_obj.activeRow,master_table_obj.activeRow);
}
}
},
"ctrl+down": function(e) {
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (workWindow.global_table_obj.activeRow) {
if (workWindow.global_table_obj.activeRow.detailRow)
var child_table_obj = get_child_marker(workWindow.global_table_obj.activeRow.detailRow,"dataview");
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeData && child_table_obj) {
var child_table_obj = child_table_obj.dataView;
if (child_table_obj.activeRow)
child_table_obj.RowClickHandler(child_table_obj.activeRow,child_table_obj.activeRow);
}
}
}
},
"ctrl+s": function(e) {
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (workWindow.global_table_obj.bigeditZone) {
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeBigEdit) {
var saveButton = get_child_marker(workWindow.global_table_obj.bigeditZone,"save-button");
if (saveButton)
workWindow.global_table_obj.editControlObject.EditToolsClick(saveButton);
}
}
}
},
"shift+enter": function(e) {
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (workWindow.global_table_obj.handbookMode) {
workWindow.global_table_obj.HandbookToolbarClick("select");
}
}
},
"esc": function(e) {
HotKeyHandler.killEventBrowser(e);
var global_window = get_global_window();
if (global_window.frames["maincontent"])
var workWindow = global_window.frames["maincontent"];
else
var workWindow = global_window;
if (workWindow.global_table_obj) {
if (workWindow.global_table_obj.viewMode==workWindow.vdViewModeBigEdit) {
var cancelButton = get_child_marker(workWindow.global_table_obj.bigeditZone,"cancel-button");
workWindow.global_table_obj.editControlObject.EditToolsClick(cancelButton);
} else if (workWindow.global_table_obj.handbookMode) {
workWindow.global_table_obj.HandbookToolbarClick("cancel");
}
}
}
};
HotKeyHandler.Start=function() {
var global_window = get_global_window();
if(global_window.document.removeEventListener && (getOperaVersion()>6||getOperaVersion()==0)) {
global_window.document.removeEventListener("keypress",HotKeyReact,false);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.removeEventListener("keypress",HotKeyReact,false);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.removeEventListener("keypress",HotKeyReact,false);
} else {
global_window.document.detachEvent("onkeydown",HotKeyReact);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.detachEvent("onkeydown",HotKeyReact);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.detachEvent("onkeydown",HotKeyReact);
}
if(global_window.document.addEventListener && (getOperaVersion()>6||getOperaVersion()==0)) {
global_window.document.addEventListener("keypress",HotKeyReact,false);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.addEventListener("keypress",HotKeyReact,false);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.addEventListener("keypress",HotKeyReact,false);
} else {
global_window.document.attachEvent("onkeydown",HotKeyReact);
if (global_window.frames["maincontent"]) global_window.frames["maincontent"].document.attachEvent("onkeydown",HotKeyReact);
if (global_window.frames["sidebarcontent"]) global_window.frames["sidebarcontent"].document.attachEvent("onkeydown",HotKeyReact);
}
}
HotKeyHandler.CallHotKeys = function(change) {
var Info = getjson("inc/getCookie.asp","");
var engage = (Info["engagehotkeys"] == "1");
if (engage) {
if (change) {
if (confirm('ÎÒÊËÞ×ÈÒÜ ãîðÿ÷èå êëàâèøè ñèñòåìû?')) {
HotKeyHandler.windowDestroy();
engage = false;
}
} else {
HotKeyHandler.windowInit();
engage = true;
}
}
else {
if (change) {
if (confirm('ÂÊËÞ×ÈÒÜ ãîðÿ÷èå êëàâèøè ñèñòåìû?')) {
HotKeyHandler.windowInit();
engage = true;
}
} else {
HotKeyHandler.windowDestroy();
engage = false;
}
}
var Info = getjson("inc/setCookie.asp","engage="+ ((engage)?"1":"0"));
}
window.onload = function() {
var global_window = get_global_window();
global_window.HotKeyHandler.Start();
global_window.HotKeyHandler.CallHotKeys(false);
}
