+++ /dev/null
-/**
- * widget object constructor
- * @param {void}
- * widget()
- * @return {void}
- */
-
-if (typeof window.menu == "undefined" || !window.menu)
-{
- window.menu =
- {
- author : 'Nokia WRT Emulation Library',
- items : [],
- index : null,
- isDimmed : false,
-
- // Event triggers
- onShow : null,
- onRightSoftKeySelect : null,
- };
-
-
- /*
- Function : menu.append()
- Argument : MenuItem Object
- Returns : Void
- Description : Function appends MenuItem to a Menu Object
- */
- menu.append = function(MenuItem)
- {
- if(this.allowedTypeOf(MenuItem))
- {
- var i;
- var flag = true;
- try{
- for(var key in this.items)
- {
- if(this.items[key].id == MenuItem.id)
- {
- flag = false;
- break;
- }
- }} catch(e){ }
- if(flag)
- {
- // MenuItem.parent = this;
- this.items[MenuItem.id] = MenuItem;
- }
- }
- }
-
-
- /*
- Function : menu.remove()
- Argument : MenuItem Object
- Returns : Void
- Description : Function Remove the menuItem and its children from the container options menu.
- */
- menu.remove = function(MenuItem)
- {
- if(!this.allowedTypeOf(MenuItem))
- return false;
-
- var flag = false;
- if (this.items.length) {
- for (var key in this.items) {
- if (this.items[key].id == MenuItem.id) {
- flag = true;
- break;
- }
- }
- }
- if(flag)
- {
- this.items.splice(key, 1);
- }
- }
-
- /*
- Function : menu.clear()
- Argument : Void
- Returns : Void
- Description : Clears (deletes) all the menu items in the menupane.
- */
- menu.clear = function()
- {
- try
- {
- this.items.splice(0, this.items.length);
- }catch(e){}
- }
-
-
- /*
- Function : Menu.getMenuItemById(id)
- Argument : Integer
- Returns : MenuItem Object
- Description : Function get the MenuItem Object with the reference of id
- */
- menu.getMenuItemById = function(id)
- {
- var menuItemRef = menu.menuItemExhistsById(this, id, 0);
- if(this.allowedTypeOf(menuItemRef))
- return menuItemRef;
- else
- return undefined;
- }
-
-
- /*
- Function : Menu.getMenuItemByName(name)
- Argument : String
- Returns : MenuItem Object
- Description : Function get the MenuItem Object with the reference of String name
- */
- menu.getMenuItemByName = function(name)
- {
- var menuItemRef = menu.menuItemExhistsById(this, name, 1);
-
- // if(menuItemRef !=null)
- if(this.allowedTypeOf(menuItemRef))
- return menuItemRef;
- else
- return undefined;
- }
-
- /*
- Function : Menu.setRightSoftkeyLabel()
- Argument : String, Function
- Returns : Void
- Description : Set the label of the right soft key to str. This enables the default text
- to be changed from exit and a new function assigned by setting a callbackfunction
- */
-
- menu.setRightSoftkeyLabel = function(label, callback)
- {
- window.menu = this;
- try
- {
- if(typeof label != '' && !label)
- this.setExitToRsk();
-
- else if(typeof callback != 'function' && !callback)
- this.setExitToRsk();
-
- else if (_BRIDGE_REF.nokia.menu.setRsk(callback)) {
- _BRIDGE_REF.parent.$("#RskLabel > a")[0].innerHTML = label;
- _BRIDGE_REF.nokia.menu.rsk_label = label;
- _BRIDGE_REF.nokia.menu.rsk_event = callback;
- _BRIDGE_REF.nokia.menu.is_rsk_overridden = true;
- }
- else
- this.setExitToRsk();
-
- }catch(e){
- // alert(e);
- }
- }
-
-
- menu.setExitToRsk = function()
- {
- this.onRightSoftKeySelect = null;
-
- _BRIDGE_REF.nokia.menu.is_rsk_overridden = false;
- _BRIDGE_REF.nokia.menu.rsk_label = '';
- _BRIDGE_REF.nokia.menu.rsk_event = null;
- _BRIDGE_REF.parent.$("#RskLabel > a")[0].innerHTML = 'Exit';
-
- _BRIDGE_REF.nokia.menu.setRsk(function(){
- _BRIDGE_REF.nokia.menu.exit();
- });
- }
-
- /*
- Function : Menu.showSoftkeys()
- Argument : Void
- Returns : Void
- Description : Makes the softkeys visible. By default the softkeys are not visible
-
- */
- menu.showSoftkeys = function()
- {
- /*
- * Shows showSoftkeys
- */
- _BRIDGE_REF.nokia.menu.softkeys_visibility = true;
- _BRIDGE_REF.nokia.menu.showSoftKeys();
- }
-
- /*
- Function : Menu.hideSoftkeys()
- Argument : Void
- Returns : Void
- Description : Makes the softkeys invisible. By default the softkeys are not visible.
-
- */
- menu.hideSoftkeys = function()
- {
- /*
- * Hide showSoftkeys
- */
- _BRIDGE_REF.nokia.menu.softkeys_visibility = false;
- _BRIDGE_REF.nokia.menu.hideSoftKeys();
- }
-
-
- /*
- *
- * ----------------------------------------------------------------
- * Exta Functionalities which helps to make main functions to work
- * ----------------------------------------------------------------
- *
- */
-
- menu.cancel = function()
- {
- _BRIDGE_REF.nokia.menu.cancel();
- }
-
- menu.exit = function()
- {
- _BRIDGE_REF.nokia.menu.exit();
- }
-
-
- menu.triggeLSKEvent = function()
- {
- if(typeof(window.menu.onShow) == 'function')
- {
- window.menu.onShow();
- }
- _BRIDGE_REF.parent.$('#softKeysPane').show();
- this.show();
- }
-
- menu.triggerEvent = function(MenuItemId)
- {
- try{
- var menuItemRef = this.menuItemExhistsById(this, MenuItemId, 0);
- if(menuItemRef != null)
- {
- if(typeof menuItemRef.onSelect == 'function')
- menuItemRef.onSelect(MenuItemId);
-
- if(_BRIDGE_REF.helper.getElementsLengthInObject(menuItemRef.items))
- this.show(MenuItemId);
- else
- this.cancel();
-
- }else
- {
- this.show();
- }
- }
- catch(e)
- {
- alert('triggeEvent: '+MenuItemId+' >> '+e);
- }
- }
-
- menu.hasChild = function(parentId)
- {
- for(var i in this.items)
- {
- if(this.items[i].parentId == parentId)
- {
- return true;
- }
- }
- return false;
- }
-
-
- menu.allowedTypeOf = function(MenuItem)
- {
- try
- {
- if( (typeof(MenuItem) == 'object') && (MenuItem.type == 'MenuItem'))
- return true;
- }
- catch(e)
- {
- return false;
- }
- }
-
- menu.show = function(parentId)
- {
- try
- {
- var menuItemsPane = _BRIDGE_REF.parent.$('#MenuItemsArea')
- menuItemsPane = menuItemsPane[0];
-
- menuItemsPane.innerHTML = '';
-
- var ul = document.createElement('ul');
- var ele = window.menu;
-
- if(typeof parentId != 'undefined' && typeof parentId == 'object')
- {
- if (typeof window.menu.onShow != null && typeof window.menu.onShow == 'function') {
- window.menu.onShow();
- }
- }
-
- if(typeof parentId == 'number')
- {
- var tempRef = menu.menuItemExhistsById(ele, parentId, 0);
-
- if(typeof parentId != 'undefined' && typeof tempRef != 'undefined')
- ele = tempRef;
- }
-
- if(_BRIDGE_REF.helper.getElementsLengthInObject(ele.items))
- {
- for(var key in ele.items)
- {
- if(!ele.items[key].isDimmed){
-
- try{
- ul.appendChild(menu.create_menuElement(ele.items[key]));
- }catch(e){ }
- }
- }
- if(typeof parentId == 'number' && _BRIDGE_REF.helper.getElementsLengthInObject(ele.items))
- {
- if(ele.parent)
- ul.appendChild(menu.create_normalMenuItem('Back', ele.parent.id));
- else
- ul.appendChild(menu.create_normalMenuItem('Back', null));
- }
- else
- {
- ul.appendChild(menu.create_exitMenuItem());
- }
-
-
- if(_BRIDGE_REF.helper.getElementsLengthInObject(ele.items) > 5)
- menuItemsPane.style.overflowY = 'scroll';
- else
- menuItemsPane.style.overflowY = 'hidden';
-
- }
- else
- {
- menuItemsPane.style.overflowY = 'hidden';
- ul.appendChild(menu.create_exitMenuItem());
- }
- menuItemsPane.innerHTML = '<ul>'+ul.innerHTML+'</ul>';
-
- _BRIDGE_REF.nokia.menu.show();
- }
- catch(e)
- {
- alert('menu.show: '+e);
- }
- }
-
-
-
-/*
-*
-* HELPER FUNCTIONS
-*
-*/
-
- menu.menuItemExhistsById = function(menuReference, value, argumentType)
- {
- var flag = null;
-
- for(var key in menuReference.items)
- {
- if(!argumentType)
- {
- if(menuReference.items[key].id == value)
- {
- flag = true;
- break;
- }
- }
- else
- {
- if(menuReference.items[key].name == value)
- {
- flag = true;
- break;
- }
- }
-
- if(menuReference.items[key].items != undefined && menuReference.items[key].items.length)
- {
- var temp = this.menuItemExhistsById(menuReference.items[key], value, argumentType);
- if(temp)
- return temp;
- }
- }
- if(flag)
- {
- // crate a package and send it
- menuReference.items[key].index = key;
- return menuReference.items[key];
- }
- else
- return null;
- }
-
- menu.create_menuElement = function(MenuItem)
- {
- var listitem = document.createElement('li');
- listitem.id = MenuItem.id;
- listitem.setAttribute('onClick', 'javascript:NOKIA.emulator.child.menu.triggerEvent('+MenuItem.id+');');
-
- var anchor = document.createElement('a');
- anchor.id = 'subMenuItem_'+MenuItem.id;
- anchor.innerHTML = MenuItem.name;
- if(_BRIDGE_REF.helper.getElementsLengthInObject(MenuItem.items))
- {
- anchor.className = 'subMenuItem';
- anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.show('+MenuItem.id+');');
- }
- listitem.appendChild(anchor);
- return (listitem);
- }
-
- menu.create_normalMenuItem = function(MenuTitle, index)
- {
- var listitem = document.createElement('li');
-
- var anchor = document.createElement('a');
- anchor.id = 'subMenuItem_BACK';
- anchor.innerHTML = MenuTitle;
-
- if (MenuTitle == 'Back') {
- listitem.className = 'exitOrBackBtn';
- anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.triggerEvent(' + index + ');');
- }
- else
- anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.triggerEvent(' + index + ');');
-
- listitem.appendChild(anchor);
- return (listitem);
- }
-
- menu.create_exitMenuItem = function()
- {
- var listitem = document.createElement('li');
- listitem.className = 'exitOrBackBtn';
- var anchor = document.createElement('a');
- anchor.id = 'subMenuItem_EXIT';
- anchor.innerHTML = 'Exit';
- anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.exit();');
- listitem.setAttribute('onClick', 'javascript:NOKIA.emulator.child.menu.exit();');
-
- listitem.appendChild(anchor);
- return (listitem);
- }
-
- menu.triggeRSK = function()
- {
- try {
- if (window.menu) {
- if (childToParent_Reference.$('softKeysPane').style.display != 'none') {
- if (window.menu.onRightSoftKeySelect != null) {
- window.menu.onRightSoftKeySelect();
- window.menu.cancel();
- }
- else {
- window.menu.cancel();
- }
- }
- }
- }catch(e)
- {
- alert(e);
- }
- }
-
- menu.triggeLSK = function()
- {
- if(window.menu)
- {
- window.menu.show();
- if(typeof(window.menu.onShow) == 'function')
- {
- if(window.menu.onShow)
- {
- window.menu.onShow();
- }
- }
- }
- }
-
-
- // make TRUE menu.js script loaded
- window.parent.NOKIA.scriptsLoaded.menu = true;
-}
\ No newline at end of file