/*
 * jQuery projeteMap
 * Copyright (c) 2011 Projete Web
 * Version: 1.00 (28-SET-2011)
 * Requires: jQuery v1.6.4 or later
*/
(function($){
	
	var ver = '1.00';	
	
	$.fn.projeteMap = function(options) {
		
		$.fn.projeteMap.ver = function() { return ver; };
		
		// Valores defaults
		$.fn.projeteMap.defaults = {
				lat:	'-19.741039',	// Latitude de destino
				lng:	'-47.926301',	// Longitude de destino
				form:	true,			// Cria form de traçar a rota
				textLabel:	'Endereço de partida', // Endereço de partida da rota
				textSubmit:	'Traçar', // Texto para o submit
				placeholder: true		// Faz placeholder com label e input[type="text"]
		};
		
		var opts = $.extend($.fn.projeteMap.defaults, options);
		
		
		
		return this.each(function() {			
			var directionsService = new google.maps.DirectionsService();
			var map;
			var geocoder;
			var myLatlng = new google.maps.LatLng(opts.lat,opts.lng);
			
			if (opts.form === true) {
				$(this).append('<form class="projete-map-form" action=""></form>');
				$('.projete-map-form', this).append('<dl class="projete-map-dl"></dl>');
				$('.projete-map-form .projete-map-dl', this).append('<dt><label class="projete-map-label" for="projete-map-input">'+opts.textLabel+'</label></dt>');
				$('.projete-map-form .projete-map-dl', this).append('<dd><input type="text" class="projete-map-input" id="projete-map-input" value="" /></dd>');
				$('.projete-map-form .projete-map-dl', this).append('<dd><input type="submit" class="projete-map-submit" id="projete-map-submit" value="'+opts.textSubmit+'" /></dd>');
				
				$('#projete-map-submit').button().css('fontSize', '85%')
				
				$('.projete-map-form', this).submit(function(e) {
					e.preventDefault();
					if ($('#projete-map-input').val().length < 5 || $('#projete-map-input').val() == 'Endereço') {
						$('#dialogs').text('Sua busca deve conter pelo menos 5 caracteres!').dialog({
							title: 'Atenção',
							modal: true,
							resizable: false,
							buttons: {
								Ok: function() {
									$(this).dialog('close');
									$('#projete-map-input').focus();
								}
							}
						});
					} else {
					   	var request = {
					       origin: $('#projete-map-input').val(), 
					       destination:myLatlng,
					       travelMode: google.maps.DirectionsTravelMode.DRIVING
					   	};
					   	directionsService.route(request, function(response, status) {
					     if (status == google.maps.DirectionsStatus.OK) {
					       directionsDisplay.setDirections(response);
					     }
					   	});
					}
				});
			}			
			
			$(this).append('<div class="projete-map-mapa" id="projete-map-mapa"></div>');
			$(this).append('<div class="projete-map-direction" id="projete-map-direction"></div>');
			
			directionsDisplay = new google.maps.DirectionsRenderer();
		  	geocoder = new google.maps.Geocoder();		
		  	var myOptions = {
				zoom: 16,
				center: myLatlng,
				mapTypeControl: true,
				mapTypeId: google.maps.MapTypeId.ROADMAP
		  	};
		  	
		  	map = new google.maps.Map(document.getElementById("projete-map-mapa"), myOptions);
		  	
		  	var marker = new google.maps.Marker({
		        position: myLatlng, 
		        map: map
		    });
		  	
		  	directionsDisplay.setMap(map);
		  	directionsDisplay.setPanel(document.getElementById("projete-map-direction"));
			
		});
			
	};
	
})(jQuery);
