var map = null;
var geocoder = null;
var marker = null;
var pointDefecto = new GLatLng(40, -4, false);


function comprobarCoordenadas(point){
    var resultado = true;
    if(point.y > 71.500 | point.y < -35.000 | point.x > 60.000 | (point.x > 45.000 & point.y > 37.500) | point.x < -25.500 ){
        resultado = false;
    }
    return resultado;
}

function mostrarCoordenadas(point){
    var textoCoordenadas = document.getElementById('textoCoordenadas');
    textoCoordenadas.innerHTML=(Math.round(point.y*10000)/10000)+", "+(Math.round(point.x*10000)/10000);
    document.estimation.lat.value=point.y;
    document.estimation.lon.value=point.x;
}

function moverMarkerClick(overlay, point){
    if (point){
          if(!comprobarCoordenadas(point)){
            window.fueraCoordenadas("");
          }else{
            marker.setPoint(point);
            mostrarCoordenadas(point);
          }
     }
}

function markerDrag(point){
    var lat = point.y;
    var lng = point.x;
    if(lat > 71.500) lat = 71.500;
    if(lat < -35.000) lat = -35.000;
    if(lng > 60.000) lng = 60.000;
    if(lng > 45.000 & lat > 37.500) lng = 45.000;
    if(lng < -25.500) lng = -25.500;

    var pointDrag = new GLatLng(lat, lng, false);
    marker.setPoint(pointDrag);
    mostrarCoordenadas(pointDrag);
}

function buscarDireccion(address) {
    if (geocoder) {
        geocoder.getLatLng(
            address,
            function(point) {
                if (!point) {
                    window.noEncuentra(address);
                } else {
                    if(!comprobarCoordenadas(point)){
                        window.fueraCoordenadas(address);
                    }else{
                        map.setCenter(point, 13);
                        marker.setPoint(point);
                        mostrarCoordenadas(point);
                    }
                }
            }
        );
    }
}

function load() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"), {draggableCursor:"pointer"});
        map.setCenter(new GLatLng(40,-4), 3);
        map.addControl(new GLargeMapControl());
        map.enableScrollWheelZoom();

        geocoder = new GClientGeocoder();

        mostrarCoordenadas(pointDefecto);
        marker = new GMarker(pointDefecto, {draggable: true});

        GEvent.addListener(map, "click", moverMarkerClick);
        GEvent.addListener(marker, "drag", markerDrag);
        //GEvent.addListener(marker, "dragend", moverMarkerDrag);

        map.addOverlay(marker);
    }
}

function checkboxUno(checked, id){
    document.getElementById(id).disabled=checked;
}

function checkboxDos(){
    var checked = document.getElementById("optimalvalues").checked;
    var optimalInclination = document.getElementById("optimalinclination");
    checkboxUno(checked, "angle");
    checkboxUno(checked, "aspect");

    if(checked){
        optimalInclination.checked = false;
        optimalInclination.disabled = true;
    }else{
        optimalInclination.disabled = false;
    }
}

function checkboxTres(checked, id1, id2){
    checkboxUno(!checked, id2);

    if(checked){
        if(document.getElementById(id2).checked == false)
            checkboxUno(false, id1);
    }else
        checkboxUno(true, id1);
}