/*
0.1 - only works for things which already can open infoWindows
        GMarkers and BpMarkers

todo:
  make it work for custom overlays

*/
function setupGetInfoWindowOpener(map,maker) {
	if(typeof(map.getInfoWindowOpener) == 'function')
		return;

  var oper;
  GMap2.prototype.getInfoWindowOpener = function() {
    return oper;
  };

  GEvent.addListener(map,'infowindowclose',function(){
    oper = null;
  });

  function createCallback(methodName,origMethod) {
    return function() {
      if(!map.getInfoWindow().isHidden())
        map.closeInfoWindow();

      oper = this;

      origMethod.apply(this,arguments);
    }
  };

  // go through the openers and insall new ones
  var openers = ['openInfoWindow','openInfoWindowTabs','openInfoWindowHtml','openInfoWindowTabsHtml','showMapBlowup'];
  for(var i = 0; i < openers.length; i++) {
    var methodName = openers[i];
    var orig_opener = maker.prototype[methodName];
    maker.prototype[methodName] = createCallback(methodName,orig_opener);
  }
}
setupGetInfoWindowOpener.version = 0.1;
