# 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);