/*
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;