/**
 * @author Nick Verbeck <nick@activewebsite.com>
 * @since 11/06/2008
 * 
 * @param format(png): (png, jpeg, gif) - format="png"
 * @param maptype(roadmap): (roadmap, mobile, satellite, terrain, hybrid) - maptype="roadmap"
 * @param center(null): () - center="lat,long"
 * @param zoom(12): (0-19) - zoom="12"
 * @param size(100x100): () = size="100x100"
 * @param markers():  () = markers="lat,long,blue,size,char|lat2,long2,green,size,char"
 * 		@param size(): (tiny, mid, small)
 * 		@param color(red): (black,brown,green,purple,yellow,blue,gray,orange,red,white)
 * 		@param char(): (0-9a-Z)
 * 
 * @example Basic <img src="" size="100x100" markers="46.212246,-119.196546,blue" />
 * @example Advanced <img src="" format="png" size="100x100" maptype="roadmap" zoom="9" markers="46.212246,-119.196546,blue" />
 */
function StaticMap(){this.selector = "img.StaticMap"; this.url = 'http://maps.activewebsite.com/googlestatic.php'; this.run();}
StaticMap.prototype.run = function(){
	$$(this.selector).each(function(element){
		var params = {format: 'png',maptype: 'roadmap',zoom: '15'}
		if(element.attributes['format'] != undefined && element.attributes['format'] != null){params.format = element.attributes['format'].nodeValue;}
		if(element.attributes['zoom'] != undefined && element.attributes['zoom'] != null){params.zoom = element.attributes['zoom'].nodeValue;}
		if(element.attributes['center'] != undefined && element.attributes['center'] != null){params.center = element.attributes['center'].nodeValue;}
		if(element.attributes['zoom'] != undefined && element.attributes['zoom'] != null){params.zoom = element.attributes['zoom'].nodeValue;}
		if(element.attributes['size'] != undefined && element.attributes['size'] != null){params.size = element.attributes['size'].nodeValue;}
		if(element.attributes['markers'] != undefined && element.attributes['markers'] != null){params.markers = element.attributes['markers'].nodeValue;}
		if(element.attributes['maptype'] != undefined && element.attributes['maptype'] != null){params.maptype = element.attributes['maptype'].nodeValue;}
		if(element.attributes['path'] != undefined && element.attributes['path'] != null){params.path = element.attributes['path'].nodeValue.split('|')[0] +'|'+this.getPathFromWKT(element.attributes['path'].nodeValue.split('|')[1]) ;}
		var src = this.url +'?'+ $H(params).toQueryString();
		element.src = src;
	}.bind(this));
}
StaticMap.prototype.getPathFromWKT = function(wkt){
	points = this.RWKT(wkt);
	path = '';
	points.each(function(point){
		path += point.Latitude+','+point.Longitude+'|';
	});
	return path;
}
StaticMap.prototype.RWKT = function(wkt){
	//var testPattern = /^(POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+$/; //Test Pattern
	var getPattern = '^(POINT|POLYGON)[\(]+([^\)]+)[\)]+$'; //Get Points Pattern
	var reg = new RegExp(getPattern, 'g');
	reg.compile(getPattern, 'g');
	var matches = reg.exec(wkt);
	try{
		if(matches[2]){
			var points = matches[2].split(',');
			var shape = new Array();
			for(var i = 0; i<points.length; i++){
				var temp = points[i].split(' ');
				shape.push({
					Latitude: temp[1],
					Longitude: temp[0]
				});
			}
			return shape;
		} else {
			return false;
		}
	} catch(e){
		return false;
	}
}
var StaticMapInstance = new StaticMap();