home *** CD-ROM | disk | FTP | other *** search
/ Joystick Magazine 2003 November / CD1_JOY_153.iso / demos / NHL2004Demo.exe / fe / COMMON / js / TopMenuBar.js < prev    next >
Text File  |  2003-08-20  |  17KB  |  422 lines

  1. var TopMenuBar        = function()
  2. {
  3.     //function localizeMenus()
  4.     //{
  5.         var sFolder = "";
  6.         switch (window.external.GameInterface.ActiveLanguage)
  7.         {
  8.             case 1:        sFolder = "local_SWED";    break;
  9.             case 2:        sFolder = "local_GER";    break;
  10.             case 3:        sFolder = "local_FINN";    break;
  11.             case 4:        sFolder = "local_FR";    break;
  12.         }
  13.  
  14.         //top.document.all.menu_1_toggler_img.src = "../../nhl/images2/common/" + sFolder + "/top_menu_gamemodes00.gif";
  15.         //top.document.all.menu_2_toggler_img.src = "../../nhl/images2/common/" + sFolder + "/top_menu_gamemodes00.gif";
  16.         //top.document.all.menu_3_toggler_img.src    = "../../nhl/images2/common/" + sFolder + "/top_menu_gamemodes00.gif";
  17.     //}
  18.  
  19.  
  20.     var protect         = this.createProtection(JAX_Object);
  21.     protect.imageCache                        = {};
  22.     protect.imageCache["tab_nml"]                = new Image();
  23.     protect.imageCache["tab_nml"].src            = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_mynhl00.gif";
  24.     protect.imageCache["tab_hov"]                = new Image();
  25.     protect.imageCache["tab_hov"].src            = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_mynhl01.gif";
  26.     protect.imageCache["tab_dwn"]            = new Image();
  27.     protect.imageCache["tab_dwn"].src            = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_mynhl01.gif";
  28.     protect.imageCache["tab_arw_nml"]            = new Image();
  29.     protect.imageCache["tab_arw_nml"].src        = System.getInstallFolder(true) + "fe/nhl/images/background/transparent.gif";
  30.     protect.imageCache["tab_arw_hov"]            = new Image();
  31.     protect.imageCache["tab_arw_hov"].src        = System.getInstallFolder(true) + "fe/nhl/images/background/transparent.gif";
  32.     protect.imageCache["tab_arw_dwn"]            = new Image();
  33.     protect.imageCache["tab_arw_dwn"].src        = System.getInstallFolder(true) + "fe/nhl/images/background/transparent.gif";
  34.     protect.imageCache["menu_item_nml"]        = new Image();
  35.     protect.imageCache["menu_item_nml"].src        = System.getInstallFolder(true) + "fe/common/images/framework/menu_blank.gif";
  36.     protect.imageCache["menu_item_dwn"]        = new Image();
  37.     protect.imageCache["menu_item_dwn"].src    = System.getInstallFolder(true) + "fe/common/images/framework/menu_blank.gif";
  38.     protect.imageCache["menu_item_hov"]        = new Image();
  39.     protect.imageCache["menu_item_hov"].src        = System.getInstallFolder(true) + "fe/common/images/framework/menu_blank.gif";
  40.     protect.imageCache["tab_nml_easo"]            = new Image();
  41.     protect.imageCache["tab_nml_easo"].src        = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_options00.gif";
  42.     protect.imageCache["tab_hov_easo"]            = new Image();
  43.     protect.imageCache["tab_hov_easo"].src        = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_options01.gif";
  44.     protect.imageCache["tab_dwn_easo"]        = new Image();
  45.     protect.imageCache["tab_dwn_easo"].src        = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_options01.gif";
  46.     protect.imageCache["tab_nml_nhl"]            = new Image();
  47.     protect.imageCache["tab_nml_nhl"].src        = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_gamemodes00.gif";
  48.  
  49.     protect.imageCache["tab_hov_nhl"]            = new Image();
  50.     protect.imageCache["tab_hov_nhl"].src        = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_gamemodes01.gif";
  51.     protect.imageCache["tab_dwn_nhl"]        = new Image();
  52.     protect.imageCache["tab_dwn_nhl"].src        = System.getInstallFolder(true) + "fe/nhl/images2/common/" + sFolder + "/top_menu_gamemodes01.gif";
  53.     protect.instance        = this;
  54.     protect.all                = top.document.all;
  55.     protect.menuNamesOn    = {};
  56.     protect.menusLoaded        = "";
  57.     protect.menuOn            = false;
  58.     protect.itemPressed        = false;
  59.     protect.itemOver        = false;
  60. };
  61. TopMenuBar.prototype                    = new JAX_Object;
  62. TopMenuBar.prototype.loadMenu            = function(menuObj, menuArrayName, toggleBtnName)
  63. {
  64.     var protect                        = this.getProtection(TopMenuBar);
  65.     if (protect.all[menuArrayName]) {
  66.         protect.all[menuArrayName].tabIndex                = -1;
  67.         protect.all[menuArrayName].hideFocus                = true;
  68.         protect.all[menuArrayName].onblur                    = function()
  69.         {
  70.             if (System.GUI.isInCreatePlayer)
  71.                 top.document.frames["Editorial_Frame"].oHWNDCtrl.style.left = "352px";                            
  72.             
  73.             if (!protect.itemOver) {
  74.                 this.releaseCapture();
  75.                 protect.instance.hideMenu(this.id);
  76.                 window.external.PumpMessages();
  77.             };
  78.         };
  79.  
  80.         protect.menusLoaded += menuArrayName + "|" ;
  81.         var theID, expStr, exp, menu_name_match, overToggler;
  82.         function DoMenuDown()
  83.         {            
  84.             if (System.GUI.isInCreatePlayer)
  85.                 top.document.frames["Editorial_Frame"].oHWNDCtrl.style.left = "1341px";                
  86.             
  87.             if (System.GUI.isNavigating()) { return; };
  88.             if (event.srcElement.id) {
  89.                 theID        = event.srcElement.id;
  90.                 expStr        = protect.menusLoaded.substr(0, protect.menusLoaded.length -1);
  91.                 exp            = new RegExp("\(" + expStr + "\)", "gi");
  92.                 if (theID.match(exp)) {
  93.                     menu_name_match        = theID.match(exp);
  94.                     menu_name_match        = menu_name_match.toString();
  95.                     if (!protect.menuNamesOn[menu_name_match]) {
  96.                         protect.instance.hideMenus();
  97.                         protect.all[menu_name_match + "_toggler"].onmousedown();
  98.                         window.external.PumpMessages();
  99.                     } else {
  100.                         if (!protect.itemOver) {
  101.                             protect.instance.hideMenus();
  102.                             protect.all[menu_name_match + "_toggler"].onmouseenter(true);
  103.                         };
  104.                     };
  105.                 } else {
  106.                     if (!protect.itemPressed) {
  107.                         protect.instance.hideMenus();
  108.                         window.external.PumpMessages();
  109.                         protect.all[menu_name_match + "_toggler"].onmouseleave(true);
  110.                     };
  111.                 };
  112.             };
  113.         };
  114.         var bFired    = false;
  115.         function DoMenuMove()
  116.         {
  117.             if (System.GUI.isNavigating()) { return; };
  118.             if (event.srcElement.id) {
  119.                 theID        = event.srcElement.id;
  120.                 expStr        = protect.menusLoaded.substr(0, protect.menusLoaded.length -1);
  121.                 exp            = new RegExp("\(" + expStr + "\)", "gi");
  122.                 if (theID.match(exp)) {
  123.                     menu_name_match        = theID.match(exp);
  124.                     menu_name_match        = menu_name_match.toString();
  125.                     if (!bFired) {
  126.                         if (!protect.menuNamesOn[menu_name_match]) {
  127.                             if ((overToggler) && (overToggler.id != (this.id + "_toggler"))) {
  128.                                 overToggler.onmouseleave(true);
  129.                                 overToggler    = null;
  130.                             };
  131.                             if (!overToggler) {
  132.                                 overToggler                = protect.all[menu_name_match + "_toggler"];
  133.                                 overToggler.onmouseenter(true);
  134.                                 bFired                    = true;
  135.                             };
  136.                         };
  137.                     };
  138.                 } else {
  139.                     if ( (overToggler) && ((this.id + "_toggler") != overToggler.id) ) {
  140.                         overToggler.onmouseleave(true);
  141.                         overToggler = null;
  142.                         bFired = false;
  143.                     };
  144.                 };
  145.             };
  146.         };
  147.         protect.all[menuArrayName].onmousedown        = DoMenuDown;
  148.         protect.all[menuArrayName].onmousemove        = DoMenuMove;
  149.         var selectedNavID;
  150.         function DoMenuItemEnter()
  151.         {
  152.             this.childNodes[0].src             = protect.imageCache["menu_item_hov"].src;
  153.             this.childNodes[2].style.color         = "#FFCB00";
  154.             this._isOver                    = true;
  155.             protect.itemOver                = true;
  156.         };
  157.         function DoMenuItemLeave()
  158.         {            
  159.             this.childNodes[0].src             = protect.imageCache["menu_item_dwn"].src;
  160.             this.childNodes[2].style.color         = "white";
  161.             this._isOver                    = false;
  162.             var ti = this;
  163.             setTimeout(function() { if (!ti._isOver) {  ti.childNodes[0].src = protect.imageCache["menu_item_nml"].src; };ti = null; }, 400);
  164.             protect.itemOver                = false;
  165.         };
  166.         function DoMenuItemDown()
  167.         {            
  168.             if (System.GUI.isInCreatePlayer)
  169.                 top.document.frames["Editorial_Frame"].oHWNDCtrl.style.left = "1341px";        
  170.             
  171.             this.childNodes[2].style.color         = "gold";
  172.             protect.itemPressed                = true;
  173.             selectedNavID                    = this.navID;
  174.             this.setCapture(false);
  175.         };
  176.         function DoMenuItemUp()
  177.         {            
  178.             this.releaseCapture();
  179.             if (!protect.itemOver) { return; };
  180.             var ti = this;
  181.             function doIt()
  182.             {
  183.                 protect.instance.hideMenus();
  184.                 protect.itemPressed=false;
  185.                 protect.itemOver=false;
  186.                 protect.instance.onselect(selectedNavID);
  187.                 ti.childNodes[2].style.color        = "white";
  188.                 ti.childNodes[2].style.fontWeight     = "bold";
  189.                 ti.childNodes[0].src            = protect.imageCache["menu_item_nml"].src;
  190.                 ti = null;
  191.             };
  192.             setTimeout(function() { doIt(); }    , 200);
  193.         };
  194.         for (var idx = 0; idx < menuObj[menuArrayName].length; idx++)
  195.         {
  196.             var item_id                        = menuArrayName + "_btn_" + (idx + 1);
  197.             if (protect.all[item_id]) {
  198.                 if (menuObj[menuArrayName][idx].text != "") {
  199.                     protect.all[item_id].navID                = menuObj[menuArrayName][idx].navID;
  200.                     protect.all[item_id].onmouseenter        = DoMenuItemEnter;
  201.                     protect.all[item_id].onmouseleave        = DoMenuItemLeave;
  202.                     protect.all[item_id].onmousedown        = DoMenuItemDown;
  203.                     protect.all[item_id].onmouseup            = DoMenuItemUp;
  204.                     protect.all[item_id + "_txt"].style.pixelWidth    = protect.all[menuArrayName].offsetWidth - (parseInt(protect.all[menuArrayName].style.borderWidth) * 2);
  205.                     protect.all[item_id + "_txt"].innerText    = menuObj[menuArrayName][idx].text;
  206.                 } else {
  207.                     protect.all[item_id].style.display = "none";
  208.                 };
  209.             };
  210.         };
  211.         protect.all[menuArrayName + "_bg"].style.pixelHeight    = protect.all[menuArrayName].offsetHeight-(parseInt(protect.all[menuArrayName].style.borderWidth) * 2);
  212.         protect.all[menuArrayName + "_bg"].style.pixelWidth    = protect.all[menuArrayName].offsetWidth-(parseInt(protect.all[menuArrayName].style.borderWidth) * 2);
  213.         function GetRealLeft(el) {
  214.             var xPos        = el.offsetLeft;
  215.             var tempEl        = el.offsetParent;
  216.  
  217.             while(tempEl != null) {
  218.                 xPos         += tempEl.offsetLeft;
  219.                 if (tempEl.style) {
  220.                     xPos        += (isNaN(parseInt(tempEl.style.borderLeftWidth)) ) ? 0 : parseInt(tempEl.style.borderLeftWidth);
  221.                 };
  222.                 tempEl        =  tempEl.offsetParent;
  223.             };
  224.             return xPos;
  225.         };
  226.         function GetRealTop(el) {
  227.             var  yPos   = el.offsetTop;
  228.             var tempEl = el.offsetParent;
  229.             while (tempEl != null)
  230.             {
  231.                 yPos         += tempEl.offsetTop;
  232.                 if (tempEl.style) {
  233.                     yPos        += (isNaN(parseInt(tempEl.style.borderTopWidth)) ) ? 0 : parseInt(tempEl.style.borderTopWidth);
  234.                 };
  235.                 tempEl =     tempEl.offsetParent;
  236.             };
  237.             return yPos;
  238.         };
  239.         function DoMenuBtnEnter(bforce)
  240.         {
  241.             if (!bforce && System.GUI.isNavigating()) { return; };
  242.             if (bforce) {
  243.                 this.childNodes[0].src            =(this.isEASO) ? protect.imageCache["tab_hov_easo"].src : (this.isNHL) ? protect.imageCache["tab_hov_nhl"].src : protect.imageCache["tab_hov"].src;
  244.                 if (this.isMyNHL) {
  245.                     this.childNodes[4].src            = protect.imageCache["tab_arw_hov"].src;
  246.                 } else {
  247.                     this.childNodes[3].src            = protect.imageCache["tab_arw_hov"].src;
  248.                 };
  249.             } else {
  250.                 if (!protect.menuOn) {
  251.                     this.childNodes[0].src            =(this.isEASO) ? protect.imageCache["tab_hov_easo"].src : (this.isNHL) ? protect.imageCache["tab_hov_nhl"].src : protect.imageCache["tab_hov"].src;
  252.                     if (this.isMyNHL) {
  253.                         this.childNodes[4].src            = protect.imageCache["tab_arw_hov"].src;
  254.                     } else {
  255.                         this.childNodes[3].src            = protect.imageCache["tab_arw_hov"].src;
  256.                     };
  257.                 };
  258.             };
  259.         };
  260.         function DoMenuBtnLeave(bforce)
  261.         {            
  262.             if (!bforce && System.GUI.isNavigating()) { return; };
  263.             if (bforce) {
  264.                 this.childNodes[0].src            = (this.isEASO) ? protect.imageCache["tab_nml_easo"].src : (this.isNHL) ? protect.imageCache["tab_nml_nhl"].src : protect.imageCache["tab_nml"].src;
  265.                 if (this.isMyNHL) {
  266.                     this.childNodes[4].src            = protect.imageCache["tab_arw_nml"].src;
  267.                 } else {
  268.                     this.childNodes[3].src            = protect.imageCache["tab_arw_nml"].src;
  269.                 };
  270.             } else {
  271.                 if (!protect.menuOn) {
  272.                     this.childNodes[0].src            = (this.isEASO) ? protect.imageCache["tab_nml_easo"].src : (this.isNHL) ? protect.imageCache["tab_nml_nhl"].src : protect.imageCache["tab_nml"].src;
  273.                     if (this.isMyNHL) {
  274.                         this.childNodes[4].src            = protect.imageCache["tab_arw_nml"].src;
  275.                     } else {
  276.                         this.childNodes[3].src            = protect.imageCache["tab_arw_nml"].src;
  277.                     };
  278.                 };
  279.             };
  280.         };
  281.         function DoMenuBtnDown()
  282.         {            
  283.             if (System.GUI.isInCreatePlayer)
  284.                 top.document.frames["Editorial_Frame"].oHWNDCtrl.style.left = "1341px";                
  285.             
  286.             if (System.GUI.isNavigating()) { return; };
  287.             if (!protect.menuOn) {
  288.                 this.childNodes[0].src            = (this.isEASO) ? protect.imageCache["tab_dwn_easo"].src : (this.isNHL) ? protect.imageCache["tab_dwn_nhl"].src : protect.imageCache["tab_dwn"].src;
  289.                 if (this.isMyNHL) {
  290.                     this.childNodes[4].src        = protect.imageCache["tab_arw_dwn"].src;
  291.                 } else {
  292.                     this.childNodes[3].src            = protect.imageCache["tab_arw_dwn"].src;
  293.                 };
  294.  
  295.                 protect.instance.showMenu(menuArrayName, GetRealLeft(this), GetRealTop(this) + (this.offsetHeight - Math.floor(parseInt(protect.all[menuArrayName].style.borderWidth) )) );
  296.                 window.external.PumpMessages();
  297.             };
  298.         };
  299.         if (protect.all[toggleBtnName]) {
  300.             protect.all[toggleBtnName].onmouseenter        = DoMenuBtnEnter;
  301.             protect.all[toggleBtnName].onmouseleave        = DoMenuBtnLeave;
  302.             protect.all[toggleBtnName].onmousedown        = DoMenuBtnDown;
  303.             protect.all[toggleBtnName].style.pixelWidth    = protect.all[toggleBtnName].childNodes[0].width;
  304.             protect.all[toggleBtnName].style.pixelHeight    = protect.all[toggleBtnName].childNodes[0].height;
  305.         };
  306.     };
  307. };
  308. TopMenuBar.prototype.showMenu        = function(menuName, nX, nY)
  309. {
  310.     var protect                    = this.getProtection(TopMenuBar);
  311.     this.hideMenus();
  312.     if (nX) {
  313.         protect.all[menuName].style.pixelLeft    = nX;
  314.     };
  315.     if (nY) {
  316.         protect.all[menuName].style.pixelTop        = nY;
  317.     };
  318.     protect.all[menuName].setCapture(false);
  319.     protect.menuOn                        = true;
  320.     protect.all[menuName].style.visibility        = "visible";
  321.     protect.all[menuName].focus();
  322.     protect.menuNamesOn[menuName]        = menuName;
  323.     oAudioInterface.PlaySFX(1095);
  324. };
  325. TopMenuBar.prototype.hideMenu        = function(menuName)
  326. {
  327.     var protect                    = this.getProtection(TopMenuBar);
  328.     protect.all[menuName].style.visibility        = "hidden";
  329.     protect.all[menuName].releaseCapture(false);
  330.     protect.menuOn                        = false;
  331.     protect.all[menuName + "_toggler"].onmouseleave();
  332.     delete protect.menuNamesOn[menuName];
  333.     oAudioInterface.PlaySFX(1096);
  334. };
  335. TopMenuBar.prototype.hideMenus        = function()
  336. {
  337.     var protect                    = this.getProtection(TopMenuBar);
  338.     protect.itemPressed                = false;
  339.     for (var menu in protect.menuNamesOn)
  340.     {
  341.         this.hideMenu(menu);
  342.     };
  343.     oAudioInterface.PlaySFX(1096);
  344. };
  345. TopMenuBar.prototype.onselect                = function(selectedItemID)
  346. {    
  347.     oAudioInterface.PlaySFX(1064);
  348.     
  349.     if (System.GUI.isNavigating()) { return; };
  350.  
  351.     //EASO CHECK
  352.     if (oGameFace.LeagueServerInterface.LeagueType!=2 || selectedItemID==1124 ||
  353.         selectedItemID==1123 || selectedItemID==1122 || selectedItemID==1121 || selectedItemID==1102)
  354.     {
  355.         //reset ticker if game modes or my nhl & dynasty skin
  356.         if (selectedItemID==100 || selectedItemID==101 || selectedItemID==891 || selectedItemID==108 || 
  357.             selectedItemID==102 || selectedItemID==104 || selectedItemID==111 || selectedItemID==886)
  358.         {
  359.             resetTicker();    
  360.             
  361.             //set back to skin...
  362.             oBrowserSkinObject = new BrowserSkinObject();
  363.             oGameFace.LoadBrowserSkin(oBrowserSkinObject);            
  364.             System.GUI.setTeamSkin(oBrowserSkinObject.TeamID, false);
  365.         }
  366.         
  367.         System.GUI.navigate(selectedItemID);
  368.     }
  369.     else
  370.     {
  371.         oAudioInterface.PlayWarningSFX();
  372.         System.GUI.dialog.innerHTML = nhlMsg("EASO_EXIT_CONFIRMATION");
  373.         System.GUI.dialog.setSize( 500, 200 );
  374.         System.GUI.dialog.align = "center";
  375.         System.GUI.dialog.addButton( "okay_button" , nhlMsg("OKAY", true), function(){ exitEASO(selectedItemID); } );
  376.         System.GUI.dialog.addButton( "cancel_button" , nhlMsg("CANCEL", true), function(){  return false; } );
  377.         System.GUI.dialog.show( true );
  378.     }
  379.  
  380.     function exitEASO( selectedItemID )
  381.     {        
  382.            oGameFace.CommInterface.ReportNoStart();
  383.            oGameFace.CommInterface.PurgeGameReporter();
  384.            System.GUI.navigate(selectedItemID);
  385.        }
  386. };
  387. function TopNavMenuItem(navID, sText)
  388. {
  389.     this.navID        = navID;
  390.     this.text        = sText;
  391. };
  392.     
  393. function resetTicker()
  394. {
  395.     var sTxt =    nhlMsg("TICKER1") + "XXXXXXX" +
  396.                 nhlMsg("TICKER2") + "XXXXXXX" +
  397.                 nhlMsg("TICKER3") + "XXXXXXX" +
  398.                 nhlMsg("TICKER4") + "XXXXXXX" +
  399.                 nhlMsg("TICKER5") + "XXXXXXX" +
  400.                 nhlMsg("TICKER6") + "XXXXXXX" +
  401.                 nhlMsg("TICKER7");
  402.                 
  403.     var str =    '<div id="tickercontainer">\n'+
  404.                 '<div id="tickerTest">\n'+
  405.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER1") + '</A>       ' +
  406.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER2") + '</A>       ' +
  407.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER3") + '</A>       ' +
  408.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER4") + '</A>       ' +
  409.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER5") + '</A>       ' +
  410.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER6") + '</A>       ' +
  411.                 '<A HREF="" onclick="return false;">' + nhlMsg("TICKER7") + '</A>       ' +
  412.                 '</div>\n'+
  413.                 '</div>';
  414.  
  415.     top.document.all.tickerHTMLContainer.innerHTML = str;
  416.     top.document.all.tickerHTMLContainer.nEnd = sTxt.length;    
  417. }
  418.  
  419. function BrowserSkinObject()
  420. {
  421.     this.TeamID    = "-1";
  422. }