//

var placemark;
google.load("earth", "1");
google.load("maps", "2.99");  // For JS geocoder

var ge = null;
var geocoder;


function init() {
    
    //
    var content = document.getElementById('content');
    var inputHTML = '<input id="location" type="text" size="38" value="Philippines, Davao"/>';
    inputHTML += '<input type="button" onclick="buttonClick()" value="Search Location!"/>'

    var defUrl = 'http://www.greppoo.com/kmlfiles/red.kml';
    //    inputHTML += '<input type="text" id="kml-url" size="50" ' + 'value="' + defUrl + '"/>';
    inputHTML += '<input type="submit" onclick="fetchKmlFromInput()" value="Show Farmers Location!"/>';
    inputHTML += '<input type="button" value="Show Terrain" onclick="showTerrain()" />' +
        '<input type="button" value="Hide Terrain" onclick="hideTerrain()" />';
    content.innerHTML = inputHTML;
    
    geocoder = new GClientGeocoder();
    google.earth.createInstance("map3d", initCB, failureCB);
}

function initCB(object) {
    ge = object;
    ge.getWindow().setVisibility(true);
                
    // add a navigation control
    ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
    // add some layers
    ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
    ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);
   
    // create the placemark
    placemark = ge.createPlacemark('');
    
    var point = ge.createPoint('');
    point.setLatitude(37);
    point.setLongitude(-122);
    placemark.setGeometry(point);
    
    // add the placemark to the earth DOM
    ge.getFeatures().appendChild(placemark);
    
    // look at the placemark we created
    var la = ge.createLookAt('');
    la.set(37, -122,
    0, // altitude
    ge.ALTITUDE_RELATIVE_TO_GROUND,
    0, // heading
    0, // straight-down tilt
    5000 // range (inverse of zoom)
);
    ge.getView().setAbstractView(la);
    // Fly to the Grand Canyon
    var la = ge.createLookAt('');
    la.set(7.082773333333333, 125.61083333333333, 0, ge.ALTITUDE_RELATIVE_TO_GROUND,
    0, 60, 20000);
    ge.getView().setAbstractView(la);
}

function failureCB(object) {
    alert('load failed');
}

function submitLocation() {
    var address = document.getElementById('address').value;
    geocoder.getLatLng(
    address, 
    function(point) {
        if (point && ge != null) {
            var la = ge.createLookAt('');     
            la.set(point.y, point.x, 100, ge.ALTITUDE_RELATIVE_TO_GROUND, 
            0, 0, 4000);
            ge.getView().setAbstractView(la);
        }
    }
);
}

function buttonClick() {
    var geocodeLocation = document.getElementById('location').value;
    
    var geocoder = new google.maps.ClientGeocoder();
    geocoder.getLatLng(geocodeLocation, function(point) {
        if (point) {
            var lookAt = ge.createLookAt('');
            lookAt.set(point.y, point.x, 10, ge.ALTITUDE_RELATIVE_TO_GROUND,
            0, 60, 20000);
            ge.getView().setAbstractView(lookAt);
        }
    });
}
function hideTerrain() {
    var layerRoot = ge.getLayerRoot();
    var terrainLayer = layerRoot.getLayerById(ge.LAYER_TERRAIN);
    terrainLayer.setVisibility(false);
    
    // shortcut:
    // layerRoot.enableLayerById(ge.LAYER_TERRAIN, false);
}
function showTerrain() {
    var layerRoot = ge.getLayerRoot();
    var terrainLayer = layerRoot.getLayerById(ge.LAYER_TERRAIN);
    terrainLayer.setVisibility(true);
    
    // shortcut:
    // layerRoot.enableLayerById(ge.LAYER_TERRAIN, true);
}
            
function showBuildings() {
    ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true);
    
    setTimeout(function() {
        var la = ge.createLookAt('');
        la.set(7.082773333333333, 125.61083333333333, 0, ge.ALTITUDE_RELATIVE_TO_GROUND,
        180, 50, 1000);
        ge.getView().setAbstractView(la);
    }, 10000);
}
    
function hideBuildings() {
    ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, false);
}
    
function alertBuildingsVisible() {
    alert(getInheritedVisibility(
    ge.getLayerRoot().getLayerById(ge.LAYER_BUILDINGS)) ?
        'Buildings are visible' : 'Buildings are NOT visible');
}
    
function getInheritedVisibility(layer) {
    if (layer.getVisibility() == false) {
        return false;
    } else {
        var parent = layer.getParentNode();
        if (!parent)
            return true;
    
        return getInheritedVisibility(parent);
    }
}
            
var currentKmlObject = null;
    
function fetchKmlFromInput() {
    // remove the old KML object if it exists
    if (currentKmlObject) {
        ge.getFeatures().removeChild(currentKmlObject);
        currentKmlObject = null;
    }
    var defUrl = 'http://www.greppoo.com/kmlfiles/greppooincfarmers.kml';
   
    //    var kmlUrlBox = document.getElementsByTagName(defUrl);
    //    var kmlUrl = kmlUrlBox.value;
    
    google.earth.fetchKml(ge, defUrl, finishFetchKml);
}
    
function finishFetchKml(kmlObject) {
    // check if the KML was fetched properly
    if (kmlObject) {
        // add the fetched KML to Earth
        currentKmlObject = kmlObject;
        ge.getFeatures().appendChild(currentKmlObject);
    } else {
        alert('Bad KML');
    }
}


