function ExtendMenuWithKeyboard(){if((typeof(IucundeWebMenu)=="undefined")||(typeof(IucundeWebMenu.KeyDown)!="undefined")){return;}IucundeWebMenu.prototype.LastOpenedLevel=function(){var TmpLevel=0;for(var i=0;i<this.GroupStateManagement.length;i++){if((this.GroupStateManagement[i]!=null)&&(TmpLevel<i)){TmpLevel=i;}}return TmpLevel;};IucundeWebMenu.prototype.LastOpenedGroup=function(openedLevel){if(openedLevel!=0){return this.GetGroup(this.GroupStateManagement[openedLevel]);}else{return this.RootGroup;}};IucundeWebMenu.prototype.LastActiveItem=function(openedGroup){if(this.Helper.IsDefined(openedGroup)){if(this.Helper.IsDefined(openedGroup.DefaultItem)){return openedGroup.DefaultItem;}else if(this.Helper.IsDefined(openedGroup.Items)&&this.Helper.IsDefined(openedGroup.Items[0])){return openedGroup.Items[0];}}return null;};IucundeWebMenu.prototype.IsMenuActive=function(openedGroup){if(this.Helper.IsDefined(openedGroup)){if(this.Helper.IsDefined(openedGroup.DefaultItem)){return true;}else if(this.Helper.IsDefined(this.RootGroup.DefaultItem)){return true;}}return false;};IucundeWebMenu.prototype.OpenChildGroup=function(parentItem){var TempChildGroup=parentItem.ChildGroup;if(TempChildGroup&&TempChildGroup.ID){this.GroupStateManagement[parentItem.Level+1]=TempChildGroup.ID;TempChildGroup.Show(parentItem.Container);this.ProcItemByObj(TempChildGroup.Items[0]);return true;}else{return false;}};IucundeWebMenu.prototype.GetShortCut=function(){var keyCombination="i";for(var i=0;i<this.KeyStack.length;i++){keyCombination+=this.KeyStack[i];}return keyCombination;};IucundeWebMenu.prototype.GetMenuActivation=function(){if(this.Helper.IsDefined(this.ActivationKey)){this.ActivateCombination="i";if(this.Helper.IsDefined(this.CtrlKey)){this.ActivateCombination+=this.CtrlKey;}if(this.Helper.IsDefined(this.AltKey)){this.ActivateCombination+=this.AltKey;}this.ActivateCombination+=this.ActivationKey;}};IucundeWebMenu.prototype.GetShortCutItem=function(){return this.KeySupportedItems.Get(this.GetShortCut());};IucundeWebMenu.prototype.KeyUp=function(processedEvent){if(!processedEvent){var processedEvent=window.event;}var KeyCode=this.Helper.GetKeyCode(processedEvent);var TempItem=this.GetShortCutItem();if(TempItem){TempItem.RemoveState(MODE_CLICKED);}if(KeyCode==KEY_ENTER){var FocusedLevel=this.LastOpenedLevel();if(FocusedLevel>0){FocusedLevel-=1;}var FocusedGroup=this.LastOpenedGroup(FocusedLevel);var FocusedItem=this.LastActiveItem(FocusedGroup);FocusedItem.RemoveState(MODE_CLICKED);FocusedItem.Render(MODE_HILIGHT);}this.KeyStack.pop();};IucundeWebMenu.prototype.KeyDown=function(processedEvent){if(!processedEvent){var processedEvent=window.event;}var EventSource=this.Helper.GetEventSource(processedEvent);if(EventSource.type=="text"||EventSource.type=="textarea"){return;}var KeyCode=this.Helper.GetKeyCode(processedEvent);var IsDirty=false;var FocusedLevel=this.LastOpenedLevel();var FocusedGroup=this.LastOpenedGroup(FocusedLevel);var FocusedItem=this.LastActiveItem(FocusedGroup);if(this.ActivateCombination==""){this.GetMenuActivation();}for(var i=0;i<this.KeyStack.length;i++){if(this.KeyStack[i]==KeyCode){IsDirty=true;switch(KeyCode){case KEY_UP:case KEY_DOWN:case KEY_RIGHT:case KEY_LEFT:case KEY_ESC:case KEY_ENTER:case KEY_SPACE:break;default:return;}}}if(!IsDirty){this.KeyStack.push(KeyCode);}if(this.ActivateCombination==this.GetShortCut()){if(this.UsesKeyboard==false){this.UsesKeyboard=true;this.ActivateMenu(processedEvent);}else{this.UsesKeyboard=false;this.DeactivateMenu(processedEvent);}return false;}var TempItem=this.GetShortCutItem();if(TempItem){if(this.UsesKeyboard==false){this.UsesKeyboard=true;this.ActivateRootItem(TempItem);}if(this.OpenChildGroup(TempItem)){TempItem.ApplyClick(processedEvent);TempItem.RemoveClick(processedEvent);}return false;}if(!this.IsMenuActive(FocusedGroup)){return;}switch(KeyCode){case KEY_UP:case KEY_DOWN:case KEY_RIGHT:case KEY_LEFT:case KEY_SPACE:this.Helper.PreventKeyAction(processedEvent);break;}if(this.UsesKeyboard==true){var FocusedLevel=this.LastOpenedLevel();var FocusedGroup=this.LastOpenedGroup(FocusedLevel);var FocusedItem=this.LastActiveItem(FocusedGroup);if(KeyCode==KEY_ESC){this.CloseAll((FocusedLevel-1));if((FocusedLevel-1)==0){this.UsesKeyboard=false;}return false;}if(KeyCode==KEY_SPACE){FocusedItem.ApplySelect(processedEvent);FocusedItem.RemoveSelect(processedEvent);}if(KeyCode==KEY_ENTER){if(FocusedItem.Enabled!=true){return;}if(!this.OpenChildGroup(FocusedItem)){FocusedItem.ApplyClick(processedEvent);FocusedItem.RemoveClick(processedEvent);}return false;}this.ProcItemByObj(this.FindNextNavigatableItem(FocusedItem,FocusedGroup,FocusedLevel,KeyCode));return false;}return true;};IucundeWebMenu.prototype.ActivateMenu=function(processedEvent){if(this.ClickToOpen==false){this.ClickToOpen=true;this.FirstClick=false;}if(this.RootGroup&&this.RootGroup.Items&&this.RootGroup.Items.length>0){this.ProcItemByObj(this.RootGroup.Items[0]);}};IucundeWebMenu.prototype.ActivateRootItem=function(item){if(this.ClickToOpen==false){this.ClickToOpen=true;this.FirstClick=false;}if(this.RootGroup&&this.RootGroup.Items&&this.RootGroup.Items.length>0){this.ProcItemByObj(item);}};IucundeWebMenu.prototype.DeactivateMenu=function(processedEvent){if(this.ClickToOpen==true){this.ClickToOpen=false;this.FirstClick=true;}this.CloseAll(0);window.status="";};IucundeWebMenu.prototype.ProcItemByObj=function(processedItem){if(processedItem){var ParentGroup=null;var ProcessedLevel=0;ParentGroup=processedItem.ParentGroup;ProcessedLevel=processedItem.Level;if((ProcessedLevel)>0&&(ParentGroup!=null)){if(this.GroupStateManagement[ProcessedLevel]!=ParentGroup.ID){this.GroupStateManagement[ProcessedLevel]=ParentGroup.ID;}if(ParentGroup.Visible!=true){ParentGroup.Show(ParentGroup.ParentItem.Container);}}this.ProcKeyNavItem(processedItem);}};IucundeWebMenu.prototype.ProcKeyNavItem=function(processedItem){this.ResetSchedule(this.closeAllPointer);this.CloseAll(processedItem.Level);if(processedItem==(processedItem.ParentGroup.DefaultItem)){return;}if(processedItem.ParentGroup){if(processedItem.ParentGroup.DefaultItem!=null){processedItem.ParentGroup.DefaultItem.RemoveHilight();}processedItem.ParentGroup.DefaultItem=processedItem;}if(!this.Helper.IsDefined(processedItem.TemplateID)){processedItem.ApplyHilight();}};IucundeWebMenu.prototype.NextItem=function(rootItem){if(rootItem.NextItem){if(rootItem.NextItem.IsSeparator){return this.NextItem(rootItem.NextItem);}return rootItem.NextItem;}else{return this.GroupFirstItem(rootItem.ParentGroup);}};IucundeWebMenu.prototype.PreviousItem=function(rootItem){if(rootItem.PreviousItem){if(rootItem.PreviousItem.IsSeparator){return this.PreviousItem(rootItem.PreviousItem);}return rootItem.PreviousItem;}else{return this.GroupLastItem(rootItem.ParentGroup);}};IucundeWebMenu.prototype.GroupFirstItem=function(rootGroup){if(rootGroup&&rootGroup.Items){if(rootGroup.Items[0].IsSeparator){return this.NextItem(rootGroup.Items[0]);}return rootGroup.Items[0];}return null;};IucundeWebMenu.prototype.GroupLastItem=function(rootGroup){if(rootGroup&&rootGroup.Items){if(rootGroup.Items[(rootGroup.Items.length-1)].IsSeparator){return this.PreviousItem(rootGroup.Items[(rootGroup.Items.length-1)]);}return rootGroup.Items[(rootGroup.Items.length-1)];}return null;};IucundeWebMenu.prototype.FindNextNavigatableItem=function(defaultItem,defaultGroup,defaultLevel,navigationDirection){if(!this.Helper.IsDefined(defaultItem)||!this.Helper.IsDefined(defaultGroup)||!this.Helper.IsDefined(defaultLevel)){return null;}var GroupDirection=defaultGroup.Flow;switch(navigationDirection){case KEY_UP:if(GroupDirection==VERTICAL_DIRECTION){return this.PreviousItem(defaultItem);}else if(defaultItem.ChildGroup){return this.GroupFirstItem(defaultItem.ChildGroup);}break;case KEY_DOWN:if(GroupDirection==VERTICAL_DIRECTION){return this.NextItem(defaultItem);}else if(defaultItem.ChildGroup){return this.GroupFirstItem(defaultItem.ChildGroup);}break;case KEY_RIGHT:if(GroupDirection==VERTICAL_DIRECTION){if(defaultItem.ChildGroup){return this.GroupFirstItem(defaultItem.ChildGroup);}else{var IsMainGroup=true;if((defaultLevel-1)<0){return null;}defaultGroup=this.LastOpenedGroup(defaultLevel-1);if(defaultGroup.Flow==VERTICAL_DIRECTION){for(var i=this.GroupStateManagement.length;i>=0;i--){if(this.GroupStateManagement[i]){defaultGroup=this.GetGroup(this.GroupStateManagement[i]);if(defaultGroup.Flow==HORIZONTAL_DIRECTION){IsMainGroup=false;break;}}}if(IsMainGroup){defaultGroup=this.RootGroup;}}return this.NextItem(defaultGroup.DefaultItem);}}else{return this.NextItem(defaultItem);}break;case KEY_LEFT:if(GroupDirection==VERTICAL_DIRECTION){if((defaultLevel-1)<0){return null;}defaultGroup=this.LastOpenedGroup(defaultLevel-1);if(defaultGroup.Flow==VERTICAL_DIRECTION){return defaultGroup.DefaultItem;}else{return this.PreviousItem(defaultGroup.DefaultItem);}}else{return this.PreviousItem(defaultItem);}break;default:return;}}}
