/* Milonic DHTML Menu Keypress Module keypress.js version 1.3 - February 2005 Used for accessibility of the menu. This module will allow the user to navigate Milonic menus via the keyboard. This module is only compatible with the Milonic DHTML Menu version 5.16 or higher Copyright 2005 (c) Milonic Solutions Limited. All Rights Reserved. This is a commercial software product, please visit http://www.milonic.com/ for more information. */ function keyAction(_inc) { _itemRef+=_inc _popi(_itemRef) } function getNextKeyItem() { _Kar=_KcM[0] _output=0; for(_a=0;_a<_Kar.length;_a++) { if(_Kar[_a]==_itemRef)_output=_Kar[_a+1] if(_output+" "=="undefined ")return _Kar[0] } return _output } function getPreKeyItem() { _Kar=_KcM[0] _output=0; for(_a=0;_a<_Kar.length;_a++) { if(_Kar[_a]==_itemRef)_output=_Kar[_a-1] if(_output+" "=="undefined ")return _Kar[_Kar.length-1] } return _output } function getKeyItem() { _KcM=_m[_mi[_itemRef][0]]; // this is the array of menu items for the current menu _KcI=_mi[_itemRef] if(jskey==27) // Escape { closeAllMenus(); return false; } if(_KcM[9]) // Horizontal { if(jskey==37)_popi(getPreKeyItem()) // left if(jskey==39)_popi(getNextKeyItem()) //right if(jskey==38) { _mn=getMenuByName(_mi[_itemRef][3]) _popi(_m[_mn][0][_m[_mn][0].length-1]) } if(jskey==40) // down { _mn=getMenuByName(_mi[_itemRef][3]) _popi(_m[_mn][0][0]) } } else // Vertical { if(jskey==38)_popi(getPreKeyItem()) // up if(jskey==40)_popi(getNextKeyItem()) //down if(jskey==37) // left { //alert(_mi[_itemRef][3]) if(_mi[_itemRef][3]) { _mn=getMenuByName(_mi[_itemRef][3]) _popi(_m[_mn][0][_m[_mn][0].length-1]) } else { _itemRef=getParentItemByItem(_itemRef); _KcM=_m[_mi[_itemRef][0]]; _popi(getPreKeyItem()) _popi(getNextKeyItem()) //_popi(_itemRef) } } if(jskey==39) // right { if(_mi[_itemRef][3]) { _mn=getMenuByName(_mi[_itemRef][3]) _popi(_m[_mn][0][0]) } else { _mni=_itemRef cnt=0; while(_mni!=-1) { if(_mni)_mni=getParentItemByItem(_mni); else _mni=-1 if(_mni>-1)_itemRef=_mni } _KcM=_m[_mi[_itemRef][0]]; _popi(getNextKeyItem()) } } } } KPgChildren=""; function KPcrawlChildren(_mn) { var _ar=_m[_mn][0] for(var _am=0;_am<_ar.length;_am++) { KPgChildren+=_ar[_am]+","; if(_mi[_ar[_am]][3]) { KPcrawlChildren(getMenuByName(_mi[_ar[_am]][3])) } } } KPcrawlChildren(0) KPgChildren=KPgChildren.split(","); function getNextInRow() { for(_k=0;_k-1) { _itemRef=getPreInRow() } if(_itemRef==0)closeAllMenus() } else { _itemRef=getNextInRow() } if(_itemRef>-1) { _popi(_itemRef); _OiR=_itemRef } else { itemOff(_OiR) return true; } } } if(_itemRef==-1||_itemRef+" "==$u) { _rsMD() return } if(_mi[_itemRef][34]=="form") { _rsMD() return } _cm() getKeyItem() if(_itemRef==-1) { _rsMD() return } if(!ns4) { hrgm=gmobj("mmlink"+_mi[_itemRef][0]) if(hrgm.style.visibility="visible")hrgm.focus() } if(ie) { if(jskey==13)hrgm.click() _rsMD() return false } } function gMBK(e) { if(ns6||ns4){jskey=e.which}else{jskey=event.keyCode} if(ns4){jskey=String.fromCharCode(jskey).toUpperCase();jskey=jskey.charCodeAt()} if(jskey==13)return true if(_itemRef>-1)if(_mi[_itemRef][34]!="form")return false } function getMenuByKeyU(e) { if(ns6||ns4){jskey=e.which}else{jskey=event.keyCode} if(ns4){jskey=String.fromCharCode(jskey).toUpperCase();jskey=jskey.charCodeAt()} if(jskey==16)KShift=0 if(jskey==17)KCtrl=0 _rsMD() } function _rsMD() { _ofMT=0 _menuOpenDelay=_Omo _menuCloseDelay=_Cmo } function _iF0C(_i) { _popi(_i) } if(ns4)document.captureEvents(Event.KEYDOWN); _d.onkeydown=getMenuByKey; _d.onkeypress=gMBK; _d.onkeyup=getMenuByKeyU;