﻿// JScript File

 // This is script instance 4's section.
 // This is the Ajax package's section.
var m_internalrequestFetchCallback ; 
var m_asyncRequestObject ; 
var m_strNodeNameInResults ; 
var m_strDivContainingPrototype ; 
var m_strResultsOutputPrefix ; 
var m_strThisPortletStatusDivName ; 
var m_funcOnCompledCallbackFunction ; 
var m_xmlDoc ; 

function addBogusArgument(strIn)
{
  var dateVar = new Date();
  var strNow = "" + dateVar.getFullYear() + dateVar.getMonth() + dateVar.getHours() + dateVar.getSeconds() + dateVar.getMilliseconds();

    var strSeperator = '&'
    if (strIn.indexOf('?') < 0 ) 
    {
      strSeperator = '?'
    }
    var strUrl = strIn + strSeperator + 'jscajxcl=' + strNow ;
    return strUrl;
}
function getRemoteXmlDocAysnc(strUrl, funcOnCompledCallbackFunction)
{
  try
  {
        m_internalrequestFetchCallback = funcOnCompledCallbackFunction;
        m_asyncRequestObject = new XMLHttpRequest();
        strUrl = addBogusArgument(strUrl)
        m_asyncRequestObject.open('GET',strUrl,true);
        m_asyncRequestObject.onreadystatechange = getRemoteXmlDocStateChange;

jsDebugTrace('sending request ' + strUrl + "...")

        m_asyncRequestObject.send("");
  }
  catch (e)
  {
      alert("Error:" & e.description);
  }

}
function getRemoteXmlDocStateChange()
{
  try
  {
        jsDebugTrace('peices coming... readyState=' + m_asyncRequestObject.readyState)
        if (m_asyncRequestObject.readyState == 4) 
        {
          if (m_asyncRequestObject.status == 200) 
          {
            if (m_asyncRequestObject.responseText)
            {
               jsDebugTrace('request done, receieved ' + m_asyncRequestObject.responseText.length + ' bytes of data.')
               m_internalrequestFetchCallback();
            }
          }
        }
  }
  catch (e)
  {
    jsDebugTrace('whoops ' + m_asyncRequestObject.readyState + '.')
      //alert("Error:" & e.description);
  }

}
function ajaxPostProcessMethod()
{
    var strNodeNameInResults = m_strNodeNameInResults;
    var strDivContainingPrototype = m_strDivContainingPrototype;
    var strResultsOutputPrefix = m_strResultsOutputPrefix;
    var strThisPortletDivName = m_strThisPortletStatusDivName;
  try
  {
jsDebugTrace('the remote document has been loaded.')
jsDebugTrace('<textarea rows=10 cols=50>' + m_asyncRequestObject.responseText + '</textarea>');
//  alert(m_asyncRequestObject.responseText);
        try 
        {
            try //Internet Explorer
              {
              m_xmlDoc=document.implementation.createDocument("","",null);
jsDebugTrace('X PLATFORM.')
              }
            catch(e)
              {
              try //Firefox, Mozilla, Opera, etc.
                {
                m_xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
jsDebugTrace('ACTIVE X ONLY.')
                }
              catch(e) {alert(e.message)}
              }
        
            //xmlDoc = parser.parseFromString(m_asyncRequestObject.responseText,"text/xml");
        
            //m_xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            m_xmlDoc.async = false;
            var loadResult = m_xmlDoc.loadXML(m_asyncRequestObject.responseText);
jsDebugTrace('loadResult=' + loadResult)
            if (loadResult == false)
            {
jsDebugTrace('status = ' + m_xmlDoc.parseError.reason)
                alert ('Testudo Ajax exception: The server failed to produce DOM parsable content.\n\n' + m_xmlDoc.parseError.reason);
            }
            
        } 
        catch(xmlE) 
        {
           alert ('The server failed to produce DOM parsable content.\n\n' + xmlE.description);
        }
        javascript:xmlToPrototype(m_xmlDoc, strNodeNameInResults, strDivContainingPrototype, strResultsOutputPrefix);
        ProgressOff();

      //javascript:cursorDefault();
        m_funcOnCompledCallbackFunction();
  }
  catch (e)
  {
      alert("Error:" & e.description);
  }
}
function ProgressOff()
{
   if (hasDocumentElement(m_strThisPortletStatusDivName) == true)
   {
      var status = document.getElementById(m_strThisPortletStatusDivName);
      //status.innerHTML = '';
      status.style.visibility = 'hidden'; 
   }
}
function ProgressOn()
{
   if (hasDocumentElement(m_strThisPortletStatusDivName) == true)
   {
      var status = document.getElementById(m_strThisPortletStatusDivName);
      //status.innerHTML = '<img alt=""status"" src=""../images/redblue_e0.gif"" />';
      status.style.visibility = 'visible'; 
   }
   else
   {
      alert('The progress bar cannot be displayed, because the HTML element ' + 
         m_strThisPortletStatusDivName + ' was not found in the browser document.')
   }
}
function ajaxDataFetchAsync(strUrl, strNodeNameInResults, strResultsOutputPrefix, strDivContainingPrototype, strStatusDivName, funcOnCompledCallbackFunction)
{
  try
  {
        m_strUrl = strUrl;
        m_strNodeNameInResults = strNodeNameInResults;
        m_strDivContainingPrototype = strDivContainingPrototype;
        m_strResultsOutputPrefix = strResultsOutputPrefix;
        m_strThisPortletStatusDivName = strStatusDivName;
        m_funcOnCompledCallbackFunction = funcOnCompledCallbackFunction;
        
        //ajaxTurnOnProgressBar();
        ProgressOn();

        
      //javascript:cursorWait();
      javascript:getRemoteXmlDocAysnc(m_strUrl, ajaxPostProcessMethod);
  }
  catch (e)
  {
      alert("Error:" & e.description);
  }

}
function xmlTransormerVerifyDependantScripts()
{
  try
  {
    if (m_nTestudoDebugJsVersion != 3) 
    {
       alert('The debugging subsystem is version mismatched. The external JS is at version ' + 
            m_nTestudoDebugJsVersion + ' while the Ajax Fetcher expects V3')
    }
    if (TestudoXmlTransformerVersion != 1) 
    {
       alert('The XML transformer subsystem is version mismatched. The external JS is at version ' + 
            TestudoXmlTransformerVersion + ' while the Ajax Fetcher expects V1')
    }
  }
  catch (ex)
  {
    alert('The debugging subsystem version cannot be determined by the Xml transormer: the debugger is not is not loaded.')
  }
}
//xmlTransormerVerifyDependantScripts();

