var xmlDoc;
var xmlhttp;
var divNames = new Array();
var functions = new Array();
totalIndex = 0;
curIndex = 0;

var context = document.location.href;

if (context.indexOf('#') >= 0)
  context = context.substring(0, context.indexOf('#'));

 
/*************************************
    NEEDS TO BE SET ACCORDING TO INSTALL
**************************************/
//var startingURL = "/wyaworks/redirect.jsp?forwardXML=" + escape("http://www.wyaworks.com/realtimeapps/xmlServlet?referer=" + context + "&command=retrieve&recordsOnly=true");
var startingURL = "/realtimeapps/xmlServlet?referer=" + context + "&command=retrieve&recordsOnly=true";


/*************************************
    USED IF THERE IS A QUALITY REGION
**************************************/
function setToQuality ()
{
  startingURL = "redirect.jsp?forwardXML=" + escape("http://www.wyaworks.com/quality/xmlServlet?referer=" + context + "&command=retrieve&recordsOnly=true");
}


/*************************************
    USED IF THERE IS A PRODUCTION REGION
**************************************/
function setToProduction ()
{
  startingURL = "redirect.jsp?forwardXML=" + escape("http://www.wyaworks.com/production/xmlServlet?referer=" + context + "&command=retrieve&recordsOnly=true");
}


/*************************************
    METHOD TO LOAD THE XML DATA

    - The URL will be used in conjuction with the
      starting URL to retrieve the data desired

    - The functionName will be used to kick off
      the function you create to define the fields
      to be parsed, kick off the parseHttp method,
      and display the data

    - The divName will be the ID of the div tag
      used to display the progress of retrieval
**************************************/
function loadXMLDoc(url, functionName, divName)
{   
  var d = new Date();
  url = startingURL + url + '&time=' + d.getTime();

  divNames[totalIndex] = divName;
  functions[totalIndex++] = functionName;

  document.getElementById(divName).innerHTML = "";

  if (window.XMLHttpRequest)
  {
    xmlhttp=new XMLHttpRequest()
    xmlhttp.onreadystatechange=xmlhttpChange;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
  }
  else if (window.ActiveXObject)
  {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

    if (xmlhttp)
    {
      xmlhttp.onreadystatechange=xmlhttpChange;
      xmlhttp.open("GET",url,true);
      xmlhttp.send();
    }
  }
}


/*************************************
    RETRIEVING THE DATA
**************************************/
function xmlhttpChange()
{
  divName = divNames[curIndex];
  functionName = functions[curIndex];

  if (xmlhttp.readyState==4)
  {
    document.getElementById(divName).innerHTML = "";
    curIndex++;

    if (xmlhttp.status==200)
    {
      setTimeout(functionName, 500);
    }
    else
      alert('Trouble retrieving XML');
  }
}

/*************************************
    VARIABLES USED TO STORE THE FIELDS
**************************************/
var records;
var fields = new Array();
var values = new Array();
var totalFields = 0;


/*************************************
    METHOD TO CLEAN UP THE XML VALUES
**************************************/
function cleanUpHTMLValue(value)
{
  value = escape(value);
  while (value.indexOf('%uFFFF') >= 0)
    value = value.substring(0,value.indexOf('%uFFFF')) + "'" + value.substring(value.indexOf('%uFFFF')+6, value.length);
  while (value.indexOf('%92') >= 0)
    value = value.substring(0,value.indexOf('%92')) + "'" + value.substring(value.indexOf('%92')+3, value.length);
  value = unescape(value);

//  while (value.indexOf('&#xA;&#xD;') >= 0)
//    value = value.substring(0,value.indexOf('&#xA;&#xD;')) + "<br>" + value.substring(value.indexOf('&#xA;&#xD;')+10, value.length);
//  while (value.indexOf('&#xA;') >= 0)
//    value = value.substring(0,value.indexOf('&#xA;')) + "<br>" + value.substring(value.indexOf('&#xA;')+5, value.length);
//  while (value.indexOf('&#xD;') >= 0)
//    value = value.substring(0,value.indexOf('&#xD;')) + "<br>" + value.substring(value.indexOf('&#xD;')+5, value.length);
  while (value.indexOf('&#146') >= 0)
    value = value.substring(0,value.indexOf('&#146')) + "'" + value.substring(value.indexOf('&#146')+5, value.length);
  while (value.indexOf('&#39') >= 0)
    value = value.substring(0,value.indexOf('&#39')) + '"' + value.substring(value.indexOf('&#39')+4, value.length);
  while (value.indexOf('&quot;') >= 0)
    value = value.substring(0,value.indexOf('&quot;')) + '"' + value.substring(value.indexOf('&quot;')+6, value.length);
  while (value.indexOf('&apos;') >= 0)
    value = value.substring(0,value.indexOf('&apos;')) + "'" + value.substring(value.indexOf('&apos;')+6, value.length);
  while (value.indexOf('&amp;') >= 0)
    value = value.substring(0,value.indexOf('&amp;')) + '&' + value.substring(value.indexOf('&amp;')+5, value.length);
  while (value.indexOf('&lt;') >= 0)
    value = value.substring(0,value.indexOf('&lt;')) + '<' + value.substring(value.indexOf('&lt;')+4, value.length);
  while (value.indexOf('&gt;') >= 0)
    value = value.substring(0,value.indexOf('&gt;')) + '>' + value.substring(value.indexOf('&gt;')+4, value.length);

  return value;
}


/*************************************
    METHOD TO PARSE THROUGH THE RESULTS
    STORING THE FIELDS VALUES AS DEFINED
**************************************/
function parseHttp()
{  
  records = 0;
  var sXML = xmlhttp.responseText;
  if (sXML.indexOf('<MESSAGE>') >= 0)
  {
    var type = sXML.substring(sXML.indexOf('<TYPE>')+6, sXML.indexOf('</TYPE>'));
    var title = sXML.substring(sXML.indexOf('<TITLE>')+8, sXML.indexOf('</TITLE>'));
    var message = sXML.substring(sXML.indexOf('<BODY>')+6, sXML.indexOf('</BODY>'));
    var sHTML = '<div style="font-family:Arial,helvetica,sans-serif;font-size:12pt; background-color:white">';
    sHTML += '<span style="font-size:14pt;font-weight:bold;color:red">' + type + ': ' + title + '</span><br>';
    sHTML += '<span style="font-size:14pt;font-style:italic;color:black">' + message + '</span><br><br>';
    sHTML += '</div>';
    var win = window.open("", "_blank", "top=0,left=0,width=400,height=400");    
    win.document.write(sHTML);
    win.document.close();
  }
 
  while (sXML.indexOf('<RECORD>') >= 0)
  {
    values[records] = new Array();

    while ((sXML.indexOf('<FIELD>') >= 0) && (sXML.indexOf('<FIELD>') < sXML.indexOf('</RECORD>')))
    {
      var fieldName = cleanUpHTMLValue(sXML.substring(sXML.indexOf('<NAME>')+6, sXML.indexOf('</NAME>')));

      var value = '';

      if ((sXML.indexOf('<NON_SESSION_URL>') >= 0) && (sXML.indexOf('<NON_SESSION_URL>') < sXML.indexOf('</FIELD>')))
        value = sXML.substring(sXML.indexOf('<NON_SESSION_URL>')+17, sXML.indexOf('</NON_SESSION_URL>'));
      else if ((sXML.indexOf('<VALUE>') >= 0) && (sXML.indexOf('<VALUE>') < sXML.indexOf('</FIELD>')))
        value = sXML.substring(sXML.indexOf('<VALUE>')+7, sXML.indexOf('</VALUE>'));

      for (i=0;i<totalFields; i++)
        if (fields[i].toUpperCase() == fieldName.toUpperCase())
          values[records][i] = cleanUpHTMLValue(value);

      sXML = sXML.substring(sXML.indexOf('</FIELD>')+8, sXML.length);
    }

    records++;

    sXML = sXML.substring(sXML.indexOf('</RECORD>')+9, sXML.length);
  }
}
