	var geoXml = "";
    var geoXmlArry = [];
    var geoXmlIdx = 0;    
    
	function PositionOrZoomChange2()
	{
		if ( tileOverlay )
		{
		    var testZoomLevel = map.getZoom();
		   	if      (testZoomLevel >= widestBGThematic && testZoomLevel <= closestBGThematic ) document.getElementById("thematicLabelType").innerHTML  = "Blockgroup";
			else if (testZoomLevel >= widestBLThematic && testZoomLevel <= closestBLThematic ) document.getElementById("thematicLabelType").innerHTML  = "Block";
		   	else if (testZoomLevel >  closestBLThematic                                      ) document.getElementById("thematicLabelType").innerHTML  = "Zoom Out";
		   	else            				  												   document.getElementById("thematicLabelType").innerHTML  = "Zoom In";
		}
	}

	function disableTileOverlay() { if ( tileOverlay ){map.removeOverlay( tileOverlay ) ;} }

	function addTileOverlay()
	{
	   if ( tileOverlay ){map.removeOverlay( tileOverlay ) ;}
	   var CustomGetTileUrl=function(point,zoom)
		   { 
		   	if (zoom <= closestBGThematic ) var url = "R2/a.aspx?id=" + id + "&v=27&z="+ zoom + "&t=" + selectedThematic + "&l=2&x=" + point.x + "&y=" + point.y + "&" + tileSet; 
		   	else                            var url = "R2/a.aspx?id=" + id + "&v=27&z="+ zoom + "&t=" + selectedThematic + "&l=1&x=" + point.x + "&y=" + point.y + "&" + tileSet; 
		   	return url ; 
		   }
	   var tilelayers = new GTileLayer(new GCopyrightCollection("TGG Copyright"),5,17);
	   tilelayers.getCopyright = function(a,b) {return {prefix: "NA", copyrightTexts:["TGGX"]};}
	   tilelayers.getOpacity = function() {return opacity ;}
	   tilelayers.getTileUrl = CustomGetTileUrl ;
	   tileOverlay = new GTileLayerOverlay(tilelayers);
	   map.addOverlay(tileOverlay);
	}

	function createTiles(obj)
	{
	 selectedThematic = obj;
	 var tempZoomTest = map.getZoom();
     var imageHeight = 100;
     if      (selectedThematic == 0)  imageHeight = 21;
     else if (selectedThematic == 1)  imageHeight = 97;
     else if (selectedThematic == 2)  imageHeight = 145;
     else if (selectedThematic == 3)  imageHeight = 130;
     else if (selectedThematic == 4)  imageHeight = 115;
     else if (selectedThematic == 5)  imageHeight = 94;
     else if (selectedThematic == 6)  imageHeight = 95;
     else if (selectedThematic == 8)  imageHeight = 82;
     else if (selectedThematic == 9)  imageHeight = 96;
     else if (selectedThematic == 10) imageHeight = 113;
	 
	 if (legendImage) map.removeOverlay(legendImage);

	 if (selectedThematic != "None")  
	 	 {
	     var now = new Date(); var ticks = now.getTime();
         legendImage = new GScreenOverlay('/Legend/Thm_'+selectedThematic+'_BG.png?id='+ticks,
									      new GScreenPoint(0, 38, 'pixels', 'pixels'),  // screenXY
									      new GScreenPoint(45, 0),  				    // overlayXY
									      new GScreenSize(100, imageHeight)  			// size on screen
								    );
         map.addOverlay(legendImage);         
         }
	 
	   if (obj == "None") // Tile Overlay was requested to be removed
	 	 {
	 	 disableTileOverlay();
         document.getElementById("thematicLabelType").innerHTML  = "";
	 	 }
	   else 
	 	 {
	 	 disableTileOverlay();
		 addTileOverlay();
	     }
	 }
	
	 function setTileOpacity(factor)
	 {
		 opacity = factor ;
		 map.removeOverlay(tileOverlay);
		 map.addOverlay(tileOverlay);
	 }
    
		
      


    var KmlCallBack = function()
    {
	    geoXml.gotoDefaultViewport(map);
	}

    function showKML(pid,type)
    {
        var typeClean = type.replace(/ /g,'');
        geoXml = new GGeoXml('http://community.gadberry.info/kml/'+pid+'-'+typeClean+'.kml?x=xdd',KmlCallBack);
        geoXmlArry[geoXmlIdx] = geoXml;
        map.addOverlay(geoXmlArry[geoXmlIdx]);
        geoXmlIdx++;
        getKmlStats(pid,type,typeClean)
    }

	function clearOverlays()
	{
       	clearDataTable();
        var iLoop=0;
        for (iLoop=0;iLoop<geoXmlIdx;iLoop++){map.removeOverlay(geoXmlArry[iLoop]);}
        geoXmlIdx=0;
	}

    function getKmlStats(pid,type,typeClean)
    {
        params = "pid="+pid+"&type="+type+"&typeclean="+typeClean;
        http( "GET" , "AJAX/Public/queryKMLStats.2.0.cfm?" + params , resp_KMLStats );
    }

    function resp_KMLStats(obj)
    {

        var dtHtml  = obj.html;
        var dtLabel = obj.label;

        var mydataTable = document.getElementById("dataTable");
        mydataTable.innerHTML = dtHtml;
        var mydataLabel = document.getElementById("dataLabel");
        mydataLabel.innerHTML = dtLabel;
    }


    function clearDataTable()
    {
        var mydataTable = document.getElementById("dataTable");
        mydataTable.innerHTML = "";
        var mydataLabel = document.getElementById("dataLabel");
        mydataLabel.innerHTML = "";
        
    }


    function ShowNotableBlocks(mypid)
    {
        if (winZoom < 11)
        {
            alert ("Only notable blocks within close proximity to the town are shown.");
        }

            document.body.style.cursor = "wait";
            
            for(var n = 0 ; n < gmarkers.length ; n++)
             {
              map.removeOverlay( gmarkers[n] ) ;
              
             }
            
            document.getElementById("legend").style.display = "block";
            //map.closeInfoWindow()
            gmarkers = [] ;
            markerPins = [];

            // start: added on 2008-01-04
            i=0;
            // end: added on 2008-01-04
              
            params = "minLat=" + winMinLat + "&minLng=" + winMinLng + "&maxLat=" + winMaxLat + "&maxLng=" + winMaxLng + "&pid=" + mypid ;
            http( "GET" , "AJAX/Public/queryTopBlocks.cfm?" + params , resp_TopBlocks );

    }
    
    function resp_TopBlocks(obj)
    {
        var numMarkers = obj.block.length;
        var blocks = obj.block;
        var blockLats  = obj.lat;
        var blockLngs  = obj.lng;
        var blockHH_00 = obj.hh_00;
        var blockHH_CY = obj.hh_cy;
        var blockPOP_00 = obj.pop_00;
        var blockPOP_CY = obj.pop_cy;
        var rank       = obj.abschangerank;
        var Icon;
        
        for ( var i = 0 ; i < numMarkers ; i++ )
        {
            var changeHH = blockHH_CY[i] - blockHH_00[i];
            var changePOP = blockPOP_CY[i] - blockPOP_00[i];
            
            if  ((changeHH > 50) || (blockHH_00[i] == 0 && changeHH >= 10))
                Icon = 3;
            else if  (changeHH > 5)
                Icon = 1;
            else if  (changeHH <= 5 && changeHH >= -50)
                Icon = 4;
            else
                Icon = 2;
              
            var point = new GLatLng( blockLats[i], blockLngs[i]);
            var myHTML = "";
            myHTML += "Block: " + blocks[i] + "<br>";
            myHTML += "Rank: " + rank[i] + "<br><br>";
            myHTML += "<table width=180 border=1 cellpadding=1 cellspacing=1>"
            myHTML += "<tr><td align=left bgcolor=#c0c0c0>Vintage </td><td align=right bgcolor=#c0c0c0>HH</td><td align=right bgcolor=#c0c0c0>POP</td></tr>";
            myHTML += "<tr><td align=left>2000 </td><td align=right>" + addCommas(blockHH_00[i]) + "</td><td align=right>"+ addCommas(blockPOP_00[i]) +"</td></tr>";
            myHTML += "<tr><td align=left>Current </td><td align=right>" + addCommas(blockHH_CY[i]) + "</td><td align=right>"+ addCommas(blockPOP_CY[i]) +"</td></tr>";
            myHTML += "<tr><td align=left>Change </td><td align=right>" + addCommas(changeHH) + "</td><td align=right>"+ addCommas(changePOP) +"</td></tr>";
            myHTML += "</table>";
            
            var marker = createMarker(point,blocks[i],myHTML, Icon, rank[i],blockHH_00[i],blockHH_CY[i]);
            map.addOverlay(marker);      
              
        }

        document.body.style.cursor = "default";
    }
    
    // A function to create the marker and set up the event window
    function createMarker(point,name,html,inputicon,Rank,hh_00,hh_CY) {
        var Growth = "1";
        var Decline = "2";
        var Exceptional = "3";
        var NoChange = "4";
    
        picon.iconSize = new GSize(15, 25);
        
        var t = 1;
        var t2 = "marker";
        if (Rank > 99) {
          t  = "";
          t2 = "blank";
        }
        else {
          t  = Rank;
          t2 = "marker";
        }
    
    
        if (inputicon == Decline) {
          picon.image = 'http://www.gadberry.info/maps/MapIcons/largeTDBlueIcons/'+t2+t+'.png';
        }
        else if (inputicon == Growth) {
          picon.image = 'http://www.gadberry.info/maps/MapIcons/largeTDYellowIcons/'+t2+t+'.png';
        }
        else if (inputicon == Exceptional) {
          picon.image = 'http://www.gadberry.info/maps/MapIcons/largeTDRedIcons/'+t2+t+'.png';
        }
        else if (inputicon == NoChange) {
          picon.image = 'http://www.gadberry.info/maps/MapIcons/largeTDGreenIcons/'+t2+t+'.png';
        }
        else {
          picon.image = 'http://www.gadberry.info/maps/MapIcons/largeTDWhiteIcons/'+t2+t+'.png';
        }
        
        var marker = new GMarker(point, picon);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        // save the info we need to use later for the sidebar
        gmarkers[i] = marker;
        //htmls[i] = html;
        markerPins[i] = new MarkerPin(marker,name,html,picon,Rank,hh_00,hh_CY);
          
        i++;
        return marker;
      }

    function MarkerPin(marker,name,html,icon,Rank,hh_00,hh_CY)
    {
        this.marker=marker;
        this.point=marker.getPoint();
        this.name=name;
        this.html=html;
        this.icon=icon;
        this.Rank=Rank;
        this.hh_00=hh_00;
        this.hh_CY=hh_CY;
        this.change=change;
        this.IsVisible=true;
        this.showMarker=showMarker;
        this.hideMarker=hideMarker;
    }
      

