google.load("maps", "2");
google.load("search", "1");
google.load("feeds", "1");
google.load("earth", "1");

var map;
var ge;
var pageView;
var control;

function ws_earthInit(div, initView) {
	pageView = initView;
	google.earth.setLanguage('en');
	google.earth.createInstance(div, earthInitCallback, earthFailureCallback);
}

function earthInitCallback(pluginInstance) {
	ge = pluginInstance;
	ge.getWindow().setVisibility(true);

	ge.getNavigationControl().getScreenXY().setXUnits(ge.UNITS_INSET_PIXELS);
	ge.getNavigationControl().getScreenXY().setYUnits(ge.UNITS_INSET_PIXELS);

	// add some layers
	ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
	ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);
	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true);
	ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS_LOW_RESOLUTION, true);
	ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, true);

	// set flyto speed
	ge.getOptions().setFlyToSpeed(0.2);
	
	switch(pageView) {
	case 'athletes':
		moveCamera(41.848905, -95.907471, 5500000, 0, 45);
		control = new ws_Athletes();
		break;
	case 'being-there':
		moveCamera(49.2888, -123.1211, 3000, 0, 75);
		control = new ws_Being();
		break;
	case 'getting-there':
		moveCamera(48.222, -122.222, 280000, 300, 55);
		control = new ws_Getting();
		break;
	}
}

function earthFailureCallback(errorCode) {
}

function moveCamera(lat, lng, range, heading, tilt) {
	var camera;
	var temp_range = range;
	var temp_heading = heading;
	var temp_tilt = tilt;

	if(temp_range == null || temp_heading == null || temp_tilt == null) {
		camera = this._ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);

		if(temp_range == null)
			range = camera.getRange();
		if(temp_heading == null)
			heading = camera.getHeading();
		if(temp_tilt == null)
			tilt = camera.getTilt();
	}
	
	if(ge) {
		var la = ge.createLookAt('');
		la.set(Number(lat), Number(lng), 0, ge.ALTITUDE_RELATIVE_TO_GROUND, Number(heading), Number(tilt), Number(range));
		ge.getView().setAbstractView(la);
	}
}

function flyToVancouver() {
	moveCamera(49.2888, -123.1211, 3000, 0, 75);
}

function flyToWhistler() {
	moveCamera(50.115349, -122.959334, 3000, 150, 80);
}

function resetView() {
	moveCamera(41.848905, -95.907471, 5500000, 0, 45);
}



