function searchMap(defaultLatLng,defaultZoom) {
	if (GBrowserIsCompatible()) {
		//var mapOptions = {
    	//	googleBarOptions : {
      //			style : "new",
	//		}
  	//	}

		//map = new GMap2(document.getElementById("map_canvas"), { size: new GSize(690,400) });
        //map.setCenter(new GLatLng(38.5449065, -121.7405167), 9);
		map.setCenter(defaultLatLng, defaultZoom);
		map.setMapType(G_HYBRID_MAP);
/*		map.setMapType(G_NORMAL_MAP);*/
		streetOverlay = new GStreetviewOverlay();
	/*	map.addControl(new customStreetViewControl());*/
		var zoomControl = new customZoomControl();
		map.addControl(zoomControl);
		map.addControl(new customMapTypeControl());
/*		map.addControl(new polygonSearchControl());*/
		map.disableDoubleClickZoom(); // disable doubleclick zoom
		
		//map.addOverlay(streetOverlay);
		//map.enableGoogleBar();
		

     	//map.addControl(new GOverviewMapControl()) ;
		
		//map.addControl(new GLargeMapControl());
		map.addControl(new GNavLabelControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
		
/*		loadBorder(map, "xml/granite-bay.xml");
		loadBorder(map, "xml/davis.xml");
		loadBorder(map, "xml/sacramento.xml");
		loadBorder(map, "xml/west-sacramento.xml");
		loadBorder(map, "xml/winters.xml");
		loadBorder(map, "xml/woodland.xml");
		loadBorder(map, "xml/elk-grove.xml");*/
		//loadBorder(map, "xml/roseville.xml");
		
		GEvent.addListener(map, "dragend", function() {
      		//alert("map moved!"+$("select[name=searchBy]").val());
			if($("select[name=searchBy]").val()=="map") submitSearch();
    		});
		GEvent.addListener(map, "zoomend", function() {
			//alert("zoom:"+map.getZoom());
			if($("select[name=searchBy]").val()=="map") submitSearch();
			zoomControl.setZoom(map.getZoom());
			/*
			if(map.getZoom()>13 && streetviewcontrol==false) {
				streetviewcontrol = true;
				map.addOverlay(streetOverlay);
			}
			else if(map.getZoom()<=13 && streetviewcontrol==true) {
				streetviewcontrol = false;
				map.removeOverlay(streetOverlay);
			}*/
    	});
		
		GEvent.addListener(map, "click", function(overlay,latlng) {
		    if(streetviewcontrol==false) return null;
      		pano = new GStreetviewPanorama(document.getElementById("street_canvas"));
			pano.setLocationAndPOV(latlng);
			document.getElementById("map_canvas").style.display = "none";
			document.getElementById("street_canvas").style.display = "block";
			exitControl = new customExitToMapControl("street_canvas",map);
			exitControl.display();
    	});
		
		//GEvent.addListener(map, "moveend", function() {
		//	alert("map moved!");
			//if($("select[name=searchBy]").val()=="map") submitSearch();
      	//});
	}
}

/** used to construct query string for searchBy map search **/
function getMapBoundaryString() {
	var bounds = map.getBounds();
	var ne = bounds.getNorthEast();
	var sw = bounds.getSouthWest();
	var query = "&searchByNorth=" +ne.lat();
	query += "&searchByEast=" +ne.lng();
	query += "&searchBySouth=" +sw.lat();
	query += "&searchByWest=" +sw.lng();
	//alert(query);
	return query;
}

/** recenter map using n/e/s/w coordinates **/
function recenterMap(n, s, e, w) {
	var bounds = map.getBounds();
	var zoom = map.getBoundsZoomLevel(bounds);
	map.setZoom(zoom);
	//var y = (n+s)/2;
	//var x = (e+w)/2;
	//alert(n+" "+s+" "+e+" "+w);
	//var bounds = GLatLngBounds(new GLatLng(s, w), new GLatLng(n, e));
	//var zoom = map.getBoundsZoomLevel(bounds);
	//map.setCenter(new GLatLng(y, x), zoom);
}

/** displays property marker on a map */
function loadPropertyMarker(lat, lng, data) {
	var latlng = new GLatLng(lat,lng);
	var index = markers.length;

	markers[index] = new GMarker(latlng, { icon: customMarker(latlng) });
	//markers[index] = new deluxeGMarker(latlng, { icon: customMarker(latlng) }, data, index);

	
	infoWins[index] = new infoWindow("map_canvas", map, data, index);
	
	
	GEvent.addListener(markers[index], "mouseover", function() {
		if(infoWinLock) return null;
	//	infoWinLock = true; // set lock
		$(".infoWindow").css("display","none"); // clear all other windows
		infoWins[index].display(markers[index].getLatLng(), index);

/*		infoWin = new infoWindow("map_canvas", map, markers[index].data, markers[index].index);
		infoWin.display(markers[index].getLatLng(), index);*/
		
    });

	GEvent.addListener(markers[index], "mouseout", function() {
		delay(function(){
			infoWins[index].hide();
	//
	infoWinLock = false; // unlock
    	}, 500 );
    	
    });
	/*
	GEvent.addListener(markers[index], "click", function() {
	});
	*/
	//alert(lat +" "+lng);
	map.addOverlay(markers[index]);
}

function centerMapOnHouse(lat, lng) {
	map.setCenter(new GLatLng(lat, lng));
}

function clearMarkers() {
	if(!markers) return null;
	for(i = 0; i < markers.length; i++) {
		map.removeOverlay(markers[i]);
	}
	markers = [];
	$(".infoWindow").remove();
	infoWins = [];
}

function parseXML(xml) {
	if (jQuery.browser.msie) {
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.loadXML(xml);
		xml = xmlDoc;
	}
	return xml;
}

/** Load border from XML map **/
function loadBorder(map, filepath) {
	$.ajax({
   		type: "POST",
   		url: filepath,
		dataType:"xmlDocument",
   		success: function(xml){
			xml = parseXML(xml);
			drawBorder(xml,map);
		}
	});
}

function drawBorder(xml,map) {
	//var output = "";
	var latlng = []; // latlng array
	//var finalLatLng;
	//var c = 0;
	$('polyline1',xml).each(function() {
		//if(c==0) finalLatLng = new GLatLng($(this).attr("lat"),$(this).attr("lng"));
		latlng[latlng.length] = new GLatLng($(this).attr("lat"),$(this).attr("lng"));
	});
	//latlng[latlng.length] = finalLatLng; // close the loop
	
	var keyword = $('info',xml).attr("placename");
	var polygon = new GPolygon(latlng, "#0080FF", 1, 0.7, "#0080FF", 0.1);
	//var polygon = new GPolygon(latlng, "#ed1c24", 2, 0.7, "#0080FF", 0.1);
	map.addOverlay(polygon);
	GEvent.addListener(polygon, "click", function(overlay,latlng) {
		$("input[name=keyword]").attr("value",keyword);
		submitSearch();
	});
}

/**	launches streetview. 
	index: index of markers - used to access data
	**/
function street(lat,lng, index) {
	//alert("clicked!");
	var pov = new GLatLng(lat,lng);
		
	var svc = new GStreetviewClient();
	svc.getNearestPanorama(pov, function (data) {
		if (!data.Location) {
			alert("No Streetview Available!");
			return null;
		}
		//streetviewCenter = map.getCenter();
		//streetviewZoom = map.getZoom();
		pano = new GStreetviewPanorama(document.getElementById("street_canvas"));
		pano.setLocationAndPOV(pov);
		document.getElementById("map_canvas").style.display = "none";
		document.getElementById("street_canvas").style.display = "block";
	/*	document.getElementById("backToMap").style.display = "block";*/
	
		infoPane = new streetInfoPane("street_canvas", map, index);
		infoPane.display();
		exitControl = new customExitToMapControl("street_canvas",map);
		exitControl.display();
	});
	//alert("complete!");
}

/**	Zoom in on a selected lat/lng
	*/
	
function zoomInHouse(lat,lng) {
	map.setCenter(new GLatLng(lat,lng),18);
}

//
var map; // global map object
var pano;
var markers = []; // global map markers
var infoWin; // info Window
var infoWins = [];
var infoWinLock = false; // prevents infoWin data overwrite
var markerLatLng; // current marker lat lng
var streetviewCenter; // global to save map center when going in and out of streetview mode
var streetviewZoom;
var mapSave; // contents of map_canvas - saved during streetview
var infoPane; // streetview info pane
var exitControl; // exitControl
var streetviewcontrol = false; // tracks whether streetview is toggled or not 
var streetOverlay;
window.unload = GUnload();

/*$("#backToMap").click( function() {
	document.getElementById("map_canvas").style.display = "block";
	document.getElementById("street_canvas").style.display = "none";
	document.getElementById("backToMap").style.display = "none";
	if(infoPane!=null) infoPane.destroy();
		//document.getElementById("street_canvas").style.display = "block";
	//streetviewCenter = pano.getLatLng();	
	//searchMap();
	//submitSearch();
});*/
