# Source: open-layers/ol-info-window.js

    /**

     * @namespace WPGMZA

     * @module OLInfoWindow

     * @requires WPGMZA.InfoWindow

     * @pro-requires WPGMZA.ProInfoWindow

     */

    (function($) {

    	var Parent;

    	WPGMZA.OLInfoWindow = function(mapObject)

    	{

    		var self = this;

    		Parent.call(this, mapObject);

    		this.element = $("<div class='ol-info-window-container ol-info-window-plain'></div>")[0];

    		$(this.element).on("click", ".ol-info-window-close", function(event) {

    			self.close();

    		});

    	}

    	if(WPGMZA.isProVersion())

    		Parent = WPGMZA.ProInfoWindow;

    	else

    		Parent = WPGMZA.InfoWindow;

    	WPGMZA.OLInfoWindow.prototype = Object.create(Parent.prototype);

    	WPGMZA.OLInfoWindow.prototype.constructor = WPGMZA.OLInfoWindow;

    	/**

    	 * Opens the info window

    	 * TODO: This should take a mapObject, not an event

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

    	 */

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

    	{

    		var self = this;

    		var latLng = mapObject.getPosition();

    		if(!WPGMZA.InfoWindow.prototype.open.call(this, map, mapObject))

    			return false;

    		if(this.overlay)

    			this.mapObject.map.olMap.removeOverlay(this.overlay);

    		this.overlay = new ol.Overlay({

    			element: this.element

    		});

    		this.overlay.setPosition(ol.proj.fromLonLat([

    			latLng.lng,

    			latLng.lat

    		]));

    		self.mapObject.map.olMap.addOverlay(this.overlay);

    		$(this.element).show();

    		this.dispatchEvent("infowindowopen");

    		$(this.element).trigger("infowindowopen.wpgmza");

    	}

    	WPGMZA.OLInfoWindow.prototype.close = function(event)

    	{

    		// TODO: Why? This shouldn't have to be here. Removing the overlay should hide the element (it doesn't)

    		$(this.element).hide();

    		if(!this.overlay)

    			return;

    		WPGMZA.InfoWindow.prototype.close.call(this);

    		this.mapObject.map.olMap.removeOverlay(this.overlay);

    		this.overlay = null;

    	}

    	WPGMZA.OLInfoWindow.prototype.setContent = function(html)

    	{

    		$(this.element).html("<i class='fa fa-times ol-info-window-close' aria-hidden='true'></i>" + html);

    	}

    })(jQuery);