Source: map-object.js

/**

 * @namespace WPGMZA

 * @module MapObject

 * @requires WPGMZA.EventDispatcher

 */

(function($) {

	

	WPGMZA.MapObject = function(row)

	{

		var self = this;

		

		WPGMZA.assertInstanceOf(this, "MapObject");

		

		WPGMZA.EventDispatcher.call(this);

		

		this.id = -1;

		this.guid = WPGMZA.guid();

		this.modified = true;

		this.settings = {};

		

		if(row)

		{

			for(var name in row)

			{

				if(name == "settings")

				{

					if(row["settings"] == null)

						this["settings"] = {};

					else switch(typeof row["settings"]) {

						case "string":

							this["settings"] = JSON.parse(row[name]);

							break;

						case "object":

							this["settings"] = row[name];

							break;

						default:

							throw new Error("Don't know how to interpret settings")

							break;

					}

					

					for(var name in this.settings)

					{

						var value = this.settings[name];

						if(String(value).match(/^-?\d+$/))

							this.settings[name] = parseInt(value);

					}

				}

				else

					this[name] = row[name];

			}

		}		

	}

	

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

	WPGMZA.MapObject.prototype.constructor = WPGMZA.MapObject;

	

	WPGMZA.MapObject.prototype.parseGeometry = function(string)

	{

		var stripped, pairs, coords, results = [];

		stripped = string.replace(/[^ ,\d\.\-+e]/g, "");

		pairs = stripped.split(",");

		

		for(var i = 0; i < pairs.length; i++)

		{

			coords = pairs[i].split(" ");

			results.push({

				lat: parseFloat(coords[1]),

				lng: parseFloat(coords[0])

			});

		}

				

		return results;

	}

	

	WPGMZA.MapObject.prototype.toJSON = function()

	{

		return {

			id: this.id,

			guid: this.guid,

			settings: this.settings

		};

	}

	

})(jQuery);