﻿document.onreadystatechange=OnReadyStateChange;

function OnReadyStateChange()
{
    if(document.readyState=="complete")
    {
        var sSensorList='<monitors>';

        var oHardwareMonitors=null;
        try 
	    {
            oHardwareMonitors=new ActiveXObject("VxHwMon.HardwareMonitors");
        } catch(e)
        {
        }
        if(oHardwareMonitors!=null)
        {
            oHardwareMonitors.Refresh();
            var il=oHardwareMonitors.Count;
            for(var i=0;i<il;i++)
            {
                var oHardwareMonitor=oHardwareMonitors.Item(i);
                var oSensorClasses=oHardwareMonitor.SensorClasses;
                var jl=oSensorClasses.Count;
                for(var j=0;j<jl;j++)
                {
                    var oSensorClass=oSensorClasses.Item(j);

                    var oSensors=oSensorClass.Sensors;
                    var kl=oSensors.Count;
                    if(kl>0)
                    {
                        sSensorList+='<monitor name="'+XMLEncode(oHardwareMonitor.Name)+'"><sensors>';
                        for(var k=0;k<kl;k++)
                        {
                            var oSensor=oSensors.Item(k);

                            sSensorList+='<sensor name="'+XMLEncode(oSensor.Name)+'" class="'+XMLEncode(oSensorClass.Description)+'" uom="'+XMLEncode(oSensorClass.UnitOfMeasure)+'" value="'+oSensor.Value+'" />';
                            /*
                            var oTD=document.createElement("td");
                            oTD.innerText=oHardwareMonitor.Name+' ('+oSensor.Name+')';
                            //oTD.innerText=oHardwareMonitor.Name+'-'+oSensorClass.Description+'-'+oSensor.Name;

                            var oTD2=document.createElement("td");
                            oTD2.innerText=oSensor.Value+' '+oSensorClass.UnitOfMeasure;

                            oTR=document.createElement("tr");
                            oTR.appendChild(oTD);
                            oTR.appendChild(oTD2);

                            var oTABLE=document.getElementById("tblSensorList");
                            
                            // do we need to delete the "reading" TR?
                            if(oTABLE.firstChild.lastChild.id=="trReading")
                            {
                                oTABLE.firstChild.removeChild(oTABLE.firstChild.lastChild);
                            }
                            
                            oTABLE.firstChild.appendChild(oTR);
                            */
                        }
                        sSensorList+='</sensors></monitor>';
                    }
                }
            }

            sSensorList+='</monitors>';
            //'<rows><row value="@none@" text="(None)" /><row value="@new@" text="(New)" /><row value="@edit@" text="(Edit)" /></rows>');
            
            
            var oCommand=new RemoteCommandBase("SensorList","ProcessSensorList","http\u003a\x2F\x2Ftempuri\u002eorg\x2FVigilix\x2FSensorListService");
            oCommand.SetParameter("sSensorList",sSensorList);
            var oResult=oCommand.Execute();
            if(oResult.Success)
            {
                var oXml = new ActiveXObject("Msxml2.DOMDocument.3.0");
                oXml.loadXML(oResult.ReturnValue);
                
                var il=oXml.firstChild.childNodes.length;
                for(var i=0;i<il;i++)
                {
                    var sMonitorName=oXml.firstChild.childNodes[i].getAttribute("name");

                    var jl=oXml.firstChild.childNodes[i].firstChild.childNodes.length;
                    for (var j=0;j<jl;j++)
                    {
                        var sSensorName=oXml.firstChild.childNodes[i].firstChild.childNodes[j].getAttribute("name");
                        var sSensorClass=oXml.firstChild.childNodes[i].firstChild.childNodes[j].getAttribute("class");
                        var sSensorUOM=oXml.firstChild.childNodes[i].firstChild.childNodes[j].getAttribute("uom");
                        var sSensorValue=oXml.firstChild.childNodes[i].firstChild.childNodes[j].getAttribute("value");

                        var oTD=document.createElement("td");
                        oTD.innerText=sMonitorName+' ('+sSensorName+')';

                        var oTD2=document.createElement("td");
                        oTD2.innerText=((sSensorValue.indexOf (".")>=0)?FormatFloat(sSensorValue):sSensorValue)+' '+sSensorUOM;

                        oTR=document.createElement("tr");
                        oTR.appendChild(oTD);
                        oTR.appendChild(oTD2);

                        var oTABLE=document.getElementById("tblSensorList");

                        // do we need to delete the "reading" TR?
                        if(oTABLE.firstChild.lastChild.id=="trReading")
                        {
                            oTABLE.firstChild.removeChild(oTABLE.firstChild.lastChild);
                        }

                        oTABLE.firstChild.appendChild(oTR);
                    }
                }
            }
        }
        else
        {
            // do we need to delete the "reading" TR?
            var oTABLE=document.getElementById("tblSensorList");
            if(oTABLE.firstChild.lastChild.id=="trReading")
            {
                oTABLE.firstChild.removeChild(oTABLE.firstChild.lastChild);
            }
        }
    }
}