function GCamera() {
	var me = this;

	this.mapClick_ = function(event) {		
		if (event.getTarget().getType() == 'KmlPlacemark' && 
				event.getTarget().getSnippet() != '' &&
				event.getTarget().getSnippet() != 'yelp' &&
				event.getTarget().getGeometry().getType() == 'KmlPoint') {
			me.placemarkClick(event);
		}
	};
	
	if(ge) {
		google.earth.addEventListener(ge.getWindow(), 'mousedown', this.mapClick_);
	}

//	GEvent.addListener(map, "click", function(overlay, latlng, overlaylatlng) {
//		if(overlay != null) {
//			control.camera.markerClick(overlay, latlng, overlaylatlng);
//		}
//	});
}


GCamera.prototype.placemarkClick = function(event) {
	var point = event.getTarget().getGeometry();
	var lat = point.getLatitude();
	var lng = point.getLongitude();

	var camera = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
	var range = camera.getRange();
	var heading = camera.getHeading();
	var tilt = camera.getTilt();

	if(range > 100000) {
		ge.getOptions().setFlyToSpeed(0.5);
		range = (range/8);
		this.moveCamera(lat, lng, range, heading, tilt);
	} else {
		control.schoolResultsClick(lat, lng, event.getTarget().getSnippet());
	}
};

GCamera.prototype.markerClick = function(overlay, latlng, overlaylatlng) {
	if(map.getZoom() < 14) {
		map.zoomIn(overlaylatlng);
	} else {
		if(overlay.getTitle() == 'campusIcon') {
//			alert(overlay.getTitle);
			map.panTo(overlaylatlng);
			map.setZoom(16);
			// control.schoolProfile.changeAccordianPage('campus');
		} else if(overlay.getTitle() == 'yelp') {
		} else {
			control.schoolResultsClick(overlaylatlng.lat(), overlaylatlng.lng(), overlay.getTitle());
		}
	}
};

GCamera.prototype.campusClick = function(event, newLat, newLng, ipeds, name, description) {
	var lat;
	var lng;
	if(newLat == null && newLng == null) {
		var point = event.getTarget().getGeometry();
		lat = point.getLatitude();
		lng = point.getLongitude();
	} else {
		lat = newLat;
		lng = newLng;
	}

	// this.moveCamera(lat, lng, 200, 45, 45);
	
	var htmlContent = "<div style=\"float:left; width:350px; height:100%; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif; font-size:11px; color:#3f3f3f;\">"
					+ "		<div style=\"float:left; width:100%; margin-right:10px; margin-bottom:10px;\">"
					+ "			<div style=\"float:left; width:50px;\">"
					+ "				<div style=\"text-align:center;\">"
					+ "					<img src=\""+BASE_LOGO_URL+ipeds+'/logo.jpg'+"\" />" 
					+ "				</div>"
					+ "			</div>"
					+ "			<div style=\"float:left; width:300px; color:#9C544B;\">"
					+ "				<div style=\"float:left; padding-left:5px; padding-top:20px;\">"
					+ "					<div style=\"float:left; width:100%;\"><b>" + name + "</b></div>"
					+ "				</div>"
					+ "			</div>"
					+ "		</div>"
					+ "		<div style=\"float:left; width:100%; margin-bottom:10px;\">"
					+			description
					+ "		</div>"
					+ "		<div style=\"float:left; width:100%;\">"
					//+ "			<div style=\"float:left; width:40%; padding:0 10px 0 10px;\">"
					//+ "				<a href=\"\">School Website</a>"
					//+ "				<br />"
					//+ "				<a href=\"\">Download Application</a>"
					//+ "			</div>"
					+ "			<div style=\"float:left; width:100%; padding:0 10px 0 0px;\">"
					+ "				<span style=\"color:#9C544B;\">Are you a School?</span> <a style=\"color:#274B68;\" href=\"" + BASE_URL + "/forschools.php\">Claim your School</a>"
					+ "			</div>"
					+ "		</div>"
					+ "</div>";

	var point = new GLatLng(Number(lat), Number(lng));
	map.openInfoWindowHtml(point, htmlContent);
};

GCamera.prototype.moveCamera = function(lat, lng, pRange, pHeading, pTilt) {
	if (map.getCurrentMapType().getName() == 'Earth') {
		var camera;
		var range = pRange;
		var heading = pHeading;
		var tilt = pTilt;

		if(pRange == null || pHeading == null || pTilt == null) {
			camera = this._ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);

			if(pRange == null)
				range = camera.getRange();
			if(pHeading == null)
				heading = camera.getHeading();
			if(pTilt == null)
				tilt = camera.getTilt();
		}

		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);
	} else if(map.getCurrentMapType().getName() == 'Map' || map.getCurrentMapType().getName() == 'Hybrid') {
		map.setCenter(new google.maps.LatLng(Number(lat), Number(lng)), 17);
	}
};

GCamera.prototype.getMapType = function() {
	return map.getCurrentMapType().getName();
};

GCamera.prototype.getMapBounds = function() {
	var n;
	var s;
	var e;
	var w;
	
	if(map.getCurrentMapType().getName() == 'Earth') {
		var bbox = ge.getView().getViewportGlobeBounds();
		n = bbox.getNorth();
		s = bbox.getSouth();
		e  = bbox.getEast();
		w  = bbox.getWest();
	}
	else {
		var bbox = map.getBounds();
		n = bbox.getNorthEast().lat();
		s = bbox.getSouthWest().lat();
		e  = bbox.getNorthEast().lng();
		w  = bbox.getSouthWest().lng();
	}
	
	var bounds = {
			north: n,
			south: s,
			east: e,
			west: w
	}
	
	return bounds;
};

function spinCamera() {
	google.earth.addEventListener(ge.getView(), 'viewchangeend', circleCampus);
	google.earth.addEventListener(ge.getWindow(), "mousedown", removeSpin);
}

function circleCampus() {
	var camera = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
	var lat = camera.getLatitude();
	var lng = camera.getLongitude();
	var heading = camera.getHeading() + 90;
	var tilt = camera.getTilt() + 5;
	var range = camera.getRange() + 350;

	if(range > 2000) {
		removeSpin();
	}
	// alert(control.camera.moveCamera);
	control.camera.moveCamera(lat, lng, range, heading, tilt);
}

function removeSpin() {
	google.earth.removeEventListener(ge.getView(), 'viewchangeend', circleCampus);
	google.earth.removeEventListener(ge.getWindow(), "mousedown", removeSpin);
}


function ChangeMapTypeControl() {
}

ChangeMapTypeControl.prototype = new GMapTypeControl();

ChangeMapTypeControl.prototype.initialize = function(map) {
	var container = document.createElement("div");

	var normMapDiv = document.createElement("div");
	var hybrMapDiv = document.createElement("div");
	var geMapDiv = document.createElement("div");

	$(normMapDiv) //.html('<div style="width: 50px; height: 30px; background-color:#ccc;">Map</div>');
		.text("Map")
		.css({"width": "50px", "height": "20px", "background-color": "#ccc"});
	$(hybrMapDiv) //.html('<div style="width: 50px; height: 30px; background-color:#ccc;">Hybrid</div>');
		.text("Hybrid")
		.css({"width": "50px", "height": "20px", "background-color": "#ccc"});
	$(geMapDiv) //.html('<div style="width: 50px; height: 30px; background-color:#ccc;">Earth</div>');
		.text("Earth")
		.css({"width": "50px", "height": "20px", "background-color": "#ccc"});
	
	$(container).append(normMapDiv);
	GEvent.addDomListener(normMapDiv, "click", function() {
		map.setMapType(G_NORMAL_MAP);
	});

	$(container).append(hybrMapDiv);
	GEvent.addDomListener(hybrMapDiv, "click", function() {
		map.setMapType(G_HYBRID_MAP );
	});

	$(container).append(geMapDiv);
	GEvent.addDomListener(geMapDiv, "click", function() {
		map.setMapType(G_SATELLITE_3D_MAP);
	});
	
	map.getContainer().appendChild(container);
	return container;
};

ChangeMapTypeControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(7, 7));
};








