/*! SmartMenus jQuery Plugin Keyboard Addon - v0.1.0 - August 25, 2014 * http://www.smartmenus.org/ * Copyright 2014 Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){function e(t){return t.find("> li > a:not(.disabled)").eq(0)}function i(t){return t.find("> li > a:not(.disabled)").eq(-1)}function s(t,i){var s=t.nextAll("li").children("a:not(.disabled)").eq(0);return i||s.length?s:e(t.parent())}function o(t,e){var s=t.prevAll("li").children("a:not(.disabled)").eq(0);return e||s.length?s:i(t.parent())}t.fn.focusSM=function(){return this.length&&this[0].focus&&this[0].focus(),this},t.extend(t.SmartMenus.Keyboard={},{docKeydown:function(a){var n=a.keyCode;if(/(27|37|38|39|40)/.test(n)){var r=t(this),h=r.data("smartmenus"),u=t(a.target);if(h&&u.is("a")){var l=u.parent(),c=l.parent(),d=c.dataSM("level");if(d){switch(h.opts.rightToLeftSubMenus&&(37==n?n=39:39==n&&(n=37)),n){case 27:if(h.visibleSubMenus[d])h.menuHide(h.visibleSubMenus[d]);else if(1==d)if(h.opts.isPopup&&h.menuHideAll(),h.opts.keyboardEscapeFocus)try{h.opts.keyboardEscapeFocus.focusSM()}catch(a){}else{var m=r.find("a, input, select, button, textarea").eq(-1),p=t("a, input, select, button, textarea"),f=p.index(m[0])+1;p.eq(f).focusSM()}else c.dataSM("parent-a").focusSM(),h.menuHide(h.visibleSubMenus[d-1]);break;case 37:if(h.isCollapsible())break;d>2||2==d&&r.hasClass("sm-vertical")?h.activatedItems[d-2].focusSM():r.hasClass("sm-vertical")||o(h.activatedItems[0].parent()).focusSM();break;case 38:if(h.isCollapsible()){var v;d>1&&(v=e(c)).length&&u[0]==v[0]?h.activatedItems[d-2].focusSM():o(l).focusSM()}else 1==d&&!r.hasClass("sm-vertical")&&h.visibleSubMenus[d]&&h.opts.bottomToTopSubMenus?i(h.visibleSubMenus[d]).focusSM():(d>1||r.hasClass("sm-vertical"))&&o(l).focusSM();break;case 39:if(h.isCollapsible())break;1!=d&&h.visibleSubMenus[d]||r.hasClass("sm-vertical")?h.visibleSubMenus[d]&&!h.visibleSubMenus[d].hasClass("mega-menu")&&e(h.visibleSubMenus[d]).focusSM():s(h.activatedItems[0].parent()).focusSM();break;case 40:if(h.isCollapsible()){var b,S;if(h.visibleSubMenus[d]&&!h.visibleSubMenus[d].hasClass("mega-menu")&&(b=e(h.visibleSubMenus[d])).length)b.focusSM();else if(d>1&&(S=i(c)).length&&u[0]==S[0]){for(var M=h.activatedItems[d-2].parent(),g=null;M.is("li")&&!(g=s(M,!0)).length;)M=M.parent().parent();g.focusSM()}else s(l).focusSM()}else 1!=d||r.hasClass("sm-vertical")||!h.visibleSubMenus[d]||h.opts.bottomToTopSubMenus?(d>1||r.hasClass("sm-vertical"))&&s(l).focusSM():e(h.visibleSubMenus[d]).focusSM()}a.stopPropagation(),a.preventDefault()}}}}}),t(document).delegate("ul.sm","keydown.smartmenus",t.SmartMenus.Keyboard.docKeydown),t.extend(t.SmartMenus.prototype,{keyboardSetEscapeFocus:function(t){this.opts.keyboardEscapeFocus=t},keyboardSetHotkey:function(i,s){var o=this;t(document).bind("keydown.smartmenus"+this.rootId,function(a){if(i==a.keyCode){var n=!0;s&&("string"==typeof s&&(s=[s]),t.each(["ctrlKey","shiftKey","altKey","metaKey"],function(e,i){return t.inArray(i,s)>=0&&!a[i]||0>t.inArray(i,s)&&a[i]?(n=!1,!1):void 0})),n&&(e(o.$root).focusSM(),a.stopPropagation(),a.preventDefault())}})}})})(jQuery);