# Source: google-maps/google-vertex-context-menu.js

    /**

     * @namespace WPGMZA

     * @module GoogleVertexContextMenu

     * @requires wpgmza_api_call

     */

    (function($) {

    	if(WPGMZA.settings.engine != "google-maps")

    		return;

    	WPGMZA.GoogleVertexContextMenu = function(mapEditPage)

    	{

    		var self = this;

    		this.mapEditPage = mapEditPage;

    		this.element = document.createElement("div");

    		this.element.className = "wpgmza-vertex-context-menu";

    		this.element.innerHTML = "Delete";

    		google.maps.event.addDomListener(this.element, "click", function(event) {

    			self.removeVertex();

    			event.preventDefault();

    			event.stopPropagation();

    			return false;

    		});

    	}

    	WPGMZA.GoogleVertexContextMenu.prototype = new google.maps.OverlayView();

    	WPGMZA.GoogleVertexContextMenu.prototype.onAdd = function()

    	{

    		var self = this;

    		var map = this.getMap();

    		this.getPanes().floatPane.appendChild(this.element);

    		this.divListener = google.maps.event.addDomListener(map.getDiv(), "mousedown", function(e) {

    			if(e.target != self.element)

    				self.close();

    		}, true);

    	}

    	WPGMZA.GoogleVertexContextMenu.prototype.onRemove = function()

    	{

    		google.maps.event.removeListener(this.divListener);

    		this.element.parentNode.removeChild(this.element);

    		this.set("position");

    		this.set("path");

    		this.set("vertex");

    	}

    	WPGMZA.GoogleVertexContextMenu.prototype.open = function(map, path, vertex)

    	{

    		this.set('position', path.getAt(vertex));

    		this.set('path', path);

    		this.set('vertex', vertex);

    		this.setMap(map);

    		this.draw();

    	}

    	WPGMZA.GoogleVertexContextMenu.prototype.close = function()

    	{

    		this.setMap(null);

    	}

    	WPGMZA.GoogleVertexContextMenu.prototype.draw = function()

    	{

    		var position = this.get('position');

    		var projection = this.getProjection();

    		if (!position || !projection)

    		  return;

    		var point = projection.fromLatLngToDivPixel(position);

    		this.element.style.top = point.y + 'px';

    		this.element.style.left = point.x + 'px';

    	}

    	WPGMZA.GoogleVertexContextMenu.prototype.removeVertex = function()

    	{

    		var path = this.get('path');

    		var vertex = this.get('vertex');

    		if (!path || vertex == undefined) {

    		  this.close();

    		  return;

    		}

    		path.removeAt(vertex);

    		this.close();

    	}

    })(jQuery);