Source: info-window.js

/**

 * @namespace WPGMZA

 * @module InfoWindow

 * @requires WPGMZA.EventDispatcher

 */

(function($) {

	

	WPGMZA.InfoWindow = function(mapObject)

	{

		var self = this;

		

		WPGMZA.EventDispatcher.call(this);

		

		WPGMZA.assertInstanceOf(this, "InfoWindow");

		

		if(!mapObject)

			return;

		

		this.mapObject = mapObject;

		

		if(mapObject.map)

		{

			// This has to be slightly delayed so the map initialization won't overwrite the infowindow element

			setTimeout(function() {

				self.onMapObjectAdded(event);

			}, 100);

		}

		else

			mapObject.addEventListener("added", function(event) { 

				self.onMapObjectAdded(event);

			});		

	}

	

	WPGMZA.InfoWindow.prototype = Object.create(WPGMZA.EventDispatcher.prototype);

	WPGMZA.InfoWindow.prototype.constructor = WPGMZA.InfoWindow;

	

	WPGMZA.InfoWindow.OPEN_BY_CLICK = 1;

	WPGMZA.InfoWindow.OPEN_BY_HOVER = 2;

	

	WPGMZA.InfoWindow.getConstructor = function()

	{

		switch(WPGMZA.settings.engine)

		{

			case "google-maps":

				if(WPGMZA.isProVersion())

					return WPGMZA.GoogleProInfoWindow;

				return WPGMZA.GoogleInfoWindow;

				break;

				

			default:

				if(WPGMZA.isProVersion())

					return WPGMZA.OLProInfoWindow;

				return WPGMZA.OLInfoWindow;

				break;

		}

	}

	

	WPGMZA.InfoWindow.createInstance = function(mapObject)

	{

		var constructor = this.getConstructor();

		return new constructor(mapObject);

	}

	

	/**

	 * Gets the content for the info window and passes it to the specified callback - this allows for delayed loading (eg AJAX) as well as instant content

	 * @return void

	 */

	WPGMZA.InfoWindow.prototype.getContent = function(callback)

	{

		var html = "";

		

		if(this.mapObject instanceof WPGMZA.Marker)

			html = this.mapObject.address;

		

		callback(html);

	}

	

	/**

	 * Opens the info window

	 * @return boolean FALSE if the info window should not & will not open, TRUE if it will

	 */

	WPGMZA.InfoWindow.prototype.open = function(map, mapObject)

	{

		var self = this;

		

		this.mapObject = mapObject;

		

		if(WPGMZA.settings.disable_infowindows)

			return false;

		

		return true;

	}

	

	WPGMZA.InfoWindow.prototype.close = function()

	{

		

	}

	

	/**

	 * Event listener for when the map object is added. This will cause the info window to open if the map object has infoopen set

	 * @return void

	 */

	WPGMZA.InfoWindow.prototype.onMapObjectAdded = function()

	{

		if(this.mapObject.settings.infoopen == 1)

			this.open();

	}

	

})(jQuery);