# Source: circle.js

    /**

     * @namespace WPGMZA

     * @module Circle

     * @requires WPGMZA.MapObject

     */

    (function($) {

    	var Parent = WPGMZA.MapObject;

    	/**

    	 * @class Circle

    	 * @summary Represents a generic circle. <b>Please do not instantiate this object directly, use createInstance</b>

    	 * @return {WPGMZA.Circle}

    	 */

    	WPGMZA.Circle = function(options, engineCircle)

    	{

    		var self = this;

    		WPGMZA.assertInstanceOf(this, "Circle");

    		this.center = new WPGMZA.LatLng();

    		this.radius = 100;

    		Parent.apply(this, arguments);

    	}

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

    	WPGMZA.Circle.prototype.constructor = WPGMZA.Circle;

    	/**

    	 * @function createInstance

    	 * @summary Creates an instance of a circle, <b>please always use this function rather than calling the constructor directly</b>

    	 * @param {object} options Options for the object (optional)

    	 */

    	WPGMZA.Circle.createInstance = function(options)

    	{

    		var constructor;

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

    			constructor = WPGMZA.GoogleCircle;

    		else

    			constructor = WPGMZA.OLCircle;

    		return new constructor(options);

    	}

    	/**

    	 * @function getCenter

    	 * @returns {WPGMZA.LatLng}

    	 */

    	WPGMZA.Circle.prototype.getCenter = function()

    	{

    		return this.center.clone();

    	}

    	/**

    	 * @function setCenter

    	 * @param {object|WPGMZA.LatLng} latLng either a literal or as a WPGMZA.LatLng

    	 * @returns {void}

    	 */

    	WPGMZA.Circle.prototype.setCenter = function(latLng)

    	{

    		this.center.lat = latLng.lat;

    		this.center.lng = latLng.lng;

    	}

    	/**

    	 * @function getRadius

    	 * @summary Returns the circles radius in kilometers

    	 * @returns {WPGMZA.LatLng}

    	 */

    	WPGMZA.Circle.prototype.getRadius = function()

    	{

    		return this.radius;

    	}

    	/**

    	 * @function setRadius

    	 * @param {number} The radius

    	 * @returns {void}

    	 */

    	WPGMZA.Circle.prototype.setRadius = function(radius)

    	{

    		this.radius = radius;

    	}

    	/**

    	 * @function getMap

    	 * @summary Returns the map that this circle is being displayed on

    	 * @return {WPGMZA.Map}

    	 */

    	WPGMZA.Circle.prototype.getMap = function()

    	{

    		return this.map;

    	}

    	/**

    	 * @function setMap

    	 * @param {WPGMZA.Map} The target map

    	 * @summary Puts this circle on a map

    	 * @return {void}

    	 */

    	WPGMZA.Circle.prototype.setMap = function(map)

    	{

    		if(this.map)

    			this.map.removeCircle(this);

    		if(map)

    			map.addCircle(this);

    	}

    })(jQuery);