$(window).unload(function() { GUnload();});
/* 
 * Buscar Viaje A-Dedo.cl
 */
var mapd;
var maph;
var geo = new GClientGeocoder();
var pmarker = [];

$(document).ready(function(){
	_loadExtendedInputs(); //Gerardo: Cargar extendedInputs antes que estos cambios
	$("#search_bar input.route").focus(function(){
		var input_name = $(this).attr('name');
		if ( $('#'+input_name+"_map").is(':hidden') ){
			$('#'+input_name+"_map").slideDown();
			if( typeof(mapd) != 'object' || typeof(maph) != 'object' ){
				start_map (input_name)
			}
		}
		$('#tooltip').remove();
		if( $(this).val() != ''){ $(this).keyup(); }						
	});
	
	if( $('#search_bar').hasClass('showmap') ){
		$('#search_bar input#p-hasta').focus();
        /* Gerardo: es necesario llamar a blur explicitamente,
         * sino el extendedInputs no ejecuta los cambios de clases correctamente*/
        $('#search_bar input#p-hasta').blur();
		$('#search_bar input#p-desde').focus();
	}
	/* ocultar-mapa */
	$('#desde_map a.hide, #hasta_map a.hide').click(function(){ $(this).parent().slideUp(); });
	/* /abrir-mapa */
	
	$('#search_result .frecuence a').click(function(){
		var frecuence = $(this).attr('id').replace('trip-','');
		if( frecuence == 'all' ){
			$('#search_result .trip').show();
		} else {
			$('#search_result .trip').css('display','none');
			$('#search_result .trip.'+frecuence).show();
		}
	});
	
	$('#search_bar input.route').keyup(function(event){
        if($(this).attr("emptyValue")==$(this).val()) return; //Gerardo: no buscar si esta con emptyvalue
		var input = $(this).attr('name');
		if (input == 'desde') { var map = mapd; var sicon = startIcon; } else if (input == 'hasta') { var map = maph; var sicon = stopIcon; }
		var addresses = $(this).val()+ ' Chile';
		if ( $(this).val().length > 2 ){
			geo.getLatLng(addresses,
			function(point) {
				removeMarker (map,input);
				if (!point) {
				//alert($(this).val() + " not found");
					$("div#"+input+"_map .log_result").html('<b>No Encontrado</b>');
					$("input#lat-"+input).val('');
					$("input#lng-"+input).val('');
				} else {
					$("div#"+input+"_map .log_result").html('');
					$("input#lat-"+input).val(point.lat());
					$("input#lng-"+input).val(point.lng());
					map.setCenter(point);
					removeMarker (map,input);
					pmarker[input] = new GMarker(point,{draggable: true, icon: sicon });
					GEvent.addListener(pmarker[input], "dragend", function(pmark) { dragEndmarker(pmark,input); });
					map.addOverlay(pmarker[input]);
				}
			});
		}
	});
	
	$('input.route').tooltip({ title: 'Ej: Av. Pedro de Valdivia, Santiago', addclass: 'tip', showon: 'fixed', posY: -5 });
	
	$('div#submitbutton.submit').click(function(){
		/*$('#TripDistance').val(point_distance());
		$('#search_route').submit();*/
		//alert('click');
	});
	
	$('.advance').toggle(function(){
		$(this).addClass('open');
		$('#advancesearch').slideDown();
	}, function(){
		$(this).removeClass('open');
		$('#advancesearch').slideUp();
	});

	/* Enviar Solicitud */
    /* Gerardo: Match por id, en vez de arbol de clases y tags */
	$('a#send_solicitud').click(function(){
		var ids = $(this).attr('name').replace('trip-','').split(':');
		var id_trip = ids[0];
		var id_user = ids[1];
		$('#boxhelp_content').html('<center>Cargando</center>');
		$.ajax({
			type: "GET",
			url: base_url+"viajes/ajax_send_request/"+id_trip+"/"+id_user,
			success: function(msg){
					$('#boxhelp_content').html(msg)
			}
		});
		var offset = $(this).offset();
		var left = Math.round(offset.left)-150;
		var top = Math.round(offset.top)-100;
		$('#ajax_boxhelp').css('left',left+'px').css('top',top+'px').css('margin','0').fadeIn();
		$('#ajax_boxgray').animate({opacity: 0.7}, 100 ).css('display','block').height($('body').height()+40);
		//alert( "left: " +  + ", top: " + Math.round(offset.top) )
	});
	
	$("#advancesearch .dateselect span input.date_input")
		.datepicker({
			showOn: 'button', 
			buttonImage: base_url+'/img/site/calendar.gif', 
			buttonImageOnly: true,
			minDate: -1,
			dateFormat: 'dd/mm/yy',
			onClose: function(date) {
				var date_exp = date.split('/');
				if( $(this).hasClass('MaxDate') ){
					var input = 'MaxDate';					
				} else {
					var input = 'MinDate';	
				}
				$("#Trip"+input+"Day").val(date_exp[0]);
				$("#Trip"+input+"Month").val(date_exp[1]);
				$("#Trip"+input+"Year").val(date_exp[2]);
			}
	});
});

function start_map (type){
	var setmap = false;
	if (GBrowserIsCompatible()){
		if (type == 'desde') {
			if (typeof(mapd) != 'object') {
				mapd = new GMap2(document.getElementById("desde_maproute"));
				var map = mapd;
				setmap = true;
			}
		} else if (type == 'hasta') {
			if (typeof(maph) != 'object') {
				maph = new GMap2(document.getElementById("hasta_maproute"));
				var map = maph;
				setmap = true;
			}
		}
		if( setmap ){
			map.addControl(new GSmallMapControl());
			map.setCenter(new GLatLng(-33.4431731, -70.6064773), 12);
			map.enableScrollWheelZoom();
			GEvent.addListener(map, "click", function(overlay,point){
				if ( typeof(point) == 'object')	{
					add_PsendL (point,type);
				}		
			});
			var xml_limit = getSquare(map);
			getXMLpub(map,xml_limit);		
			addPubtoMap(map);
			
		}				
	}
}

function add_PsendL(point,input){
	
	if (input == 'desde') { var map = mapd; var sicon = startIcon; } else if (input == 'hasta') { var map = maph; var sicon = stopIcon; }
	
	geo.getLocations(point, function(dir) {
			if(dir.Status.code != 200) {
				$("div#"+input+"_map .log_result").html("Sin Dirección en: " + point.toUrlValue());
			} else {
				$("div#"+input+"_map .log_result").html('');
				removeMarker (map,input);
				pdir = dir.Placemark[0];
				var location = pdir.address;						
				$("input#p-"+input).val(location);

                /* Gerardo: remover CSS empty */
                    if($("input#p-"+input).hasClass("empty")) $("input#p-"+input).removeClass("empty");

				$("input#lat-"+input).val(point.lat());
				$("input#lng-"+input).val(point.lng());
				pmarker[input] = new GMarker(point,{draggable: true, icon: sicon});
				GEvent.addListener(pmarker[input], "dragend", function(pmark) { dragEndmarker(pmark,input); });
				map.addOverlay(pmarker[input]);
				
				map.setCenter(point,map.getZoom());
			}
		});
}

function dragEndmarker (ll,input){
	if (input == 'desde') { var map = mapd; } else if (input == 'hasta') { var map = maph; }
	geo.getLocations(ll, function(addresses) {
		//map.clearOverlays();
		if(addresses.Status.code != 200) {
			$("div#"+input+"_map .log_result").html("Sin Dirección en: " + ll.toUrlValue());
			$("input#lat-"+input).val('');
			$("input#lng-"+input).val('');
		} else {
			$("div#"+input+"_map .log_result").html('');				
			address = addresses.Placemark[0];
			var location = address.address;						
			$("input#p-"+input).val(location);
			$("input#lat-"+input).val(ll.lat());
			$("input#lng-"+input).val(ll.lng());
			//map.setCenter(ll,map.getZoom());
		}
	});
}

/* distancia-entre-puntos */
function toRad(num) { // convert degrees to radians
	return num * Math.PI / 180;
}
function point_distance(){
	
	// Latitud/Longitud
	var sLat = $('input#lat-desde').val();
	var sLng = $('input#lng-desde').val();
	var eLat = $('input#lat-hasta').val();
	var eLng = $('input#lng-hasta').val();	
	
	var dLatr = toRad(eLat-sLat);
	var dLonr = toRad(eLng-sLng);
	
	var R = 6371; // km
	var dLat = dLatr;
	var dLon = dLonr;
	var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
	        Math.cos(toRad(sLat)) * Math.cos(toRad(eLat)) *
	        Math.sin(dLon/2) * Math.sin(dLon/2);
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
	var d = R * c;
	
	return d;
}

function removeMarker (map,input){
	if( typeof(pmarker[input]) == 'object' ){
		map.removeOverlay(pmarker[input]);
	}
}
/* /distancia-entre-puntos */