home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 240 (DVD) / Issue 240 - February 2008 - DPCS0208DVD.ISO / Extras / NetObjects Fusion / NOF10.exe / data1.cab / Program_Executable_Files / NetObjects_System / rollover.js < prev    next >
Encoding:
Text File  |  2007-04-11  |  24.0 KB  |  668 lines

  1. var GLOBAL_LoadedImages = new Array();
  2. var GLOBAL_CurrentItem = "";
  3. var GLOBAL_Close = null;
  4. var GLOBAL_Hide = null;
  5. var GLOBAL_items = new NOF_OpenedItems();
  6. var GLOBAL_slideItem = null;
  7. var GLOBAL_slideSpeed = 10;
  8. var GLOBAL_slidePixel = 0;
  9. var GLOBAL_slideMinOffset = -800;
  10. var GLOBAL_slideMaxOffset = 800;
  11. var useDebuger = false;
  12. function NOF_DOMBrowser() {
  13. this.getMenuItemLayerStartString = function getMenuItemLayerStartString(menuItemId, parentId) {
  14. parentId = ( (parentId != null) && (parentId != "undefined") && (typeof(parentId) != "undefined"))
  15. ? new String(parentId + CONSTANTS.MENU_LAYER_SUFIX) : null;
  16. menuItemId += CONSTANTS.MENU_LAYER_SUFIX;
  17. var isAutoClose = typeof(C_MENU_AUTO_CLOSE) == "undefined" || C_MENU_AUTO_CLOSE == true ? "true" : "false";
  18. return '<DIV ID="' + menuItemId + '" isautoclose="' + isAutoClose + '" STYLE="z-index:5; filter:blendTrans(duration=0.5)" onmouseover="NOF_KeepOpen(\'' + menuItemId + '\', ' + parentId + ')" onmouseout="NOF_KeepClose()">';
  19. }
  20. this.getMenuItemLayerEndString = function getMenuItemLayerEndString() {
  21. return '</DIV>';
  22. }
  23. this.showMenuItem = function showMenuItem(image, item, offsetX, offsetY, openEffect) {
  24. if (typeof(item) == "string")
  25. item = this.getItem(item)
  26. image = typeof(image) == "string" ? this.getItem(image) : image;
  27. var top = this.findItemTopOffset(image);
  28. var left = this.findItemLeftOffset(image);
  29. var slideDirection = "";
  30. if (openEffect.indexOf("left") > -1 || openEffect.indexOf("Left") > -1 ) {
  31. top += offsetY;
  32. left -= offsetX;
  33. slideDirection = "left";
  34. } else if (openEffect.indexOf("top") > -1 || openEffect.indexOf("Top") > -1 ) {
  35. top -= offsetY;
  36. left += offsetX;
  37. slideDirection = "top";
  38. } else if (openEffect.indexOf("right") > -1 || openEffect.indexOf("Right") > -1 ) {
  39. top += offsetY;
  40. left += offsetX;
  41. slideDirection = "right";
  42. } else {
  43. top += offsetY;
  44. left += offsetX;
  45. slideDirection = "bottom";
  46. }
  47. if (item == null || typeof(item.style) == "undefined" || item.style == null )
  48. return;
  49. item.style.top = top;
  50. item.style.left = left;
  51. item.style.visibility = "visible";
  52. if (openEffect.indexOf("slide") > -1)
  53. this.slideEffect(item, slideDirection);
  54. else if (openEffect.indexOf("fade") > -1)
  55. this.fadeEffect(item);
  56. }
  57. this.hideMenuItem = function hideMenuItem(item) {
  58. if (typeof(item) == "string")
  59. item = this.getItem(item)
  60. if ( item == null || typeof(item) == "undefined" || item == "" || typeof(item) == "number")
  61. return;
  62. item.style.visibility = "hidden";
  63. }
  64. this.findItemLeftOffset = function findItemLeftOffset(item) {
  65. var offset = item.offsetLeft;
  66. if (item.offsetParent)
  67. offset += this.findItemLeftOffset(item.offsetParent);
  68. return offset;
  69. }
  70. this.findItemTopOffset = function findItemTopOffset(item) {
  71. var offset = item.offsetTop;
  72. if (item.offsetParent)
  73. offset += this.findItemTopOffset(item.offsetParent);
  74. return offset;
  75. }
  76. this.getItem = function getItem(itemId) {
  77. return document.getElementById(itemId);
  78. }
  79. this.getItemAttribute = function getItemAttribute(itemId, attrId) {
  80. if (this.getItem(itemId)) {
  81. var attr = this.getItem(itemId).attributes;
  82. return eval("attr." + attrId.toLowerCase() + ".value");
  83. }
  84. }
  85. this.debug = function debug(txt) {
  86. var container = this.getItem("debug");
  87. if ( useDebuger )
  88. container.value += txt + "\n";
  89. }
  90. this.fadeEffect = function fadeEffect(item) {
  91. item.style.visibility = "hidden";
  92. item.filters.blendTrans.Apply();
  93. item.filters.blendTrans.Play();
  94. item.style.visibility = "visible";
  95. }
  96. this.slideEffect = function slideEffect(item, margin) {
  97. GLOBAL_slideItem = item;
  98. this.setItemClip('rect(auto, auto, auto, auto)');
  99. GLOBAL_slidePixel = (margin == "top" || margin == "left") ? 100 : 0;
  100. this.playEffect(margin);
  101. }
  102. this.playEffect = function playEffect(margin) {
  103. var clip = GLOBAL_slideItem.style.clip;
  104. if (clip.indexOf("-") > 0)
  105. return;
  106. if (GLOBAL_slidePixel < GLOBAL_slideMinOffset || GLOBAL_slidePixel > GLOBAL_slideMaxOffset)
  107. return;
  108. var rect = 'rect(';
  109. if (margin == "top") {
  110. GLOBAL_slidePixel -= 3;
  111. rect += GLOBAL_slidePixel +'px auto auto auto)';
  112. } else if (margin == "right") {
  113. GLOBAL_slidePixel += 3;
  114. rect += 'auto ' + GLOBAL_slidePixel +'px auto auto)';
  115. } else if (margin == "bottom") {
  116. GLOBAL_slidePixel += 3;
  117. rect += 'auto auto ' + GLOBAL_slidePixel + 'px auto)';
  118. } else {
  119. GLOBAL_slidePixel -= 3;
  120. rect += 'auto auto auto ' + GLOBAL_slidePixel + 'px)';
  121. }
  122. this.setItemClip(rect);
  123. setTimeout('browser.playEffect("' + margin + '")', GLOBAL_slideSpeed);
  124. }
  125. this.setItemClip = function setItemClip(rect) {
  126. GLOBAL_slideItem.style.clip = rect;
  127. }
  128. this.getLayerTag = function getLayerTag() { return "div" };
  129. }
  130. function NOF_BrowserNetscapeNavigator() {
  131. window.onclick= HideMenu;
  132. this.fadeEffect = function fadeEffect() { return; };
  133. GLOBAL_slideSpeed = 1;
  134. return this;
  135. }
  136. NOF_BrowserNetscapeNavigator.prototype = new NOF_DOMBrowser;
  137. function NOF_BrowserInternetExplorer() {
  138. document.onmouseup = HideMenu;
  139. }
  140. NOF_BrowserInternetExplorer.prototype = new NOF_DOMBrowser;
  141. function NOF_BrowserNetscape4x() {
  142. this.getMenuItemLayerStartString = function getMenuItemLayerStartString(menuItemId, parentId) {
  143. parentId = ( (parentId != null) && (parentId != "undefined") && (typeof(parentId) != "undefined"))
  144. ? new String(parentId + CONSTANTS.MENU_LAYER_SUFIX) : null;
  145. menuItemId += CONSTANTS.MENU_LAYER_SUFIX;
  146. var isAutoClose = typeof(C_MENU_AUTO_CLOSE) == "undefined" || C_MENU_AUTO_CLOSE == true ? "true" : "false";
  147. return '<layer ID="' + menuItemId + '" isautoclose="' + isAutoClose + '" onmouseover="NOF_KeepOpen(\'' + menuItemId + '\', ' + parentId + ')" onmouseout="NOF_KeepClose()">';
  148. }
  149. this.getMenuItemLayerEndString = function getMenuItemLayerEndString() {
  150. return '</layer>';
  151. }
  152. this.getImageParent = function getImageParent(imageObject){
  153. for (var position = 0; position < document.layers.length; position++) {
  154. var layer = document.layers[position];
  155. for (var imagePosition = 0; imagePosition < layer.document.images.length; imagePosition++) {
  156. if (layer.document.images[imagePosition].name == imageObject.name) {
  157. return layer;
  158. }
  159. }
  160. }
  161. return null;
  162. }
  163. this.showMenuItem = function showMenuItem(image, item, offsetX, offsetY, openEffect) {
  164. var parent = this.getImageParent(image);
  165. var itemId = image;
  166. if (typeof(item) == "string")
  167. item = this.getItem(item)
  168. image = typeof(image) == "string" ? this.getItem(image) : image;
  169. var top = this.findItemTopOffset(image);
  170. var left = this.findItemLeftOffset(image);
  171. if (parent != null) {
  172. left += parent.pageX;
  173. top += parent.pageY;
  174. }
  175. var slideDirection = "";
  176. if (openEffect.indexOf("left") > -1 || openEffect.indexOf("Left") > -1 ) {
  177. top += offsetY;
  178. left -= offsetX;
  179. slideDirection = "left";
  180. } else if (openEffect.indexOf("top") > -1 || openEffect.indexOf("Top") > -1 ) {
  181. top -= offsetY;
  182. left += offsetX;
  183. slideDirection = "top";
  184. } else if (openEffect.indexOf("right") > -1 || openEffect.indexOf("Right") > -1 ) {
  185. top += offsetY;
  186. left += offsetX;
  187. slideDirection = "right";
  188. } else {
  189. top += offsetY;
  190. left += offsetX;
  191. slideDirection = "bottom";
  192. }
  193. if (typeof(item) == "undefined")
  194. return;
  195. item.y = parseInt(top);
  196. item.x = parseInt(left);
  197. item.visibility = "visible";
  198. if (openEffect.indexOf("slide") > -1)
  199. this.slideEffect(item, slideDirection);
  200. else if (openEffect.indexOf("fade") > -1) {
  201. this.fadeEffect(item);
  202. }
  203. }
  204. this.hideMenuItem = function hideMenuItem(item) {
  205. if (typeof(item) == "string")
  206. item = this.getItem(item)
  207. if ( item == null || typeof(item) == "undefined" || item == "")
  208. return;
  209. item.visibility = "hide";
  210. }
  211. this.findItemLeftOffset = function findItemLeftOffset(item) {
  212. return item.x;
  213. }
  214. this.findItemTopOffset = function findItemTopOffset(item) {
  215. return item.y;
  216. }
  217. this.getItem = function getItem(itemId) {
  218. if (itemId == "")
  219. return;
  220. var item = eval("document.layers['" + itemId + "']");
  221. return item;
  222. }
  223. this.getItemAttribute = function getItemAttribute(itemId, attrId) {
  224. return eval("document.layers['" + itemId.toLowerCase() + "']." + attrId);
  225. }
  226. this.getLayerTag = function getLayerTag() { return "layer" };
  227. this.slideEffect = function slideEffect(item, margin) {
  228. GLOBAL_slideItem = item;
  229. GLOBAL_slidePixel = (margin == "bottom" || margin == "left") ? 200 : 0;
  230. this.playEffect(margin);
  231. }
  232. this.playEffect = function playEffect(margin) {
  233. if (GLOBAL_slidePixel < GLOBAL_slideMinOffset || GLOBAL_slidePixel > GLOBAL_slideMaxOffset)
  234. return;
  235. if (margin == "top") {
  236. GLOBAL_slideItem.clip.bottom = GLOBAL_slidePixel += 1;
  237. } else if (margin == "right") {
  238. GLOBAL_slideItem.clip.right = GLOBAL_slidePixel += 1;
  239. } else if (margin == "bottom") {
  240. GLOBAL_slideItem.clip.top = GLOBAL_slidePixel -= 1;
  241. } else {
  242. GLOBAL_slideItem.clip.left = GLOBAL_slidePixel -= 1;
  243. }
  244. setTimeout('browser.playEffect("' + margin + '")', GLOBAL_slideSpeed);
  245. }
  246. }
  247. NOF_BrowserNetscape4x.prototype = new NOF_DOMBrowser;
  248. function NOF_BrowserFactory() {
  249. var agt = navigator.userAgent.toLowerCase();
  250. var is_major = parseInt(navigator.appVersion);
  251. var is_minor = parseFloat(navigator.appVersion);
  252. var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
  253. && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
  254. && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
  255. var is_nav2 = (is_nav && (is_major == 2));
  256. var is_nav3 = (is_nav && (is_major == 3));
  257. var is_nav4 = (is_nav && (is_major == 4));
  258. var is_nav4up = (is_nav && (is_major >= 4));
  259. var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
  260. (agt.indexOf("; nav") != -1)) );
  261. var is_nav6 = (is_nav && (is_major == 5));
  262. var is_nav6up = (is_nav && (is_major >= 5));
  263. var is_gecko = (agt.indexOf('gecko') != -1);
  264. var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
  265. var is_ie3 = (is_ie && (is_major < 4));
  266. var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
  267. var is_ie4up = (is_ie && (is_major >= 4));
  268. var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
  269. var is_ie5_5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
  270. var is_ie5up = (is_ie && !is_ie3 && !is_ie4);
  271. var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
  272. var is_ie6 = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
  273. var is_ie6up = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
  274. var is_opera = (agt.indexOf("opera") != -1);
  275. var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
  276. var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
  277. var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
  278. var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
  279. var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
  280. this.getBrowser = function getBrowser() {
  281. if (is_ie5up) {
  282. return new NOF_BrowserInternetExplorer();
  283. }
  284. if (is_nav6up) {
  285. return new NOF_BrowserNetscapeNavigator();
  286. }
  287. if (is_opera5up) {
  288. return new NOF_BrowserInternetExplorer();
  289. }
  290. if (is_nav4) {
  291. return new NOF_BrowserNetscape4x();
  292. }
  293. }
  294. }
  295. var browserFactory = new NOF_BrowserFactory();
  296. var browser = browserFactory.getBrowser();
  297. var CONSTANTS = {
  298. MENU_TYPE_IMAGE : "Image",
  299. MENU_TYPE_TEXT : "Text",
  300. BUTTON_TYPE_IMAGE : "image",
  301. BUTTON_TYPE_TEXT : "text",
  302. MENU_TABLE_HEADER : '<table border="0" cellspacing="0" cellpadding="0">',
  303. MENU_TABLE_END : '</table>',
  304. MOUSE_OVER_IMAGE : 1,
  305. MOUSE_OUT_IMAGE : 2,
  306. MENU_ITEM_HORIZONTAL : false,
  307. MENU_ITEM_VERTICAL : true,
  308. MENU_LAYER_SUFIX : "LYR",
  309. NOT_A_MAIN_ITEM : 1,
  310. MENU_REFRESH_TIME : 600
  311. }
  312. function NOF_Menu() {
  313. return this;
  314. }
  315. function NOF_Menu_Item() {
  316. this.id = arguments[0];
  317. this.orientation = arguments[1];
  318. this.openEffect = arguments[2];
  319. this.offsetX = arguments[3];
  320. this.offsetY = arguments[4];
  321. this.buttons = new Array();
  322. this.submenuHeight = 0;
  323. for (var i = 5; i < arguments.length; i++)
  324. this.buttons[i - 5] = arguments[i];
  325. this.getPosition = function () {
  326. return new Array(this.offsetX, this.offsetY);
  327. }
  328. this.getOffsetX = function getOffsetX() { return this.offsetX;}
  329. this.getOffsetY = function getOffsetY() { return this.offsetY;}
  330. this.getOpenEffect = function getOffsetY() { return this.openEffect;}
  331. this.getOrientation = function getOrientation() { return this.orientation; }
  332. return this;
  333. }
  334. function NOF_Menu_Button(link, normal, rollover, submenu) {
  335. this.link = link;
  336. this.normal = normal;
  337. this.rollover = rollover != "" ? rollover : normal;
  338. this.submenu = submenu;
  339. this.hasSubmenu = function hasSubmenu() {
  340. return (this.submenu != null)
  341. }
  342. this.type = function type() {
  343. if (typeof(this.rollover) == "object")
  344. return CONSTANTS.BUTTON_TYPE_TEXT;
  345. else if (typeof(this.rollover) == "string")
  346. return CONSTANTS.BUTTON_TYPE_IMAGE;
  347. else
  348. return null;
  349. }
  350. return this;
  351. }
  352. function NOF_Main_Menu(menuItem, parentId) {
  353. if(typeof(menuItem) == "undefined")
  354. return;
  355. var menuItemId = menuItem.id;
  356. var buffer = browser.getMenuItemLayerStartString(menuItemId, parentId) + '<table width="10" border="' + C_MENU_BORDER + '" cellspacing="' + C_MENU_SPACING + '" cellpadding="0" bgcolor="' + C_MENU_BGCOLOR + '">';
  357. var i = 0;
  358. buffer += '<tr>';
  359. while (i < menuItem.buttons.length) {
  360. var menuButton = menuItem.buttons[i];
  361. if (menuButton == null)
  362. return;
  363. var submenuId = "";
  364. if (menuButton.hasSubmenu() && menuButton.submenu) {
  365. submenuId = menuButton.submenu.id;
  366. }
  367. var link = menuButton.link;
  368. var image = menuButton.normal;
  369. var rollOverButton = menuButton.rollover;
  370. var isImageMenu = menuButton.type() == CONSTANTS.BUTTON_TYPE_IMAGE ? true : false;
  371. var imageName = isImageMenu ? menuItemId + 's' + i : 'NavigationButton_' + menuItemId + '_' + i;
  372. var isVertical = menuItem.orientation == "vertical" ? true : false;
  373. var target = '';
  374. if (link.indexOf(' target=') != -1) {
  375. target = link.substr(link.indexOf(' target=') + 8);
  376. link = link.substr(0, link.indexOf(' target='));
  377. }
  378. buffer += (isVertical && i > 1) ? '<tr><td>' : '<td>';
  379. var cursor = link != 'javascript:void(0)' ? 'hand' : 'default';
  380. buffer += '<a style="text-decoration:none; cursor:' + cursor + ';" href="' + link + '" ';
  381. buffer += 'onMouseOver="F_roll(\'' + imageName + '\' ,' + CONSTANTS.MOUSE_OVER_IMAGE + ', \'' + menuItemId + '\', \''+
  382. CONSTANTS.NOT_A_MAIN_ITEM + '\')" onMouseOut="F_roll(\'' + imageName + '\' ,' +
  383. CONSTANTS.MOUSE_OUT_IMAGE + ', \''+menuItemId+'\', \'' + CONSTANTS.NOT_A_MAIN_ITEM + '\')"';
  384. buffer += target.length ? ' target="' + target + '">' : '>';
  385. buffer += isImageMenu ? '<img border="0" src="' + image + '"' : '<' + browser.getLayerTag() + ' ';
  386. if (typeof(rollOverButton) != "undefined" || rollOverButton.length || !isImageMenu) {
  387. if (submenuId != "") {
  388. var submenu = menuButton.submenu;
  389. if (isImageMenu) {
  390. buffer += 'id="' + imageName + '" name="' + imageName +
  391. '" onLoad="F_loadRollover(this,\'' + rollOverButton + '\', new Array(\'' + submenuId + '\',\'' + submenu.getOrientation() + '\' , \'' + submenu.getOpenEffect() + '\', ' + submenu.getOffsetX() + ',' + submenu.getOffsetY() + '))"';
  392. } else {
  393. NOF_MenuLoadRollOver(imageName, rollOverButton, new Array(submenuId, submenu.getOrientation(), submenu.getOpenEffect(), submenu.getOffsetX(), submenu.getOffsetY() ));
  394. buffer += 'id="' + imageName + '" name="' + imageName + '" class="' + imageName + '" ' ;
  395. if (typeof(menuButton.rollover) == "object")
  396. buffer+= ' style="' + rollOverButton[0] + '"';
  397. }
  398. }
  399. else {
  400. if (isImageMenu)
  401. buffer += 'id="' + imageName + '" name="' + imageName +
  402. '" onLoad="F_loadRollover(this,\'' + rollOverButton + '\',0)"';
  403. else {
  404. NOF_MenuLoadRollOver(imageName, rollOverButton, 0);
  405. buffer += 'id="' + imageName + '" name="' + imageName + '" class="' + imageName + '" ';
  406. if (typeof(menuButton.rollover) == "object")
  407. buffer+= ' style="' + rollOverButton[0] +'"';
  408. }
  409. }
  410. }
  411. buffer += isImageMenu ? '></a></td>' :
  412. '><' + browser.getLayerTag() + ' id="' + imageName + '_padding" style="padding:' + rollOverButton[1] + '" padding="' + rollOverButton[1] + '" paddingOver="' + rollOverButton[3] + '">' + image +
  413. '</' + browser.getLayerTag() + '></' + browser.getLayerTag() + '></a></td>';
  414. buffer += isVertical ? "</tr>" : "";
  415. i++;
  416. }
  417. buffer += CONSTANTS.MENU_TABLE_END + browser.getMenuItemLayerEndString();
  418. document.writeln(buffer);
  419. var k = 0;
  420. while (k < menuItem.buttons.length) {
  421. if (menuItem.buttons[k].hasSubmenu()) {
  422. NOF_Main_Menu(menuItem.buttons[k].submenu, menuItem.id);
  423. }
  424. k++;
  425. }
  426. }
  427. function NOF_MenuLoadRollOver(button, buttonName, submenu) {
  428. if (button && button.src &&
  429. (null == button.out || typeof(button.out) == typeof(void(0)))) {
  430. var imageSrc = button.src;
  431. button.out = new Image();
  432. button.out.src = imageSrc;
  433. button.over = new Image();
  434. if (buttonName.lastIndexOf('/') >= 0 || buttonName.lastIndexOf('\\') >= 0) {
  435. imageSrc = buttonName;
  436. } else {
  437. var i = imageSrc.lastIndexOf('/');
  438. if (i < 0)
  439. i = imageSrc.lastIndexOf('\\');
  440. if (i < 0)
  441. imageSrc = buttonName;
  442. else
  443. imageSrc = imageSrc.substring(0, i + 1) + buttonName;
  444. }
  445. button.over.src = imageSrc;
  446. button.submenu = submenu;
  447. GLOBAL_LoadedImages[button.name] = button;
  448. } else {
  449. if (typeof(buttonName) == "object") {
  450. if (typeof(GLOBAL_LoadedImages[button]) == "undefined") {
  451. GLOBAL_LoadedImages[button + "Normal"] = buttonName[0];
  452. GLOBAL_LoadedImages[button + "Over"] = buttonName[2];
  453. GLOBAL_LoadedImages[button] = submenu;
  454. }
  455. return;
  456. }
  457. if (typeof(submenu) != "undefined" && typeof(button) == "string" && typeof(GLOBAL_LoadedImages[button]) == "undefined")
  458. GLOBAL_LoadedImages[button] = submenu;
  459. }
  460. }
  461. function NOF_MenuRollButton(buttonName, over, layerId, isNotMainItem) {
  462. var rollType = (over == CONSTANTS.MOUSE_OVER_IMAGE) ? "over" : "out";
  463. var isOver = (over == CONSTANTS.MOUSE_OVER_IMAGE) ? true : false;
  464. var rollOver = GLOBAL_LoadedImages[buttonName];
  465. if (typeof(rollOver) == "undefined")
  466. return;
  467. var menuType = typeof(rollOver.src) == "undefined" ? CONSTANTS.MENU_TYPE_TEXT :
  468. CONSTANTS.MENU_TYPE_IMAGE;
  469. if (menuType == CONSTANTS.MENU_TYPE_IMAGE) {
  470. var imageRollSrcString = "rollOver." + rollType + ".src";
  471. if (rollOver)
  472. rollOver.src = eval(imageRollSrcString) ? eval(imageRollSrcString) : "";
  473. } else if (menuType == CONSTANTS.MENU_TYPE_TEXT){
  474. if (typeof(buttonName) == "string") {
  475. browser.getItem(buttonName).className = isOver ? buttonName + "Hover" : buttonName;
  476. if (browser.getItem(buttonName + "_padding")){
  477. browser.getItem(buttonName + "_padding").style.padding = isOver ?
  478. browser.getItem(buttonName + "_padding").paddingOver :
  479. browser.getItem(buttonName + "_padding").padding;
  480. }
  481. if (typeof(browser.getItem(buttonName).style) != "undefined")
  482. browser.getItem(buttonName).style.cssText = isOver ?
  483. GLOBAL_LoadedImages[buttonName + "Over"] :
  484. GLOBAL_LoadedImages[buttonName + "Normal"];
  485. }
  486. } else
  487. return;
  488. if ((isNotMainItem == null || typeof(isNotMainItem) == "undefined" ) && over == CONSTANTS.MOUSE_OUT_IMAGE) {
  489. GLOBAL_CurrentItem = "";
  490. GLOBAL_items.removeAll();
  491. }
  492. var hasSubmenu = null;
  493. if (menuType == CONSTANTS.MENU_TYPE_IMAGE)
  494. hasSubmenu = rollOver.submenu;
  495. else if (menuType == CONSTANTS.MENU_TYPE_TEXT)
  496. hasSubmenu = typeof(rollOver) == "object";
  497. if (hasSubmenu) {
  498. if (over == CONSTANTS.MOUSE_OVER_IMAGE) {
  499. if ( layerId && typeof(layerId) != "undefined" && layerId != "null") {
  500. if (GLOBAL_Close != null)
  501. clearTimeout(GLOBAL_Close);
  502. GLOBAL_items.removeSubitems(layerId + CONSTANTS.MENU_LAYER_SUFIX);
  503. } else
  504. GLOBAL_items.removeAll();
  505. if (menuType == CONSTANTS.MENU_TYPE_IMAGE)
  506. NOF_MenuOpenItem(rollOver, rollOver.submenu, layerId);
  507. else
  508. NOF_MenuOpenItem(buttonName, rollOver, layerId);
  509. }
  510. else {
  511. if (menuType == CONSTANTS.MENU_TYPE_IMAGE)
  512. NOF_MenuCloseItem(rollOver.submenu);
  513. else
  514. NOF_MenuCloseItem(rollOver);
  515. }
  516. } else if (over == CONSTANTS.MOUSE_OVER_IMAGE ) {
  517. if ( layerId && typeof(layerId) != "undefined" && layerId != "null" ) {
  518. GLOBAL_CurrentItem = layerId + CONSTANTS.MENU_LAYER_SUFIX;
  519. GLOBAL_items.removeSubitems(GLOBAL_CurrentItem);
  520. } else
  521. browser.hideMenuItem(GLOBAL_CurrentItem);
  522. }
  523. }
  524. function NOF_MenuOpenItem(image, submenu, parentId) {
  525. var layerId = submenu[0] + CONSTANTS.MENU_LAYER_SUFIX;
  526. var orientation = submenu[1];
  527. var openEffect = submenu[2];
  528. var offsetX = submenu[3];
  529. var offsetY = submenu[4];
  530. GLOBAL_items.addItem(layerId, parentId);
  531. GLOBAL_CurrentItem = layerId;
  532. browser.showMenuItem(image, layerId, offsetX, offsetY, openEffect);
  533. }
  534. function NOF_MenuCloseItem(imageSubmenu) {
  535. if (imageSubmenu[0]) {
  536. var layerId = imageSubmenu[0] + CONSTANTS.MENU_LAYER_SUFIX;
  537. if (GLOBAL_items.toArray().length == 1)
  538. GLOBAL_CurrentItem = 0;
  539. GLOBAL_Close = setTimeout("NOF_MenuHideItem('" + layerId + "')", CONSTANTS.MENU_REFRESH_TIME/4);
  540. }
  541. }
  542. function NOF_MenuHideItem(itemId) {
  543. if (itemId && itemId != null && GLOBAL_CurrentItem != itemId) {
  544. browser.hideMenuItem(itemId);
  545. }
  546. }
  547. function NOF_KeepOpen(itemId, parentId) {
  548. GLOBAL_CurrentItem = itemId;
  549. if (GLOBAL_Hide != null)
  550. for (var i = 0; i < GLOBAL_Hide.length; i++)
  551. clearTimeout(GLOBAL_Hide[i]);
  552. }
  553. function NOF_KeepClose() {
  554. GLOBAL_CurrentItem = "";
  555. setTimeout("NOF_CloseChilds()", CONSTANTS.MENU_REFRESH_TIME);
  556. }
  557. function NOF_CloseChilds() {
  558. var itemsList = GLOBAL_items.toArray();
  559. GLOBAL_Hide = new Array();
  560. if (GLOBAL_CurrentItem == "" || GLOBAL_CurrentItem == 0)
  561. for (var i in itemsList)
  562. if (itemsList[i])
  563. GLOBAL_Hide[i] = setTimeout("browser.hideMenuItem('" + itemsList[i] + "')", CONSTANTS.MENU_REFRESH_TIME/4);
  564. if (!isMenuAutoClose()) {
  565. itemsList = GLOBAL_items.toArray();
  566. for ( var i in itemsList )
  567. if (itemsList[i])
  568. NOF_KeepOpen(itemsList[i]);
  569. }
  570. }
  571. function isMenuAutoClose() {
  572. var itemsList = GLOBAL_items.toArray();
  573. if (itemsList[0] && itemsList[0].length) {
  574. var autoClose = browser.getItemAttribute(itemsList[0], "isautoclose");
  575. if ( autoClose == "true")
  576. return true;
  577. else
  578. return false;
  579. }
  580. return false;
  581. }
  582. function HideMenu() {
  583. if (isMenuAutoClose())
  584. return;
  585. var itemsList = GLOBAL_items.toArray();
  586. if (GLOBAL_Hide == null)
  587. GLOBAL_Hide = new Array();
  588. for (var i in itemsList)
  589. if (itemsList[i] && itemsList[i].length) {
  590. GLOBAL_items.removeItem(itemsList[i]);
  591. GLOBAL_Hide[i] = browser.hideMenuItem(itemsList[i]);
  592. }
  593. }
  594. function NOF_OpenedItems() {
  595. this.openedItems = "";
  596. this.separator = "*";
  597. this.addItem = function addItem(item, parent) {
  598. if ( item == null || !item || item == "" )
  599. return;
  600. if (this.openedItems.indexOf(item) == -1) {
  601. this.openedItems += this.openedItems.length ?
  602. ( this.openedItems.indexOf(this.separator) == this.openedItems.length - 1 ? "" : this.separator ) + item :
  603. item;
  604. }
  605. }
  606. this.removeItem = function removeItem(item) {
  607. if ( item == GLOBAL_CurrentItem )
  608. return;
  609. var temp = this.openedItems;
  610. if (temp.indexOf(item) > 0) {
  611. var a = temp.substring(0, temp.indexOf(item));
  612. var b = temp.substring(temp.indexOf(item) + item.length, temp.length );
  613. temp = a + b;
  614. }
  615. while (temp.lastIndexOf(this.separator) == temp.length - 1)
  616. temp = temp.substring(0, temp.length - 1);
  617. this.openedItems = temp;
  618. }
  619. this.removeSubitems = function removeSubitems(item) {
  620. if (item && typeof(item) != "undefined") {
  621. var temp = this.openedItems;
  622. temp = temp.substring(0, temp.lastIndexOf(item) + item.length);
  623. var temp1 = this.openedItems.substring(this.openedItems.indexOf(temp) + temp.length, this.openedItems.length);
  624. temp1 = temp1.split(this.separator);
  625. for (var i = temp1.length - 1; i >= 0; i--)
  626. if (temp1[i])
  627. browser.hideMenuItem(temp1[i]);
  628. this.openedItems = temp;
  629. }
  630. }
  631. this.currentItem = function currentItem() {
  632. var list = this.toArray();
  633. return list[list.length - 1];
  634. }
  635. this.removeAll = function removeAll() {
  636. var items = this.toArray();
  637. clearTimeout(GLOBAL_Close);
  638. for (var i = items.length - 1; i >= 0; i--)
  639. if ( items[i] != null && items[i] != "" ) {
  640. clearTimeout(items[i]);
  641. browser.hideMenuItem(items[i]);
  642. }
  643. this.openedItems = "";
  644. }
  645. this.toArray = function toArray() {
  646. return this.openedItems.split(this.separator);
  647. }
  648. }
  649. function F_menu(item) {
  650. NOF_Menu(item);
  651. }
  652. function F_roll(itemId, over, layerId, isNotMainItem){
  653. var layerId = (layerId == null || typeof(layerId) == "undefined") ? null : layerId;
  654. var isNotMainItem = (isNotMainItem == null || typeof(isNotMainItem) == "undefined") ? null : isNotMainItem;
  655. if (typeof(itemId) == "object" && itemId.constructor == Array) {
  656. for (var i = 0; i < itemId.length; i++) {
  657. NOF_MenuRollButton(itemId[i], over, layerId, isNotMainItem);
  658. }
  659. }
  660. else {
  661. NOF_MenuRollButton(itemId, over, layerId, isNotMainItem);
  662. }
  663. }
  664. function F_loadRollover(image, rollOverButton, submenu) {
  665. return NOF_MenuLoadRollOver(image, rollOverButton, submenu);
  666. }
  667.  
  668.