/**
* @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);