/**
 * @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)
 * 
 */
var staticMap = Class.create({
	initialize: function(element,options) {
		this.options = Object.extend({
			lazy: false,
			format: 'png',
			maptype: 'roadmap',
			center: null,
			zoom: '15',
			size: '100x100',
			markers: null,
			path: null,
			url: 'http://maps.activewebsite.com/googlestatic.php'
		}, options || {});
		this.img = $(element);
		if(this.img != undefined && this.options.lazy != true) {
			this.run();
		}
	},
	run: function() {
		var params = {};
		if(this.options.format != undefined && this.options.format != null){
			params.format = this.options.format;
		}
		if(this.options.maptype != undefined && this.options.maptype != null){
			params.maptype = this.options.maptype;
		}
		if(this.options.center != undefined && this.options.center != null){
			params.center = this.options.center;
		}
		if(this.options.zoom != undefined && this.options.zoom != null){
			params.zoom = this.options.zoom;
		}
		if(this.options.size != undefined && this.options.size != null){
			params.size = this.options.size;
		}
		if(this.options.markers != undefined && this.options.markers != null){
			params.markers = this.options.markers;
		}
		if(this.options.path != undefined && this.options.path != null){
			params.path = this.options.path.split('|')[0] + '|' + this.getPathFromWKT( this.options.path.split('|')[1] );
		}
		this.img.src = this.options.url + '?' + $H(params).toQueryString();
	},
	getPathFromWKT: function(wkt) {
		var path = '';
		var points = this.RWKT(wkt);
		points.each( function(point) {
			path += point.Latitude + ',' + point.Longitude + '|';
		} );
		return path;
	},
	RWKT: function(wkt){
		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;
		}
	}	
});