// GNBv4.5 //
///////////////////////////////////////////////////////////////////
//                                                               //
//  ULTIMATE DROP DOWN MENU Version 4.5 by Brothercake          //
//  http://www.gnb4.com/                                         //
//                                                               //
//  This script may not be used or distributed without license   //
//                                                               //
///////////////////////////////////////////////////////////////////
function gnKM(){gn.kbm=this;gn.ha=0;gn.fkd=0;gn.tf=null;gn.mt=[gn.e[10],gn.e[11]];if(gn.kb&&gn.m.cookie){var f=[gn.gd('hotkeySelector'),gn.gd('modifierSelector')];var c=gn.m.cookie.split(';');var n=c.length;i=0;do{if(/gnbKeyPrefs/.test(c[i])){var a=c[i].split('=')[1].split(',');j=0;do{gn.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);}};gn.keyPrefs=function(){if(!(gn.kb&&gn.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));gn.m.cookie='gnbKeyPrefs=test; expires='+d.toGMTString()+'; path=/';if(!gn.m.cookie){alert('Sorry, your browser didn\'t accept the cookie.\nWe cannot save your settings.');}else{var f=[gn.gd('hotkeySelector'),gn.gd('modifierSelector')];i=0;do{gn.keys[i+4]=f[i].options[f[i].options.selectedIndex].value;i++;}while(i<2);gn.m.cookie='gnbKeyPrefs='+gn.keys[4]+','+gn.keys[5]+'; expires='+d.toGMTString()+'; path=/';alert('Save successful!');}return true;};gnKM.prototype.bdh=function(){if(typeof document.addEventListener!=gn.un){if(gn.s){var self=this;document.addEventListener('keydown',function(e){if(gn.fkd){return;}gn.fkd=1;self.kha(e);},0);document.addEventListener('keyup',function(){gn.fkd=0;},0);}else{document.addEventListener('keypress',this.kha,0);}}else{document.attachEvent('onkeydown',this.kha);}};gnKM.prototype.bfh=function(){document.addEventListener('mouseover',function(e){if(gn.ha&&gn.kdf&&!gnTree.contains(e.target)){gn.cm(e);gn.ha=0;}},0);};gnKM.prototype.bth=function(l){var a=gn.gc(l);var c=gn.es(a.className);if(/nohref/i.test(c)){gn.kbm.cdl(a);}if(gn.ie) { return false; }a.addEventListener('focus',function(e){if((!gn.o7&&!gn.lf)||(gn.o7&&gn.kdf)){gn.bub=0;l.over(1,e.target);}},0);return true;};gnKM.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=(gn.gu(gn.gp(t)).length>0)?gn.gu(gn.gp(t))[0]:null;if(m!=null&&typeof m.style!=gn.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(gn.tf!=null){r=gn.gp(gn.tf).parentNode.lastChild;if(gn.gp(gn.tf)==r){gn.n.lr(gn.gc(r),0);}}n=v.length;i=0;do{if(v[i]!=null){if(gn.gu(v[i]).length>0){gn.n.cp(gn.gu(v[i])[0],v[i]);}else{gn.n.cp(null,v[i]);}}i++;}while(i<n);};gnKM.prototype.cdl=function(l){l.href=gn.jv;l.style.cursor='default';};gnKM.prototype.mkc=function(k){for(i=1;i<4;i+=2){if(k==gn.keys[i]){k=gn.keys[4-i];break;}}return k;};gnKM.prototype.kha=function(e){if(!e){e=window.event;}k=e.keyCode;if(!gn.kb&&k!=9){return false;}if(k==gn.keys[6]){gn.ha=1;}if((k==gn.keys[4]&&((gn.keys[5]=='none'&&!e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey)||e[gn.keys[5]]))||(k==gn.keys[6])){gn.e[10]=1;gn.e[11]=1;if(!gn.ha){gn.cm(e);gn.fl.focus();gn.ha=1;gn.ap('080',gn.tr);}else{if(gn.sp){gn.sapi.voice.Speak(gn.vocab[8],2);}gn.cm(e);if(gn.wie50&&gn.e[13]=='yes'){gn.n.ts('visible');}eval(gn.keys[7]).focus();gn.e[10]=gn.mt[0];gn.e[11]=gn.mt[1];gn.ha=0;gn.ap('090',gn.tr);}}var a=(e.target)?e.target:e.srcElement;if(gn.tr.contains(a)){gn.e[10]=1;gn.e[11]=1;var c=gn.es(gn.gp(a).parentNode.className);if((gn.h&&c=='gnb')||typeof gn.hmx=='boolean'){if(gn.nm&&(k==gn.keys[0]||k==gn.keys[2])){return false;}i=0;do{if(k==gn.keys[i]){k=gn.keys[gn.rtl?(i-1):(3-i)];break;}i++;}while(i<4);}else{if(gn.nm&&(k==gn.keys[1]||k==gn.keys[3])){return false;}var t=gn.gp(a).parentNode;if(gn.a||gn.e[12]=='yes'){c=gn.es(t.className);if(gn.gu(gn.gp(a))[0]){gn.xm=gn.gu(gn.gp(a))[0];if(gn.getRealPosition(gn.xm,'x')<gn.getRealPosition(t,'x')){k=gn.kbm.mkc(k);}}else if(c!='gnb'){gn.pm=gn.gp(t).parentNode;if(gn.getRealPosition(gn.pm,'x')>gn.getRealPosition(t,'x')){k=gn.kbm.mkc(k);}}}}gn.tf=null;var l=gnTree.getElementsByTagName('li');var n=l.length;switch(k){case 9 :i=0;do{if(l[i]==gn.gp(a)){gn.tf=a;if(e.shiftKey){var p=(i==0)?-1:i-1;}else{p=((i+1)==n)?-1:i+1;}if(p<=-1){setTimeout('gn.closeAllMenus()',55);}break;}i++;}while(i<n);break;case gn.keys[0] :if(gn.gp(a).previousSibling){var s=gn.gp(a).previousSibling;if(s){t=gn.gc(s);var f=(typeof t!=gn.un)?t:null;if(f){f.focus();}}}else if(gn.gp(a).parentNode.childNodes.length>1){gn.n.cp(gn.gu(gn.gp(a))[0],gn.gp(a));t=gn.gc(gn.gp(a).parentNode.lastChild);f=(gn.gp(a).parentNode.className!='gnb');if(f&&gn.h&&gn.gp(gn.gp(a).parentNode).parentNode.className=='gnb'){t=gn.gc(gn.gp(gn.gp(a).parentNode));}t.focus();}gn.ap('100',a);if(gn.ie){return false;}else if(e){e.preventDefault();}break;case gn.keys[1] :if(gn.gu(gn.gp(a))[0]){t=gn.gu(gn.gp(a))[0];f=(t)?gn.gc(t):null;if(f){f.focus();}}gn.ap('101',a);if(gn.ie){return false;}else if(e){e.preventDefault();}break;case gn.keys[2] :if(gn.gp(a).nextSibling){s=gn.gp(a).nextSibling;if(s){t=gn.gc(s);f=(typeof t!=gn.un)?t:null;if(f){f.focus();}}}else if(gn.gp(a).parentNode.childNodes.length>1){gn.n.cp(gn.gu(gn.gp(a))[0],gn.gp(a));gn.gc(gn.gp(a).parentNode.firstChild).focus();}gn.ap('102',a);if(gn.ie){return false;}else if(e){e.preventDefault();}break;case gn.keys[3] :if(gn.gp(a).parentNode.parentNode){t=gn.gp(a).parentNode;f=(t.className=='gnb')?null:gn.gc(gn.gp(t));if(f&&(typeof f.focus=='function'||typeof f.focus=='object')){f.focus();}}gn.ap('103',a);if(gn.ie){return false;}else if(e){e.preventDefault();}break;}}return true;};gnKM.prototype.cws=function(n){if(gn.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;};
