/**
* Ajax framework class
* Inherits from base class Class
* Requre 'baseclass.js' file
* d.rybakov
*/

var CAjax = Class.extend(
{
   name: 'genericajax',
   request: false,
   construct: function(objectname)
   {
      this.name = objectname;
      if(!this.createRequest())
         alert("Error initializing Ajax!");
   },
   createRequest: function()
   {
      try 
      {
         this.request = new XMLHttpRequest();
      }
      catch (trymicrosoft) 
      {
         try 
         {
            this.request = new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (othermicrosoft) 
         {
            try 
            {
               this.request = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (failed) 
            {
               this.request = false;
            }
         }
      }
      if (!this.request)
         return false;
      else
         return true;
   },
   sendRequest: function(query, result_func, method, data)
   {
      try
      {
         this.request.open(method, query.getUrl(), true);
         this.request.onreadystatechange = result_func;
         
         var body = null;
         if (method == 'POST')
            if (data)
            {
               body = data.getUri(); 
               this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
               this.request.setRequestHeader("Content-length", body.length);
               this.request.setRequestHeader("Connection", "close");
            }
         this.request.send(body);
         return true;
      }
      catch(exeption)
      {
//        alert('exeption occurs: '+exeption.message);
        return false;
      }
   },
   getResult: function()
   {
      try
      {
         if (this.request.readyState == 4)
            switch(this.request.status)
            {
            case 200: // all ok
               return this.request.responseText;
               break;
         
            default:
               return 'NextMail_Error';
               break;
            } // switch
         return false;
      }
      catch(exeption)
      {
//         alert('exeption occurs: '+exeption.message);
         return false;
      }
   }
});
