/**
	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:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/yellow_marker_15.png\', sizingMethod=\'image\');">  </div>';
			var iconOrange24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/orange_marker_15.png\', sizingMethod=\'image\');"> </div>';
			var iconGreen24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/green_marker_15.png\', sizingMethod=\'image\');"> </div>';
			var iconAqua24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/aqua_marker_15.png\', sizingMethod=\'image\');"> </div>';
			var iconBlue24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/blue_marker_15.png\', sizingMethod=\'image\');"> </div>';
			var iconPink24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/pink_marker_15.png\', sizingMethod=\'image\');"> </div>';
			var iconRed24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'images/markers2/red_marker_15.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:15px;"> <img src="images/markers2/yellow_marker_15.png"> </div>';
			var iconOrange24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;"> <img src="images/markers2/orange_marker_15.png"> </div>';
			var iconGreen24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;"> <img src="images/markers2/green_marker_15.png"> </div>';
			var iconAqua24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;"> <img src="images/markers2/aqua_marker_15.png"> </div>';
			var iconBlue24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;"> <img src="images/markers2/blue_marker_15.png"> </div>';
			var iconPink24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;"> <img src="images/markers2/pink_marker_15.png"> </div>';
			var iconRed24 = '<div style="font-size:12px;font-weight:bold;border:solid 0px Black;background-color:Transparent;width:15px;"> <img  src="images/markers2/red_marker_15.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;">'+
						'This is an estimated location for the address entered, please submit again if you believe the building is within the current map view or add city, state and zip code to the address.  You can also 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();
	//LoadMCPage();
	LoadSolarOverlay();
}

// Map Cruncher code - Starts


function LoadSolarOverlay() {
    var _solarDurationLayerName = 'NewLayer';
    var tileCacheExtendedURL = '';
    try {
        map.DeleteTileLayer(_solarDurationLayerName);
    }
    catch (e) { } //solar layer doesn't exist. we're OK with that.

    var pathURL = window.location.href ;
    //alert(pathURL);
    var tileCacheExtendedURL =  pathURL + "Upgrade_Cache/Layer_newLayer/%4.png";
    //alert(tileCacheExtendedURL);

    var tileSourceSpec = new VETileSourceSpecification(_solarDurationLayerName, tileCacheExtendedURL);
    tileSourceSpec.NumServers = 1;
    tileSourceSpec.MinZoomLevel = 10;
    tileSourceSpec.MaxZoomLevel = 19;
    tileSourceSpec.Opacity = 0.75;
    tileSourceSpec.ZIndex = 100;

    map.AddTileLayer(tileSourceSpec, true);
}


var divMapCruncher = null;
var mapCruncherControl = null;
var crunchedLayerManager = null;

function ToggleLayer(name, active) {
    if (active == true) {
        crunchedLayerManager.layerList.find(name).Activate(mapCruncherControl);
    }
    else {
        crunchedLayerManager.layerList.find(name).Deactivate(mapCruncherControl);
    }
}

function SetMapSize() {
    var divMapCruncher = document.getElementById("map-canvas");
    divMapCruncher.style.width = "100%";
    divMapCruncher.style.height = "630px";
    divMapCruncher.style.overflow = "hidden";
    divMapCruncher.style.position = "relative";
    if (crunchedLayerManager != null) {
        crunchedLayerManager.controlManager.UpdateControlLayout();
    }
}

function MapModeChanged(e) {
    alert(map.GetMapMode());
    alert(window.location.protocol);
    if (map.GetMapMode() == Msn.VE.MapActionMode.Mode3D &&
                    window.location.protocol == "file:") {
        alert("MapCruncher tiles will only display in 3D mode " +
                        "if your map is hosted on a web server (using http://).\n" +
                        "Currently, your tiles are coming from a local machine (file://) " +
                        "so only 2D mode is available.");
    }
}

function LoadMCPage() {
    SetMapSize();
    window.onresize = SetMapSize;
    map.AttachEvent("oninitmode", MapModeChanged);
    crunchedLayerManager = new VE.MapCruncher.CrunchedLayerManager(map);
    crunchedLayerManager.ImportLayersFromAnchorHRef("CrunchedLayers");
    var permalinkProvided = crunchedLayerManager.ApplyPermalink(document.layerCheckboxForm);
    if (!permalinkProvided) {
        var layer = crunchedLayerManager.layerList.find('NewLayer');
//        layer.veTileSourceSpecification = new VETileSourceSpecification("SolarOverlay", "http://localhost/Anaheim/Upgrade_Cache/Layer_newLayer/");
//        layer.veTileSourceSpecification.ZIndex = 100;
//        layer.veTileSourceSpecification.Opacity = 0.6;
//        layer.zIndex = 100;
//        layer.Opacity = 0.6;
//        layer.Activate(map, 0.8);
        layer.Activate(map);
//      layer.SetDefaultView(map);
    }
    document.getElementById('VE_MapCruncher_legend_box').style.display = "none";
}

function turnOnOffSolarLayer() {
    if (map != null) {
        var tileLayerCount = map.GetTileLayerCount();
        var numLayers = map.GetTileLayerCount();
        if (numLayers < 1) {
            setDivText("tilelayers", "There are no tile layers!");
            return;
        }
        var theLayerId;
        for (var i = 0; i < numLayers; i++) {
            theLayerId = map.GetTileLayerByIndex(i).ID;
            //alert(theLayerId);
        }
        var theCheckBox = document.getElementById("SolarOverlay");
        if (theCheckBox.checked)
            map.ShowTileLayer("NewLayer");
        else
            map.HideTileLayer("NewLayer");
    }
}

// Map Cruncher code - Ends

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 the Anaheim Solar Map', 'welcome3.html?TB_iframe=true&amp;height=455&amp;width=615', null);
}


//function resetMap(){
//	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
//}
