/**
* probando probando
*Variables goblales del script.
*
**/
var map = null; //el mapa
var geo = null; //el objeto Geocode
var mar = null; //el marcador
var dire = null; // string de la direccion
var par = null; // partido
var pro = null; //provincia
var loc = null; //localidad
var pai = 'Argentina'; //pais
var zoom = 15;  //zoom por defecto para los mapas


function creaMapa(){
    map = new GMap2(document.getElementById('divmaps'));
    map.setUIToDefault();
    map.setMapType(G_HYBRID_MAP);
    map.enableContinuousZoom();
    map.disableScrollWheelZoom();
}
/**
cargarPorPrimeraVez(num, lat, lon)

num = tipo de carga
lat = latitud (cuando num es 2)
lon = longitud (cuando num es 2)

Si se pasa num == 1, en cuanto se carga la página para crear el mapa,
configurarlo y buscar Argentina, en general.

Si se le pasa num == 2 junto con la latitud y la longitud,
(El caso del perfil del agente de viajes) se pone el marcador
en la latitud y longitud dada.
**/
function cargarPorPrimeraVez(num,lat,lon){
    if (GBrowserIsCompatible()) {
        creaMapa();
        if (num == 1) { //para el formulario de registro
            buscaDireccion(4);
        } else if (num == 2) { //para el perfil del usuario
            ponerMarcadorAlInicio(lat,lon);
        } else {
    //no contemplado.
    }
    }
}

/**
asignarCamposHidden()

Esta función le pide al marcador del mapa que diga cuál es su longitud
y su latitud y la inserte en los campos 'hidden' llamados de la misma manera.

Se llama a esta función cuando se crea el marcador y se pone en el mapa.
También cada vez que se coge y se suelta el marcador en algún punto, (evento "dragend").
**/
function asignarCamposHidden(){
    document.getElementById('latitud').value=mar.getLatLng().lat();
    document.getElementById('longitud').value=mar.getLatLng().lng();
}

/**
cargar(partido, localidad, provincia)

Se controlan algunos casos de selección de los elementos select.
Y se busca la dirección para cargarla en el mapa.
**/
function cargar(partido,localidad,provincia){
    pro = provincia;
    par = partido;
    loc = localidad;
    if (provincia.toLowerCase().indexOf ('gba') != -1) {
        pro = 'Buenos Aires';
    }
    if (localidad.toLowerCase().indexOf ('seleccione') != -1) {
        loc = ' ';
    }
    if (partido.toLowerCase().indexOf ('capital') != -1){
        par = pro;
    }
    if (GBrowserIsCompatible()) {
        buscaDireccion(1);
    }
}

/**
buscaDireccion(num)

Según el número que se le pase a esta función hace la búsqueda más precisa.
De mayor a menor hasta encontrar un punto GPS válido.

num 1 = partido, localidad, provincia, pais.
num 2 = partido, provincia, pais.
num 3 = provincia, pais.
num 4 = pais.

A partir de una dirección (string) se genera un punto en coordenadas GPS
a través del objeto Geocoder.

Después se llama al método ponerMarcador(point, num, zoom)
**/
function buscaDireccion(num){
    geo = new GClientGeocoder();
    switch (num) {
        case 1:
            dire = par +', '+loc+', '+pro+', '+ pai;
            geo.getLatLng( dire , function(point) {
                ponerMarcador(point,num,zoom)
            });
            break;
        case 2:
            dire = par +', '+pro+', '+ pai;
            geo.getLatLng( dire , function(point) {
                ponerMarcador(point,num,zoom)
            });
            break;
        case 3:
            dire = pro+', '+pai;
            geo.getLatLng( dire , function(point) {
                ponerMarcador(point,num,zoom)
            });
            break;
        case 4:
            dire = pai;
            geo.getLatLng( dire , function(point){
                ponerMarcador(point,num,5)
            });
            break;
    }
}
/**
ponerMarcador(puntoMapa, numBusqueda, zoomMapa)

	puntoMapa = Es un objeto GPoint que contiene coordenadas GPS.
	numBusqueda = Entero que establece la precisión de la búsqueda.
	zoomMapa = Zoom por defecto de los mapas.

Esta funcion crea el marcador y lo pone en el mapa según el punto, la precision de busqueda (dada por el numBusqueda)
y el zoom del mapa que se desee.
Si GoogleMaps no encuentra el punto, se suma 1 al número y se llama a la función "buscaDireccion(num)"de nuevo.
En caso se que exista el punto, crea el marcador y se pone en ese punto.
**/
function ponerMarcador(puntoMapa,numBusqueda,zoomMapa) {
    if (!puntoMapa) {
        if (numBusqueda < 4) {
            buscaDireccion(numBusqueda + 1);
        } else {
            alert('ERROR - Intentelo de nuevo en unos miuntos');
        }
    } else {
        map.setCenter(puntoMapa, zoomMapa);
        if (!mar) {
            mar = new GMarker(puntoMapa, {
                draggable: true
            });
            GEvent.addListener(mar, "dragend", function() {
                asignarCamposHidden();
            });
            map.addOverlay(mar);
        } else {
            mar.setLatLng(puntoMapa);
        }
        asignarCamposHidden();
    }
}
/**
 * ponerMarcadorAlInicio(lat,lon)

 * latitud y longitud se pasan como valores enteros.
 * Crear (en caso de que no exista) y poner el marcador en el mapa según la latitud y la longitud que se le pase
 * como parámetro.
 * */
function ponerMarcadorAlInicio(lat, lon) {
    var p = new GLatLng((lat/1000000),(lon/1000000));
    map.setCenter(p,zoom);
    if (!mar) {
        mar = new GMarker(p, {
            draggable: true
        });
        GEvent.addListener(mar, "dragend", function() {
            asignarCamposHidden();
        });
        map.addOverlay(mar);
    } else {
        mar.setLatLng(p);
    }
    asignarCamposHidden();
}


