var ge;
google.load("earth", "1");
var appPath = document.location.href.replace(/\/[^\/]*$/, '/');


function init()
	{
	google.earth.createInstance('3dmap', initCB, failureCB);
	}

function initCB(instance)
	{
	ge = instance;
	ge.getWindow().setVisibility(true);

	// add a navigation control
	ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

	// add some layers
	ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, false);
	ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, false);
	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true);
	
	// get data
	createNetworkLink()
	//var url = 'http://www.ibano.net/ge/bcn.kml';
	//google.earth.fetchKml(ge, url, finished);
	
	createScreenOverlayButton(5, 5, 127, 40); // x, y, width, height
	
	}

function failureCB(errorCode)
	{
	}

function createNetworkLink()
	{
	var networkLink = ge.createNetworkLink("");
	networkLink.setDescription("Air Traffic 3D view");
	networkLink.setName("Air Traffic");
	networkLink.setFlyToView(true);

	// create a Link object
	var link = ge.createLink("");
	link.setHref("http://www.ibano.net/ge/bcn.kml");
	
	// attach the Link to the NetworkLink
	networkLink.setLink(link);

	// add the NetworkLink feature to Earth
	ge.getFeatures().appendChild(networkLink);
	
	var la = ge.createLookAt('');
	la.set(37.77976, -122.418307, 25, ge.ALTITUDE_RELATIVE_TO_GROUND, 180, 60, 500);
  	ge.getView().setAbstractView(la); 
	}

function finished(object) {
  if (!object) {
    // wrap alerts in API callbacks and event handlers
    // in a setTimeout to prevent deadlock in some browsers
    setTimeout(function() {
      alert('Bad or null KML.');
    }, 0);
    return;
  }
  //ge.getFeatures().appendChild(object);
  //var la = ge.createLookAt('');
  //la.set(37.77976, -122.418307, 25, ge.ALTITUDE_RELATIVE_TO_GROUND, 
  //       180, 60, 500);
  //ge.getView().setAbstractView(la);    
  
  // change tilt
  var la = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);	
  la.setTilt(30);
  ge.getView().setAbstractView(la);
  
}

/**
 * Create a custom button using screen overlays
 * at the given x, y offset from the top left of the plugin container.
 */
function createScreenOverlayButton(x, y, width, height) 
	{
  	var _addOverlayForState = function(suffix, drawOrder, visible) 
  		{
		// Create the loading overlay.
		var icon = ge.createIcon('');
		//icon.setHref(appPath + 'logo.png');
		icon.setHref('http://www.ibano.net/ge/logo.png');

		var overlay = ge.createScreenOverlay('');
		overlay.setDrawOrder(drawOrder || 0);
		overlay.setVisibility(visible || false);
		overlay.setIcon(icon);
		overlay.getOverlayXY().set(x, ge.UNITS_PIXELS, y, ge.UNITS_INSET_PIXELS);
		overlay.getScreenXY().set(0, ge.UNITS_FRACTION, 1, ge.UNITS_FRACTION);
		overlay.getSize().set(width, ge.UNITS_PIXELS, height, ge.UNITS_PIXELS);
		ge.getFeatures().appendChild(overlay);

		return overlay;
  		};
  	var overlayReg = _addOverlayForState('', 1, true);
  	var overlayHover = _addOverlayForState('_hover', 2, false);
  	var overlayDown = _addOverlayForState('_down', 3, false);
  
  	var _setState = function(state) 
  		{
    		overlayHover.setVisibility(state == 'hover');
    		overlayDown.setVisibility(state == 'down');
  		};
  
  	// NOTE: if you have many screen overlay controls, you should collapse
  	// this code down to one listener per event to handle all controls.
  
  	var _isMouseOnButton = function(mx, my) 
  		{
    		return x <= mx && mx <= x + width &&
           	y <= my && my <= y + height;
  		};
  
  	var buttonDown = false;
  
  	google.earth.addEventListener(ge.getWindow(), 'mousedown', function(evt) 
  		{
    		if (evt.getButton() != 0) // left click
      		return;
    
    		if (_isMouseOnButton(evt.getClientX(), evt.getClientY())) 
    			{
      			buttonDown = true;
      			_setState('down');
      			event.preventDefault();
      			return false;
    			}
  		});

	  google.earth.addEventListener(ge.getWindow(), 'mousemove', function(evt) {
	    if (_isMouseOnButton(evt.getClientX(), evt.getClientY())) {
	      _setState(buttonDown ? 'down' : 'hover');
	    } else {
	      _setState(buttonDown ? 'hover' : '');
	    }

	    if (buttonDown) {
	      event.preventDefault();
	      return false;
	    }
	  });

	  google.earth.addEventListener(ge.getWindow(), 'mouseup', function(evt) {
	    if (buttonDown) {
	      buttonDown = false;
	      _setState(_isMouseOnButton(evt.getClientX(), evt.getClientY()) ?
		  'hover' : '');
	      event.preventDefault();
	      return false;
	    }
	  });

	  google.earth.addEventListener(ge.getWindow(), 'click', function(evt) {
	    if (evt.getButton() === 0 &&
		_isMouseOnButton(evt.getClientX(), evt.getClientY())) {
	      //window.open("http://www.anotecc.com")
	      if (confirm('Un desarrollo de Anotec Consulting 2009\n\n        http://www.anotecc.com\n\nDesea visitar nuestra web? (en una ventana nueva)'))
	      {window.open("http://www.anotecc.com");}
	      buttonDown = false;
	    }
	  });
	}



google.setOnLoadCallback(init);