home *** CD-ROM | disk | FTP | other *** search
/ PC Answers 2003 September / PC Answers September 2003.iso / Software / trial / MonitorIT 5.2.06 / monitorit_fullsetup.exe / data1.cab / Js / SchedulePeriodicReportFunc.js < prev    next >
Encoding:
JavaScript  |  2003-06-24  |  30.8 KB  |  907 lines

  1. /* ======================================================================
  2. DESC: Common Report Functions for the Administer Operations
  3.  
  4. PLATFORMS: >= MS IE 4.0
  5.  
  6. USAGE NOTES: 
  7. ====================================================================== */
  8. var RPRtyp = "";
  9. function processSpecButton(type) {
  10.     AR_RptSel.style.display="none";
  11.     SpecDTDD.style.display="none";
  12.     SpecDurDD.style.display="none";
  13.     SpecRunDD.style.display="none";
  14.     RPRtyp = type;
  15.     processReportParameterRequest(type);
  16. }
  17. // Process Report Parameter Request if any
  18. function processReportParameterRequest(ptype){
  19.     SetCursor("auto");
  20.     var btitle = "Parameters";
  21.     // Process based on Request code
  22.     switch ( ptype ) {
  23.    case "[1]" : 
  24.        Reqst1Div.style.display="";
  25.        Reqst3Div.style.display="none";
  26.         PopUpDiv.style.display="";
  27.         if ( ServiceSelect.style.visibility != "hidden" ) {
  28.              ServiceSelect.focus();
  29.          }
  30.         AllServersSelected.checked = "checked";
  31.         AllServersSelected.disabled = "disabled";    
  32.         CurrentServiceDisplayed = "";    
  33.       break;
  34.    case "[2]" : 
  35.        Reqst1Div.style.display="none";
  36.        Reqst3Div.style.display="";
  37.         PopUpDiv.style.display="";
  38.          CheckSummary();
  39.         AllServersSelected1.checked = "checked";
  40.         AllServersSelected1.disabled = "disabled";    
  41.         CurrentServiceDisplayed = "";    
  42.       break;
  43.     }
  44. }
  45.  
  46. function processCancelButton() {
  47.     AR_RptSel.style.display="";
  48.     SpecDTDD.style.display="";
  49.     SpecDurDD.style.display="";
  50.     SpecRunDD.style.display="";
  51.     PopUpDiv.style.display="none";
  52.     if ( AR_RptSel.style.visibility != "hidden" ) {
  53.         AR_RptSel.focus(); 
  54.     }
  55. }
  56.  
  57. function CursorReset() {
  58.       SetCursor("auto");
  59.     top.banner.processStopCommX();
  60. }
  61.  
  62. var STParm = "";
  63. function processOKButton() {
  64.     if ( RPRtyp == "[2]" && !Report_SWA.checked && !Report_SNMP.checked && !Report_EL.checked && !Report_WS.checked && !Report_FC.checked && !Report_SL.checked && !Report_PC.checked) {
  65.          alert("Please Specify at least one Alert Type");
  66.         return;
  67.     }
  68.     PopUpDiv.style.display="none"; // hide Pop-Up
  69.     var selectlist, ST;
  70.     if ( RPRtyp == "[2]" ) {
  71.         var a1 = a2 = b1 = b2 = c1 = c2 = nonly = "0";
  72.         a1 = (Report_SWA.checked) ? "0" : "1";
  73.          a2 = (Report_SWA_Sum.checked) ? "1" : "0";
  74.          b1 = (Report_SNMP.checked) ? "0" : "1";
  75.          b2 = (Report_SNMP_Sum.checked) ? "1" : "0";
  76.         c1 = (Report_EL.checked) ? "0" : "1";
  77.          c2 = (Report_EL_Sum.checked) ? "1" : "0";
  78.          d1 = (Report_WS.checked) ? "0" : "1";
  79.          d2 = (Report_WS_Sum.checked) ? "1" : "0";
  80.           e1 = (Report_FC.checked) ? "0" : "1";
  81.          e2 = (Report_FC_Sum.checked) ? "1" : "0";
  82.           f1 = (Report_SL.checked) ? "0" : "1";
  83.          f2 = (Report_SL_Sum.checked) ? "1" : "0";
  84.           g1 = (Report_PC.checked) ? "0" : "1";
  85.          g2 = (Report_PC_Sum.checked) ? "1" : "0";
  86.         nonly = (NotifyOnly.checked) ? "1" : "0";
  87.         if (AllServersSelected1.checked) {
  88.             ST = a1+","+a2+","+b1+","+b2+","+c1+","+c2+","+d1+","+d2+","+e1+","+e2+","+f1+","+f2+","+g1+","+g2+",####,"+MaxLines.value+","+nonly+",ALL";
  89.         }
  90.         else {
  91.            ST = "";
  92.            if ( S_csa != "" ) {
  93.                ST += "0,0,";
  94.                S_csa.sort( IDSort );
  95.                CompSelectedArr += "X.s."+S_csa.join(".") + ".";
  96.            }
  97.            else { ST += "1,0,"; }
  98.            if ( T_csa != "" ) {
  99.                ST += "0,0,";
  100.                T_csa.sort( IDSort );
  101.                CompSelectedArr += "X.t."+T_csa.join(".") + ".";
  102.            }
  103.            else { ST += "1,0,"; }
  104.            if ( E_csa != "" ) {
  105.                ST += "0,0,";
  106.                E_csa.sort( IDSort );
  107.                CompSelectedArr += "X.e."+E_csa.join(".") + ".";
  108.            }
  109.            else { ST += "1,0,"; }
  110.            if ( W_csa != "" ) {
  111.                ST += "0,0,";
  112.                W_csa.sort( IDSort );
  113.                CompSelectedArr += "X.w."+W_csa.join(".") + ".";
  114.            }
  115.            else { ST += "1,0,"; }
  116.            if ( F_csa != "" ) {
  117.                ST += "0,0,";
  118.                F_csa.sort( IDSort );
  119.                CompSelectedArr += "X.f."+F_csa.join(".") + ".";
  120.            }
  121.            else { ST += "1,0,"; }
  122.            if ( L_csa != "" ) {
  123.                ST += "0,0,";
  124.                L_csa.sort( IDSort );
  125.                CompSelectedArr += "X.l."+L_csa.join(".") + ".";
  126.            }
  127.            else { ST += "1,0,"; }
  128.             if ( P_csa != "" ) {
  129.                ST += "0,0,";
  130.                P_csa.sort( IDSort );
  131.                CompSelectedArr += "X.p."+P_csa.join(".") + ".";
  132.            }
  133.            else { ST += "1,0,"; }
  134.           ST += "####,"+MaxLines.value+","+nonly+","+CompSelectedArr;
  135.         }
  136.     }
  137.     else {
  138.         var tas = (Report_TAS.checked) ? "1" : "0";
  139.         var ST = (Reqst1Div.style.display == "") ? ServiceTypes[ServiceSelect.selectedIndex] : "";
  140.         ST = (ST == "SQL") ? "SQLCONNECT" : ST;
  141.         var tas_sort = TASSortSelect.selectedIndex;
  142.         selectlist = (AllServersSelected.checked) ? "ALL" : CompSelectedArr;
  143.         ST += ",####,"+tas+","+tas_sort+","+selectlist;
  144.     }
  145.     STParm = ST;
  146.     AR_RptSel.style.display="";
  147.     SpecDTDD.style.display="";
  148.     SpecDurDD.style.display="";
  149.     SpecRunDD.style.display="";
  150.     PopUpDiv.style.display="none";
  151.     if ( AR_RptSel.style.visibility != "hidden" ) {
  152.         AR_RptSel.focus(); 
  153.     }
  154. }
  155. function IDSort(a,b) {
  156.     var a_arr = new Array();
  157.     var b_arr = new Array();
  158.     a_arr = a.split(".");
  159.     b_arr = b.split(".");
  160.     if ( a_arr[0] == b_arr[0] )
  161.         return (a_arr[1] - b_arr[1]);
  162.     else
  163.         return (a_arr[0] - b_arr[0]);
  164. }
  165.  
  166. function CheckSummary() {
  167.     SWA_add.style.display = ( Report_SWA_Sum.checked ) ? "" : "none";
  168.     SNMP_add.style.display = ( Report_SNMP_Sum.checked ) ? "" : "none";
  169.     EL_add.style.display = ( Report_EL_Sum.checked ) ? "" : "none";
  170.     WS_add.style.display = ( Report_WS_Sum.checked ) ? "" : "none";
  171.     FC_add.style.display = ( Report_FC_Sum.checked ) ? "" : "none";
  172.     SL_add.style.display = ( Report_SL_Sum.checked ) ? "" : "none";
  173.     PC_add.style.display = ( Report_PC_Sum.checked ) ? "" : "none";
  174. }
  175. function CheckTASSummary() {
  176.     TASsort.style.visibility = ( Report_TAS.checked ) ? "visible" : "hidden";
  177. }
  178.  
  179. function processServerSelectButton() {
  180.     processAlertGroupTree();
  181.     PopUpDiv.style.display = "none"; // hide parameters Pop-Up
  182.     PopUpSelectDiv.style.display = ""; // enable Pop-Up
  183.       if ( GroupDisplayedCount != 0 ) {
  184.         if ( lima0.expanded == "0"  ) { // expand first group if necessary
  185.             procGrpImgClick(lima0);
  186.         }
  187.     }
  188. }
  189. function checkSelUnselButtons() {
  190.     if ( GroupExpandedCount > 0 ) { 
  191.        SetButtonState(bSelC,"0");
  192.        SetButtonState(bUselC,"0");
  193.    }
  194.    else { // otherwise disable the buttons
  195.        SetButtonState(bSelC,"1");
  196.        SetButtonState(bUselC,"1");
  197.    }
  198. }
  199. var CompSelectedArr = "";
  200. var E_csa = new Array(), S_csa = new Array(), T_csa = new Array(), W_csa = new Array(), F_csa = new Array(), L_csa = new Array(), P_csa = new Array();
  201. function processSelectDoneButton() {
  202.     CompSelectedArr = ""; // reset
  203.     if ( RPRtyp == "[2]" ) {
  204.      // Find count of selected computers
  205.         var GObj = null, CObj = null, tS = "";
  206.         E_csa.length = S_csa.length = T_csa.length = W_csa.length = F_csa.length = L_csa.length = P_csa.length = 0;
  207.         var ei = si = ti = ni = fi = li = pi = 0;
  208.         // Look at each displayed Group
  209.         for ( var i=0,k=0; i<GroupDisplayedCount; i++ ) {
  210.             GObj = document.all["lexp"+i];
  211.             for ( var j=0, m=0; j<GObj.compcount; j++ ) {
  212.                 CObj = document.all["xima"+i+"_"+j]; // computer entry in tree
  213.                 if (CObj.checked == "1") {
  214.                     tS = CObj.agid + "." + CObj.cmpid;
  215.                     switch ( CObj.agt ) {
  216.                  case "S" : 
  217.                       S_csa[si++] = tS;
  218.                       break;
  219.                  case "E" : 
  220.                       E_csa[ei++] = tS;
  221.                       break;
  222.                  case "T" : 
  223.                       T_csa[ti++] = tS;
  224.                       break;
  225.                  case "W" : 
  226.                       W_csa[ni++] = tS;
  227.                       break;
  228.                  case "F" : 
  229.                       F_csa[fi++] = tS;
  230.                       break;
  231.                  case "L" : 
  232.                       L_csa[li++] = tS;
  233.                       break;
  234.                  case "P" : 
  235.                       P_csa[pi++] = tS;
  236.                       break;
  237.                     }
  238.                     ++k;
  239.                 }
  240.             }
  241.         }
  242.         if ( k!=0 ) {
  243.             AllServersSelected1.checked = "";
  244.             AllServersSelected1.disabled = "";        
  245.         }
  246.         else {
  247.             AllServersSelected1.checked = "checked";
  248.             AllServersSelected1.disabled = "disabled";        
  249.         }
  250.     }
  251.     else {
  252.          // Find count of selected computers
  253.           for ( var i=0, j=0, k=0; i<CmpLupRecCount; ++i ) {
  254.               j = (i*CmpRecLth); // index to Computer entry in store
  255.               if ( AR_CmpStoreArr[j+5] == "1" ) { // if selected
  256.                  ++k; // bump array index
  257.                  CompSelectedArr += AR_CmpStoreArr[j+3]+".";
  258.              }
  259.         }
  260.         if ( k!=0 ) {
  261.             AllServersSelected.checked = "";
  262.             AllServersSelected.disabled = "";        
  263.         }
  264.         else {
  265.             AllServersSelected.checked = "checked";
  266.             AllServersSelected.disabled = "disabled";        
  267.         }
  268.     }
  269.     top.Rstatus.Pstat("");
  270.     PopUpDiv.style.display = ""; // show parameters Pop-Up
  271.     PopUpSelectDiv.style.display = "none";
  272. }
  273.  
  274. function processSelectCancelButton() {
  275.     top.Rstatus.Pstat("");
  276.     PopUpDiv.style.display = ""; // show parameters Pop-Up
  277.     PopUpSelectDiv.style.display = "none";
  278. }
  279.  
  280. // Alert Lookup Record
  281. var AlertRecLength = 5;
  282. var AlertLupRecCount = 0;
  283. function processAlertLupRec(AlID, AlName, AlDesc, AlSDT) {
  284.     var i = AlertLupRecCount * AlertRecLength;
  285.     var CurrentAlertType = "C"; // set Counter type
  286.     
  287.     if ( AlSDT == "01/01/1999 11:50:00" || AlSDT == "1/1/1999 11:50:0" ) { // if User
  288.         CurrentAlertType = "U"; // "User" type
  289.     }
  290.     else if ( AlSDT == "01/01/1999 11:40:00" || AlSDT == "1/1/1999 11:40:0" ) { 
  291.         CurrentAlertType = "E"; // "Event Log" type
  292.     }
  293.     else if ( AlSDT == "01/01/1999 11:20:00" || AlSDT == "1/1/1999 11:20:0" ) { 
  294.         CurrentAlertType = "T"; // "SNMP Trap" type
  295.     }
  296.     else if ( AlSDT == "01/01/1999 11:10:00" || AlSDT == "1/1/1999 11:10:0" ) { 
  297.         CurrentAlertType = "W"; // "Win Service" type
  298.     }
  299.     else if ( AlSDT == "01/01/1999 11:00:00" || AlSDT == "1/1/1999 11:0:0" ) { 
  300.         CurrentAlertType = "F"; // "File Check" type
  301.     }
  302.     else if ( AlSDT == "01/01/1999 11:15:00" || AlSDT == "1/1/1999 11:15:0" ) { 
  303.         CurrentAlertType = "L"; // "SYSLOG Check" type
  304.     }
  305.     else if ( AlSDT == "01/01/1999 11:30:00" || AlSDT == "1/1/1999 11:30:0" ) { // Service type
  306.         CurrentAlertType = "S"; // "Service" type
  307.     }
  308.     else if ( AlSDT == "01/01/1999 11:12:00" || AlSDT == "1/1/1999 11:12:0" ) { // Service type
  309.         CurrentAlertType = "P"; // "Service" type
  310.     }
  311.     else // ignore
  312.         return;
  313.  
  314.     // Parse Out Dependency, MaxAlerts etc.
  315.     var warr = new Array();
  316.     warr = AlDesc.split("[]");
  317.     AlDesc = warr[0];
  318.  
  319.     AlertRec_Arr[i++] = AlID;
  320.     AlertRec_Arr[i++] = AlName;
  321.     AlertRec_Arr[i++] = AlDesc;
  322.     AlertRec_Arr[i++] = CurrentAlertType;
  323.     AlertRec_Arr[i] = 0;
  324.     ++AlertLupRecCount;
  325. }
  326.  
  327. /* Alert Lookup Op Complete */
  328. function processAlertOpComplete() {
  329.     if ( false /*AlertLupRecCount == 0 */ ) { // check if any records found
  330.          top.Rstatus.Pstat("No record matches found for Watch/Alert LOOKUP request",true);    
  331.         CursorReset();
  332.      }
  333.      else {
  334.         // Do Services Lookup
  335.         ServicesRecCount = 0; // reset count
  336.         Services_Arr.length = 0;
  337.         rstat = RpmCC_AR.ServicesLookup("","","ComputerID,ID DESC");    
  338.         if ( rstat ) { // if unable to initiate request    
  339.             top.Rstatus.Pstat("Unable to start the ServerWatch LOOKUP request",true);
  340.             CursorReset();
  341.         }
  342.         else { // waiting for OperationCompleteEvent
  343.             top.Rstatus.Pstat("One moment while ServerWatch LOOKUP request completes");
  344.             return;
  345.         }
  346.      }
  347. }
  348. function processAlertOpError() {
  349.     top.Rstatus.Pstat("Error in Watch/Alert Lookup");
  350. }
  351.  
  352. // Process Serverices LOOKUP Record Event
  353. var ServicesRecCount = 0;
  354. var ServicesRecLength = 4; // Services Lookup record length
  355. function processServicesRecord(SRVstrg) {
  356.     var warr = new Array();
  357.     warr = SRVstrg.split("~");
  358.     var j = ServicesRecCount * ServicesRecLength;
  359.      Services_Arr[j] = warr[1]; // Computer ID
  360.       Services_Arr[j+1] = warr[2]; // AlertGroup ID
  361.       warr[3] = (warr[3] == "SQLCONNECT") ? "SQL" : warr[3];
  362.       Services_Arr[j+2] = warr[3]; // Type
  363.       Services_Arr[j+3] = SRVstrg; 
  364.     ++ServicesRecCount; // bump record counter    
  365. }
  366. function processServicesOpError() {
  367.     top.Rstatus.Pstat("Error in IP Services Lookup");
  368. }
  369.  
  370. // Process Services Operation Complete Event
  371. function processServicesOpComplete() {
  372. // Initiate SyslogCheck Lookup
  373.     SyslogCheck_Arr.length = 0;
  374.     if ( RpmCC_AR.SyslogCheckLookup("*") ) {
  375.         top.Rstatus.Pstat("Unable to start the SYSLOGWatch lookup request",true);
  376.         CursorReset();
  377.     }
  378.     else {
  379.         top.Rstatus.Pstat("One moment while SYSLOGWatch lookup request completes");
  380.     }
  381. }
  382. var SyslogCheck_Arr = new Array();
  383. var SyslogCheckRecLength = 2;
  384. function processSLLookupOpComplete(SLLStat) {
  385.     var wrkarr = new Array();
  386.     wrkarr = SLLStat.split(":"); // parse the lookup record
  387.     if ( wrkarr[0] != "Err" ) {
  388.         SyslogCheck_Arr = SLLStat.split("~"); // parse the lookup record
  389.     }
  390.     // Get Process Check Watches
  391.     ProcessCheck_Arr.length = 0;
  392.     if ( RpmCC_AR.ProcessCheckLookup("*") ) {
  393.         top.Rstatus.Pstat("Unable to start the ProcessWatch lookup request",true);
  394.         CursorReset();
  395.     }
  396.     else {
  397.         top.Rstatus.Pstat("One moment while ProcessWatch lookup request completes");
  398.     }
  399. }
  400. var ProcessCheck_Arr = new Array();
  401. var ProcessCheckRecLength = 2;
  402. function processPCLookupOpComplete(FCLStat) {
  403.     var wrkarr = new Array();
  404.     wrkarr = FCLStat.split(":"); // parse the lookup record
  405.     if ( wrkarr[0] != "Err" ) {
  406.         ProcessCheck_Arr = FCLStat.split("~"); // parse the lookup record
  407.     }
  408.     // Get File Check Watches
  409.     FileCheck_Arr.length = 0;
  410.     if ( RpmCC_AR.FileCheckLookup("*") ) {
  411.         top.Rstatus.Pstat("Unable to start the FileWatch lookup request",true);
  412.         CursorReset();
  413.     }
  414.     else {
  415.         top.Rstatus.Pstat("One moment while FileWatch lookup request completes");
  416.     }
  417. }
  418. var FileCheck_Arr = new Array();
  419. var FileCheckRecLength = 2;
  420. function processFCLookupOpComplete(FCLStat) {
  421.     var wrkarr = new Array();
  422.     wrkarr = FCLStat.split(":"); // parse the lookup record
  423.     if ( wrkarr[0] != "Err" ) {
  424.         FileCheck_Arr = FCLStat.split("~"); // parse the lookup record
  425.     }
  426.     // Get Win Services Watches
  427.     WinSCheck_Arr.length = 0;
  428.     if ( RpmCC_AR.NTServicesMonitorLookupAGID("*") ) {
  429.         top.Rstatus.Pstat("Unable to start the WinServicesWatch lookup request",true);
  430.         CursorReset();
  431.     }
  432.     else {
  433.         top.Rstatus.Pstat("One moment while WinServicesWatch lookup request completes");
  434.     }
  435. }
  436. var WinSCheck_Arr = new Array();
  437. var WinSCheckRecLength = 2;
  438. function processNTSMLookupOpComplete(NTSMLStat) {
  439.     var wrkarr = new Array();
  440.     wrkarr = NTSMLStat.split(":"); // parse the lookup record
  441.     if ( wrkarr[0] != "Err" ) {
  442.         WinSCheck_Arr = NTSMLStat.split("~"); // parse the lookup record
  443.     }
  444.     // Get SNMP Trap Watches
  445.     SNMPCheck_Arr.length = 0;
  446.     if ( RpmCC_AR.SnmpTrapMonitorFindByAGId("*") ) {
  447.         top.Rstatus.Pstat("Unable to start the SNMPTrapWatch lookup request",true);
  448.         CursorReset();
  449.     }
  450.     else {
  451.         top.Rstatus.Pstat("One moment while SNMPTrapWatch lookup request completes");
  452.     }
  453. }
  454. var SNMPCheck_Arr = new Array();
  455. var SNMPCheckRecLength = 2;
  456. function processSNMPLookupOpComplete(SNMPLStat) {
  457.     var wrkarr = new Array();
  458.     wrkarr = SNMPLStat.split(":"); // parse the lookup record
  459.     if ( wrkarr[0] != "Err" ) {
  460.         SNMPCheck_Arr = SNMPLStat.split("~"); // parse the lookup record
  461.     }
  462.     // Get Event Log Watches
  463.     EventLCheck_Arr.length = 0;
  464.     if ( RpmCC_AR.ELMonitorLookupByAlertGroup("*") ) {
  465.         top.Rstatus.Pstat("Unable to start the EventLogWatch lookup request",true);
  466.         CursorReset();
  467.     }
  468.     else {
  469.         top.Rstatus.Pstat("One moment while EventLogWatch lookup request completes");
  470.     }
  471. }
  472. var EventLCheck_Arr = new Array();
  473. var EventLCheckRecLength = 2;
  474. function processEVLookupOpComplete(EVLStat) {
  475.     var wrkarr = new Array();
  476.     wrkarr = EVLStat.split(":"); // parse the lookup record
  477.     if ( wrkarr[0] != "Err" ) {
  478.         EventLCheck_Arr = EVLStat.split("~"); // parse the lookup record
  479.     }
  480.     // Done Lookups
  481.     top.Rstatus.Pstat("Request Completed");
  482.     LastReportName = "";
  483.     processResetButton();    
  484.     CursorReset();
  485. }
  486. function processELMonitorOpError() {
  487.     // Done Lookups
  488.     top.Rstatus.Pstat("Request Completed");
  489.     CursorReset();
  490. }
  491.  
  492. // Process and Display the Group:Computer Tree
  493. var CCEs = null;
  494. var GroupExpandedCount = 0;
  495. var GroupDisplayedCount = 0;
  496. var LastGroupDisplayed = 0;
  497. var CurrentServiceDisplayed = "";
  498. function processAlertGroupTree() {
  499.     var tstrg = "Watch/Alert : Servers/Devices Tree";
  500.     if ( RPRtyp == "[2]" ) {
  501.         AllServersSelected1.checked = "checked";
  502.         AllServersSelected1.disabled = "disabled";    
  503.     }
  504.     else {
  505.         var ST = ServiceTypes[ServiceSelect.selectedIndex];
  506.         if ( ST == CurrentServiceDisplayed ) 
  507.             return;
  508.         CurrentServiceDisplayed = ST;            
  509.         AllServersSelected.checked = "checked";
  510.         AllServersSelected.disabled = "disabled";    
  511.     }    
  512.     CompSelectedArr = ""; 
  513.     var Op = AL_CCOneAlertGroup; // preset
  514.     Op.innerHTML = ""; // reset
  515.     setOutHeader(tstrg); // define output table header    
  516.     
  517.     for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  518.         AR_CmpStoreArr[j+5] = "0"; // reset selected
  519.     }        
  520.  
  521.     /* Format and Output Service tree list */
  522.     GroupExpandedCount = 0; // init
  523.     GroupDisplayedCount = 0;
  524.     for ( var i=0; i<AlertLupRecCount; i++) {
  525.         if ( !checkIncludedWatch(i) ) {
  526.             continue;
  527.         }
  528.         CCEs += "<table border='0' cellpadding='0' cellSpacing='0' width='490'><tr title='"+ AlertRec_Arr[(i*AlertRecLength)+2] +"'><td width='25'> </td>";
  529.         Iprefx = ( i+1 >= AlertLupRecCount ) ? "L" : "T";
  530.           CCEs += "<td width='19' align='center'><img id='lima" + GroupDisplayedCount + "' expanded='0' src='images/" + Iprefx + "plus.gif' style='cursor:hand' onclick='procGrpImgClick(this)' width='19' height='20'></td>";
  531.         CCEs += "<td width='19' align='center'><img id='limb" + GroupDisplayedCount + "' src='images/CloseImg.gif' style='cursor:hand' onclick='procGrpImgClick(this)' width='15' height='14' ";
  532.         CCEs += "></td><td width='*' class='optext'>" + AlertRec_Arr[(i*AlertRecLength)+1] + "</td></tr></table>";
  533.         CCEs += "<div id='lexp" + GroupDisplayedCount + "' agix="+i+" compcount=0></div>";
  534.         LastGroupDisplayed = GroupDisplayedCount;
  535.         ++GroupDisplayedCount;
  536.       }
  537.       if ( GroupDisplayedCount == 0 ) {
  538.         CCEs += "<table border='0' cellpadding='0' cellSpacing='0' width='490'>";
  539.         CCEs += "<tr><td width='25'> </td>";
  540.         if ( RPRtyp == "[2]" ) {
  541.               CCEs += "<td width='19' height='20' align='center'></td><td colspan='2' width='*' class='optextb'>No Watches/Alerts defined for the selected Watch/Alert Types</td></tr></table>";
  542.         }
  543.         else {
  544.               CCEs += "<td width='19' height='20' align='center'></td><td colspan='2' width='*' class='optextb'>No Watches/Alerts defined for the IP Service: "+ST+" </td></tr></table>";
  545.         }
  546.     }
  547.     else {
  548.         if ( Iprefx == "T" ) {
  549.             var lindx = CCEs.lastIndexOf("Tplus");
  550.             if ( lindx != -1 ) {
  551.                 var eCCE = CCEs.substring(0, lindx);
  552.                 eCCE += "L";
  553.                 eCCE += CCEs.substring(lindx+1)
  554.                 CCEs = eCCE;
  555.             }
  556.         }
  557.     }
  558.     Op.insertAdjacentHTML("beforeEnd",CCEs);
  559. }
  560. function checkIncludedWatch(cindex) {
  561.     var i = cindex;
  562.     var CAT = AlertRec_Arr[(i*AlertRecLength)+3];
  563.     if ( RPRtyp == "[2]" ) {
  564.         if ((Report_SWA.checked && CAT == "S") ||
  565.               (Report_SNMP.checked && CAT == "T") ||
  566.                (Report_EL.checked && CAT == "E") ||
  567.                (Report_WS.checked && CAT == "W") ||
  568.                (Report_SL.checked && CAT == "L") ||
  569.                (Report_FC.checked && CAT == "F") ||
  570.                (Report_PC.checked && CAT == "P") )
  571.                 return true;
  572.     }
  573.     else {    
  574.         if ( CAT == "S" && checkServiceType( AlertRec_Arr[(i*AlertRecLength)] ) )  // Service type
  575.             return true;
  576.     }
  577.     return false;
  578. }
  579. function checkServiceType(agid) {
  580.     var ST = ServiceTypes[ServiceSelect.selectedIndex];
  581.     for ( var i=0; i<Services_Arr.length; i+= ServicesRecLength ) {
  582.         if ( Services_Arr[i+1] == agid && Services_Arr[i+2] == ST ) {
  583.             return true;
  584.         }
  585.     }
  586.     return false;
  587. }
  588.  
  589. /* Display Header for Service and Object:Counter Trees */
  590. function setOutHeader(Tstrg) {
  591.     CCEs = "<table border='0' cellpadding='0' cellSpacing='0' width='490'>";
  592.     CCEs += "<tr><td width='25'> </td>";
  593.       CCEs += "<td width='19' height='20' align='center'><img src='images/topopen.gif' width='19' height='20'></td><td colspan='2' width='*' class='optextb'>" + Tstrg + "</td></tr></table>";
  594. }
  595.  
  596. // Process Click on Group in Group Tree 
  597. var CurExpGroupIx = null; // Index to Current Expanded Group
  598. var CurCmpIx = 0;
  599. var CmpsExpected = 0;
  600. var CSortArr = new Array();
  601. var EOBj = null;
  602. function procGrpImgClick(SIm) {
  603.     isx = SIm.id;  
  604.     if ( isx.charAt(0) != "l" ) { // if not a "limaxx"
  605.         top.banner.beep();
  606.         return;
  607.     }
  608.     var cx = isx.substring(4,isx.length); // Strip off index
  609.  
  610.     CurExpGroupIx = parseInt(cx,10);
  611.     CObj = document.all["lima"+cx];
  612.     EObj = document.all["lexp"+cx];
  613.     FObj = document.all["limb"+cx];
  614.     Cpfx = (CurExpGroupIx == LastGroupDisplayed) ? "L" : "T";
  615.  
  616.     if ( CObj.expanded == "1" ) { // if currently expanded
  617.         FObj.src = "images/CloseImg.gif";
  618.         CObj.src = "images/" + Cpfx + "plus.gif";
  619.         EObj.style.display = "none";
  620.        CObj.expanded = "0"; // Set contracted
  621.        GroupExpandedCount -= EObj.compcount; // decrement count of open computers
  622.      }
  623.     else { // otherwise Expand
  624.         FObj.src = "images/OpenImg.gif";
  625.         CCEs = ""; // initialize
  626.         CObj.src = "images/" + Cpfx + "minus.gif";
  627.           CObj.expanded = "1"; // Set expanded
  628.           if ( EObj.compcount == 0 ) {
  629.               CmpsExpected = CurCmpIx = 0; // initialize
  630.               var AGID = AlertRec_Arr[(EObj.agix*AlertRecLength)]; // get Alert Group ID
  631.               var AGType = AlertRec_Arr[(EObj.agix*AlertRecLength)+3]; // get Alert Group Type
  632.               // Add Computers to the Tree for This Alert Group 
  633.               CSortArr.length = 0; // reset
  634.               switch ( AGType ) {
  635.                case "S" : 
  636.                       // Find each service that matches Alert Group ID
  637.                     for ( var i=0; i<Services_Arr.length; i+= ServicesRecLength ) {
  638.                         if ( Services_Arr[i+1] == AGID ) {
  639.                             // Get computer ID from Service entry
  640.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  641.                                // if match on Computer ID
  642.                                 if ( Services_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  643.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  644.                                     break;
  645.                                 }
  646.                             }
  647.                         }
  648.                     }
  649.                   break;
  650.                case "L" : 
  651.                   // Find each Syslog Check that matches Alert Group ID
  652.                     for ( var i=0; i<SyslogCheck_Arr.length; i+= SyslogCheckRecLength ) {
  653.                         if ( SyslogCheck_Arr[i+1] == AGID ) {
  654.                             // Get computer ID from entry
  655.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  656.                                // if match on Computer ID
  657.                                 if ( SyslogCheck_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  658.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  659.                                     break;
  660.                                 }
  661.                             }
  662.                         }
  663.                     }
  664.                   break;
  665.                case "F" : 
  666.                   // Find each File Check that matches Alert Group ID
  667.                     for ( var i=0; i<FileCheck_Arr.length; i+= FileCheckRecLength ) {
  668.                         if ( FileCheck_Arr[i+1] == AGID ) {
  669.                             // Get computer ID from entry
  670.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  671.                                // if match on Computer ID
  672.                                 if ( FileCheck_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  673.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  674.                                     break;
  675.                                 }
  676.                             }
  677.                         }
  678.                     }
  679.                   break;
  680.                 case "P" : 
  681.                   // Find each Process Check that matches Alert Group ID
  682.                     for ( var i=0; i<ProcessCheck_Arr.length; i+= ProcessCheckRecLength ) {
  683.                         if ( ProcessCheck_Arr[i+1] == AGID ) {
  684.                             // Get computer ID from entry
  685.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  686.                                // if match on Computer ID
  687.                                 if ( ProcessCheck_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  688.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  689.                                     break;
  690.                                 }
  691.                             }
  692.                         }
  693.                     }
  694.                   break;
  695.               case "W" : 
  696.                   // Find each WinService Check that matches Alert Group ID
  697.                     for ( var i=0; i<WinSCheck_Arr.length; i+= WinSCheckRecLength ) {
  698.                         if ( WinSCheck_Arr[i+1] == AGID ) {
  699.                             // Get computer ID from entry
  700.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  701.                                // if match on Computer ID
  702.                                 if ( WinSCheck_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  703.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  704.                                     break;
  705.                                 }
  706.                             }
  707.                         }
  708.                     }
  709.                   break;
  710.                case "T" : 
  711.                   // Find each SNMPTRap Check that matches Alert Group ID
  712.                     for ( var i=0; i<SNMPCheck_Arr.length; i+= SNMPCheckRecLength ) {
  713.                         if ( SNMPCheck_Arr[i+1] == AGID ) {
  714.                             // Get computer ID from entry
  715.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  716.                                // if match on Computer ID
  717.                                 if ( SNMPCheck_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  718.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  719.                                     break;
  720.                                 }
  721.                             }
  722.                         }
  723.                     }
  724.                   break;
  725.                case "E" : 
  726.                   // Find each EventLog Check that matches Alert Group ID
  727.                     for ( var i=0; i<EventLCheck_Arr.length; i+= EventLCheckRecLength ) {
  728.                         if ( EventLCheck_Arr[i+1] == AGID ) {
  729.                             // Get computer ID from entry
  730.                            for ( var j=0; j<AR_CmpStoreArr.length; j+=CmpRecLth ) {
  731.                                // if match on Computer ID
  732.                                 if ( EventLCheck_Arr[i] == AR_CmpStoreArr[j+3] ) {                   
  733.                                     CSortArr[CmpsExpected++] = AR_CmpStoreArr[j].toLowerCase()+"~"+j;
  734.                                     break;
  735.                                 }
  736.                             }
  737.                         }
  738.                     }
  739.                   break;
  740.             }        
  741.             CSortArr.sort();
  742.             var warr = new Array();
  743.             for ( var i=0, j=0; i<CmpsExpected; i++ ) {
  744.                 warr = CSortArr[i].split("~");
  745.                 j = parseInt(warr[1],10);
  746.                 processTreeComputer(j,AGID,AGType);
  747.             }
  748.     
  749.             var lindx = CCEs.lastIndexOf("T.gif");
  750.             if ( lindx != -1 ) {
  751.                 var eCCE = CCEs.substring(0, lindx);
  752.                 eCCE += "L";
  753.                 eCCE += CCEs.substring(lindx+1)
  754.                 CCEs = eCCE;
  755.             }
  756.             EObj.compcount = CmpsExpected; // set number computers opened
  757.             EObj.insertAdjacentHTML("beforeEnd",CCEs);
  758.          }
  759.           GroupExpandedCount += EObj.compcount; // increment total number of computers opened
  760.         EObj.style.display = "";
  761.         CObj.scrollIntoView(true);
  762.     }
  763.     // enable SelectAll/UnselectAll buttons if computers opened
  764.     checkSelUnselButtons();
  765. }
  766.  
  767. function processTreeComputer(CSIx,AGID,AGType) {
  768.     var CmpID = AR_CmpStoreArr[CSIx+3];
  769.     var CmpNme = AR_CmpStoreArr[CSIx];
  770.     var CmpDesc = AR_CmpStoreArr[CSIx+2];
  771.     var SState = AR_CmpStoreArr[CSIx+5];
  772.     var Opfx = (CurExpGroupIx == LastGroupDisplayed) ? "White" : "I";
  773.     var Mpfx = "T";
  774.     
  775.     CCEs += "<table border='0' cellpadding='0' cellSpacing='0' width='490'>";
  776.     CCEs += "<tr><td width='25'> </td><td width='19' height='20' align='center'><img src='images/" + Opfx + ".gif' width='19' height='20'></td>";
  777.     CCEs += "<td width='19' height='20' align='center'><img src='images/" + Mpfx + ".gif' width='19' height='20'></td>";
  778.       CCEs += "<td width='11' align='center'><img id='xima" + CurExpGroupIx + "_" + CurCmpIx;
  779.  
  780.         CCEs +=  "' checked='0' src='images/"; 
  781.           CCEs += "Unchecked.gif' width='9' height='9'";
  782.           CmpImg = "Computer.gif";
  783.     //}
  784.         
  785.       CCEs += " compix='" +CSIx+"' cmpid='"+CmpID+"' agid='"+AGID+"' agt='"+AGType+"' style='cursor:hand' onclick='procELCmpImgClick(this)'></td>";
  786.     CCEs += "<td width='19' align='center'><img id='zimb" + CurExpGroupIx + "_" + CurCmpIx + "' src='images/"+CmpImg+"' style='cursor:hand' onclick='procELCmpImgClick(this)' width='15' height='16' title='";
  787.     CCEs += CmpDesc + "'></td>";
  788.     CCEs += "<td width='*' id='zimc" + CurExpGroupIx + "_" + CurCmpIx;
  789.     CCEs += "' style='cursor:hand' onclick='procELCmpImgClick(this)' class='optext'>" + CmpNme + "</td>";
  790.     CCEs += "</tr></table>";
  791.     ++CurCmpIx; // bump index
  792. }
  793.  
  794. /* Process Click to Check or Uncheck a Computer */
  795. function procELCmpImgClick(CmpIm) {
  796.     var isx = CmpIm.id;  
  797.     if ( isx.charAt(0) != "x" && isx.charAt(0) != "z") 
  798.                 return;
  799.     var cx = isx.substring(4,isx.length); // Strip off index
  800.     lx = cx.lastIndexOf("_"); // derive suffix to the Computer DIV ID
  801.     var dx = cx.substring(0,lx);
  802.  
  803.     var CObj = document.all["xima"+cx]; // Clicked Computer Entry
  804.     var FObj = document.all["zimb"+cx]; 
  805.     CSIx = parseInt(CObj.compix,10);
  806.  
  807.     if ( CObj.checked == "1" ) { // if currently Checked, Uncheck
  808.         FObj.src = "images/Computer.gif";
  809.         CObj.src = "images/Unchecked.gif";
  810.           CObj.checked = "0"; // Set Unchecked
  811.           AR_CmpStoreArr[CSIx+5] = "0";
  812.       }
  813.     else { // otherwise Check
  814.         FObj.src = "images/sAdminServers.gif"; 
  815.         CObj.src = "images/Checked.gif";
  816.           CObj.checked = "1"; // Set Checked
  817.           AR_CmpStoreArr[CSIx+5] = "1";
  818.     }
  819. }
  820.  
  821. // Process SelectALL or UnselectALL
  822. function processSelect(Pflg) {
  823.     var GObj = null, CObj = null;
  824.     // Look for each open/expanded Group
  825.     for ( var i=0; i<GroupDisplayedCount; i++ ) {
  826.         GObj = document.all["lima"+i];
  827.         if ( GObj.expanded == "1" ) {
  828.             GObj = document.all["lexp"+i];
  829.             // if Group expanded, process each computer
  830.             for ( var j=0; j<GObj.compcount; j++ ) {
  831.                 CObj = document.all["xima"+i+"_"+j]; // computer entry in tree
  832.                 if (CObj.checked == Pflg) {
  833.                     procELCmpImgClick(CObj); // go process
  834.                 }
  835.             }
  836.         }
  837.     }
  838. }
  839.  
  840. function processGroupChoice(type) {
  841.     PopUpGroup.style.display = "";
  842.     //AR_RptSel.style.display="none";
  843.     SpecDTDD.style.display="none";
  844.     SpecDurDD.style.display="none";
  845.     SpecRunDD.style.display="none";
  846.     sButtonState(RScheduleButton,"1");
  847.     Group_Data.innerHTML = "";
  848.     
  849.     var ridx = ReportRecLength * RptSelectIdx; // Index to Store for current Selected
  850.     RPRtyp = (AR_RptStoreArr[ridx+6] == "3") ? "[3]" : "[4]";
  851.  
  852.     var CCEs = "";
  853.     for ( var i=0, j=0; j<GrpLupRecCount; ++j, i+=GroupRecLength ) {    
  854.         CCEs += "<table border='0' cellpadding='1' cellSpacing='0' width='460'><tr>";
  855.           CCEs += "<td width='10'></td><td width='11' align='center'><img id='grp_chk"+j;
  856.           CCEs += "' checked='0' src='images/Unchecked.gif'";
  857.           CCEs += "style='cursor:hand' onclick='procGroupCmpImgClick(this)' width='9' height='9'></td>";
  858.         CCEs += "<td width='*' id='grp_nme"+j;
  859.         CCEs += "' style='cursor:hand' onclick='procGroupCmpImgClick(this)' class='optext'>  " + AR_GrpStore.options[i].text+" ( "+AR_GrpStore.options[i+2].text+" )" + "</td>";
  860.         CCEs += "</tr></table>";
  861.     }
  862.       Group_Data.style.overflow = ( j > 14 ) ? "scroll" : "";
  863.     Group_Data.insertAdjacentHTML("beforeEnd",CCEs);
  864. }
  865.  
  866. function processGroup_OK() {
  867.     var ST = "";
  868.     for ( var i=0, j=0; i<GrpLupRecCount; ++i, j+=GroupRecLength ) {    
  869.         if ( document.all["grp_chk"+i].checked == "1" ) {
  870.            if ( ST != "" ) ST += ",";
  871.             ST += AR_GrpStore.options[j+1].text; // ID
  872.         }
  873.     }    
  874.     /*if ( ST == "" ) {
  875.          alert("Please Specify at least one Group for the Report");
  876.         return;
  877.     }*/
  878.     STParm = RPRtyp+","+ST;
  879.     processGroup_Cancel();
  880. }
  881. function processGroup_Cancel() {
  882.     PopUpGroup.style.display = "none";
  883.     //AR_RptSel.style.display="";
  884.     SpecDTDD.style.display="";
  885.     SpecDurDD.style.display="";
  886.     SpecRunDD.style.display="";
  887.     checkEnableSchedButton();
  888.     if ( AR_RptSel.style.visibility != "hidden" ) {
  889.         AR_RptSel.focus(); 
  890.     }
  891. }
  892. /* Process Click to Check or Uncheck an OID */
  893. function procGroupCmpImgClick(CmpIm) {
  894.     isx = CmpIm.id;  
  895.     if ( isx.charAt(0) != "g") 
  896.                 return;
  897.     var cx = isx.substring(7,isx.length); // Strip off index
  898.     var CObj = document.all["grp_chk"+cx]; // Clicked Check box
  899.     if ( CObj.checked == "1" ) { // if currently Checked, Uncheck
  900.         CObj.src = "images/Unchecked.gif";
  901.        CObj.checked = "0"; // Set Unchecked
  902.    }
  903.     else { // otherwise Check
  904.         CObj.src = "images/Checked.gif";
  905.        CObj.checked = "1"; // Set Checked
  906.     }
  907. }