  /***************************************\

  *                                       *

  *                OBJECT                 *

  *                                       *

  \***************************************/



  function XMLHttp_request()

  {



          this.isIE               = false;

          this.allow_use          = false;

          this.xmlhandler         = null;

          this.error_string       = null;

          this.nocache            = true;

          this.do_request_functon = function() {}

          this.loading_fired      = 0;

          this.centerdiv          = null;



  }



  /***************************************\

  *                                       *

  *           OBJECT FUNCTIONS            *

  *                                       *

  \***************************************/



  XMLHttp_request.prototype.xml_init = function()

  {



          try

          {



                  /* Moz, Opera, Safari */



                  this.xmlhandler = new XMLHttpRequest();

                  this.ie        = false;

                  this.allow_use = true;



                  return true;



          }

          catch(e)

          {



                  try

                  {



                          /* Internet Explorer 5.1 + */



                          this.xmlhandler = new ActiveXObject('Microsoft.XMLHTTP');

                          this.ie        = true;

                          this.allow_use = true;



                          return true;



                  }

                  catch(e)

                  {



                          /* Internet Explorer 5.0 - */



                          this.ie        = true;

                          this.allow_use = false;



                          return false;



                  }



          }



  }



  XMLHttp_request.prototype.process = function( url, type, post )

  {



          type = type == "POST" ? "POST" : "GET";





          if ( this.nocache == true  && type == 'GET' )

          {



                  url = this.nocache_url( url );



          }



          if ( ! this.xmlhandler )

          {



                  this.xml_init();



          }



          if ( ! this.readystate_not_ready() )

          {



                  this.xmlhandler.open(type, url, true);



                  if ( type == "GET" )

                  {



                          this.xmlhandler.send(null);



                  }

                  else

                  {



                          if ( typeof( this.xmlhandler.setRequestHeader ) != "undefined" )

                          {



                                  this.xmlhandler.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');



                          }



                          this.xmlhandler.send( post );



                  }



                  if ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 )

                  {



                          return true;



                  }



          }



          return false;



  }



  XMLHttp_request.prototype.get_element_text_ns = function(prefix, local, parentElem, index)

  {



          var result = null;



          if ( prefix && this.isIE )

          {



                  /* Internet Explorer */



                  result = parentElem.getElementsByTagName(prefix + ":" + local)[index];



          }

          else

          {



                  /* Safari, Moz */



                  result = parentElem.getElementsByTagName(local)[index];



          }



          if ( result )

          {



                  if (result.childNodes.length > 1)

                  {



                          return result.childNodes[1].nodeValue;



                  }

                  else

                  {



                          return result.firstChild.nodeValue;



                  }



          }

          else

          {



                  return "n/a";



          }



  }



  XMLHttp_request.prototype.nocache_url = function (url)

  {



          var sep    = ( -1 < url.indexOf("?") ) ? "&" : "?";

          var mydate = new Date();

          var newurl = url + sep + "__=" + mydate.getTime();



          return newurl;



  }



  XMLHttp_request.prototype.format_for_post = function( arrayfields )

  {



          var str = '';



          try

          {



                  for( var i in arrayfields )

                  {



                          str += i + '=' + this.encodeurl(arrayfields[i]) + '&';



                  }



          }

          catch(e)

          {



          }



          return str;



  }



  XMLHttp_request.prototype.encodeurl = function( url )

  {



          url = url.toString();



          var regcheck = url.match(/[\x90-\xFF]/g);



          if ( regcheck )

          {



                  for (var i = 0; i < i.length; i++)

                  {



                          url = url.replace(regcheck[i], '%u00' + (regcheck[i].charCodeAt(0) & 0xFF).toString(16).toUpperCase());



                  }



          }



          return escape(url).replace(/\+/g, "%2B");



  }



  XMLHttp_request.prototype.readystate_not_ready = function()

  {



          return ( this.xmlhandler.readyState && ( this.xmlhandler.readyState < 4 ) );



  }



  XMLHttp_request.prototype.readystate_ready_and_ok = function()

  {



          return ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) ? true : false;



  }



  XMLHttp_request.prototype.onreadystatechange = function( event )

  {



          if ( ! this.xmlhandler )

          {



                  this.xml_init();



          }



          if ( typeof(event) == 'function' )

          {



                  this.xmlhandler.onreadystatechange = event;



          }



  }



