function orderOfCreation(marker,b) {
    return 1;
}

function inverseOrder(marker,b) {
    return -GOverlay.getZIndex(marker.getPoint().lat());
}

function googlemap() { 		
if (GBrowserIsCompatible()) { 			
geocoder = new GClientGeocoder();		
map = new GMap2(document.getElementById("map_canvas"));		
map.addControl(new GLargeMapControl()); 		
map.addControl(new GMapTypeControl()); 		
map.addControl(new GScaleControl());	
}}

var firstZoom = true;

var tinyIcon = new GIcon();

/*
tinyIcon.image = "images/houseicon.png";
tinyIcon.shadow = "images/houseiconshadow.png";
tinyIcon.iconSize = new GSize(20, 34);
tinyIcon.shadowSize = new GSize(25, 20);
tinyIcon.iconAnchor = new GPoint(10,33);
*/

tinyIcon.image = "images/houseicon2.png";
//tinyIcon.shadow = "images/houseiconshadow.png";
tinyIcon.iconSize = new GSize(26, 38);
//tinyIcon.shadowSize = new GSize(25, 20);
tinyIcon.iconAnchor = new GPoint(12,33);


/*
tinyIcon.image = "map/marker-yellow.png";
//tinyIcon.shadow = "map/mm_20_shadow.png";
tinyIcon.iconSize = new GSize(11, 35);
//tinyIcon.shadowSize = new GSize(22, 20);
tinyIcon.iconAnchor = new GPoint(6, 30);
*/

tinyIcon.infoWindowAnchor = new GPoint(12, 15);

var markerOptions = { icon:tinyIcon, zIndexProcess:orderOfCreation };

var cityIcon = new GIcon();
cityIcon.image = "map/mm_20_red.png";
cityIcon.shadow = "map/mm_20_shadow.png";
cityIcon.iconSize = new GSize(12, 20);
cityIcon.shadowSize = new GSize(22, 20);
cityIcon.iconAnchor = new GPoint(6, 20);
cityIcon.infoWindowAnchor = new GPoint(5, 1);
var cityMarkerOptions = { icon:cityIcon };

function showCity(){
	if(citygeo){
		var point = new GLatLng(citylat, citylong);
		map.setCenter(point, izoom);
		var marker = new GxMarker(point,cityMarkerOptions,address,{"offset": new GSize(20, -20),"isStatic":false});
		map.addOverlay(marker);
		map.savePosition();
	}
	else{
	geocoder.getLatLng(address, function(latlng) {					
		map.setCenter(latlng,izoom);
		//alert(latlng);
		var marker = new GxMarker(latlng,cityMarkerOptions,address,{"offset": new GSize(20, -20),"isStatic":false});
		map.addOverlay(marker);
		map.savePosition();
	});
	}
 }
 
var magIcon = new GIcon();
magIcon.image = "images/magnifying_glass.png";
magIcon.iconSize = new GSize(59,59);
magIcon.iconAnchor = new GPoint(24,32);
var magMarkerOptions = { icon:magIcon, zIndexProcess:inverseOrder };
var magGlassMarker;
 
 function magGlass(flag){
	if(citygeo){
		var point = new GLatLng(citylat, citylong);
		magGlassMarker = new GxMarker(point,magMarkerOptions,'Click to zoom in',{"offset": new GSize(20, -20),"isStatic":false});
		GEvent.addListener(magGlassMarker, "click", function() { doMag(flag); });
		map.addOverlay(magGlassMarker);
	}
	else{
	geocoder.getLatLng(address, function(latlng) {					
		magGlassMarker = new GxMarker(latlng,magMarkerOptions,'Click to zoom in',{"offset": new GSize(20, -20),"isStatic":false});
		GEvent.addListener(magGlassMarker, "click", function() { doMag(flag);  });
		map.addOverlay(magGlassMarker);
	});
	}
 }
	
function doMag(flag){
	if(flag == true) { doZoom(1.5,0,"onemile"); }
	else { doZoom(1,0,"onemile"); }
	map.removeOverlay(magGlassMarker);
}
	
function zoomOut(factor){	zoom = izoom;
	map.setZoom(zoom-factor);
}
function doZoom(maxdist,zoom,itemid){	
	map.returnToSavedPosition();
	zoomOut(zoom);
	setAllOff();
	setToOn(itemid);
	searchLocations(maxdist);
	if(firstZoom == false && isMag==true) { map.removeOverlay(magGlassMarker); } 
	firstZoom = false;
}

function doZoomTwo(maxdist,zoom){
	zoomOut(zoom);
	searchLocations(maxdist);
}

function setRegion(){

	 map.setCenter(new GLatLng(ilat, ilong), izoom);

}

function doRegion(){
	
	searchLocationsNearRegion();

}
	
var onText = "#000000";
var offText = "#952918";

function setToOn(item){	var el = document.getElementById(item);
 	el.style.color=onText;
}
	
function setAllOff(){	
	var textarray = new Array("onemile","fivemile","tenmile","twentyfivemile","fiftymile","seventyfivemile");
	for ( var i=textarray.length-1; i>=0; --i ){			
		var el = document.getElementById(textarray[i]);
 		el.style.color=offText;
	}
}
			
function searchLocations(radius) { 
	if(citygeo){
		var point = new GLatLng(citylat, citylong);
		searchLocationsNear(point,radius);
		
	}
	else {
	geocoder.getLatLng(address, function(latlng) {       
		if (!latlng) {         
			alert(address + ' not found');
       } else {        
		searchLocationsNear(latlng,radius);
			//alert(latlng);
       }     
	});
	}
}
   
function searchLocationsNear(center,radius) {          
var searchUrl = 'map/phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;

//alert(searchUrl);
 GDownloadUrl(searchUrl, function(data,responseCode) {	 if(responseCode == 200){       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       	   for ( var q=0, len=markersArray.length; q<len; ++q ){				
       	   		if(markersArray[q] != null){					
 					map.removeOverlay(markersArray[q]);
				}	
			}       
			for (var i = 0; i < markers.length; i++) {         
				var name = markers[i].getAttribute('bbnm');
 				var innid = markers[i].getAttribute('id');
 				var innimg = markers[i].getAttribute('img');
        		var address = markers[i].getAttribute('bbadd');
        		var cityname = markers[i].getAttribute('city');
        		var order = i;
			
         		var distance = parseFloat(markers[i].getAttribute('distance'));
         		var point = new GLatLng(parseFloat(markers[i].getAttribute('bblat')), parseFloat(markers[i].getAttribute('bblong')));
		 		var link = markers[i].getAttribute('link');
		 		 
        		var marker = createMarker(point, name, address, link, distance, innid, innimg,cityname,order);
       			//alert(innimg);
				map.addOverlay(marker);
		 		markersArray[i] = marker;
       		}     
       	}	 
   });
}    
   
function searchLocationsNearRegion() { 
	var searchUrl = 'map/phpsqlregion_genxml.php?region=' + reg;
	GDownloadUrl(searchUrl, function(data,responseCode) {	 
		if(responseCode == 200){       var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
       	for ( var q=0, len=markersArray.length; q<len; ++q ){				
			if(markersArray[q] != null){					
				map.removeOverlay(markersArray[q]);
			}
		}
		for (var i = 0; i < markers.length; i++) {     
			var innid = markers[i].getAttribute('id');
			var innimg = markers[i].getAttribute('img');
			var name = markers[i].getAttribute('bbnm');
			var address = markers[i].getAttribute('bbadd');
			var cityname = markers[i].getAttribute('city');
			var order = i;
			
			
			var point = new GLatLng(parseFloat(markers[i].getAttribute('bblat')),                                 
			parseFloat(markers[i].getAttribute('bblong')));
			var link = markers[i].getAttribute('link');
			distance = null;			
			var marker = createMarker(point, name, address, link, distance, innid, innimg,cityname, order);
       		//alert(innimg);
			map.addOverlay(marker);
		 	markersArray[i] = marker;
		}     
	}	 
	});
}    

function createMarker(point, name, address, link, distance, innid, innimg, cityname, order) {

	if(distance != null){
		//var dist = distance.toString();
		//dist = dist.substring(0,4);
		if(distance < 1){ 
			var dist=Math.round(distance*10)/10;
		}
		else{
			var dist=Math.round(distance);
		}
	}
	
	var content = "<div class='googlemappopup'>";
	
	if(innimg != '') { content += "<img src='"+innimg+"' class='googlemapimg'/>"; }
	content += "<div class='googlemapcopy'><strong>"+name+"</strong><br/>"+address+"<br/>"+cityname+", Michigan<br/>";
	if(distance != null){ content += "Distance from city: "+dist+" mile(s)<br/>"; }
	content += "<a href='"+link+"'>View More</a>";
	content += "</div>";
	content += "</div>";
	
 	var marker = new GMarker(point,markerOptions);
	GEvent.addListener(marker, "click", function() {
  		marker.openInfoWindowHtml(content);
  	});
  return marker;
}
