 var map = null;
 var Location = new VELatLong(41.03493370228959, -77.058216552734378);
 var tile40SourceSpec = null;
 var tile70SourceSpec = null;
 var slFeature = new VEShapeLayer();
 var vislayer = "";
 var bounds = [new VELatLongRectangle(new VELatLong(42.4219556154,-80.7932189501),new VELatLong(39.531649072,-74.3575413164))];
 //var server = "ceiwin1.cei.psu.edu";
 var server = "www.pennpilot.psu.edu";
 //var server = "localhost:7000";
 var downX = null;
 var downY = null;

 function GetMap() {
    map = new VEMap('myMap');
    map.LoadMap(Location, 7, VEMapStyle.Road, false);
    // add pennpilot layers
    //AddTileLayers();
    // add map event handlers
    map.AttachEvent("onclick", RightClick);
    map.AttachEvent("onmousedown", MouseDown);
    map.AttachEvent("onmouseup", MouseUp);
 }
 
 function MouseDown(e) {
  	downX = e.mapX;
  	downY = e.mapY;
 }
  
 function MouseUp(e) {
   	var dx = Math.abs(e.mapX - downX);
   	var dy = Math.abs(e.mapY - downY);
   	if ((dx <= 2) && (dy <= 2)) {
   		 var x = e.mapX;
 		 var y = e.mapY;
 		 pixel = new VEPixel(x, y);
 		 var LL = map.PixelToLatLong(pixel);
 		 var Lat = LL.Latitude;
 		 var Lon = LL.Longitude;
 		 LoadKML(Lat, Lon);
   	}
   	// reset downX and downY
   	downX = null;
   	downY = null;
 }
 
 function OpenImage(imgPath) {
  	window.open(imgPath,"_new","width=900,height=750");
 }

 function AddTileLayers() {
    /*// add era 1940
    tile40SourceSpec = new VETileSourceSpecification('era1940',"http://" + server + "/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/webgis/pennpilot/points.map&layers=era1940&mode=tile&tilemode=ve&tile=%4");
    tile40SourceSpec.Bounds       = bounds;
    tile40SourceSpec.MinZoomLevel = 0;
    tile40SourceSpec.MaxZoomLevel = 19;
    tile40SourceSpec.Opacity      = 1;
    map.AddTileLayer(tile40SourceSpec);
    map.HideTileLayer('era1940');*/
    // add era 1970
    tile70SourceSpec = new VETileSourceSpecification('era1970',"http://" + server + "/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/webgis/pennpilot/points.map&layers=era1970&mode=tile&tilemode=ve&tile=%4");
		tile70SourceSpec.Bounds       = bounds;
		tile70SourceSpec.MinZoomLevel = 0;
		tile70SourceSpec.MaxZoomLevel = 19;
		tile70SourceSpec.Opacity      = 1;
		map.AddTileLayer(tile70SourceSpec);
    map.HideTileLayer('era1970');
    // add click event


 }

 function ShowTileLayer40() {
		// todo: modify to handle turning off any other tile
    // load the tile layer if needed
		if (tile40SourceSpec == null) {
			tile40SourceSpec = new VETileSourceSpecification('era1940',"http://" + server + "/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/webgis/pennpilot/points.map&layers=era1940&mode=tile&tilemode=ve&tile=%4");
			tile40SourceSpec.Bounds       = bounds;
			tile40SourceSpec.MinZoomLevel = 0;
			tile40SourceSpec.MaxZoomLevel = 19;
			tile40SourceSpec.Opacity      = 1;
			map.AddTileLayer(tile40SourceSpec);
		}

		// see if existing layer needs turned off
		HideExisting();

		// show 1940
		map.ShowTileLayer('era1940');

		// set vislayer = 1940
		vislayer = "era1940"
 } //ShowTileLayer40()

 function ShowTileLayer70() {
	// is off, turn it on
		if (tile70SourceSpec == null) {
			tile70SourceSpec = new VETileSourceSpecification('era1970',"http://" + server + "/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/webgis/pennpilot/points.map&layers=era1970&mode=tile&tilemode=ve&tile=%4");
			tile70SourceSpec.Bounds       = bounds;
			tile70SourceSpec.MinZoomLevel = 0;
			tile70SourceSpec.MaxZoomLevel = 19;
			tile70SourceSpec.Opacity      = 1;
			map.AddTileLayer(tile70SourceSpec);
		}

		// see if existing layer needs turned off
		HideExisting();

		// show 1970
		map.ShowTileLayer('era1970');


		// set vislayer = 1970
		vislayer = "era1970"
 }

 function HideExisting() {
	switch (vislayer) {
		case "era1940":
			map.HideTileLayer('era1940');
			break;
		case "era1970":
			map.HideTileLayer('era1970');
			break;
	}
	// delete any overlay layer
	map.DeleteShapeLayer(slFeature);
	slFeature = new VEShapeLayer();
	// clear vislayer
	vislayer = "";
 }

 function RightClick(e) {
	 if (e.rightMouseButton == true) {
		 var x = e.mapX;
		 var y = e.mapY;
		 pixel = new VEPixel(x, y);
		 var LL = map.PixelToLatLong(pixel);
		 var Lat = LL.Latitude;
		 var Lon = LL.Longitude;
		 //alert("lat: " + Lat);
		 LoadKML(Lat, Lon);
	 }
	 else if (e.leftMouseButton == true) {
		if (e.shiftKey) {
		  alert("left click for data");
		  return true;
		}
		else {
		  return false;
		}
	 }
 } // function RightClick(e)

 function LoadKML(Lat, Lon) {
	 slFeature.DeleteAllShapes();

	 //Build URL to call the server
	 if (vislayer == "") {
		alert("Please select an era");
		return;
	 }
	 var url = "http://" + server + "/cgi-bin/pennpilot_ga.py?layer=" + vislayer;
	 url += "&lat=" + Lat;
	 url += "&lng=" + Lon;

	 //var url = "http://localhost/vetesting/good.xml";
	 //prompt("url",url);
	 var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, url, slFeature);
	 map.ImportShapeLayerData(veLayerSpec, onKMLLoad, false);
	 //alert("called ImportShapeLayerData");
 } //function LoadKML(Lat, Lon)

 function onKMLLoad() {
	 //alert("in onGeoRSSLoad()");
	 var numShapes = slFeature.GetShapeCount();
	 //alert("numShapes = " + numShapes);
	 for (var i = 0; i < numShapes; ++i) {
		 var s = slFeature.GetShapeByIndex(i);
		 //s.SetLineColor(new VEColor(255, 0, 0, 1));
		 //s.SetFillColor(new VEColor(255, 0, 0, 0.5));
		 //s.SetCustomIcon("http://localhost/full.gif");
		 map.ShowInfoBox(s);
	 }
} // function onKMLLoad()

function FindLoc() {
	 try
	 {
		// make sure text was entered
		var searchText = document.getElementById("txtWhere").value;
		if (searchText == "") {
			alert("Please enter some search text");
			return;
		}
		map.Find(null, searchText);
	 }
	 catch(e)
	 {
		alert(e.message);
	 }
}

function TextUp(e) {
	 try {
		if (e.keyCode == 13) {
			FindLoc();
		}
	 }
	 catch(e) {
		alert(e.message);
	 }
}

function ResizeMap() {
	document.getElementById("myMap").style.width = 990;
	document.getElementById("myMap").style.height = 700;
	map.Resize();

}

function txtWhere_onmouseup() {
  var searchText = document.getElementById("txtWhere").value;
  //alert("searchText: " + searchText);
  if (searchText.indexOf("Enter placename") != -1) {
	//alert("clear");
	document.getElementById("txtWhere").value = "";
  }
}

function selEra_onchange() {
	var eraValue = document.getElementById("selEra").value;
	switch (eraValue) {
		case "1937-1942":
			ShowTileLayer40();
			break;
		case "1967-1972":
			ShowTileLayer70();
			break;
		case "none":  // hide any that is visible
			HideExisting();
			break;
	} // switch (eraValue)
} // function selEra_onchange()

function OpenImage(imgUrl){
	window.open(imgUrl,"_blank");
}

function LogZip(logString){
	try {
		var pageTracker = _gat._getTracker("UA-1212792-1");
		var trackStr = pageTracker
		pageTracker._trackPageview(logString);
		//alert("called pageTracker for zip: " + logString);
	}
	catch (ex) {
		alert("Error in LogZip()\nMessage: " + ex.description);
	}
	
}