function showLink(d_form, d_link) {
    //d_link.style.visibility = "visible";
    d_form.innerHTML = d_link.innerHTML;
}

function showLabel(d_form) {
    d_form.innerHTML = "in process ...";
}

function showError(d_form) {
    d_form.innerHTML = "error";
}

function ajaxPrepareDownloadLink(url, d_form_id, d_link_id) {
  var d_form = document.getElementById(d_form_id);
  var d_link = document.getElementById(d_link_id);
  
  if (d_form) showLabel(d_form);
  
  var ai = new AJAXInteraction(url, 
      function(xml) {
          var root = xml.getElementsByTagName('xml').item(0);
          var result = root.childNodes.item(0);
          if (result.firstChild.data == "OK") {
            if (d_form && d_link) showLink(d_form, d_link);    
          } else {
            if (d_form) showError(d_form);
          }
      }
  );
  ai.doGet();
}

function AJAXInteraction(url, callback) {

    var req = init();
    req.onreadystatechange = processRequest;
    
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    function processRequest() {
      if (req.readyState == 4) {
        if (req.status == 200) {
          if (callback) callback(req.responseXML);
        }
      }
    }
/*
new Ajax.Request('/some_url',
  {
    method:'get',
    onSuccess: function(transport){
      var response = transport.responseText || "no response text";
      alert("Success! \n\n" + response);
    },
    onFailure: function(){
        alert('Something went wrong...') 
    }
  });
  */
 }
