/**
 * jQuery gMap
 *
 * @url		http://gmap.nurtext.de/
 * @author	Cedric Kastner <cedric@nur-text.de>
 * @version	1.0.0
 */
(function($)
{
	$.fn.gMap = function(options)
	{
		if (!window.GBrowserIsCompatible || !GBrowserIsCompatible()) return this;
		
		var opts = $.extend({}, $.fn.gMap.defaults, options);
    
		return this.each(function()
		{
			gmap = new GMap2(this);
			
			if (!opts.latitude && !opts.longitude)
			{
				if (is_array(opts.markers) && opts.markers.length >= 1)
				{
					opts.latitude  =  opts.markers[0].latitude;
					opts.longitude =  opts.markers[0].longitude;
				}
				else
				{
					opts.latitude = 34.885931;
					opts.longitude = 9.84375;
					opts.zoom = 2;
				}
				
			}
			
			gmap.setCenter(new GLatLng(opts.latitude, opts.longitude), opts.zoom);
			
			if (opts.controls.length == 0)
			{
				gmap.setUIToDefault();
			}
			else
			{
				for (var i = 0; i < opts.controls.length; i++)
				{
					eval('gmap.addControl(new ' + opts.controls[i] + '());');
					
				}
				
			}
						
			if (opts.scrollwheel == true && opts.controls.length != 0) { gmap.enableScrollWheelZoom(); }
			
			gicon = new GIcon();
			gicon.image = opts.icon.image;
			gicon.shadow = opts.icon.shadow
			
			gicon.iconSize = (is_array(opts.icon.iconsize)) ? new GSize(opts.icon.iconsize[0], opts.icon.iconsize[1]) : opts.icon.iconsize;
			gicon.shadowSize = (is_array(opts.icon.shadowsize)) ? new GSize(opts.icon.shadowsize[0], opts.icon.shadowsize[1]) : opts.icon.shadowsize;
			gicon.iconAnchor = (is_array(opts.icon.iconanchor)) ? new GPoint(opts.icon.iconanchor[0], opts.icon.iconanchor[1]) : opts.icon.iconanchor;
			gicon.infoWindowAnchor = (is_array(opts.icon.infowindowanchor)) ? new GPoint(opts.icon.infowindowanchor[0], opts.icon.infowindowanchor[1]) : opts.icon.infowindowanchor;
			
			for (var i = 0; i < opts.markers.length; i++)
			{
				var marker = opts.markers[i];
				
				var gmarker = new GMarker(new GPoint(marker.longitude, marker.latitude), gicon);
				
				if (marker.html)
				{
					GEvent.addListener(gmarker, "click", function()
					{
						gmarker.openInfoWindowHtml('<div class="gmap_marker">' + marker.html + '</div>');
					});
					
					if (gmarker) { gmap.addOverlay(gmarker); }
					if (marker.popup == true) { gmarker.openInfoWindowHtml('<div class="gmap_marker">' + marker.html + '</div>'); }
					
				}
				else
				{
					if (gmarker) { gmap.addOverlay(gmarker); }
				}
				
			}
			
		});
	};
	
	function is_array(input)
	{
		return typeof(input) == 'object' && (input instanceof Array);
  	}
	
	$.fn.gMap.defaults =
	{
		latitude:				0,
		longitude:				0,
		zoom:					16,
		markers:				[],
		controls:				[],
		scrollwheel:			true,
		icon:
		{
			image:				"/imagens/marker.png",
			shadow:				"/imagens/shadow50.png",
			iconsize:			[20, 34],
			shadowsize:			[37, 34],
			iconanchor:			[9, 34],
			infowindowanchor:	[9, 2]
		}
	};
	
})(jQuery);