//
//    Reposition all the elements after a resize
//
 
function NewSize()
  {
 
   if (self.innerWidth)
    {
     bWidth = self.innerWidth;
     bHeight = self.innerHeight;
    }
   else
    if (document.documentElement
       && document.documentElement.clientWidth)
      {
       bWidth = document.documentElement.clientWidth;
       bHeight = document.documentElement.clientHeight;
      }
    else
      if (document.body)
        {
         bWidth = document.body.clientWidth;
         bHeight = document.body.clientHeight;
        }
 
   tSize = bWidth - 115;
   hLeft = bWidth - hWide - 115;
 
   Aheight = (bHeight - 105);
 
   if(browser == 'MSIE')
     {
      Mheight = (bHeight - 100);
     }
   else
     {
      Mheight = (bHeight - 110);
     }
 
   var tBar    = document.getElementById('tbar');
   var bBar    = document.getElementById('bbar');
   var btext   = document.getElementById('btext');
   var menu    = document.getElementById('menu');
 
   menu.style.height = Mheight  + "px";
 
   wSize = tSize - (hWide + wAdjust);
 
   var main    = document.getElementById('main');
   main.style.height = Aheight + "px";
 
   var nWide;
   if(actScreen.helpflag || actScreen.parmflag)
     nWide = wSize;
   else
     nWide = tSize;
 
   main.style.width  = nWide + "px";
 
   btext.style.width = "150px";
   if(browser == 'MSIE')
     {
      tBar.style.width = bWidth + "px";
      bBar.style.width = bWidth + "px";
     }
 
   setDivSize();
 
  }
 
//
//    Set the size of the active div section
//
function setDivSize()
  {
 
   var main    = document.getElementById('main');
 
   var tabs    = document.getElementById(actScreen.divid);
 
   var nWide;
   if(actScreen.helpflag || actScreen.parmflag)
     nWide = wSize;
   else
     nWide = tSize;
 
   msgDiv.style.width  = nWide + "px";
   msgDiv.style.top    = Aheight-35 + "px";
 
   tabs.style.width  = nWide + "px";
   tabs.style.height = Aheight + "px";
 
   if(actScreen.disptype == typeMon)
     {
      var help    = document.getElementById(actScreen.helpid);
      var parm    = document.getElementById(actScreen.parmid);
      parm.style.width  = hWide   + "px";
      help.style.width  = hWide   + "px";
 
      if(browser == 'MSIE')
        {
         help.style.height = Aheight + "px";
         help.style.left   = hLeft + "px";
 
         parm.style.height = Aheight + "px";
         parm.style.left   = hLeft + "px";
        }
      else
        {
         help.style.height = (Aheight - 5) + "px";
         help.style.left   = hLeft-10 + "px";
 
         parm.style.height = (Aheight - 5) + "px";
         parm.style.left   = hLeft-10 + "px";
        }
 
     }
  }
 
//
//    Initialize the web page
//
 
function initPage()
  {
 
//
// Determine browser type
//
 
   browser = navigator.userAgent;
   browser = browser.toUpperCase();
 
   if(browser.indexOf("SAFARI") > 0)
     browser='SAFARI'
   else
     if(browser.indexOf("FIREFOX") > 0)
       browser = 'FIREFOX'
     else
       if(browser.indexOf("NETSCAPE") > 0)
         browser = 'NETSCAPE'
       else
         if(browser.indexOf("MSIE") > 0)
           browser = 'MSIE'
         else
           browser = 'Other'
 
   busy_image.src="vsibusy.gif";
 
   msgDiv = document.getElementById('wmsg');
 
   bDiv = document.getElementById('busy');
   bImg = document.getElementById('waitimage');
 
   PauseB = document.getElementById('pbutton');
 
   CreateDiv('tabs', typeGUI, '');
 
   createRequest();
 
//
//    Build initial screen definition
//
 
   LoadMenu();
 
   pageInited = true;
  }
 
//
//    Add a new division to the the body section
//
function CreateDiv(dName, dType, dTitle)
  {
 
   blurPages();
 
   if(actScreen != null)
     hideActive();
 
   CD_name = dName;
   if(dType != typeMon && dType != typeGUI)
     CD_name = dType + '_' + dName;
 
   actScreen = new screenDef(CD_name);
   scrArray[scrCnt++] = actScreen;
   var hlpName = CD_name + '_help';
   var prmName = CD_name + '_parm';
 
   actScreen.item  = scrCnt;
   actScreen.divid = CD_name;
   actScreen.disptype = dType;
 
   actScreen.parmid = prmName;
   actScreen.helpid = hlpName;
 
   actScreen.title = dTitle;
 
   document.title = dTitle;
 
   document.getElementById('stext').innerHTML = actScreen.title;
 
   var wBody;
   wBody = document.getElementById('main');
 
//
//  Generate the data portion
 
   var newDiv = document.createElement(newSection);
   newDiv.setAttribute('id',CD_name);
   newDiv.setAttribute('name',CD_name);
   newDiv.className = 'tabs';
 
   if(dType == typeMon)
     {
      PauseB.innerHTML = 'Pause Updates';
      PauseB.style.display = 'inline';
      PauseB.style.visibility = 'visible';
     }
   else
     {
      PauseB.style.display = 'none';
      PauseB.style.visibility = 'hidden';
     }
 
   var Brother = wBody.firstChild;
   wBody.insertBefore(newDiv, Brother);
 
//
//   Generate the help screen
 
   if(dType == typeMon)
     {
      var newHDiv = document.createElement(newSection);
      newHDiv.setAttribute('id',hlpName);
      newHDiv.setAttribute('name',hlpName);
      newHDiv.className = 'help';
 
      wBody.insertBefore(newHDiv,Brother);
 
//
//   Generate the parm screen
 
      var newPDiv = document.createElement(newSection);
      newPDiv.setAttribute('id',prmName);
      newPDiv.setAttribute('name',prmName);
      newPDiv.className = 'parm';
 
      wBody.insertBefore(newPDiv, Brother);
     }
 
//
// Reset the menu check marks
 
  closeLit();
 
  if(pageInited)
    {
     var wHelp = document.images['check'];
     var wParm = document.images['pmark'];
 
     wHelp.src = "clear.gif";
     wParm.src = "clear.gif";
 
     document.getElementById('cref').title = "Display " +
       "help for " + actScreen.name;
 
     document.getElementById('pref').title = "Open " +
       "parammeter window for " + actScreen.name;
 
     setDivSize();
    }
  else
    NewSize();
 
  }
 
//
//    Close an active window
//
function closeWindow()
  {
 
   if(retBusy)
     return
 
   KillTimer();
 
   var wrkDiv = actScreen.name;
   var wrkPos = actScreen.item;
   var wrktyp = actScreen.disptype;
 
   PauseB.style.display = 'none';
   PauseB.style.visibility = 'hidden';
 
   var chkDiv = wrkDiv.substr(0,5);
   if(chkDiv == 'H_TOC')
     clearTOC();
 
   var sDef;
   if(wrkPos == scrCnt)
     sDef = scrArray[wrkPos-2];
   else
     sDef = scrArray[wrkPos];
   swapDisplay(sDef);
 
   var lastEntry = scrArray.pop();
   scrCnt--;
 
   var chkPos = lastEntry.item;
 
   if(chkPos != wrkPos)
     {
      lastEntry.item = wrkPos;
      wrkPos = wrkPos - 1;
      scrArray[wrkPos] = lastEntry;
     }
 
   var wrkElem = document.getElementById(wrkDiv);
   wrkElem.parentNode.removeChild(wrkElem);
 
   if(wrktyp == typeMap)
     {
      var chkPref = wrkDiv.substr(2,3);
 
      if(chkPref == 'TOC' || chkPref == 'RPT')
        chkPref = 'M_' + wrkDiv
      else
        chkPref = 'menuCal'
 
      wrkElem = document.getElementById(chkPref);
      wrkElem.parentNode.removeChild(wrkElem);
      calAvail = false;
 
     }
 
   if(wrktyp == typeMon)
     {
      wrkElem = document.getElementById(wrkDiv + '_help');
      wrkElem.parentNode.removeChild(wrkElem);
 
      wrkElem = document.getElementById(wrkDiv + '_parm');
      wrkElem.parentNode.removeChild(wrkElem);
 
      wrkElem = document.getElementById("mi_" + wrkDiv);
      wrkElem.className = 'mitem';
     }
  }
 
//
//    Load the ESAMON menu
//
 
function LoadMenu()
  {
   var url = "loadmenu.cgi";
   request.open("GET", url, false);
   request.onreadystatechange = InitMenu;
   request.send(null);
   if(browser != 'MSIE')
     InitMenu();
  }
 
//
//  Build the initial menu
//
 
function InitMenu()
  {
 
   if(request.readyState != 4)
     return;
 
   xmlDoc = request.responseXML;
 
   topMenu = xmlDoc.getElementsByTagName("Menus");
   var tNodes  = topMenu[0].childNodes;
 
   var custName = xmlDoc.getElementsByTagName("custname");
   if(custName.length > 0)
     {
      var vCust  = custName[0].childNodes;
      custName = vCust[0].nodeValue;
     }
 
   document.getElementById('custArea').innerHTML = custName;
 
 
   var fstMenu = xmlDoc.getElementsByTagName("default");
   if(fstMenu.length > 0)
     {
      var vNodes  = fstMenu[0].childNodes;
      startScreen = vNodes[0].nodeValue;
     }
 
   newText = "";
 
   DispMenu("Main", 0, "menu", tNodes);
 
   if(startScreen != '')
     {
      startScreen = startScreen.toUpperCase();
      if(startScreen == 'SHOWCASE')
        changeToBadJava()
      else
        var xx = displayFirst("Main", tNodes);
     }
 
  }
 
function displayFirst(subMenu, nList)
  {
   var lCount = nList.length;
   var xx = false;
 
   for(var i = 0; i < lCount; i++)
     {
      var tList =  nList[i];
      var tName =  tList.nodeName;
      tName = tName.toUpperCase();
 
      if(tName != "MENU" && tName != "ITEM")
        continue;
 
      getMinfo(tList, tName);
 
      if(tName == "MENU")
        {
         xx = displayFirst(wName, tList.childNodes);
         if(xx)
           return xx;
        }
      else
        if(wName == startScreen)
          {
           xx = true;
           expandMenu = subMenu;
           break
          };
     };
 
   if(xx)
     {
      if(expandMenu != 'Main')
        {
         var jj = menuArray.length;
         for(var mc = 0; mc < jj; mc++)
           {
            var pm = menuArray[mc];
            if(pm.Mname == expandMenu)
             break;
           }
         exPand(expandMenu, pm.Mlevel,
                expandMenu, pm.Mdoff, pm.MdIdx);
        }
      loadScreen(startScreen);
     };
 
   return xx;
  }
 
//
//   Display a menu
//
 
function DispMenu(mName, mLevel, mDiv, nList)
  {
   var i;
   var lastItem = false;
   var lastExpand = '';
   var lCount = nList.length;
 
   var padImage = "";
   for(i = 0; i < mLevel; i++)
     padImage =  padImage + '<img src="clear.gif" ' +
        'width="13px" height="13px" align="left">'
 
   for(i = 0; i < lCount; i++)
     {
      var tList =  nList[i];
      var tName =  tList.nodeName;
      tName = tName.toUpperCase();
 
      if(tName != "MENU" && tName != "ITEM")
        continue;
 
      var tstItem = tList.getAttribute("last");
      if(tstItem == "yes")
        lastItem = true;
 
      getMinfo(tList, tName);
 
      mDcnt++;
      mDesc[mDcnt] = wDesc;
 
      if(tName == "MENU")
        {
 
         wMenu = new menuDef(wName, wLevel, i, mDcnt)
 
         var k = menuArray.push(wMenu);
 
         var wExpand =   "'" + wName + "', " + wLevel +
           ", '" + wName + "', " + i + ", " + mDcnt;
 
         lastExpand = wExpand;
 
         newText = newText + '<div id="' + wName + '">' +
           padImage +
           '<a href="javascript:exPand(' + wExpand +
            ")" + '" ' +
           'onMouseOver="return setStatus(' + "'" +
           wDesc + "'" + ')" ' +
           'title="' + wDesc + '" ' +
           'onMouseOut="return setStatus(' + "''" + ')" ' +
           'class="mitem">' +
           '<img src="expand.gif" width="13px" height="13px" ' +
           'border="0" align="left"> ' +
           wName + '</a></div>'
        }
      else
        {
         var lPad = "clear.gif"
         if(mLevel != 0)
           {
            lPad = "dotbr.gif";
            if(lastItem)
              lPad = "dotend.gif"
           }
         else
           lastExpand = '';
 
         var miclass = "mitem";
         var testit = setSelect(wName);
 
         if(testit)
           miclass = "selmitem";
 
         if(wName == startScreen)
           startExpand = lastExpand;
 
         newText = newText +
           padImage +
           '<img src="' + lPad + '" width="13px" height="13px" ' +
           'border="0" align="left"> ' +
           '<a href="javascript:loadScreen(' +
           "'" + wName + "')" + '" ' +
           'title="' + wDesc + '" ' +
           'onMouseOver="return setStatus(' + "'" +
           wDesc + "'" + ')" ' +
           'onMouseOut="return setStatus(' + "''" + ')" ' +
           'class="' + miclass + '" id="mi_' + wName + '">' +
           wName + '</a><br clear="left">'
 
        }
 
     }
 
   if(mName == "Main")
     {
      newText = newText +
        '<img src="clear.gif" id="check"> ' +
        '<a href="javascript:toggleHelp()"' +
        'id="cref" ' +
        'class="showcase" ' +
        'title="Turn on Screen Help" ' +
        'onMouseOver="return setStatus(' + "'Help')" + '" ' +
        'onMouseOut="return setStatus(' + "'')" + '">' +
        'Help</a><br>'
 
      newText = newText +
        '<img src="clear.gif" id="pmark"> ' +
        '<a href="javascript:toggleParm()"' +
        'id="pref" ' +
        'class="showcase" ' +
        'title="Display Parameter Window" ' +
        'onMouseOver="return setStatus(' + "'Parm')" + '" ' +
        'onMouseOut="return setStatus(' + "'')" + '">' +
        'Parameters</a>'
 
      newText = newText +
        '<hr><img src="clear.gif">' +
        '<a href="javascript:expandMAP()" ' +
        'class="showcase" ' +
        'title="Historical Listings" ' +
        'onMouseOver="return setStatus(' + "'Historical Reports'" +
        ')" onMouseOut="return setStatus(' + "'')" + '">' +
        'Archives</a><div id="mapMenu"></div>'
 
      newText = newText +
        '<hr><img src="clear.gif">' +
        '<a href="javascript:changeToBadJava()" ' +
        'class="showcase" ' +
        'title="SHOWCASE Graphical Displays" ' +
        'onMouseOver="return setStatus(' + "'ESALPS Showcase'" +
        ')" onMouseOut="return setStatus(' + "'')" + '">' +
        'Graphical</a>'
     }
 
   aArea = document.getElementById(mDiv);
   aArea.innerHTML = newText;
 
  }
 
//
//  Get the Name and Desc values from the current item
//
 
function getMinfo(tList, tType)
  {
   wName  = "";
   wDesc  = "";
   wLevel = tList.getAttribute('Level');
   var wList;
 
   var tNodes  = tList.childNodes;
   var lCount = tNodes.length;
 
   for(var i = 0; i < lCount; i++)
     {
      var wList =  tNodes[i];
      var tName =  wList.nodeName;
      tName = tName.toUpperCase();
 
      if(tType == "ITEM")
        {
         if(tName != "NAME" && tName != "DESC")
             continue;
        }
      else
        {
         if(tName != "NAME" &&
           tName != "DESC")
             continue;
        }
 
      switch(tName)
        {
         case "NAME":
           wName = wList.childNodes[0].nodeValue;
           break;
 
         case "DESC":
           wDesc = wList.childNodes[0].nodeValue;
           break;
 
         default:
        }
 
      if(tType == "ITEM")
        {
         if(wName != "" && wDesc != "")
           break
        }
      else
        {
         if(wName != "" && wDesc != "" && wLevel != "")
           break
        }
     }
  }
 
//
//  Expand a sub-menu
//
 
function exPand(mName, mLevel, mDiv, nOff, dIdx)
  {
 
   if(currExpmName != null)
      colLapse(currExpmName,
        currExpmLevel,
        currExpmDiv,
        currExpnOff,
        currExpdIdx);
 
   var sStat = mDesc[dIdx];
 
   currExpmName = mName;
   currExpmLevel= mLevel;
   currExpmDiv  = mDiv;
   currExpnOff  = nOff;
   currExpdIdx  = dIdx;
 
   newText = '<a href="javascript:colLapse(' +
     "'" + mName + "', " + mLevel + ", '" +
     mDiv + "', " + nOff + ", " + dIdx + ")" + '" ' +
     'title="' + sStat +'" ' +
     'onMouseOver="return setStatus(' + "'" +
     sStat + "'" + ')" ' +
     'onMouseOut="return setStatus(' + "''" + ')" ' +
     'class="mitem">' +
     '<img src="collapse.gif" width="13px" height="13px" ' +
     'border="0" align="left"> ' + mName + '</a><br>'
 
   var tNodes  = topMenu[0].childNodes;
   var tNodes  = tNodes[nOff].childNodes;
   DispMenu(mName, mLevel, mDiv, tNodes);
 
  }
 
//
//  Expand a sub-menu
//
 
function colLapse(mName, mLevel, mDiv, nOff, dIdx)
  {
 
   var sStat = mDesc[dIdx];
 
   newText = '<a href="javascript:exPand(' +
     "'" + mName + "', " + mLevel + ", '" +
     mDiv + "', " + nOff + ", " + dIdx + ")" + '" ' +
     'onMouseOver="return setStatus(' + "'" +
     sStat + "'" + ')" ' +
     'onMouseOut="return setStatus(' + "''" + ')" ' +
     ' class="mitem">' +
     '<img src="expand.gif" width="13px" height="13px" ' +
     'border="0" align="left"> ' + mName + '</a>'
 
   aArea = document.getElementById(mDiv);
   aArea.innerHTML = newText;
 
   currExpmName = null;
 
  }
 
//
//    Load a screen
//
function loadScreen(scrName)
  {
 
   if(retBusy)
     return
 
   reqType = '';
   var wrkName = scrName.toUpperCase();
   var chkName = actScreen.name;
   chkName = chkName.toUpperCase();
 
   if(chkName == wrkName)
     return;
 
   setBusy();
 
   var i;
 
   for(i = 0; i < scrCnt; i++)
     {
      chkDef = scrArray[i];
      chkName = chkDef.name;
      chkName = chkName.toUpperCase();
 
      if(chkName == wrkName)
        break;
     }
 
   if(i < scrCnt)
     {
      swapDisplay(chkDef);
      setNotBusy();
     }
   else
     {
      CreateDiv(scrName, typeMon, '');
      var newName = "mi_" + scrName;
      var newBG = document.getElementById(newName);
 
      newBG.className = 'selmitem';
      getData(scrName);
     }
 
  }
 
//
//  Get data for a screen display
//
//======================================>
//==check for coming from showcase======>
function getData(scrName)
  {
 
   setBusy();
 
   var url = "lpsmon.cgi?screen=" + scrName +
     actScreen.actparm;
 
   request.open("GET", url, true);
   request.onreadystatechange = InitData;
   request.send(null);
 
  }
 
//
//  Build the initial menu
//
 
function InitData()
  {
   if(request.readyState != 4)
     return;
 
   var scrName = "";
 
   oldScreen = actScreen;
 
   xmlData = request.responseXML;
 
   topData = xmlData.getElementsByTagName("screen");
 
   var tNodes  = topData[0].childNodes;
 
   var dataType = xmlData.getElementsByTagName("dataType");
 
   if(dataType != null)
     {
      dataType = dataType[0].childNodes;
      dataType = dataType[0].nodeValue;
     }
   else
     dataType = 'screen'
 
   dataType = dataType.toUpperCase();
 
   dCnt    = 0;
   dLine   = new Array();
   hCnt    = 0;
   hdr     = new Array();
   eMsg    = "";
 
   scrName = actScreen.name;
 
   if(dataType == 'ALERT')
     procAlert(tNodes)
   else
     procScreen(tNodes);
 
   document.title = actScreen.title;
 
   document.getElementById('stext').innerHTML = scrName +
     ' - ' + actScreen.title;
 
   actScreen.eMessage = eMsg;
   if(eMsg != "")
     {
//    actScreen = oldScreen;
 
      msgDiv.innerHTML = eMsg;
      msgDiv.style.display = 'inline';
      msgDiv.style.visibility = 'visible';
      msgDiv.style.zIndex = 5;
     }
   else
     {
      msgDiv.style.display = 'none';
      msgDiv.style.visibility = 'hidden';
      msgDiv.style.zIndex = -1;
     }
 
   if(actScreen.helpflag)
     {
      getHelp(scrName);
     }
 
   setRefresh(scrName, actScreen.refresh);
 
   setNotBusy();
 
  }
 
//
//  Get a new occurance of data
//
 
function RefLine(scrName)
  {
   setBusy();
 
   reqType = 'REFRESH';
 
   refFlag = true;
 
   var luinfo = '';
   if(actScreen.lastupd != null)
     luinfo = '&lastupdate=' + actScreen.lastupd;
 
   var url = "lpsmon.cgi?rtype=refresh&screen=" +
     scrName + "&" + actScreen.actparm + luinfo;
   request.open("GET", url, true);
   request.onreadystatechange = AddNewLine;
   request.send(null);
 
  }
 
//
//  Add a line / lines to the data section
//
 
function AddNewLine()
  {
 
   if(request.readyState != 4)
     return;
 
   NewXmlData = request.responseXML;
 
   topData = NewXmlData.getElementsByTagName("screen");
   var dataType = NewXmlData.getElementsByTagName("dataType");
 
   if(dataType != null)
     {
      dataType = dataType[0].childNodes;
      dataType = dataType[0].nodeValue;
     }
   else
     dataType = 'screen'
 
   dataType = dataType.toUpperCase();
 
   oldScreen = actScreen;
 
   try
     {
      var tNodes = topData[0].childNodes;
     }
   catch(err)
     {
      return;
     };
 
   if(dataType == 'ALERT')
     {
      clearDiv(actScreen.name + "_data");
      procAlert(tNodes);
      document.title = actScreen.title;
      document.getElementById('stext').innerHTML = scrName +
        ' - ' + actScreen.title;
 
      if(refFlag)
        {
         if(reactFlag)
           reactDelay();
         else
           {
            setRefresh(actScreen.name, actScreen.refresh);
           }
        }
 
      setNotBusy();
      return;
     }
 
   dCnt    = 0;
   dLine   = new Array();
   eMsg    = "";
 
   var nCount = tNodes.length;
 
   for(var i = 0; i < nCount; i++)
     {
      var tName = tNodes[i].nodeName;
      if(tName == '#text')
        continue;
 
      var kText = tNodes[i].childNodes;
      var tValue = kText[0].nodeValue;
 
      tName = tName.toUpperCase();
 
      switch(tName)
        {
 
         case "LASTUPD":
            actScreen.lastupd = tValue;
            break;
 
         case "ERROR":
            eMsg = tValue;
            break;
 
         case "DATA":
            dCnt = loadData(kText, dCnt, dLine);
            break;
 
         default:
 
        };
     }
 
   var cDiv;
   if(reqType == 'REFRESH')
     {
      if(dCnt > 0 && actScreen.newdata != 'APPEND')
        {
         actScreen.lines = new Array();
         actScreen.linecnt = 0;
         clearDiv(actScreen.name + "_data");
        }
 
    //
    //    Add all the lines to the "data" section
    //
 
      cDiv = document.getElementById(actScreen.name + '_data');
     }
   else
     cDiv = actScreen.zoomdiv;
 
   if(dCnt > 0)
     {
 
      if(actScreen.order != "FORWARD")
        {
         for(var i = 0; i < dCnt; i++)
           PutLine(cDiv, i)
        }
      else
        {
         for(var i = (dCnt-1); i >= 0; i--)
           PutLine(cDiv, i)
        }
     }
 
   if(reqType == 'REFRESH' && actScreen.zoomed)
     {
      if(actScreen.zoomdiv == null)
         actScreen.zoomed = false
      else
        {
         retBusy = false;
         reactFlag = false;
         zoomINa(actScreen.zoomdiv);
        }
     }
 
   if(refFlag)
     {
      if(reactFlag)
        reactDelay();
      else
        {
         setRefresh(actScreen.name, actScreen.refresh);
        }
     }
 
   actScreen.eMessage = eMsg;
   if(eMsg != "")
     {
//    actScreen = oldScreen;
 
      msgDiv.innerHTML = eMsg;
      msgDiv.style.display = 'inline';
      msgDiv.style.visibility = 'visible';
      msgDiv.style.zIndex = 5;
     }
   else
     {
      msgDiv.style.display = 'none';
      msgDiv.style.visibility = 'hidden';
      msgDiv.style.zIndex = -1;
     }
 
   setNotBusy();
  }
 
//
//    Highlight a line
//
function hiLine()
  {
   try{
      if(browser == 'MSIE')
        {
        this.setAttribute('background-color', 'lightgray')
        document.recalc();
        }
      else
        this.style.backgroundColor = 'lightgray';
      }
   catch(e){};
  }
 
//
//  unHighlight a line
//
function unLine()
  {
   try{
      var TA = this.getAttribute('baseColor');
      if(browser == 'MSIE')
        {
        this.setAttribute('background-color', TA)
        document.recalc();
        }
      else
        this.style.backgroundColor = TA;
      }
   catch(e){};
  }
 
//
//  ZOOM
//
function zoomIN()
  {
   if(retBusy)
     return
 
   KillTimer();
 
   if(actScreen.zoomdiv != null)
     zoomOUTa(actScreen.zoomdiv);
 
   reactFlag = true;
   zoomINa(this)
 
  }
 
//
//  ZOOM
//
function zoomINa(zDiv)
  {
   if(retBusy)
     return
 
   setBusy();
 
   var lItem = zDiv.getAttribute('lineno');
   var wLine = actScreen.lines[lItem];
 
   var kParm   = buildKparm(wLine);
 
   if(actScreen.actparm != '')
     kParm = kParm + actScreen.actparm;
 
   zDiv.onclick = zoomOUT;
 
   actScreen.zoomdiv = zDiv;
   actScreen.lastzoom = kParm;
 
   zoomData(zDiv, kParm);
 
   actScreen.zoomed = true;
 
  }
 
//
//  Collapse ZOOMed line
//
function zoomOUT()
  {
   zoomOUTa(this);
  }
 
//
//  Collapse ZOOMed line
//
function zoomOUTa(wdiv)
  {
   wdiv.onclick = zoomIN;
   actScreen.zoomdiv = null;
   actScreen.zoomed  = false;
   actScreen.lastzoom = null;
   var nList = wdiv.childNodes;
   var dLoop = nList.length;
   var tName;
 
   for(var i = 0; i < dLoop; i++)
     {
      var wItem = wdiv.lastChild;
      var wnName = wItem.nodeName;
      if(wnName == '#text')
        continue;
 
      tName = wItem.getAttribute('name');
 
      wdiv.removeChild(wItem);
     }
 
  }
 
//
//    Build a zoom parameter list from current line
//
 
function buildKparm(zLine)
  {
 
   var zItem = zLine.split(" ");
 
   var kParm   = '';
 
   var zPrm  = actScreen.zoomprm[0];
   var zPrm  = zPrm.split(" ");
 
   for(var i = 0; i < zPrm.length; i++)
     {
      var eItem = zPrm[i];
      var dNum  = parseInt(eItem);
 
      if(dNum == 'NaN' || dNum != eItem)
        {
         kParm = kParm + ' ' + eItem;
        }
      else
        {
         eItem = eItem -1;
         kParm = kParm + ' ' + zItem[eItem];
        };
     };
 
   return kParm;
 
  }
 
//
//  Get a "zoom" collection of data
//
 
function zoomData(wDiv, zParms)
  {
 
   refFlag = true;
 
   reqType = 'ZOOM';
   var wParms = zParms.replace(/ /g,'+');
 
   var url = "lpsmon.cgi?rtype=zoom&screen=" +
     actScreen.name + '&newparms=' + wParms
   request.open("GET", url, true);
   request.onreadystatechange = AddNewLine;
   request.send(null);
 
  }
 
//
//  Insert a line before the top line
//
 
function PutLine(cDiv, i)
  {
 
   var newDiv;
   var Brother = cDiv.firstChild;
 
   var wrkText = dLine[i] ;
   var wrkColr = cLine[i] ;
   var wrkExth = xLine[i] ;
 
   actScreen.lines.push(wrkText);
   currLine = actScreen.linecnt++;
 
   var wC = wrkColr.length;
   var wX = wrkExth.length;
 
   var lFont = '00';
   var lc = wrkText.length;
 
   newDiv = document.createElement('div');
 
   if(reqType == 'ZOOM')
     {
      newDiv.className = 'zdata';
      newDiv.setAttribute('title', 'Zoom to ' + actScreen.lastzoom);
      newDiv.setAttribute('name', 'zitem');
      newDiv.setAttribute('baseColor', '#ebf9e9');
     }
   else
     {
      newDiv.setAttribute('lineno', currLine);
      newDiv.setAttribute('baseColor', 'white');
      if(actScreen.zoomable)
        {
         newDiv.onclick = zoomIN;
        }
 
      if(actScreen.zoomed)
        {
         var kParm = buildKparm(wrkText);
         if(kParm == actScreen.lastzoom)
           actScreen.zoomdiv = newDiv;
        }
     }
 
   newDiv.onmouseover = hiLine;
   newDiv.onmouseout  = unLine;
 
   var tmpText = wrkText;
 
   var wrkElem = '';
 
   if(wC > 0 || wX >0)
     {
      tmpText = "";
      for(var cc = 0; cc < lc; cc++)
         {
          var lChar = "0";
          var rChar = "0";
 
          if(cc < wC)
            rChar = wrkColr.substr(cc,1);
 
          if(cc < wX)
            lChar = wrkExth.substr(cc,1);
 
          var chkFont = lChar + rChar;
 
          if(chkFont != lFont)
            {
             if(lFont != '00')
               {
                var ww = document.createTextNode(tmpText);
                wrkElem.appendChild(ww);
                newDiv.appendChild(wrkElem);
                tmpText = '';
               }
 
             lFont = chkFont;
 
             if(lFont != '00')
               {
 
                if(tmpText != '')
                  {
                   var ww = document.createTextNode(tmpText);
                   newDiv.appendChild(ww);
                   tmpText = '';
                  }
 
                wrkElem = document.createElement('span');
                wrkElem.className = 'f' + lFont;
               }
 
            }
 
          tmpText = tmpText + wrkText.substr(cc,1);
 
         }
     }
 
   if(tmpText != '')
     {
      var ww = document.createTextNode(tmpText);
      newDiv.appendChild(ww);
     }
 
   if(reqType == 'ZOOM')
     {
      cDiv.appendChild(newDiv);
     }
   else
     {
      Brother = cDiv.firstChild;
 
      cDiv.insertBefore(newDiv, Brother);
     }
  }
 
//
//  Load the Header section of a screen def
//
 
function loadHeader(hList, wCnt, hdr)
  {
 
   var hNodes  = hList.childNodes;
 
   var lCount = hList.length;
 
   for(var i = 0; i < lCount; i++)
     {
      var tName = hList[i].nodeName;
      tName = tName.toUpperCase();
      if(tName != 'HDR')
        continue;
 
      var kText = hList[i].childNodes;
      var vTest = kText.length;
 
      var tValue = " ";
      if(vTest > 0)
        {
         tValue = kText[0].nodeValue;
        }
 
      if(wCnt == 0 && tValue == ' ')
        continue;
 
      hdr.push(tValue);
     }
 
   return hdr.length;
 
  }
 
//
//  Load the DATA section of a screen def
//
 
function loadData(dList, wCnt, dLine)
  {
 
   var lCount = dList.length;
 
   for(var i = 0; i < lCount; i++)
     {
      var tName = dList[i].nodeName;
      tName = tName.toUpperCase();
 
      if(tName != 'LDATA')
        continue;
 
      var kText = dList[i].childNodes;
      var vTest = kText.length;
 
      if(vTest > 0)
        {
         loadLine(kText, wCnt);
         wCnt = dLine.length;
        }
     }
 
   return dLine.length;
 
  }
 
//
//  Load the line segment
//
 
function loadLine(lList, lCnt)
  {
 
   var lCount = lList.length;
   xLine[lCnt] = "";
   cLine[lCnt] = "";
 
   for(var i = 0; i < lCount; i++)
     {
      var tName = lList[i].nodeName;
      tName = tName.toUpperCase();
 
      var kText = lList[i].childNodes;
      var vTest = kText.length;
 
      for(var k = 0; k < vTest; k++)
        {
         var wValue = kText[0].nodeValue;
         if(wValue == '%20')
           wValue = '   ';
 
         switch(tName)
           {
            case "ITEM":
               dLine[lCnt] = wValue;
               break;
 
            case "EXTHI":
               xLine[lCnt] = wValue;
               break;
 
            case "COLOR":
               cLine[lCnt] = wValue;
               break;
 
           }
        }
     }
  }
 
//
//    Process response for screen data
 
function procScreen(tNodes)
  {
 
   var tValue;
   var nCount = tNodes.length;
 
   for(var i = 0; i < nCount; i++)
     {
 
      var tName = tNodes[i].nodeName;
 
      if(tName == '#text')
        continue;
 
      var wNode = tNodes[i];
 
      var kText = tNodes[i].childNodes;
      try{
          tValue = kText[0].nodeValue;
         }
      catch(e)
         {
          tValue = null;
         };
 
      tName = tName.toUpperCase();
 
      switch(tName)
        {
         case "DISPLAY":
            scrName = tValue;
 
            tValue = wNode.getAttribute("title");
            if(tValue != null)
              actScreen.title = tValue;
 
            tValue = wNode.getAttribute("newdata");
            if(tValue != null)
              actScreen.newdata = tValue;
 
            tValue = wNode.getAttribute("refresh");
            var wTimer = parseInt(tValue);
            if(wTimer == 'NaN')
              wTimer = 60;
            actScreen.refresh = wTimer * 1000;
 
            tValue = wNode.getAttribute("order");
            if(tValue != null)
              actScreen.order = tValue;
 
            break;
 
         case "ZOOM":
            var k = actScreen.zoomto.push(tValue);
            tValue = wNode.getAttribute("opts");
            var k = actScreen.zoomprm.push(tValue);
            actScreen.zoomable = true;
            break;
 
         case "ERROR":
            eMsg = tValue;
            break;
 
         case "HEADER":
            hCnt = loadHeader(kText, hCnt, hdr);
            break;
 
         case "DATA":
            dCnt = loadData(kText, dCnt, dLine);
            break;
 
         case "LASTUPD":
            actScreen.lastupd = tValue;
            break;
 
         case "DYNAPARAMS":
            loadParms(kText);
            break;
 
         default:
 
        };
     }
 
  if(hCnt > 0 || dCnt > 0)
    clearDiv(actScreen.divid);
 
  var newDiv;
 
  var cDiv = document.getElementById(actScreen.divid);
 
//
//    Create the HDR section
//
 
  if(hCnt > 0)
    {
     var newDiv = document.createElement('pre');
 
     for(var i = 0; i < hCnt; i++)
       {
 
        newText = hdr[i];
 
        var tDiv = document.createTextNode(newText);
        newDiv.appendChild(tDiv)
 
        newText = document.createElement("br");
        newDiv.appendChild(newText);
 
       }
 
     newDiv.setAttribute('id',actScreen.name + '_hdr');
     newDiv.className = 'hdr';
 
     cDiv.appendChild(newDiv);
    }
 
//
//    Create the DATA section
//
 
  if(dCnt > 0)
    {
     var newDiv = document.createElement('pre');
     newDiv.setAttribute('id',actScreen.name + '_data');
 
     newDiv.className = 'data';
 
     if(actScreen.order != "FORWARD")
       {
        for(var i = 0; i < dCnt; i++)
          PutLine(newDiv, i)
       }
     else
       {
        for(var i = (dCnt-1); i >= 0; i--)
          PutLine(newDiv, i)
       }
 
     cDiv.appendChild(newDiv);
    }
 
  }
 
//
//    Process response for ALERT data
 
function procAlert(tNodes)
  {
 
   var dataHere = false;
 
   newText = '<table width="90%" ' +
     'cols="2"><tr><th width="40px">Code</th>' +
     '<th>Alert Description</th></tr>'
 
   var nCount = tNodes.length;
 
   for(var i = 0; i < nCount; i++)
     {
      var tName = tNodes[i].nodeName;
      if(tName == '#text')
        continue;
 
      var wNode = tNodes[i];
 
      var kText = tNodes[i].childNodes;
      var tValue = kText[0].nodeValue;
 
      tName = tName.toUpperCase();
 
      switch(tName)
        {
         case "DISPLAY":
            scrName = tValue;
 
            tValue = wNode.getAttribute("title");
            if(tValue != null)
              actScreen.title = tValue;
 
            tValue = wNode.getAttribute("newdata");
            if(tValue != null)
              actScreen.newdata = tValue;
 
            tValue = wNode.getAttribute("refresh");
            var wTimer = parseInt(tValue);
            if(wTimer == 'NaN')
              wTimer = 60;
            actScreen.refresh = wTimer * 1000;
 
            tValue = wNode.getAttribute("order");
            if(tValue != null)
              actScreen.order = tValue;
 
            break;
 
         case "ITEM":
            var code = wNode.getAttribute("code");
            if(code == null)
              break;
 
            var bgcolor = wNode.getAttribute("bgcolor");
            if(bgcolor == null)
              bgcolor = "white"
 
            var color = wNode.getAttribute("color");
            if(color == null)
              color = "black"
 
            dataHere = true;
 
            newText = newText +
              '<tr><td style="color:' + color + '; ' +
               'background-color:' + bgcolor + ';"><b>' +
               code + '</b></td>' +
              '<td style="color:' + color + '; ' +
               'background-color:' + bgcolor + ';"><b>' +
               tValue + '</b></td></tr>'
 
            break;
 
         case "ERROR":
            eMsg = tValue;
            break;
 
         default:
 
        };
     }
 
  if(dataHere)
    clearDiv(actScreen.divid);
 
  var newDiv;
 
  var cDiv = document.getElementById(actScreen.divid);
 
//
//    Create the DATA section
//
 
  if(dataHere)
    {
     var newDiv = document.createElement('pre');
     newDiv.setAttribute('id',actScreen.name + '_data');
 
     newDiv.className = 'data';
 
     newDiv.innerHTML = newText;
 
     cDiv.appendChild(newDiv);
    }
 
  }

