// this is my handwritten AJAX handler
// Daniel Smith 08/07/2009 FastMarkets Ltd
//
//
var mLoginPage = "";
var mLoginPageTitle = "";
var baseURL = "";
var baseURLPub = "";
var cDAN_AJAX_RESPONSE_ERROR=500;
var cDAN_AJAX_RESPONSE_SUCCESS=200;
var cDAN_AJAX_RESPONSE_LOGOFF = 300;
var cDAN_AJAX_TIMEOUT = 60000;

function RequestData (url, callbackFunction,params,wait,cstm1,cstm2) {
  try {
    if (XMLHttpRequest) {
      if (url.length > 0) {        
        url = baseURL + "?method=" + url + '&__=' + encodeURIComponent((new Date()).getTime());
        if (params && params.length > 0) url += "&" + params;
        var lang = document.getElementById("usr_lang");
        if (lang) url += "&lang=" + lang.innerHTML;
        var req = new XMLHttpRequest;                
        req.open("GET", url, true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Cache-Control", "no-cache");
        req.setRequestHeader("Connection", "keep-alive");
        req.onreadystatechange = function() {
          try {
            if (req.readyState == 4 && req.status == 200 && req.responseText) {
              if(callbackFunction)callbackFunction(req, wait, cstm1, cstm2);
            }
            else if (req.readyState == 4 && req.status >= 500 && req.status <= 510) {
            if (callbackFunction) callbackFunction(req, wait, cstm1, cstm2);
            }
          } catch (e) {}
        };
        if (wait) wait.style.visibility = "";
        req.send(null);        
      }
    }
    else alert('No XMLHTTP object');    
  } catch (e) {}
}

function RequestDataPub(url, callbackFunction, params, wait, cstm1, cstm2) {
  try {
    if (XMLHttpRequest) {
      if (url.length > 0) {
        url = baseURLPub + "?method=" + url + '&__=' + encodeURIComponent((new Date()).getTime());
        if (params && params.length > 0) url += "&" + params;
        var lang = document.getElementById("usr_lang");
        if (lang) url += "&lang=" + lang.innerHTML;
        var req = new XMLHttpRequest;
        req.open("GET", url, true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Cache-Control", "no-cache");
        req.setRequestHeader("Connection", "keep-alive");
        req.onreadystatechange = function() {
          try {
            if (req.readyState == 4 && req.status == 200 && req.responseText) {
              if (callbackFunction) callbackFunction(req, wait, cstm1, cstm2);
            }
            else if (req.readyState == 4 && req.status >= 500 && req.status <= 510) {
              if (callbackFunction) callbackFunction(req, wait, cstm1, cstm2);
            }
          } catch (e) { }
        };
        if (wait) wait.style.visibility = "";
        req.send(null);
      }
    }
    else alert('No XMLHTTP object');
  } catch (e) { }
}

function PreProcessResponse(response) {  
  var ret_value = new Array;
  if (response) {
    if (response.responseXML.documentElement) {
      var ret_code = response.responseXML.documentElement.getAttributeNode("code").nodeValue;
      if (ret_code == cDAN_AJAX_RESPONSE_LOGOFF) {
        document.location = mLoginPage;
      }
      else if (ret_code == cDAN_AJAX_RESPONSE_ERROR) {
        window.status = "Pre-Process Response error.";
      }
      else {
        window.status = "";
        ret_value[0] = (response.responseXML.documentElement.text != null ? response.responseXML.documentElement.text : response.responseXML.documentElement.textContent);
        ret_value[0].replace("<![CDATA[", "").replace("]]>", "");
        //do we have any javascript in here ?
        var scr = 0;
        var ds;
        ds = ret_value[0].indexOf('<DANScript>');
        while (ds >= 0) {
          var de = ret_value[0].indexOf('</DANScript>');
          ret_value[++scr] = ret_value[0].substring(ds + 11, de);
          ret_value[0] = ret_value[0].substr(0, ds) + ret_value[0].substr(de + 12);
          ds = ret_value[0].indexOf('<DANScript>');
        }
      }
    }
    else if (response.responseText.indexOf(mLoginPageTitle) >= 0) document.location = mLoginPage;
  }
  return ret_value;
}

function init_AJAX() {
  baseURL = document.getElementById("lblDan_AJAX_HandlerPage").innerHTML;
  baseURLPub = document.getElementById("lblDan_AJAX_HandlerPagePub").innerHTML;
  mLoginPage = document.getElementById("lblDan_AJAX_Logoff_Redirect_Page").innerHTML;
  mLoginPageTitle = document.getElementById("lblLoginPageTitle").innerHTML;
  SetXMLHTTPObject();
}

function SetXMLHTTPObject() {
  if (!window.XMLHttpRequest) XMLHttpRequest = function() {
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch (e) { }
    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch (e) { }
    try { return new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { }
    try { return new ActiveXObject("Microsoft.XMLHTTP") } catch (e) { }
    throw new Error("Could not find an XMLHttpRequest alternative.")
  };
}