ListenerRequestBase = function(listenerUrl) {
  this.listenerUrl = listenerUrl;
}

ListenerRequestBase.prototype.doRequestAsynchronous = function(data, callback, caller) {
  var asynchronous = new Asynchronous(caller);
  var url = this.listenerUrl;
  asynchronous.makePostRequest(url, data);

  if (callback != null)
    asynchronous.complete = callback;
}

ListenerRequestBase.prototype.doRequestSynchronous = function(data, callback, caller) {
  var synchronous = new Synchronous(caller);
  var url = this.listenerUrl;
  synchronous.makePostRequest(url, data);

  if (callback != null) {
    var status = synchronous._xmlhttp.status;
    var statusText = synchronous._xmlhttp.statusText;
    var responseText = synchronous._xmlhttp.responseText;
    var responseXML = synchronous._xmlhttp.responseXML;
    var caller = synchronous._caller;
    callback(status, statusText, responseText, responseXML, caller);
  }
  else
    return synchronous._xmlhttp.responseText;
}

ListenerRequestBase.prototype.mapImageRequest = function (request, mapviewerLocation) {
  var xml = factory.prepareMapImageRequestData("MAP_IMAGE_REQUEST", request, mapviewerLocation);
  xml = "xmlDoc=" + xml;

  var responseText = factory.getListenerRequestBaseObj().doRequestSynchronous(xml, null, this);
  //alert(responseText);
  var responseXML = factory.convertStringToXml(responseText);
  var imageInfo = new MapImageInfo(responseXML);
  
  return imageInfo;
}
