// (CM) Client for m_php and m_jsp implemented over XMLHTTP.  7 January 2005.
//      Copyright (c) 2002 - 2005 by M/Gateway Developments Ltd.
//      All Rights Reserved.

var m_php_UseGetMethod                   = false;

var m_php_max_cc_requests                = 8;

var m_php_status_free                    = 0;
var m_php_status_inuse                   = 1;
var m_php_ret_success                    = 1;
var m_php_ret_error                      = -1;

var m_php_XMLHttp                        = [null, null, null, null, null, null, null, null];
var m_php_Mozilla                        = [false, false, false, false, false, false, false, false];

var m_php_Status                         = [0, 0, 0, 0, 0, 0, 0, 0];

var m_deod                               = "\x07";


function server_proc(DataObject)
{
   var r_handle;
   var result;

   r_handle = m_php_MethodEx_AllocateHandle();

   result = m_php_SendRequest(r_handle, DataObject);

   r_handle = m_php_MethodEx_ReleaseHandle(r_handle);

   return result;

}


function m_php_MethodEx_AllocateHandle()
{
   var r_handle;
   var n;
   var error;

   r_handle = m_php_ret_error;

   for (n = 1; n < m_php_max_cc_requests; n ++) {
      if (m_php_Status[n] == m_php_status_free) {
         m_php_Status[n] = m_php_status_inuse;
         r_handle = n;

	      if (m_php_FindXMLHttp(r_handle) == null) {
            error = 'Unable to locate XMLHttpObject';
            alert(error);
            return m_php_ret_error;
         }

         break;
      }
   }

   return r_handle;
}


function m_php_MethodEx_ReleaseHandle(RequestHandle)
{
   var r_handle;
   var error;

   r_handle = RequestHandle;

   if (r_handle < 0 || r_handle >= m_php_max_cc_requests)
      return -1;

   m_php_Status[r_handle] = m_php_status_free;

   return r_handle;
}


function m_php_FindXMLHttp(r_handle)
{
   if (m_php_XMLHttp[r_handle] != null)
      return m_php_XMLHttp[r_handle];

   /*@cc_on @*/
   /*@if (@_jscript_version >= 5)
      m_php_Mozilla[r_handle] = false;
      try {
         m_php_XMLHttp[r_handle] = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
            m_php_XMLHttp[r_handle] = new ActiveXObject("Microsoft.XMLHTTP");
	      } catch (E) {
            m_php_XMLHttp[r_handle] = null;
         }
      }
   @end @*/

   if (m_php_XMLHttp[r_handle] != null)
      return m_php_XMLHttp[r_handle];

   try {
      m_php_XMLHttp[r_handle] = new XMLHttpRequest();
      m_php_Mozilla[r_handle] = true;
   } catch (e) {
      m_php_XMLHttp[r_handle] = null;
   }

   return m_php_XMLHttp[r_handle];
}


function m_php_SendRequest(r_handle, Request)
{
   var error;
   var url_string;
   var con_string;
   var response;
   var temp;

   error = "";
   response = "";

   try {
      if (m_php_UseGetMethod && !m_php_Mozilla[r_handle]) {

         url_string = Request;
         m_php_XMLHttp[r_handle].open("GET", url_string, false);
         m_php_XMLHttp[r_handle].send();
      }
      else {

         temp = Request.split("?");

         url_string = temp[0];
         con_string = temp[1];

         m_php_XMLHttp[r_handle].open("POST", url_string, false);
         m_php_XMLHttp[r_handle].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         m_php_XMLHttp[r_handle].send(con_string);
      }

      response = m_php_XMLHttp[r_handle].responseText;

      temp = response.split(m_deod);

      response = temp[1];


   } catch (e) {
      error = 'ERROR: HTTP object request failed - Unable to process m_php request.' + e;
      alert(error);
   }

   return response;
}
