<html>
<head>
  <Title>Advanced System Information - Services</Title>
  <Script Language="JScript" Src="CommonFunc.js"></script>
  <link rel="STYLESHEET" type="text/css" href="hcp://system/css/shared.css">
  <link rel="STYLESHEET" type="text/css" href="msinfohss.css">
  <Script Language="JavaScript">
  var remoteServer = null;
  
  function OnLoadHandler() {
    _body.style.cursor= "wait";
    _body.scroll = "no";
    DisplayLocStrings();
    SetProgressBarImage();
    window.setTimeout("LoadChores(0)", TIMEOUT);  
  }
	
  function DisplayLocStrings() {
    WaitMessage.innerHTML = MSG_WAIT;
    Refresh.innerHTML = TAG_REFRESH;
    
    with(Services.all) {
      Caption.innerHTML = TAG_SERVICES;
      Col1.innerHTML = TAG_SERVICE;
      Col2.innerHTML = TAG_EXECUTABLE;
      Col3.innerHTML = TAG_STATUS;
      Col4.innerHTML = TAG_STARTUP;
    }
  }
  
var INCR_UNIT = 100;//move progress bar in increments of INCR_UNIT
function LoadChores(taskId) {
  try {

    switch(taskId)
    {
      case 0:
        remoteServer = GetServerName();
        Title.innerHTML = (remoteServer ? (TAG_REMOTEADVINFO + " \\\\" + remoteServer) : TAG_LOCALADVINFO) + " - " + TAG_SERVICES;
        break;

      case 1:
        DrawProgressBar(INCR_UNIT, TAG_SERVICES);
        break;
      case 2:
        var oServices = new myServices;
        oServices.show();
        break;

      default:
         taskId = -1;
        _header.style.display = "none";
        _data.style.display = "";
        _body.style.cursor= "default";
        _body.scroll = "auto";
    }
    
    if(taskId >= 0)
      window.setTimeout("LoadChores(" + ++taskId + ")", TIMEOUT);
   }
		
    catch (e) {
      HandleErr(e);
    }
  }
  
  function ShowDetail(tr) {
    with (tr.all) {
      var msg = name.innerHTML + "\r" + exe.innerHTML + "\r" + state.innerHTML + "\r" + startMode.innerHTML;
      if(pchealth)
        pchealth.MessageBox(msg, "OK");
    }
  }
	
  //traverse the list and invoke display on each item.
  function displayTableSegment(outerDiv, head) {
    var strMsg = "<table width=\"100%\" cellspacing=0 cellpadding=0><tr class=\"sys-table-cell-bgcolor1 sys-font-body sys-color-body\"><td align='left' style=\"padding : 0.5em;\">%arg1%</td></tr></table>";
    var cnt = 1;
    var strHTML = "";
    var tableElement = null;		
    if (document.all[outerDiv].length == null)
      tableElement = document.all[outerDiv];
    else  
      tableElement = document.all[outerDiv][0];
    if (head==null)
      tableElement.outerHTML = strMsg.replace(/%arg1%/, TAG_NONE);
    else  
    {
      var curr = head;
      while (curr!=null)  {
      if (document.all[outerDiv].length == null)
        tableElement = document.all[outerDiv];
      else  
        tableElement = document.all[outerDiv][0];
      
      if (cnt%2 == 0) {
        if (tableElement.all["tr_" + outerDiv])
          tableElement.all["tr_" + outerDiv].className = "sys-table-cell-bgcolor1";
        cnt = 1;
      }
      else {
        if (tableElement.all["tr_" + outerDiv])
          tableElement.all["tr_" + outerDiv].className = "sys-table-cell-bgcolor2";
        cnt++;  
      }
      	  
      curr.show(tableElement);
      strHTML += tableElement.outerHTML;
      curr = curr.getNext();
    }

    tableElement.outerHTML = strHTML;
  }
} 
	
//////////////////////
//MyService
function myServiceSetValues(name, exe, state, startMode)  {
  this.m_name = intelliBreak(name, " ", 23);
  this.m_exe = intelliBreak(exe, " ", 20);;
  this.m_state = state;
  this.m_startMode = startMode;
}

function myServiceShow(tableElement)  {
  tableElement.all["name"].innerHTML = this.m_name;
  tableElement.all["exe"].innerHTML = this.m_exe;
  tableElement.all["state"].innerHTML = this.m_state;
  tableElement.all["startMode"].innerHTML = this.m_startMode;
}

//constructor
function myService()  {
  this.m_name = null;
  this.m_exe = null;
  this.m_state = null;
  this.m_startMode = null;
  this.m_next = null;
  
  this.getName = new Function("return this.m_name;");
  this.setNext = new Function("ptr", "this.m_next = ptr;");
  this.getNext = new Function("return this.m_next;");
  this.setValues = myServiceSetValues;
  this.show = myServiceShow;
}
//EO MyService
//////////////////////

//////////////////////
//MyServices
function myServicesShow() {
  displayTableSegment("services", this.m_head);
}

//constructor
function myServices() {
  this.m_head = null;
  
  this.show = myServicesShow;

  var loc = wbemlocator;
  var svcs = loc.ConnectServer(remoteServer);
  svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
    
  var strQuery = "Select * From Win32_Service";
	var colItems = new Enumerator(svcs.ExecQuery(strQuery));
  for(; !colItems.atEnd(); colItems.moveNext())
  {
    var inst = colItems.item();
    var oService = new myService();
    with (inst)
    {
      //extract just the file name
      var arrExe = inst.PathName.split("\\");
      var stateval = GetPropValue(svcs, "State", State);
      var startmodeval = GetPropValue(svcs, "StartMode", StartMode);
      oService.setValues(Name, arrExe[arrExe.length-1], stateval, startmodeval);
    }
    oService.setNext(this.m_head); //add before
    this.m_head = oService;
  } 
}
//EO MyServices
//////////////////////
	
  </Script>
</head>
<body ID="_body" onLoad="OnLoadHandler()" STYLE="cursor: wait" class="sys-font-body sys-color-body sys-rhp-bgcolor">

<Span ID="Title" align="left" class="sys-font-heading3 sys-rhp-color-title">&nbsp;</Span>

<DIV ID="_header">
<table width="100%" cellspacing="0" cellpadding="0" class="sys-font-body sys-color-body" style="padding : 0.5em 0.5em 0.5em 0em;">
<tr>
  <td>
    &nbsp;
  </td>
</tr>

<tr>
  <td ID="WaitMessage" ALIGN="left" VALIGN=top class="sys-font-body-bold sys-color-body">
    &nbsp;
  </td>
</tr>

<tr>
  <td>

    <table ID="Progress" border=0 cellspacing="0" cellpadding="0">
    <tr>
      <td rowspan="3"><img ID="ImgProgLeft" src="Graphics/r1_c1.gif" width="4px" height="18px" border="0"></td>
      <td><img src="graphics\r1_c2.gif" width="352px" height="3px" border="0"></td>
      <td rowspan="3"><img ID="ImgProgRight" src="Graphics/r1_c3.gif" width="3px" height="18px" border="0"></td>
    </tr>

    <tr> 
      <td valign="center"><img width="8px" height="12px" id="Bar" src="Graphics/greendot.jpg"></td>
    </tr>

    <tr> 
      <td><img src="Graphics/r3_c2.gif" width="352px" height="3px" border="0"></td>
    </tr>
    </table>

  </td>
</tr>

<tr>
  <td>
    <Span ID="StatusPerCent" align="left" VALIGN=top width="5%"></Span>
    &nbsp; 
    <Span ID="StatusMsg" align="left" VALIGN=top></Span>
  </td>
</tr>
</table>
</DIV>

<DIV ID="_data" STYLE="DISPLAY: none">
  <table width="100%" class="table-noborder sys-table-color-border" cellspacing="0" cellpadding="0"> 
  <tr> 
    <td valign=top colspan="2">
      <table width="100%" cellspacing="0" cellpadding="0" class="sys-font-body sys-color-body">
      <tr> 
        <td align="left" valign="bottom">
          <A class="sys-link-normal" ID="Refresh" href="#" onclick="window.location.reload()">refresh</a>
        </td>
      </tr> 
      </table>
    </td>
  </tr> 

  <tr> 
    <td>&nbsp;
    </td>
  </tr> 

<tr> 
  <td width="100%" valign=top>
  <table ID="Services" width="100%" class="table-border sys-table-color-border sys-font-body sys-color-body" cellspacing="0" cellpadding="0">
    <th valign="top" align="left" class="sys-table-header-bgcolor1 sys-toppane-header-color" style="padding : 0.5em;"> 
      <IMG height=16 src="Graphics/system.GIF" width=16 border=0 align="absmiddle">
      <span ID="Caption">&nbsp;</span>
    </th>
    <tr> 
      <td valign="top"> 
        <table width="100%" cellspacing="0" cellpadding="0">
        <tr>
          <td colspan=4>
          
          <table width="100%" cellspacing="0" cellpadding="0" class="sys-font-body sys-color-body">
          <tr class="sys-table-cell-bgcolor1">  
            <td ID="Col1" width="30%" align="left" valign="top" class="sys-font-body-bold table-rightborder table-bottomborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td>
            <td ID="Col2" width="23%" align="left" valign="top" class="sys-font-body-bold table-rightborder table-bottomborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td>
            <td ID="Col3" width="17%" align="left" valign="top" class="sys-font-body-bold table-rightborder table-bottomborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td>
            <td ID="Col4" width="20%" align="left" valign="top" class="sys-font-body-bold table-bottomborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td>    
          </tr>
          </table>
          
          <table ID="services" width="100%" cellspacing="0" cellpadding="0" class="sys-font-body sys-color-body">
          <tr ondblclick="ShowDetail(this)" ID="tr_services">
            <td ID="name" width="30%" align="left" valign="top" class="table-rightborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td>
            <td ID="exe" width="23%" align="left" valign="top" class="table-rightborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td>
            <td ID="state" width="17%" align="left" valign="top" class="table-rightborder sys-table-color-border" style="padding : 0.5em;">&nbsp;</td> 
            <td ID="startMode" width="20%" align="left" valign="top" style="padding : 0.5em;">&nbsp;</td>    
          </tr>    
          </table>
          </td>
        </tr>  
        </table>
  	  </td>
  	</tr>
  	</table>
  </td>
  </tr>
  
	</table>

</DIV>

<OBJECT ID="wbemlocator" WIDTH=0 HEIGHT=0
 CLASSID="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6">
</OBJECT>

<OBJECT ID="pchealth" WIDTH=0 HEIGHT=0 
  CLASSID="CLSID:FC7D9E02-3F9E-11d3-93C0-00C04F72DAF7">
</OBJECT>

</body>
</html>