// klasa glowna 
  function Requester() {
    var b_object_exist = 1; // 1 - udalo sie stworzyc obiekt
        					// 0 - nie udalo sie stworzyc obiektu
    if (window.XMLHttpRequest) {
	  try {
	    this.requester = new XMLHttpRequest();
	  } catch(e) {
	    b_object_exist = 0;
	  }
	} else if (window.ActiveXObject) {
	    try {
	      this.requester = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch(e) {
	      try {
	        this.requester = new ActiveXObject("Microsoft.XMLHTTP");
	      } catch(e) {
	        b_object_exist = 0;
	      }
	    }
	  
	}
	
	function _objectExist() {
	  return b_object_exist;
	}		  
    
    this.objectExist = _objectExist;
    
    function _fun() {
      if (this.requester.readyState == 4)
        if (this.requester.status == 200)
          return 1;
        else
          alert("Wyst±pił jaki¶ problem z zapytaniem,\nna przykład odpowiedzią mogło być 404 (Nie odnaleziono)\nlub 500 (Wewnętrzny bł±d serwera)");
        return 0;
	}
         
    this.fun = _fun;
  }

//klasa odpowiada za operacje na gridzie 
  function grid(s_grid_name, s_url_params) { 
    this.req = new Requester();
    if(this.req.objectExist() == 0)      
      return window.location.replace('?' + s_url_params);
    
    this.req.requester.onreadystatechange = myHandler; 
    this.req.requester.open('GET', '?do=dnr_ajaxgetgrid&grid_name=' + s_grid_name + s_url_params, true);
    this.req.requester.send(null);
    
    function myHandler() {
      if (req.fun() == 1) {
        el1 = document.getElementById('grid_' + s_grid_name);
        el1.innerHTML = req.requester.responseText;
	  }
    }
  	
  }
  
  function filter(s_filter_name, s_grid_name, as_url_params) {
    var s_url_params = '';
    for (var a = 0; a<as_url_params.length; a++)
      s_url_params += '&' + as_url_params[a]['name'] + '=' + as_url_params[a]['value'];
      
      this.req = new Requester();
      if(this.req.objectExist() == 0)      
        return window.location.replace('?' + s_url_params);
        
      this.req.requester.onreadystatechange = myHandler; 
      this.req.requester.open('GET', '?do=dnr_ajaxgetgrid&grid_name=' + s_grid_name + '&filter_name=' + s_filter_name + s_url_params, true);
      this.req.requester.send(null);
     
      function myHandler() { 
		var a =0;
        if (req.fun() == 1) {
          el1 = document.getElementById('grid_' + s_grid_name);
          el1.innerHTML = req.requester.responseText;
	    }
	  }    
  }

  
  function check_email_ax(obj, action) {
  	var email = obj.value;
    this.req = new Requester();
    if(this.req.objectExist() == 0) {
    	alert('nie utworzono obiektu ajax');
    	return 'ax error;';
    }
    this.req.requester.onreadystatechange = myHandler; 
    this.req.requester.open('GET', '?do=' + action + '&email=' + email, true);
    this.req.requester.send(null);

    function myHandler() {
      if (req.fun() == 1) {
      	set_error(obj, req.requester.responseText);
      }
    }
  }
  

  function check_promo(pk, pkname, promotyp, id) {
  	if (pkname != '') {
	    this.req = new Requester();
	    if(this.req.objectExist() == 0) {
	      alert('nie utworzono obiektu ajax');
	      return 'ax error;';
	    }
	    this.req.requester.onreadystatechange = checkPromo; 
	    this.req.requester.open('GET', '?do=ajax_checkpromo&pk=' + pk + '&n=' + pkname + '&t=' + promotyp, true);
	    this.req.requester.send(null);
	
  	}

    function checkPromo() {
    	var resp = '';
    	var o;
      if (req.fun() == 1) {
        resp = req.requester.responseText;
      	//alert('resp:'+resp);
        if (resp == '1' || resp == '2') {
        	//alert('ok');
        	///alert(id);
        	o = document.getElementById(id);
        	o.style.visibility = 'visible';
        }
      }
      return true;
    }
  }
  