function ajax_reklama() {

 var ajax = new Object();
 ajax.xmlHttp;

 ajax.dataName='';
 ajax.timerMsg;
 ajax.timeRepeat = 3000;

 ajax.typeObj = new Object();
 ajax.typeObj.xml='xml';
 ajax.typeObj.text='text';
 ajax.typeObj.isData = true;

 ajax.type= ajax.typeObj.xml;
 ajax.isData = ajax.typeObj.isData;
 ajax.url = '';
 ajax.params = '';

//===============================================================================
 ajax.createXHR = function()
 {
  if(ajax.xmlHttp) return false;

  var xmlHttp;
  try
  {
   xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
   var xhrVersions = new Array ('MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp','Microsoft.XMLHttp');
   for(var i=0;i<xhrVersions.length && !xmlHttp ;i++)
   {
    try
    {
      xmlHttp = new ActiveXObject(xhrVersions[i]);
    }
    catch(e) {  }
   }
  }

 if(!xmlHttp) { alert("Błąd podczas utworzenia objektu XMLHttpRequest() ");  }
 else
 {
  return xmlHttp;
 }
};
//-------------------------------------------------------------------------------
 ajax.init = function(dataName,type,isData)
 {
  if(type.toLowerCase() == ajax.typeObj.xml) {   ajax.type= ajax.typeObj.xml; }
  else {  ajax.type= ajax.typeObj.text; }

  ajax.dataName = dataName;
  ajax.isData = isData;
  ajax.xmlHttp = ajax.createXHR();
 };
//-------------------------------------------------------------------------------
ajax.handleRequestStateChange = function()
{
 if(ajax.xmlHttp.readyState == 4)
 {
  if(ajax.xmlHttp.status == 200)
  {
   try
   {
     if(ajax.type == ajax.typeObj.text)
     {
       if(ajax.isData) ajax.handleServerResponseText();
     }
     else{
       ajax.handleServerResponseXml();
     }
    //---
   }
   catch(e)
   {
    alert("błąd odczytu odpowiedzi: \n" + e.toString() + "\n" + e.description);

   }
  }
  else{
   alert("Pojawił się problem z uzyskaniem danych:\n" + xmlHttp.statusText);
  }
 }
};
//-------------------------------------------------------------------------------
 ajax.setType = function(type)
 {
  if(type.toLowerCase() == ajax.typeObj.xml) {   ajax.type= ajax.typeObj.xml; }
  else {  ajax.type= ajax.typeObj.text; }
 };
//-------------------------------------------------------------------------------
ajax.setUrl = function(url)
{
 ajax.url = url;
};
//-------------------------------------------------------------------------------

ajax.runAction = function()
{
 try
 {
  if(ajax.xmlHttp.readyState == 0 || ajax.xmlHttp.readyState == 4)
  {
   ajax.xmlHttp.open('POST',ajax.url, true);
   ajax.xmlHttp.onreadystatechange = ajax.handleRequestStateChange;
   ajax.xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;');
   ajax.xmlHttp.send(ajax.params);

  }
 }
 catch(e)
 {  
   alert("wystąpił błąd podczas wysyłania danych: \n" + e.description);
 }
};
//-------------------------------------------------------------------------------
ajax.handleServerResponseText = function()
{
 var response = ajax.xmlHttp.responseText;

 if(response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 throw (response.length == 0 ? "Błąd serwera.\n" : response);

 ajax.getData(ajax.xmlHttp.responseText);
};
//-------------------------------------------------------------------------------
ajax.handleServerResponseXml = function()
{
 var def_xml = 'xml version="1.0" encoding="utf-8" standalone="yes"';
 var response = ajax.xmlHttp.responseText;

 if(response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 throw (response.length == 0 ? "Server error." : response);

 //pokazuje blad
 if(response.indexOf(def_xml) == 0 || response.indexOf(def_xml) ==-1)
 {
  //alert(response);
  throw (response.length == 0 ? "Błąd serwera.\n" : response);
 }
 //---

};
//-------------------------------------------------------------------------------
ajax.getData = function(data)
{
 var doc = document.getElementById(ajax.dataName);
 if(doc && data)
 {
  doc.innerHTML = data;
 }
};

//-------------------------------------------------------------------------------
ajax.createParams = function()
{
 var r = (arguments.length % 2);
 if(arguments.length > 0 && r == 0)
 {
   for(var i=0;i<arguments.length;i++)
   {
     if((i % 2) == 0) { ajax.params += '&' + encodeURIComponent(arguments[i]) + '='; }
     else { ajax.params += encodeURIComponent(arguments[i]); }
   }
 }
 else {
  alert('nieprawidłowa ilość argumentów !!!');
 }
};
//-------------------------------------------------------------------------------
ajax.setParams = function()
{
 ajax.params = '';
 ajax.createParams.apply(this,arguments);
}
//-------------------------------------------------------------------------------
ajax.addParams = function()
{
  ajax.createParams.apply(this,arguments);
};
//-------------------------------------------------------------------------------
ajax.clearParams = function()
{
 ajax.params = '';
};
//-------------------------------------------------------------------------------
return ajax;
}

