/**
* Fusion 8 DHTML Menus
*/
/*****************************************
Global Parameters
*****************************************/
var GLOBAL_LoadedImages = new Array();
var GLOBAL_CurrentItem = "";
var GLOBAL_Close = null;
var GLOBAL_Hide = null;
var GLOBAL_items = new NOF_OpenedItems();
var GLOBAL_slideItem = null;
var GLOBAL_slideSpeed = 10; //Defines how fast the slide submenus will unfold
var GLOBAL_slidePixel = 0;
var GLOBAL_slideMinOffset = -800;
var GLOBAL_slideMaxOffset = 800;
var useDebuger = false;
/*
* DOM compliant browsers
*/
function NOF_DOMBrowser() {
this.getMenuItemLayerStartString = function getMenuItemLayerStartString(menuItemId, parentId) {
parentId = ( (parentId != null) && (parentId != "undefined") && (typeof(parentId) != "undefined"))
? new String(parentId + CONSTANTS.MENU_LAYER_SUFIX) : null;
menuItemId += CONSTANTS.MENU_LAYER_SUFIX;
var isAutoClose = typeof(C_MENU_AUTO_CLOSE) == "undefined" || C_MENU_AUTO_CLOSE == true ? "true" : "false";
return '
';
}
/** method showMenuItem
*@parameter image Image object - item parent
*@parameter item String or Object coresponding to a layer
*@parameter offsetX: horizontal offset distance from parent
*@parameter offsetY: vertical offset distance from parent
*@parameter direction Horizontal = false, Vertical = true
*/
this.showMenuItem = function showMenuItem(image, item, offsetX, offsetY, openEffect) {
if (typeof(item) == "string")
item = this.getItem(item)
image = typeof(image) == "string" ? this.getItem(image) : image;
var top = this.findItemTopOffset(image);
var left = this.findItemLeftOffset(image);
var slideDirection = "";
if (openEffect.indexOf("left") > -1 || openEffect.indexOf("Left") > -1 ) {
top += offsetY;
left -= offsetX;
slideDirection = "left";
} else if (openEffect.indexOf("top") > -1 || openEffect.indexOf("Top") > -1 ) {
top -= offsetY;
left += offsetX;
slideDirection = "top";
} else if (openEffect.indexOf("right") > -1 || openEffect.indexOf("Right") > -1 ) {
top += offsetY;
left += offsetX;
slideDirection = "right";
} else { // Bottom
top += offsetY;
left += offsetX;
slideDirection = "bottom";
}
if (item == null || typeof(item.style) == "undefined" || item.style == null )
return;
item.style.top = top;
item.style.left = left;
item.style.visibility = "visible";
if (openEffect.indexOf("slide") > -1)
this.slideEffect(item, slideDirection);
else if (openEffect.indexOf("fade") > -1)
this.fadeEffect(item);
}
this.hideMenuItem = function hideMenuItem(item) {
if (typeof(item) == "string")
item = this.getItem(item)
if ( item == null || typeof(item) == "undefined" || item == "")
return;
item.style.visibility = "hidden";
}
this.findItemLeftOffset = function findItemLeftOffset(item) {
var offset = item.offsetLeft;
if (item.offsetParent)
offset += this.findItemLeftOffset(item.offsetParent);
return offset;
}
this.findItemTopOffset = function findItemTopOffset(item) {
var offset = item.offsetTop;
if (item.offsetParent)
offset += this.findItemTopOffset(item.offsetParent);
return offset;
}
this.getItem = function getItem(itemId) {
return document.getElementById(itemId);
}
this.getItemAttribute = function getItemAttribute(itemId, attrId) {
if (this.getItem(itemId)) {
var attr = this.getItem(itemId).attributes;
return eval("attr." + attrId.toLowerCase() + ".value");
}
}
this.debug = function debug(txt) {
var container = this.getItem("debug");
if ( useDebuger )
container.value += txt + "\n";
}
this.fadeEffect = function fadeEffect(item) {
item.style.visibility = "hidden";
item.filters.blendTrans.Apply();
item.filters.blendTrans.Play();
item.style.visibility = "visible";
}
this.slideEffect = function slideEffect(item, margin) {
GLOBAL_slideItem = item;
this.setItemClip('rect(auto, auto, auto, auto)');
GLOBAL_slidePixel = (margin == "top" || margin == "left") ? 100 : 0;
this.playEffect(margin);
}
this.playEffect = function playEffect(margin) {
var clip = GLOBAL_slideItem.style.clip;
if (clip.indexOf("-") > 0) // NS7.x fix
return;
if (GLOBAL_slidePixel < GLOBAL_slideMinOffset || GLOBAL_slidePixel > GLOBAL_slideMaxOffset)
return;
var rect = 'rect(';
if (margin == "top") {
GLOBAL_slidePixel -= 3;
rect += GLOBAL_slidePixel +'px auto auto auto)';
} else if (margin == "right") {
GLOBAL_slidePixel += 3;
rect += 'auto ' + GLOBAL_slidePixel +'px auto auto)';
} else if (margin == "bottom") {
GLOBAL_slidePixel += 3;
rect += 'auto auto ' + GLOBAL_slidePixel + 'px auto)';
} else {//left
GLOBAL_slidePixel -= 3;
rect += 'auto auto auto ' + GLOBAL_slidePixel + 'px)';
}
this.setItemClip(rect);
setTimeout('browser.playEffect("' + margin + '")', GLOBAL_slideSpeed);
}
this.setItemClip = function setItemClip(rect) {
GLOBAL_slideItem.style.clip = rect;
}
this.getLayerTag = function getLayerTag() { return "div" };
}
/*
* Netscape 6+ and Mozilla
*/
function NOF_BrowserNetscapeNavigator() {
//Event capture
window.onclick= HideMenu;
this.fadeEffect = function fadeEffect() { return; };
return this;
}
NOF_BrowserNetscapeNavigator.prototype = new NOF_DOMBrowser;
/*
* Internet Explorer 5+
*/
function NOF_BrowserInternetExplorer() {
//Event capture
document.onmouseup = HideMenu;
}
NOF_BrowserInternetExplorer.prototype = new NOF_DOMBrowser;
/*
* Nestcape Navigator version 4.x
*/
function NOF_BrowserNetscape4x() {
this.getMenuItemLayerStartString = function getMenuItemLayerStartString(menuItemId, parentId) {
parentId = ( (parentId != null) && (parentId != "undefined") && (typeof(parentId) != "undefined"))
? new String(parentId + CONSTANTS.MENU_LAYER_SUFIX) : null;
menuItemId += CONSTANTS.MENU_LAYER_SUFIX;
var isAutoClose = typeof(C_MENU_AUTO_CLOSE) == "undefined" || C_MENU_AUTO_CLOSE == true ? "true" : "false";
return '';
}
this.getImageParent = function getImageParent(imageObject){
for (var position = 0; position < document.layers.length; position++) {
var layer = document.layers[position];
for (var imagePosition = 0; imagePosition < layer.document.images.length; imagePosition++) {
if (layer.document.images[imagePosition].name == imageObject.name) {
return layer;
}
}
}
return null;
}
/** method showMenuItem
*@parameter image Image object - item parent
*@parameter item String or Object coresponding to a layer
*@parameter offsetX: horizontal offset distance from parent
*@parameter offsetY: vertical offset distance from parent
*@parameter direction Horizontal = false, Vertical = true
*/
this.showMenuItem = function showMenuItem(image, item, offsetX, offsetY, openEffect) {
var parent = this.getImageParent(image);
var itemId = image;
if (typeof(item) == "string")
item = this.getItem(item)
image = typeof(image) == "string" ? this.getItem(image) : image;
var top = this.findItemTopOffset(image);
var left = this.findItemLeftOffset(image);
if (parent != null) {
left += parent.pageX;
top += parent.pageY;
}
var slideDirection = "";
if (openEffect.indexOf("left") > -1 || openEffect.indexOf("Left") > -1 ) {
top += offsetY;
left -= offsetX;
slideDirection = "left";
} else if (openEffect.indexOf("top") > -1 || openEffect.indexOf("Top") > -1 ) {
top -= offsetY;
left += offsetX;
slideDirection = "top";
} else if (openEffect.indexOf("right") > -1 || openEffect.indexOf("Right") > -1 ) {
top += offsetY;
left += offsetX;
slideDirection = "right";
} else { // Bottom
top += offsetY;
left += offsetX;
slideDirection = "bottom";
}
if (typeof(item) == "undefined")
return;
item.y = parseInt(top);
item.x = parseInt(left);
item.visibility = "visible";
if (openEffect.indexOf("slide") > -1)
this.slideEffect(item, slideDirection);
else if (openEffect.indexOf("fade") > -1) {
this.fadeEffect(item);
}
}
this.hideMenuItem = function hideMenuItem(item) {
if (typeof(item) == "string")
item = this.getItem(item)
if ( item == null || typeof(item) == "undefined" || item == "")
return;
item.visibility = "hide";
}
this.findItemLeftOffset = function findItemLeftOffset(item) {
return item.x;
}
this.findItemTopOffset = function findItemTopOffset(item) {
return item.y;
}
this.getItem = function getItem(itemId) {
if (itemId == "")
return;
var item = eval("document.layers['" + itemId + "']");
return item;
}
this.getItemAttribute = function getItemAttribute(itemId, attrId) {
return eval("document.layers['" + itemId.toLowerCase() + "']." + attrId);
}
this.getLayerTag = function getLayerTag() { return "layer" };
this.slideEffect = function slideEffect(item, margin) {
GLOBAL_slideItem = item;
GLOBAL_slidePixel = (margin == "bottom" || margin == "left") ? 200 : 0;
this.playEffect(margin);
}
this.playEffect = function playEffect(margin) {
if (GLOBAL_slidePixel < GLOBAL_slideMinOffset || GLOBAL_slidePixel > GLOBAL_slideMaxOffset)
return;
if (margin == "top") {
GLOBAL_slideItem.clip.bottom = GLOBAL_slidePixel += 1;
} else if (margin == "right") {
GLOBAL_slideItem.clip.right = GLOBAL_slidePixel += 1;
} else if (margin == "bottom") {
GLOBAL_slideItem.clip.top = GLOBAL_slidePixel -= 1;
} else {//left
GLOBAL_slideItem.clip.left = GLOBAL_slidePixel -= 1;
}
setTimeout('browser.playEffect("' + margin + '")', GLOBAL_slideSpeed);
}
}
NOF_BrowserNetscape4x.prototype = new NOF_DOMBrowser;
/** NOF.BrowserFactory
*@return The associate class for the browser
*/
function NOF_BrowserFactory() {
var agt = navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
(agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_gecko = (agt.indexOf('gecko') != -1);
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3 = (is_ie && (is_major < 4));
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
var is_ie4up = (is_ie && (is_major >= 4));
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6 = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie6up = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
var is_opera = (agt.indexOf("opera") != -1);
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
this.getBrowser = function getBrowser() {
if (is_ie5up) {
return new NOF_BrowserInternetExplorer();
}
if (is_nav6up) {
return new NOF_BrowserNetscapeNavigator();
}
if (is_opera5up) {
return new NOF_BrowserInternetExplorer();
}
if (is_nav4) {
return new NOF_BrowserNetscape4x();
}
}
}
var browserFactory = new NOF_BrowserFactory();
var browser = browserFactory.getBrowser();
/*****************************************
NOF.Menu Constants
*****************************************/
var CONSTANTS = {
MENU_TYPE_IMAGE : "Image",
MENU_TYPE_TEXT : "Text",
BUTTON_TYPE_IMAGE : "image",
BUTTON_TYPE_TEXT : "text",
MENU_TABLE_HEADER : '',
MOUSE_OVER_IMAGE : 1,
MOUSE_OUT_IMAGE : 2,
MENU_ITEM_HORIZONTAL : false,
MENU_ITEM_VERTICAL : true,
MENU_LAYER_SUFIX : "LYR",
NOT_A_MAIN_ITEM : 1,
MENU_REFRESH_TIME : 600
}
/**
* NOF_Menu
*/
function NOF_Menu() {
return this;
}
/**
* NOF_Menu_Item
*/
function NOF_Menu_Item() {
this.id = arguments[0]; //div id
this.orientation = arguments[1];
this.openEffect = arguments[2];
this.offsetX = arguments[3];
this.offsetY = arguments[4];
this.buttons = new Array();
this.submenuHeight = 0;
for (var i = 5; i < arguments.length; i++)
this.buttons[i - 5] = arguments[i];
this.getPosition = function () {
return new Array(this.offsetX, this.offsetY);
}
this.getOffsetX = function getOffsetX() { return this.offsetX;}
this.getOffsetY = function getOffsetY() { return this.offsetY;}
this.getOpenEffect = function getOffsetY() { return this.openEffect;}
this.getOrientation = function getOrientation() { return this.orientation; }
return this;
}
/**
@name NOF_Menu_Button
@parameter normal : image name (src) or text (link value), depending on button type : image or text.
@parameter rollover : rollover image name or css attributes, depending on button type : image or text.
@parameter submenu : a NOF_Menu_Item instance.
*/
function NOF_Menu_Button(link, normal, rollover, submenu) {
this.link = link;
this.normal = normal;
this.rollover = rollover != "" ? rollover : normal;
this.submenu = submenu;
this.hasSubmenu = function hasSubmenu() {
return (this.submenu != null)
}
this.type = function type() {
if (typeof(this.rollover) == "object")
return CONSTANTS.BUTTON_TYPE_TEXT;
else if (typeof(this.rollover) == "string")
return CONSTANTS.BUTTON_TYPE_IMAGE;
else
return null;
}
return this;
}
/**
*@name NOF_Main_Menu
*@description Menu generation - HTML code insertion in page
*@parameter NOF_Menu_Item menuItem
*@parameter parentId (another NOF_Menu_Item) of NOF_Menu_Item menuItem
*/
function NOF_Main_Menu(menuItem, parentId) {
if(typeof(menuItem) == "undefined")
return;
var menuItemId = menuItem.id;
var buffer = browser.getMenuItemLayerStartString(menuItemId, parentId) + '';
var i = 0;
buffer += '';
while (i < menuItem.buttons.length) {
var menuButton = menuItem.buttons[i];
if (menuButton == null) // If page is excluded from navigation then button is 'null'
return;
var submenuId = "";
if (menuButton.hasSubmenu() && menuButton.submenu) {
submenuId = menuButton.submenu.id;
}
var link = menuButton.link; // Link to Page
var image = menuButton.normal; // Image - menu cell
var rollOverButton = menuButton.rollover; // Roll over image - loaded onmouseover,
var isImageMenu = menuButton.type() == CONSTANTS.BUTTON_TYPE_IMAGE ? true : false;
var imageName = isImageMenu ? menuItemId + 's' + i : 'NavigationButton_' + menuItemId + '_' + i;
var isVertical = menuItem.orientation == "vertical" ? true : false;
// Extract link target and href
var target = '';
if (link.indexOf(' target=') != -1) {
target = link.substr(link.indexOf(' target=') + 8);
link = link.substr(0, link.indexOf(' target='));
}
// Append buttons on vertical or horizontal
buffer += (isVertical && i > 1) ? '
' : ' | ';
// Append button link and mouse over event
buffer += '' : '>';
// If button is image then append tag, otherwise append
buffer += isImageMenu ? '  | ' :
'><' + browser.getLayerTag() + ' id="' + imageName + '_padding" style="padding:' + rollOverButton[1] + '" padding="' + rollOverButton[1] + '" paddingOver="' + rollOverButton[3] + '">' + image +
'' + browser.getLayerTag() + '>' + browser.getLayerTag() + '>';
buffer += isVertical ? "
" : "";
i++;
}
buffer += CONSTANTS.MENU_TABLE_END + browser.getMenuItemLayerEndString();
document.writeln(buffer);
var k = 0;
while (k < menuItem.buttons.length) {
if (menuItem.buttons[k].hasSubmenu()) {
NOF_Main_Menu(menuItem.buttons[k].submenu, menuItem.id);
}
k++;
}
}
/**
*@name NOF.MenuLoadRollOverImage
*@parameter button:
*@parameter buttonName:
*@parameter submenu: Array(int offsetX, int offsetY, String submenuId, boolean ??).
*/
function NOF_MenuLoadRollOver(button, buttonName, submenu) {
// Check if button is image
if (button && button.src &&
(null == button.out || typeof(button.out) == typeof(void(0)))) {
var imageSrc = button.src;
button.out = new Image();
button.out.src = imageSrc;
button.over = new Image();
if (buttonName.lastIndexOf('/') >= 0 || buttonName.lastIndexOf('\\') >= 0) {
imageSrc = buttonName;
} else {
var i = imageSrc.lastIndexOf('/');
if (i < 0)
i = imageSrc.lastIndexOf('\\');
if (i < 0)
imageSrc = buttonName;
else
imageSrc = imageSrc.substring(0, i + 1) + buttonName;
}
button.over.src = imageSrc;
button.submenu = submenu;
GLOBAL_LoadedImages[button.name] = button;
// Button is text
} else {
if (typeof(buttonName) == "object") {
if (typeof(GLOBAL_LoadedImages[button]) == "undefined") {
GLOBAL_LoadedImages[button + "Normal"] = buttonName[0];
GLOBAL_LoadedImages[button + "Over"] = buttonName[2];
GLOBAL_LoadedImages[button] = submenu;
}
return;
}
if (typeof(submenu) != "undefined" && typeof(button) == "string" && typeof(GLOBAL_LoadedImages[button]) == "undefined")
GLOBAL_LoadedImages[button] = submenu;
}
}
/**
*@name NOF.MenuRollButton
*@description Show rollover cell
*@parameter buttonName: image name
*@parameter over: 1 means mouse over (load rollverimage) , 0 means mouseout (load original image).
*/
function NOF_MenuRollButton(buttonName, over, layerId, isNotMainItem) {
var rollType = (over == CONSTANTS.MOUSE_OVER_IMAGE) ? "over" : "out"; // Defined in NOF_MenuLoadRollOver
var isOver = (over == CONSTANTS.MOUSE_OVER_IMAGE) ? true : false;
var rollOver = GLOBAL_LoadedImages[buttonName];
if (typeof(rollOver) == "undefined")
return;
var menuType = typeof(rollOver.src) == "undefined" ? CONSTANTS.MENU_TYPE_TEXT :
CONSTANTS.MENU_TYPE_IMAGE;
if (menuType == CONSTANTS.MENU_TYPE_IMAGE) { // Image menu
var imageRollSrcString = "rollOver." + rollType + ".src";
if (rollOver)
rollOver.src = eval(imageRollSrcString) ? eval(imageRollSrcString) : "";
} else if (menuType == CONSTANTS.MENU_TYPE_TEXT){ // Text menu
if (typeof(buttonName) == "string") {
browser.getItem(buttonName).className = isOver ? buttonName + "Hover" : buttonName;
if (browser.getItem(buttonName + "_padding")){
browser.getItem(buttonName + "_padding").style.padding = isOver ?
browser.getItem(buttonName + "_padding").paddingOver :
browser.getItem(buttonName + "_padding").padding;
}
if (typeof(browser.getItem(buttonName).style) != "undefined")
browser.getItem(buttonName).style.cssText = isOver ?
GLOBAL_LoadedImages[buttonName + "Over"] :
GLOBAL_LoadedImages[buttonName + "Normal"];
}
} else // Undefined menu type
return;
if ((isNotMainItem == null || typeof(isNotMainItem) == "undefined" ) && over == CONSTANTS.MOUSE_OUT_IMAGE) {
GLOBAL_CurrentItem = "";
GLOBAL_items.removeAll();
}
var hasSubmenu = null;
if (menuType == CONSTANTS.MENU_TYPE_IMAGE)
hasSubmenu = rollOver.submenu;
else if (menuType == CONSTANTS.MENU_TYPE_TEXT)
hasSubmenu = typeof(rollOver) == "object";
if (hasSubmenu) {
if (over == CONSTANTS.MOUSE_OVER_IMAGE) {
if ( layerId && typeof(layerId) != "undefined" && layerId != "null") {
if (GLOBAL_Close != null)
clearTimeout(GLOBAL_Close);
GLOBAL_items.removeSubitems(layerId + CONSTANTS.MENU_LAYER_SUFIX);
} else
GLOBAL_items.removeAll();
if (menuType == CONSTANTS.MENU_TYPE_IMAGE)
NOF_MenuOpenItem(rollOver, rollOver.submenu, layerId);
else
NOF_MenuOpenItem(buttonName, rollOver, layerId);
}
else { // MOUSE_OUT_IMAGE
if (menuType == CONSTANTS.MENU_TYPE_IMAGE)
NOF_MenuCloseItem(rollOver.submenu);
else
NOF_MenuCloseItem(rollOver);
}
} else if (over == CONSTANTS.MOUSE_OVER_IMAGE ) { // This image doesn't have a submenu, only a rollover button
if ( layerId && typeof(layerId) != "undefined" && layerId != "null" ) {
GLOBAL_CurrentItem = layerId + CONSTANTS.MENU_LAYER_SUFIX;
GLOBAL_items.removeSubitems(GLOBAL_CurrentItem);
} else // Only for html - always visible - menu part
browser.hideMenuItem(GLOBAL_CurrentItem);
}
}
/**
*@name NOF.MenuOpenItem
*@description Opens (visibility = 'visible') one menu item
*@parameter image Image object that is parent for this submenu
*@parameter imageSubmenu : Array(offset, layerId, horizontal) :
* offsetX - distance from parent left
* offsetY - distance from parent top
* layerId - layer ID that will be opened
* horizontal - indicates if it's horizontal or vertical. True = vertical, False = horizontal
*@parameter parentId
*@parameter
*/
function NOF_MenuOpenItem(image, submenu, parentId) {
var layerId = submenu[0] + CONSTANTS.MENU_LAYER_SUFIX;
var orientation = submenu[1];
var openEffect = submenu[2];
var offsetX = submenu[3];
var offsetY = submenu[4];
GLOBAL_items.addItem(layerId, parentId);
GLOBAL_CurrentItem = layerId; // Current opened layer
browser.showMenuItem(image, layerId, offsetX, offsetY, openEffect);
}
/**
*@name NOF.MenuCloseItem
*@description Close a menu item if mouse is out of it but not on his child.
*@parameter
*/
function NOF_MenuCloseItem(imageSubmenu) {
if (imageSubmenu[0]) {
var layerId = imageSubmenu[0] + CONSTANTS.MENU_LAYER_SUFIX;
// If mouse outside a cell that belongs to main menu (root) - close it
if (GLOBAL_items.toArray().length == 1)
GLOBAL_CurrentItem = 0;
GLOBAL_Close = setTimeout("NOF_MenuHideItem('" + layerId + "')", CONSTANTS.MENU_REFRESH_TIME/4);
}
}
/**
*@name NOF.MenuHideItem
*@description
*@parameter itemId
*/
function NOF_MenuHideItem(itemId) {
if (itemId && itemId != null && GLOBAL_CurrentItem != itemId) { // Close item if mouse not over it
browser.hideMenuItem(itemId);
}
}
/**
*@name NOF_KeepOpen
*@description Keeps a menu item (child) opened when mouse over it
*@parameter item Layer (Div) object
*/
function NOF_KeepOpen(itemId, parentId) {
GLOBAL_CurrentItem = itemId;
if (GLOBAL_Hide != null)
for (var i = 0; i < GLOBAL_Hide.length; i++)
clearTimeout(GLOBAL_Hide[i]);
}
/**
*@name NOF_KeepClose
*@description Keeps a menu item (child) closed when mouse out of it
*/
function NOF_KeepClose() {
GLOBAL_CurrentItem = "";
setTimeout("NOF_CloseChilds()", CONSTANTS.MENU_REFRESH_TIME);
}
/**
*@name NOF_CloseChilds
*@description Close submenus when mouse goes out of layer
*/
function NOF_CloseChilds() {
var itemsList = GLOBAL_items.toArray();
GLOBAL_Hide = new Array();
if (GLOBAL_CurrentItem == "" || GLOBAL_CurrentItem == 0)
for (var i in itemsList)
if (itemsList[i])
GLOBAL_Hide[i] = setTimeout("browser.hideMenuItem('" + itemsList[i] + "')", CONSTANTS.MENU_REFRESH_TIME/4);
if (!isMenuAutoClose()) {
itemsList = GLOBAL_items.toArray();
// Keep visible current opened submenus
for ( var i in itemsList )
if (itemsList[i])
NOF_KeepOpen(itemsList[i]);
}
}
function isMenuAutoClose() {
var itemsList = GLOBAL_items.toArray();
if (itemsList[0] && itemsList[0].length) {
var autoClose = browser.getItemAttribute(itemsList[0], "isautoclose");
if ( autoClose == "true")
return true;
else
return false;
}
return false;
}
/**
*@name HideMenu()
*@description Hide menu when click outside his area. Used in 'Non auto close navbars'.
*/
function HideMenu() {
if (isMenuAutoClose())
return;
var itemsList = GLOBAL_items.toArray();
if (GLOBAL_Hide == null)
GLOBAL_Hide = new Array();
for (var i in itemsList)
if (itemsList[i] && itemsList[i].length) {
GLOBAL_items.removeItem(itemsList[i]);
GLOBAL_Hide[i] = browser.hideMenuItem(itemsList[i]);
}
}
/**
*@name NOF_OpenedItems()
*@description Keeps a list w/ current submenus open (visible)
*/
function NOF_OpenedItems() {
this.openedItems = "";
this.separator = "*";
/** method addItem
*@description: adds one item in list using "*" separator
*/
this.addItem = function addItem(item, parent) {
if ( item == null || !item || item == "" )
return;
if (this.openedItems.indexOf(item) == -1) {
this.openedItems += this.openedItems.length ?
( this.openedItems.indexOf(this.separator) == this.openedItems.length - 1 ? "" : this.separator ) + item :
item;
}
}
/** method removeItem
*@description: remove one item
*/
this.removeItem = function removeItem(item) {
if ( item == GLOBAL_CurrentItem )
return;
var temp = this.openedItems;
if (temp.indexOf(item) > 0) {
var a = temp.substring(0, temp.indexOf(item));
var b = temp.substring(temp.indexOf(item) + item.length, temp.length );
temp = a + b;
}
while (temp.lastIndexOf(this.separator) == temp.length - 1)
temp = temp.substring(0, temp.length - 1);
this.openedItems = temp;
}
/** method removeSubitems
*@description: remove all subitems (items above) 'item'
*/
this.removeSubitems = function removeSubitems(item) {
if (item && typeof(item) != "undefined") {
var temp = this.openedItems;
temp = temp.substring(0, temp.lastIndexOf(item) + item.length);
var temp1 = this.openedItems.substring(this.openedItems.indexOf(temp) + temp.length, this.openedItems.length);
temp1 = temp1.split(this.separator);
for (var i = temp1.length - 1; i >= 0; i--)
if (temp1[i])
browser.hideMenuItem(temp1[i]);
this.openedItems = temp;
}
}
/** method currentItem
*@description: return current item
*/
this.currentItem = function currentItem() {
var list = this.toArray();
return list[list.length - 1];
}
/** method removeAll
*@description: remove all items and hide them
*/
this.removeAll = function removeAll() {
var items = this.toArray();
clearTimeout(GLOBAL_Close);
for (var i = items.length - 1; i >= 0; i--) {
clearTimeout(items[i]);
browser.hideMenuItem(items[i]);
}
this.openedItems = "";
}
/** method toArray
*@description: return an array with all items using split method by list separator
*/
this.toArray = function toArray() {
return this.openedItems.split(this.separator);
}
}
/**
*@name F_menu()
*@description backward compatibility
*/
function F_menu(item) {
NOF_Menu(item);
}
/**
*@name F_roll()
*@description backward compatibility
*/
function F_roll(itemId, over, layerId, isNotMainItem){
var layerId = (layerId == null || typeof(layerId) == "undefined") ? null : layerId;
var isNotMainItem = (isNotMainItem == null || typeof(isNotMainItem) == "undefined") ? null : isNotMainItem;
NOF_MenuRollButton(itemId, over, layerId, isNotMainItem);
}
/** F_loadRollover
*@param image
*@param submenu: Array(String submenuId, submenuOrientation, int offsetX, int offsetY).
*/
function F_loadRollover(image, rollOverButton, submenu) {
return NOF_MenuLoadRollOver(image, rollOverButton, submenu);
}