/**
	Changes to 2.1:
		- addition of monitoring maximize window
	Changes to 2.1:
		- addition of clean power estimator 

*/


var map;
var geocoder;

var centerLatitude =  33.834;
var centerLongitude = -117.852; 
var startZoom = 12;
var iconSun; 
var iconYellowPnt;
var tooltip;
var existingMarkers= {};
var existingMuniMarkers= {};
var existingObsMarkers= {};
var showSmallMarkers = true;

var iconOrangeBig;
var iconAquaBig;
var iconBlueBig;
var iconGreenBig;
var iconOrangeBig;
var iconPinkBig;
var iconRedBig;
var iconYellowBig;

var iconCS = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:50px;"> <img src="images/cs_marker_24.gif"> </div>';
//var iconSun = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:50px;"> <img src="images/current_24.gif"> </div>';


		if (jQuery.browser.msie) {
			// teardrop markers
			var iconYellow24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/yellow_marker_24.png\', sizingMethod=\'image\');">  </div>';
			var iconOrange24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/orange_marker_24.png\', sizingMethod=\'image\');"> </div>';
			var iconGreen24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/green_marker_24.png\', sizingMethod=\'image\');"> </div>';
			var iconAqua24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/aqua_marker_24.png\', sizingMethod=\'image\');"> </div>';
			var iconBlue24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/blue_marker_24.png\', sizingMethod=\'image\');"> </div>';
			var iconPink24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/pink_marker_24.png\', sizingMethod=\'image\');"> </div>';
			var iconRed24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/red_marker_24.png\', sizingMethod=\'image\');"> </div>';

		}else{
			// teardrop markers
			var iconYellow24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img src="images/markers2/yellow_marker_24.png"> </div>';
			var iconOrange24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img src="images/markers2/orange_marker_24.png"> </div>';
			var iconGreen24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img src="images/markers2/green_marker_24.png"> </div>';
			var iconAqua24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img src="images/markers2/aqua_marker_24.png"> </div>';
			var iconBlue24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img src="images/markers2/blue_marker_24.png"> </div>';
			var iconPink24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img src="images/markers2/pink_marker_24.png"> </div>';
			var iconRed24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:24px;"> <img  src="images/markers2/red_marker_24.png"> </div>';
		
		}



var iconYellowPnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/yellow8.gif"> </div>';
var iconOrangePnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/orange8.gif"> </div>';
var iconGreenPnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/green8.gif"> </div>';
var iconAquaPnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/aqua8.gif"> </div>';
var iconBluePnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/blue8.gif"> </div>';
var iconPinkPnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/pink8.gif"> </div>';
var iconRedPnt = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:8px;"> <img src="images/markers2/red8.gif"> </div>';
var iconSun = new VECustomIconSpecification();
        iconSun.ImageOffset = new VEPixel(0,-14);
        iconSun.Image = 'images/markers2/current_24.png';
        iconSun.TextContent = '  ';

var curMarker;
var parcelLayer;
var parcelShape;
var confidenceStrings = ["High", "Medium", "Low"];
var precisionStrings  = ["Interpolated", "Rooftop"];

function StartGeocoding(address) {
//alert("Due to the high volume of traffic, your solar estimate cannot be accessed.  Please try again later.");
	//alert(address);
	// this is where you would check to see if the map is in birdseye
	var style = map.GetMapStyle();

	if (style == VEMapStyle.Birdseye || style == VEMapStyle.BirdseyeHybrid || style == VEMapStyle.Oblique){
		map.SetMapStyle(VEMapStyle.Hybrid);
	}


	map.Find(null,         // what
		address,           // where
		null,              // VEFindType (always VEFindType.Businesses)
		null,              // VEShapeLayer (base by default)
		null,              // start index for results (0 by default)
		null,              // max number of results (default is 10)
		null,              // show results? (default is true)
		null,              // create pushpin for what results? (ignored since what is null)
		false,              // use default disambiguation? (default is true)
		false,              // set best map view? (default is true)
		getSafeValues);  // call back function
}	

function getSafeValues(shapeLayer, findResults, places, moreResults, errorMsg){
		var resHtml = "";
		// if there are no results, display the error message and return
		if (places == null){
			alert( (errorMsg == null) ? "Sorry, we were unable to find the address you entered.  Please try again" : errorMsg );
			return;
		}
		//place = response.Placemark[0];
		//latitude=place.Point.coordinates[1];
		//longitude=place.Point.coordinates[0];
		//accuracy = place.AddressDetails.Accuracy;
		
		anaheimLatMin=33.678719;
		anaheimLatMax=33.943501;
		anaheimLngMax=-117.622773;
		anaheimLngMin=-118.077859;

		if(places.length == 1){
			p = places[0];
			var confString = confidenceStrings[p.MatchConfidence];
			var precString = precisionStrings[p.Precision];
			var mcVal = MatchCode(p.MatchCode);
			//alert(p.Name+" - "+confString+", "+precString+", "+p.MatchCode);
			var location = p.LatLong;
			var lat = location.Latitude;
			var lng = location.Longitude;
			if(lat>anaheimLatMin && lat<anaheimLatMax && lng>anaheimLngMin && lng<anaheimLngMax){
				setMarkerPlace(p);
			}else{
				alert("Data for this site is only available for the city of Anaheim.  Please try again entering your address again in the format street, zipcode.  ");
			}
		}else if (places.length == 0){
			 alert("An address was not found.  Please reenter your address");
		}else{
			for (var x = 0; x < places.length; x++){
				var location = places[x].LatLong;
				var lat = location.Latitude;
				var lng = location.Longitude;
				if(lat>anaheimLatMin && lat<anaheimLatMax && lng>anaheimLngMin && lng<anaheimLngMax){
					//alert("Found 1 of "+places.length+" in the extent");
					var confString = confidenceStrings[places[x].MatchConfidence];
					var precString = precisionStrings[places[x].Precision];
					var mcVal = MatchCode(places[x].MatchCode);
					if(mcVal == "Good Match"){
						setMarkerPlace(places[x]);
						break;
					}
				
					//alert(places[x].Name+" - "+confString+", "+precString+", mc="+p.MatchCode+": "+mcVal);
				}
			}

			
		}
	}

function setMarkerPlace(place){
	var location = place.LatLong;

	// var confidenceStrings = ["High", "Medium", "Low"];
	var confString = confidenceStrings[place.MatchConfidence];

	// var precisionStrings  = ["Interpolated", "Rooftop"];
	var precString = precisionStrings[place.Precision];
	if(parcelShape!=null){
		map.DeleteShape(parcelShape);
		parcelShape = null;
	}		
	//send an ajax call to get the apn
	var latitude = location.Latitude;
	var longitude = location.Longitude;
	var streetName = place.Name;
	jQuery.ajax({
		type: "POST",
		url: "getSafeValues.php",
		data: "lat="+latitude+"&lng="+longitude+"&prec="+precString+"&address="+place.Name,
		error: function(msg){alert("ajax error: "+msg);},
		success: function(msg){
			//if(curMarker!== null){
			//	map.DeleteShape(curMarker);
			//}
			if(jQuery('em', msg).text() == "1"){
				lat = jQuery('lat', msg).text();
				lng = jQuery('lng', msg).text()
				area = jQuery('area', msg).text()
				pct =jQuery('pct', msg).text();
				setMarker(lat, lng, streetName, area, pct);
				//setMarker(jQuery('lat', msg).text(), jQuery('lng', msg).text(), streetName,  jQuery('area', msg).text(),  jQuery('pct', msg).text());
			}else{
				//alert("An exact match to the berkeley database was not found. Please try again.");
				//map.SetCenterAndZoom(new VELatLong(latitude,longitude), 17);
				setDatasetMarker(latitude, longitude, streetName);
			}
		}
	});
}

function setDatasetMarker(lat, lng, address){
	var pnt = new VELatLong(lat,lng);
	map.SetCenterAndZoom(pnt, 19);
	curMarker = new VEShape(VEShapeType.Pushpin, pnt);
	markerText = '<div id="table-address">'+address+'</div><div style="font-size:12px;">'+
						'We are implementing a phased approach for detailed solar estimates and unfortuntely do not have estimates for your property.  In the meantime, you can perform an economic analysis using our '+	
						'<a href="http://anaheim.cleanpowerestimator.com" target="_blank"> Clean Power Estimator</a>. </div> ';
	curMarker.SetCustomIcon(iconSun);
	curMarker.SetTitle('Estimate for '+address);
	curMarker.SetDescription(markerText);
	map.AddShape(curMarker);
	map.ShowInfoBox(curMarker);
}

function setMarker(lat, lon, address, sqft, pctUsable){
	var usedSafe=1;
	var pnt = new VELatLong(lat,lon);
	map.SetCenterAndZoom(pnt, 19);
	curMarker = new VEShape(VEShapeType.Pushpin, pnt);
	var kwL = (Math.round(100*sqft * pctUsable/99.7))/100; // 12%
	markerText = '<div id="table-address">'+address+'</div>'+getMarkerHtml(sqft, pctUsable, usedSafe); //+'<div id="table-address"><span id=\'assumptions\'>assumptions</span><span id=\'close\'>close window and zoom out</span></div>';
	curMarker.SetCustomIcon(iconSun);
	//curMarker.SetTitle('Estimate for '+address);
	curMarker.SetDescription(markerText);
	map.AddShape(curMarker);
	map.ShowInfoBox(curMarker);
}

function getMarkerHtml(rawsqft, myPctUsable, myUsedSafe){
	if((rawsqft.length > 0) && (parseInt(rawsqft)>0)){
	
		rfsq = Math.round(rawsqft * myPctUsable);
		areaHtml = '  <tr><td>Roof Size:</td><td>'+addCommas(Math.round(rawsqft))+' ft<sup>2</sup> </td></tr><tr><td>Area Suitable for Solar:</td><td>'+addCommas(rfsq)+' ft<sup>2</sup></td></tr>';
	
		var solarIns = 5;
	
		//Solar PV Potential 
		var kwH = (Math.round(100*rfsq/99.7))/100; // 12%
		//Annual Electricity Produced 
		//KWh/year = kW*5*(.60 x 365)
		var kwYearH = kwH*solarIns*365*0.77;

		//Annual Electricity Savings 
		//$/year = (kW x 1461)*0.11430
		// 06/26/08 - changed from 0.11430 to 0.16474 per Jason's request
		var dolYrH = (kwH * solarIns * 365)*0.13*0.77;

		//Annual Carbon Savings 
		//lbs. CO2/year =1.712 lb/kWh
		var lbsCO2YearH =1.712 *(kwH*solarIns*365)*0.77;


		output = '<table style="width:310px;">'+
				 '  <tr><td colspan=2 style="font-weight:bold;">My Solar Potential</td></tr>'+
				 '  <tr><td colspan=2 ><hr/></td></tr>'+areaHtml+
				 '  <tr><td>Est. solar PV potential: </td><td>up to '+addCommas(kwH)+' kW</td></tr>'+
				 '  <tr><td>Est. electricity produced: </td><td>up to '+addCommas(kwYearH.toFixed(0))+' KWh/yr</td></tr>'+
				 '  <tr><td>Est. carbon savings: </td><td>'+addCommas(lbsCO2YearH.toFixed(0))+' lbs per year</td></tr>'+
				 '  <tr><td>&nbsp;</td><td>&nbsp;</td></tr>'+
		// take the next step		 '  <tr><td COLSPAN=2 ALIGN="center" ><a id="nextstep" onclick="nextStep();" href="#" title="nextstep" class="thickbox">Take the next step</a></td></tr>'+
				 '</table>'+
				 '<div class="hr"></div><span class="infowin">'+
					'<br/><span style="font-weight:bold;font-size:12px;">Links</span>'+
					'<hr/>'+
					'<a href="http://anaheim.cleanpowerestimator.com" target="_blank"><span style="font-weight:bold;font-size:12px;">Calculate Your Savings</span></a><br/>'+
					'<a href="http://www.gosolarcalifornia.ca.gov/retailers/search-new.php" target="_blank"><span style="font-weight:bold;font-size:12px;">Find a solar installer</span></a><br/>';
	}else{
		output = '<div>Unfortunately, information for this address <br/>is currently not available.  Please try a different<br/> address or contact <a class="sf-env" href="http://www.sfenvironment.org/our_programs/interests.html?ssi=6&ti=15&ii=63" target="_blank"> SF Environment </a> for more <br/>information about this location.</div>'+
				 '<div class="hr"></div><span class="infowin"><br/>'+
					'<a href="http://www.gosolarcalifornia.ca.gov/database/" target="_blank">Click here </a>to find a solar installer <br/>'+
					'<a href="http://www.sfenvironment.org/our_programs/interests.html?ssi=6&ti=15&ii=63" target="_blank">Click here </a>for more information on installing solar <br/>'+
					'<br/>'+
					'<a onclick="showWin(\'estimates\');">How the estimates were derived</a> &nbsp;&nbsp;----&nbsp;&nbsp; <a onclick="showWin(\'disclaimer\');">Disclaimer</a> <br/>'+
					'** Map locations are approximate</span>';

//					'<a href=\'javascript:maxThis();\'>Click here </a>for a more detailed estimate <br/>'+


	}
//nextstep.html?TB_iframe=true&amp;height=400&amp;width=600			 
	return output;
}

function addMarker(longitude, latitude, description, iconName) {
	var marker = new GMarker(new GLatLng(latitude, longitude));
	GEvent.addListener(marker, 'click',
		function() {
			marker.openInfoWindowHtml(description);
		}
	);
	map.addOverlay(marker);
}

function windowHeight() {
	// Standard browsers (Mozilla, Safari, etc.)
	if (self.innerHeight)
		return self.innerHeight;
	// IE 6
	if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	// IE 5
	if (document.body)
		return document.body.clientHeight;
	// Just in case.
	return 0;
}

function handleResize() {
//	if(document.getElementById('page-header')){
//		var height = windowHeight() - document.getElementById('page-header').offsetHeight  - document.getElementById('page-bar').offsetHeight - document.getElementById('footer').offsetHeight;
//		document.getElementById('map').style.height = height + 'px';
//		
//		sideHeight = height - document.getElementById('tablist').offsetHeight;
//		document.getElementById('box_dash_detail').style.height = sideHeight + 'px';
//		document.getElementById('box_dash_message').style.height = sideHeight + 'px';
//		linkHeight = height - 150;
//
//		document.getElementById('welcome-text').style.height = linkHeight + 'px';
//	}
}



function changeBodyClass(from, to) {
	document.body.className = document.body.className.replace(from, to);
	return false;
}

function mapInit() {
	handleResize();
	
	map = new VEMap('map-canvas');
	map.SetDashboardSize(VEDashboardSize.Normal);
	map.LoadMap(new VELatLong(centerLatitude, centerLongitude), startZoom, VEMapStyle.Hybrid);

	addInstallsMarkers('small');
	addTiles();
}
function addInstallsMarkers(size){

	

	for(k = 0; k< installMarkers.length; k++){
		//typ: type of installation
		//	0: Government
		//	1: Residential
		//	2: School/Library
		//	3: Non-profit
		//	4: Commercial
		var installTyp;
		var icontyp;
		showSmallMarkers = false;
			if( installMarkers[k].ej == 'Y'){ // ej is environ justice install
				//newIcon =  (showSmallMarkers) ? iconOrangePnt : iconOrangeBig;
				icontyp = iconOrange24;
				installTyp = "EJ";
				typeHtml = 'Environmental Justice';
			}else if( installMarkers[k].t == '0'){ // typ 0 is normal install
				//newIcon =  (showSmallMarkers) ? iconYellowPnt : iconYellowBig;
				icontyp = iconYellow24;
				installTyp = "Residential";
				typeHtml = 'Residential';
			}else if( installMarkers[k].t == '1'){ // typ 1 is commercial funded
				//newIcon =  (showSmallMarkers) ? iconPinkPnt : iconPinkBig;
				icontyp = iconPink24;
				installTyp = "Commercial";
				typeHtml = 'Commercial';
			}else if( installMarkers[k].t == '2'){ // typ 1 is commercial funded
				//newIcon =  (showSmallMarkers) ? iconBluePnt : iconBlueBig;
				icontyp = iconBlue24;
				installTyp = "City";
				typeHtml = 'City Facilities';
			}else if( installMarkers[k].t == '3'){ // typ 1 is commercial funded
				//newIcon =  (showSmallMarkers) ? iconAquaPnt : iconAquaBig;
				icontyp = iconAqua24;
				installTyp = "Schools";
				typeHtml = 'Sun Power for the Schools';
			}



		var quotehtml = '';
		if ((installMarkers[k].q).length > 0)
			quotehtml = "<tr><td valign=top>Testimony:</td><td><i>"+installMarkers[k].q+"</i></td></tr>";
		
		var personalhtml = '';
		if ((installMarkers[k].n).length > 0)
			personalhtml = "<tr><td valign=top>Name:</td><td><i>"+installMarkers[k].n+"</i></td></tr>";
		if ((installMarkers[k].a).length > 0)
			personalhtml = personalhtml +"<tr><td valign=top>Location:</td><td><i>"+installMarkers[k].a+"</i></td></tr>";
	
		var costHtml = '';
		if ((installMarkers[k].ic).length > 0)
			costHtml = costHtml + "<tr><td>Installed Cost:</td><td>$"+addCommas(Math.round(installMarkers[k].ic))+" </td></tr>";
		if ((installMarkers[k].mc).length > 0)
			costHtml = costHtml + "<tr><td>Module Cost:</td><td>$"+addCommas(Math.round(installMarkers[k].mc))+" </td></tr>";
		if ((installMarkers[k].invc).length > 0)
			costHtml = costHtml + "<tr><td>Inverter Cost:</td><td>$"+addCommas(Math.round(installMarkers[k].invc))+" </td></tr>";
		if ((installMarkers[k].lc).length > 0)
			costHtml = costHtml + "<tr><td>Labor Cost:</td><td>$"+addCommas(Math.round(installMarkers[k].lc))+" </td></tr>";




		var installerhtml = '';
		if ((installMarkers[k].c).length > 0){
			if((installMarkers[k].cl).length> 0){
				installerhtml = "<tr><td>Installer:</td><td><a href='"+installMarkers[k].cl+"' target='_blank'>"+installMarkers[k].c+"</a></td></tr>";
			}else{
				installerhtml = "<tr><td>Installer:</td><td>"+installMarkers[k].c+"</td></tr>";

			}
		}

		var markerHtml = "<table style='width:310px;'>"+personalhtml+
							"<tr><td>Size DC:</td><td>"+addCommas(Math.round(installMarkers[k].d*100)/100)+" kW</td></tr>"+
							"<tr><td>Size AC:</td><td>"+addCommas(Math.round(installMarkers[k].dac*100)/100)+" kW</td></tr>"+
							"<tr><td>Output:</td><td>"+addCommas(installMarkers[k].o)+" kWh/yr</td></tr>"+
							"<tr><td>Installation Date:</td><td>"+installMarkers[k].da+" </td></tr>"+
							"<tr><td>Panel Brand:</td><td>"+installMarkers[k].mm+" </td></tr>"+
							"<tr><td>Number of Modules:</td><td>"+installMarkers[k].nm+" </td></tr>"+
							"<tr><td>Inverter Brand:</td><td>"+installMarkers[k].im+" </td></tr>"+
							costHtml+
							installerhtml+
							quotehtml+
						"</table>";

		var marker1 = new VEShape(VEShapeType.Pushpin, new VELatLong(installMarkers[k].lat, installMarkers[k].lng));
			marker1.SetCustomIcon(icontyp);
			marker1.SetTitle(typeHtml + " Solar Install");
			var existingHtml1 = "<div style='font-size:10px;font-weight:bold;background-color:white;'><div id=\"white2\" style=\"background-color:#ffffff;width:350px;border:0px solid black; \">"+markerHtml+"</div></div>";
			marker1.SetDescription(existingHtml1);
			map.AddShape(marker1);

	}

}
	
		function addCommas(nStr){
			nStr += '';
			x = nStr.split('.');
			x1 = x[0];
			x2 = x.length > 1 ? '.' + x[1] : '';
			var rgx = /(\d+)(\d{3})/;
			while (rgx.test(x1)) {
				x1 = x1.replace(rgx, '$1' + ',' + '$2');
			}
			return x1 + x2;
	}
	function MatchCode(code){
		if(code == VEMatchCode.None) {
			return "No match";
		}
		var codeDesc = "";   
		var cVal;

		cVal = code & VEMatchCode.Good;
		if(cVal > 0) {
			codeDesc += "Good ";
		}
   
		cVal = code & VEMatchCode.Ambiguous;
		if(cVal > 0) {
			codeDesc += "Ambiguous ";
		}
   
		cVal = code & VEMatchCode.UpHierarchy;
		if(cVal > 0) {
			codeDesc += "UpHierarchy ";
		}
   
		cVal = code & VEMatchCode.Modified;
		if(cVal > 0) {
			codeDesc += "Modified ";
		}
		return(codeDesc + "Match");
	}
	
		function addTiles(){
	
			var bounds = [new VELatLongRectangle(
				new VELatLong(34, -118), 
				new VELatLong(33, -117)
			)];          
			// add the pilot Areas
			var layerID = "pilotArea";
			var pilotSource =  "http://anaheim.solarmap.org/vetiles/pilotboundaries/%4.png";
			var pilotTileSourceSpec = new VETileSourceSpecification(layerID, pilotSource);
			pilotTileSourceSpec.Bounds = bounds;
			pilotTileSourceSpec.NumServers = 1;
			pilotTileSourceSpec.MinZoomLevel = 2;
			pilotTileSourceSpec.MaxZoomLevel = 17;
			pilotTileSourceSpec.Opacity      = .4;
			pilotTileSourceSpec.ZIndex = 100;
		
			map.AddTileLayer(pilotTileSourceSpec, true);

			// add the wash area
			var layerID = "washArea";
			var washSource =  "http://anaheim.solarmap.org/vetiles/washArea/%4.png";
			var washTileSourceSpec = new VETileSourceSpecification(layerID, washSource);
			washTileSourceSpec.Bounds = bounds;
			washTileSourceSpec.NumServers = 1;
			washTileSourceSpec.MinZoomLevel = 2;
			washTileSourceSpec.MaxZoomLevel = 17;
			washTileSourceSpec.Opacity      = .7;
			washTileSourceSpec.ZIndex = 100;
		
			map.AddTileLayer(washTileSourceSpec, true);

			// add the city boundaries
			var layerID = "bndrArea";
			var bndrySource =  "http://anaheim.solarmap.org/vetiles/cityboundary/%4.png";
			var bndryTileSourceSpec = new VETileSourceSpecification(layerID, bndrySource);
			bndryTileSourceSpec.Bounds = bounds;
			bndryTileSourceSpec.NumServers = 1;
			bndryTileSourceSpec.MinZoomLevel = 2;
			bndryTileSourceSpec.MaxZoomLevel = 17;
			bndryTileSourceSpec.ZIndex = 100;
		
			map.AddTileLayer(bndryTileSourceSpec, true);

		
	}
function showWelcome(){
	tb_show('Welcome to Anaheim.SolarMap.org', 'welcome3.html?TB_iframe=true&amp;height=455&amp;width=615', null);
}


//function resetMap(){
//	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
//}