var mrj_googleInfoWindow = null;

function MRJ_map()
{
	
}

MRJ_map.prototype.create = function(Opts)
{
	this.Opts_	= Opts;
	this.Obj_	= document.getElementById(this.Opts_.mapId);
	
	if(this.Obj_)
	{
		this.Obj_.style.width	= this.Opts_.width + "px";
		this.Obj_.style.height	= this.Opts_.height + "px";

		// Zoom Control -->
		zoomControl = true;

		if(this.Opts_.control == 'small')
			zoomControlStyle = google.maps.ZoomControlStyle.SMALL;

		if(this.Opts_.control == 'large')
			zoomControlStyle = google.maps.ZoomControlStyle.LARGE;

		if(!this.Opts_.control)
		{
			zoomControl = false;
			zoomControlStyle = google.maps.ZoomControlStyle.SMALL;
		}
		// end - Zoom Control -->

		var mapOpt = {
			zoom				: this.Opts_.zoom,
			center				: new google.maps.LatLng(this.Opts_.lat, this.Opts_.lng),
			mapTypeId			: google.maps.MapTypeId.ROADMAP,
			panControl			: true,
			zoomControl			: zoomControl,
			zoomControlOptions	: {
				style				: zoomControlStyle
			},
			mapTypeControl		: false,
			scaleControl		: false,
			streetViewControl	: false,
			overviewMapControl	: false
		}

		this.map = new google.maps.Map(this.Obj_, mapOpt);
		this.bounds = new google.maps.LatLngBounds();
	}
}

MRJ_map.prototype.setIcon = function(Opts)
{
	if(Opts.image)
	{
		this.icon = new google.maps.MarkerImage(Opts.image);
		
		if(Opts.imageSize)
			this.icon.Size = new google.maps.Size(Opts.imageSize.width, Opts.imageSize.height);
			
		if(Opts.imagePoint)
			this.icon.Point = new google.maps.Point(Opts.imagePoint.width, Opts.imagePoint.height);
	}
	
	if(Opts.shadow)
	{
		this.shadow = new google.maps.MarkerImage(Opts.shadow);
		
		if(Opts.shadowSize)
			this.shadow.Size = new google.maps.Size(Opts.shadowSize.width, Opts.shadowSize.height);
		
		if(Opts.shadowPoint)
			this.shadow.Point = new google.maps.Point(Opts.shadowPoint.width, Opts.shadowPoint.height);
	}
}

MRJ_map.prototype.setPoint = function(Opts)
{
	var point = new Array();
	var marker = new Array();
	var Latlng = new google.maps.LatLng(Opts.lat, Opts.lng);
	
	if(!Opts.drag)
		Opts.drag = false;
	
	marker[Opts.lng + Opts.lat] = new google.maps.Marker({
		position	: Latlng,
		icon		: this.icon,
		shadow		: this.shadow,
		map			: this.map
	});
	
	if(Opts.icon)
		marker[Opts.lng + Opts.lat].icon = Opts.icon;
	
	marker[Opts.lng + Opts.lat].draggable = Opts.drag;
	
	google.maps.event.addListener(marker[Opts.lng + Opts.lat], 'click', function(){
		if(mrj_googleInfoWindow)
			mrj_googleInfoWindow.close();
		
		mrj_googleInfoWindow = new google.maps.InfoWindow({
			content	: "<div class='gMessage'>" + Opts.msg + "</div>"
		});
		
		mrj_googleInfoWindow.open(this.map, marker[Opts.lng + Opts.lat]);
	});
	
	google.maps.event.addListener(marker[Opts.lng + Opts.lat], 'dragend', function(){
		var map = new MRJ_map();
		map.setLatLng(marker[Opts.lng + Opts.lat].getPosition());
	});
	
	if(Opts.bounds)
	{
		this.bounds.extend(Latlng);
		this.map.fitBounds(this.bounds);
		
	} else {
		
		this.map.setCenter(Latlng);
		this.map.zoom = 12;
	}
	
	this.setLatLng(Latlng);
}

MRJ_map.prototype.getCenter = function()
{
	return this.map.getCenter();
}

MRJ_map.prototype.setLatLng = function(Obj)
{
	if(document.getElementById('lat') && document.getElementById('lng'))
	{
		document.getElementById('lat').value = Obj.lat();
		document.getElementById('lng').value = Obj.lng();
	}
}
