var pois = new Array();
var poiTypes = new Array();
var poiIcons = new Array();

var myMap = null;
var proxyServerName = "";
var proxyServerPort = "";
var ProxyServerPath = "/JSReqHandler";

function startMap() {
	var mapContainer = $("mapquest_map");
	// var fakeMapContainer = $("fake_mq");
	// var pos = findPos(fakeMapContainer);
	// var outer = $("mq_outer");
	// outer.style.position = "absolute";
	// outer.style.left = pos[0] + "px";
	// outer.style.top = pos[1] + "px";
	myMap = new MQTileMap(mapContainer);
	myMap.addControl(new MQLargeZoomControl(myMap), new MQMapCornerPlacement(MQMapCorner.TOP_LEFT, new MQSize(20,20)));
	myMap.addControl(new MQViewControl(myMap), new MQMapCornerPlacement(MQMapCorner.TOP_RIGHT, new MQSize(20,20)));
}

//My Geocode Function
/*
function doGeocode(name,street,city,state,postal,special)
{

	//set up the connection to the geocode server
	var serverName = "geocode.access.mapquest.com";
	var serverPort = "80";
	var serverPath = "mq";

	var geoExec = new MQExec(serverName, serverPath, serverPort, proxyServerName,
                                 ProxyServerPath, proxyServerPort );

	//geocode the address from the form
	var address = new MQAddress();
    var gaCollection = new MQLocationCollection("MQGeoAddress");
    address.setStreet(street);
    address.setCity(city);
    address.setState(state);
    address.setPostalCode(postal);
    address.setCountry("US");

	geoExec.geocode(address, gaCollection);
	var geoAddr = gaCollection.get(0);

	var origin = gaCollection.get(0).getMQLatLng();
*/

function doGeocode(name,street,city,state,postal,lat,lon,special)
{
	var origin = new MQLatLng(lat, lon);
	myMap.removeAllPois();

	var myPoint = new MQPoi(origin);
	if(special == 0)
	{
		var content = street + '<br />' + city + '<br />' +  state + ' ' + postal;
	}
	else
	{
		myIcon = new MQMapIcon();
		myIcon.setImage("/images/mapquest/house.gif",32,32,true,false);
		myPoint.setIcon(myIcon);

		var photo = $('main_photo').src;
		photo = photo.replace(232,50);
		photo = photo.replace(182,50);
		var content = '<img src="'+photo+'" alt="'+name+'">' + '<div>' + street + '<br />' + city + '<br />' +  state + ' ' + postal + '</div>';
	}
	myPoint.setInfoTitleHTML(name);
	myPoint.setInfoContentHTML('<div style="width:200px;">' + content + '</div>');

	myMap.setCenter(myPoint.getLatLng(),12);

	if(special == 1)
	{
		getResults(origin);
		myMap.addPoi(myPoint);
		myMap.bestFit();
	}
	else
		myMap.addPoi(myPoint);
}

function doSearch(LLobj,dbaName,maxResults,radius)
{
	var sCriteria = new MQRadiusSearchCriteria();
	sCriteria.setMaxMatches(maxResults);
	sCriteria.setRadius(radius,new MQDistanceUnits());
	sCriteria.setCenter(LLobj);

	//Setup search source
    var dbLayerQueryCollection = new MQDBLayerQueryCollection();
	var dbLayerQuery = new MQDBLayerQuery();
	dbLayerQuery.setDBLayerName(dbaName);
	dbLayerQueryCollection.add(dbLayerQuery);

	//set up the connection to the Spatial search server
	var spatServerName = "spatial.access.mapquest.com";
	var spatServerPort = "80";
	var spatServerPath = "mq";
	var searchExec = new MQExec(spatServerName, spatServerPath, spatServerPort, proxyServerName,
		ProxyServerPath, proxyServerPort );
	var searchResults = new MQFeatureCollection();
	var dtc = new MQDTCollection();
	searchExec.search(sCriteria, searchResults,'',dbLayerQueryCollection,new MQFeatureCollection(),dtc);
	
	// get recordset for properties which were found
	var ids = new MQStringCollection();
	for( var i = 0; i < searchResults.getSize(); i++)
	{
		var resultPoint = searchResults.get(i);
		ids.add(resultPoint.getKey());
	}
	
	var fields = new MQStringCollection();
	fields.add("N");
	fields.add("Address");
	fields.add("City");
	fields.add("State");
	fields.add("ZIP");
	fields.add("Phone");
	fields.add("Facility");
	fields.add("Food");
	fields.add("ChainId");
	fields.add("Lat");
	fields.add("Lng");
	fields.add("T");
	
	var recordSet = new MQRecordSet();
	dbLayerQuery = new MQDBLayerQuery();
	dbLayerQuery.setDBLayerName(dbaName);
	searchExec = new MQExec(spatServerName, spatServerPath, spatServerPort, proxyServerName,
		ProxyServerPath, proxyServerPort );
	searchExec.getRecordInfo(fields,dbLayerQuery,recordSet,ids);

	return recordSet;
}

function getResults(origin)
{
	myMap.removeAllPois();
	var recordSet = new doSearch(origin,"MQA.NTPois",35,5);
	
	// iterate over all POIs and add it to the map
	recordSet.moveFirst();
	while(!recordSet.isEOF())
	{
		var icon = new MQMapIcon();
		icon.setImage("/upload/wysiwyg/mapquest/"+recordSet.getField("T")+".gif",20,20,true,false);
	
		var poi = new MQPoi(new MQLatLng(recordSet.getField("Lat"),recordSet.getField("Lng")),icon);
		poi.setInfoTitleHTML(recordSet.getField("N"));
		var content = "<div>"+recordSet.getField("Address")+"<br>"+
					recordSet.getField("Phone")+"<br>"+
					recordSet.getField("City")+"<br>"+
					recordSet.getField("State")+" "+recordSet.getField("ZIP")+"<br><b>";
		
		var addInfo = "";
		if(recordSet.getField("ChainId") != "") addInfo+= chainTypes['t'+recordSet.getField("ChainId")];
		//if(recordSet.getField("Facility") != "") addInfo+= (addInfo!=""?", ":"") + facilityTypes['t'+recordSet.getField("Facility")];
		if(recordSet.getField("Food") != "") addInfo+= (addInfo!=""?", ":"") + foodTypes['t'+recordSet.getField("Food")];
		
		content += addInfo + "</b></div>";
		content = "<div class=\"nb_info\">" + content + "</div>";
		poi.setInfoContentHTML(content);
		poi.type = recordSet.getField("T");
		myMap.addPoi(poi);

		pois[pois.length] = poi;
		// distinct
		if(!checkPoiType(poi.type))
		{
			poiTypes[poiTypes.length] = poi.type;
			poiIcons[poiIcons.length] = "/upload/wysiwyg/mapquest/"+recordSet.getField("T")+".gif";
		}
		
		recordSet.moveNext();
	}
	
	function checkPoiType(type)
	{
		for(var i = 0; i < poiTypes.length; i++)
			if(poiTypes[i]==type) return true;
		return false;
	}

}

function enableDisplayTypes(special)
{
	var types = $("display_types");
	
	if(special == 0)
	{
		types.style.display = "none";
		return;
	}
	
	var div = $("legend_inner");
	
	for(var i = 0; i < poiTypes.length; i++)
	{
		var dt = $c("p");
		dt.className="dt";
		div.appendChild(dt);
	
		var input = $c("input");
		input.setAttribute("type","checkbox");
		input.setAttribute("name","dt");
		input.id = "dt_"+poiTypes[i];
		input.value = poiTypes[i];
		input.onclick = switchDisplay;
		dt.appendChild(input);
		input.checked = true;
		
		var label = $c("label");
		label.style.backgroundImage = "url('"+poiIcons[i]+"')";
		label.htmlFor = "dt_"+poiTypes[i];
		label.innerHTML = displayTypes['dt'+poiTypes[i]];;
		dt.appendChild(label);
	}
	
	function switchDisplay()
	{
		var inputs = types.getElementsByTagName("input");
		for(var i = 0; i < pois.length; i++)
		{
			var visible = false;
			for(var j = 0; j < inputs.length; j++)
				if( inputs[j].value == pois[i].type && inputs[j].checked )
				{
					visible = true; break;
				}
			pois[i].setVisible( visible );
		}
	}
}



