function umKM(){  um.kbm=this;um.ha=0;um.fkd=0;um.tf=null;um.mt=[um.e[10],um.e[11]];
  if(um.kb&&um.m.cookie){    var f=[um.gd('hotkeySelector'),
    um.gd('modifierSelector')];
    var c=um.m.cookie.split(';');
    var n=c.length;i=0;
    do{   	  if(/udmKeyPrefs/.test(c[i])){      	var a=c[i].split('=')[1].split(',');
      	j=0;
      	do{      		um.keys[j+4]=a[j];
      		if(f[j]){      		  var z=f[j].options;
      		  var l=z.length;
      		  var k=0;
      		  do{      		  	  if(z[k].value==a[j]){      		  	    z[k].selected=1;
      		  	    break;
      		  	  }
      		  	  k++;
      		  }while(k<l);
      		}
      		j++;
      	}while(j<2);
      	break;
      }
      i++;
    }while(i<n);
  }
};

um.keyPrefs=function(){  if(!(um.kb&&um.d)){    alert('Sorry, this feature is not supported in your browser.');
    return false;
  }
  var d=new Date();
  d.setTime(d.getTime()+(365*24*60*60*1000));
  um.m.cookie='umenuKeyPrefs=test; expires='+d.toGMTString()+'; path=/';
  if(!um.m.cookie){    alert('Sorry, your browser didn\'t accept the cookie.\nWe cannot save your settings.');
  }else{    var f=[um.gd('hotkeySelector'),um.gd('modifierSelector')];
    i=0;
    do{  	  um.keys[i+4]=f[i].options[f[i].options.selectedIndex].value;i++;
    }while(i<2);
    um.m.cookie='umenuKeyPrefs='+um.keys[4]+','+um.keys[5]+'; expires='+d.toGMTString()+'; path=/';
    alert('Save successful!');
  }
  return true;
};

umKM.prototype.bdh=function(){  if(typeof document.addEventListener!=um.un){  	if(um.s){  	  var self=this;
  	  document.addEventListener('keydown',function(e){if(um.fkd){return;}um.fkd=1;self.kha(e);},0);
  	  document.addEventListener('keyup',function(){um.fkd=0;},0);
  	}else{  	  document.addEventListener('keypress',this.kha,0);
  	}
  }else{  	document.attachEvent('onkeydown',this.kha);
  }
};

umKM.prototype.bfh=function(){  document.addEventListener('mouseover',function(e){if(um.ha&&um.kdf&&!umTree.contains(e.target)){um.cm(e);um.ha=0;}},0);
};

umKM.prototype.bth=function(l){  var a=um.gc(l);
  var c=um.es(a.className);
  if(/nohref/i.test(c)){    um.kbm.cdl(a);
  }
  if(um.ie) { return false; }
  a.addEventListener('focus',function(e){if((!um.o7&&!um.lf)||(um.o7&&um.kdf)){um.bub=0;l.over(1,e.target);}},0);
  return true;
};

umKM.prototype.cu=function(m,l,t){  var v=[null,null,null];
  if((m!=null&&m.style.visibility!='visible')||m==null){  	if(l.previousSibling){v[0]=l.previousSibling;}
  	if(l.nextSibling){v[1]=l.nextSibling;}
  }
  m=(um.gu(um.gp(t)).length>0)?um.gu(um.gp(t))[0]:null;
  if(m!=null&&typeof m.style!=um.un&&m.style.visibility=='visible'){  	var r=m.getElementsByTagName('li');
  	var n=r.length;
  	j=0;
  	do{v[v.length]=r[j++];}while(j<n);
  }
  if(um.tf!=null){  	r=um.gp(um.tf).parentNode.lastChild;
  	if(um.gp(um.tf)==r){um.n.lr(um.gc(r),0);}
  }
  n=v.length;
  i=0;
  do{  	if(v[i]!=null){      if(um.gu(v[i]).length>0){  	    um.n.cp(um.gu(v[i])[0],v[i]);
  	  }else{  	    um.n.cp(null,v[i]);
  	  }
  	}
  	i++;
  }while(i<n);
};

umKM.prototype.cdl=function(l){l.href=um.jv;l.style.cursor='default';};

umKM.prototype.mkc=function(k){for(i=1;i<4;i+=2){if(k==um.keys[i]){k=um.keys[4-i];break;}}return k;};umKM.prototype.kha=function(e){if(!e){e=window.event;}k=e.keyCode;if(!um.kb&&k!=9){return false;}if(k==um.keys[6]){um.ha=1;}if((k==um.keys[4]&&((um.keys[5]=='none'&&!e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey)||e[um.keys[5]]))||(k==um.keys[6])){um.e[10]=1;um.e[11]=1;if(!um.ha){um.cm(e);um.fl.focus();um.ha=1;um.ap('080',um.tr);}else{if(um.sp){um.sapi.voice.Speak(um.vocab[8],2);}um.cm(e);if(um.wie50&&um.e[13]=='yes'){um.n.ts('visible');}eval(um.keys[7]).focus();um.e[10]=um.mt[0];um.e[11]=um.mt[1];um.ha=0;um.ap('090',um.tr);}}var a=(e.target)?e.target:e.srcElement;if(um.tr.contains(a)){um.e[10]=1;um.e[11]=1;var c=um.es(um.gp(a).parentNode.className);if((um.h&&c=='umenu')||typeof um.hmx=='boolean'){if(um.nm&&(k==um.keys[0]||k==um.keys[2])){return false;}i=0;do{if(k==um.keys[i]){k=um.keys[um.rtl?(i-1):(3-i)];break;}i++;}while(i<4);}else{if(um.nm&&(k==um.keys[1]||k==um.keys[3])){return false;}var t=um.gp(a).parentNode;if(um.a||um.e[12]=='yes'){c=um.es(t.className);if(um.gu(um.gp(a))[0]){um.xm=um.gu(um.gp(a))[0];if(um.getRealPosition(um.xm,'x')<um.getRealPosition(t,'x')){k=um.kbm.mkc(k);}}else if(c!='umenu'){um.pm=um.gp(t).parentNode;if(um.getRealPosition(um.pm,'x')>um.getRealPosition(t,'x')){k=um.kbm.mkc(k);}}}}um.tf=null;var l=umTree.getElementsByTagName('li');var n=l.length;switch(k){case 9 :i=0;do{if(l[i]==um.gp(a)){um.tf=a;if(e.shiftKey){var p=(i==0)?-1:i-1;}else{p=((i+1)==n)?-1:i+1;}if(p<=-1){setTimeout('um.closeAllMenus()',55);}break;}i++;}while(i<n);break;case um.keys[0] :if(um.gp(a).previousSibling){var s=um.gp(a).previousSibling;if(s){t=um.gc(s);var f=(typeof t!=um.un)?t:null;if(f){f.focus();}}}else if(um.gp(a).parentNode.childNodes.length>1){um.n.cp(um.gu(um.gp(a))[0],um.gp(a));t=um.gc(um.gp(a).parentNode.lastChild);f=(um.gp(a).parentNode.className!='umenu');if(f&&um.h&&um.gp(um.gp(a).parentNode).parentNode.className=='umenu'){t=um.gc(um.gp(um.gp(a).parentNode));}t.focus();}um.ap('100',a);if(um.ie){return false;}else if(e){e.preventDefault();}break;case um.keys[1] :if(um.gu(um.gp(a))[0]){t=um.gu(um.gp(a))[0];f=(t)?um.gc(t):null;if(f){f.focus();}}um.ap('101',a);if(um.ie){return false;}else if(e){e.preventDefault();}break;case um.keys[2] :if(um.gp(a).nextSibling){s=um.gp(a).nextSibling;if(s){t=um.gc(s);f=(typeof t!=um.un)?t:null;if(f){f.focus();}}}else if(um.gp(a).parentNode.childNodes.length>1){um.n.cp(um.gu(um.gp(a))[0],um.gp(a));um.gc(um.gp(a).parentNode.firstChild).focus();}um.ap('102',a);if(um.ie){return false;}else if(e){e.preventDefault();}break;case um.keys[3] :if(um.gp(a).parentNode.parentNode){t=um.gp(a).parentNode;f=(t.className=='umenu')?null:um.gc(um.gp(t));if(f&&(typeof f.focus=='function'||typeof f.focus=='object')){f.focus();}}um.ap('103',a);if(um.ie){return false;}else if(e){e.preventDefault();}break;}}return true;};umKM.prototype.cws=function(n){if(um.mie){return false;}for(var x=0;x<n.childNodes.length;x++){var k=n.childNodes[x];if((k.nodeType==3)&&(!/\S/.test(k.nodeValue))){n.removeChild(n.childNodes[x]);x--;}if(k.nodeType==1){this.cws(k);}}return n;};