var req = null;

function ajaxCrossDomainRequest(method, url)
{
     var isIE8 = window.XDomainRequest ? true : false;
     var request;
     if (isIE8)
     {
          request = new window.XDomainRequest();
     }
     else
     {
          request = new XMLHttpRequest();
     }
     return request;
}

function loadRemotePage(method, url) 
{
     var divElementId = "col2";
     
     var parseErrorMessage= "<span class='nss_logo_heading_format'>" + 
                              "Error Loading Page URL:" + url + "</span>";
                              
     var output = '';
     
     var isIE8 = window.XDomainRequest ? true : false;
     req = ajaxCrossDomainRequest(method, url);
     
     if (req != null)
     {
          if(isIE8)
          {
               req.onload=function()
               {
                    output = req.responseText;
                    document.getElementById(divElementId).innerHTML = parseScript(divElementId, output);                    
               };
               
               req.onerror=function()
               {
                    document.getElementById(divElementId).innerHTML = pageErrorMessage+"\n"+output;               
               };
               
               req.open(method, url, true);
               req.send();
          }
          else
          {
               req.open(method, url, true);
               req.onreadystatechange=function(evtXHR)
               {
                  responsefromServer(divElementId, pageErrorMessage);
               };
               req.send();
          }
     }
     else
     {
          var text = "No Invocation TookPlace At All";
          var textNode = document.createTextNode(text);
          var textDiv = document.getElementById(divElementId);
          textDiv.appendChild(textNode);
     }
}

function ajaxRequest()
{
     // activeX versions to check for in IE
     var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; 
     
     // Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
    if (window.ActiveXObject)
    { 
        for (var i=0; i < activexmodes.length; i++)
        {
               try { return new ActiveXObject(activexmodes[i]); }
               catch(e)
               {
                    // suppress error
               }
          }
     }
     // if Mozilla, Safari etc
     else if (window.XMLHttpRequest) 
          return new XMLHttpRequest();
     else
          return false;
}

function synchronousServerValidation(div, url)
{
     req = ajaxRequest();
     req.open("GET", url, false);
     req.send(null); //send GET request
     
     if(req.status == 200) 
     {
          var output = '';
          var error = "<span class='nss_logo_heading_format'>Error Loading Page URL:" + url + "</span>";
          
          output = req.responseText;
          parsedOutput = parseScript(div, output);
                    
          document.getElementById(div).innerHTML = parsedOutput;
                    
          if (parsedOutput != "true") {
              document.getElementById(div).innerHTML = parsedOutput;
              return false;
          }
          return true;
     } 
     
     document.getElementById(div).innerHTML = error + "\n" + output;
     return false;
}

function loadPage(url)
{
     req = ajaxRequest();
     req.open("GET", url, true);
     req.onreadystatechange=function() 
     { 
          responsefromServer("col2", 
               "<span class='nss_logo_heading_format'>" + 
               "Error Loading Page URL:" + url + "</span>"); 
     };
     req.send(null); //send GET request
}
 
function responsefromServer(divElementId, pageErrorMessage) 
{
     var output = '';
     if(req.readyState == 4) 
     {    
          if(req.status == 200) 
          {
               output = req.responseText;
               document.getElementById(divElementId).innerHTML = parseScript(divElementId, output);
          } else {
               document.getElementById(divElementId).innerHTML = pageErrorMessage+"\n"+output;
          }
     }
}
 
function parseScript(divElementId, _source) 
{
     var source = _source;
     var scripts = new Array();
     
     // Strip out tags
     while(source.indexOf("<script") > -1 || source.indexOf("</script") > -1) 
     {
          var s = source.indexOf("<script");
          var s_e = source.indexOf(">", s);
          var e = source.indexOf("</script", s);
          var e_e = source.indexOf(">", e);
 
               // Add to scripts array
          scripts.push(source.substring(s_e+1, e));
          // Strip from source
          source = source.substring(0, s) + source.substring(e_e+1);
     }
 
     // Loop through every script collected and eval it
     for(var i=0; i<scripts.length; i++) 
     {
          var newScript = document.createElement('script');
          newScript.type = "text/javascript";
          newScript.text = scripts[i];
          document.getElementById(divElementId).appendChild (newScript);
     }
     
     // Return the cleaned source
     return source;
}
