// Globals 
var mymarkerset=[];
var map;
var ovmap;
var arrGroups=new Array();	
var mygDefaultIconImage="http://labs.google.com/ridefinder/images/mm_20_red.png";
var mygDefaultIconShadow="http://labs.google.com/ridefinder/images/mm_20_shadow.png";
var mygDefaultIconPrintShadow="http://www.miamiconservancy.org/InteractiveMap2/images/mm_20_printshadow.gif";
//var mygDefaultIconShadow="http://labs.google.com/ridefinder/images/mm_20_red.png";
var gALat;
var gALng;
var gTripId="";
// Bikepath KML
//var gKML="http://www.miamiconservancy.org/InteractiveMap/GMRBikeways4-19-2007.kml";
var gKML="http://www.miamiconservancy.org/InteractiveMap2/Bikeways.kml";
// default value for creating trips is set to false
var booMeasure=false;  
// Default data.xml file location
var gDefaultDataLocation="dataXML.asp";
///var gDefaultDataLocation="datatest.XML";
// Default config.xml file location
var gDefaultConfigLocation="configXML.asp";
////var gDefaultConfigLocation="config.XML";
// Base URL for attraction dumps (see this file for instructions on how to implement in ASP)
var gAttractionDumpBaseURL="attractiondump.asp";
// Base URL for attraction saves (see this file for instructions on how to implement in ASP)
var gAttractionSaveBaseURL="attractionsave.asp";
// Base URL for deleting a user-created attraction
var gAttractionDeleteBaseURL="attractiondelete.asp";
// Base URL for saving trip details
var gSaveTripURL="tripsave.asp";
// Base URL for retrieving trip details
var gLoadTripURL="tripdump.asp";
var gAttractionListBaseURL="attractionlist.asp"; 
 
// Use URL Key/Value to set userid
if (FORM_DATA['userid']!=null) {
	gUserId=FORM_DATA['userid'].replace(/\#/g,"");
} else {
	gUserId="guest";
}

// Get the Trip Id
if (FORM_DATA['tripid']!=null) {
	gTripId=FORM_DATA['tripid'].replace(/\#/g,"");
}
 
// Load XML Configuration File
requestConfig = GXmlHttp.create();
if (FORM_DATA['config']!=null) {
	requestConfig.open("GET", FORM_DATA['config'], false);
} else {
	requestConfig.open("GET", gDefaultConfigLocation, false);
}
// Assign Lat & Lng & Zoom
if (FORM_DATA['lat']!=null && FORM_DATA['lng']!=null) {
	var gLat=FORM_DATA['lat'];
	var gLng=FORM_DATA['lng'];
} else {
	// Default Lat/Lng
	var gLat=39.758;
	var gLng=-84.191;
}
if (FORM_DATA['zoom']!=null) {
	var gZoom=parseInt(trim(FORM_DATA['zoom']));
} else {
	var gZoom=12;
}
 
requestConfig.send(null);
processXMLConfigSynchronous(requestConfig.responseXML);

// Initialize Map
function initMap() {

	//ConfigSettings();
 if (GBrowserIsCompatible()) {
	map = new GMap(document.getElementById("map"));
	map.setCenter(new GLatLng(gLat,gLng), gZoom);
    map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl( ));

 	// create the overview and obtain a reference to its GMap2
 	var overview = new GOverviewMapControl(new GSize(150,150));
 	map.addControl(overview);
 	ovmap=overview.getOverviewMap(); 
 
 	// queue a timeout to invoke that function
 	setTimeout("displayOverviewKML(gKML)",1); 
 
	// Load Default data after map loads
	requestData = GXmlHttp.create();
	if (FORM_DATA['data']!=null) {
		requestData.open("GET", FORM_DATA['data'], true);
	} else {
		requestData.open("GET", gDefaultDataLocation, true);
	}
	 
	  requestData.onreadystatechange = processXMLData;
	  //alert('stop4');
	  requestData.send(null);
  //alert('stop5');
	// Load XML file that has user attractions in it
	if (gUserId!="") {
		showAllUserAttractions();
	}

	document.map_form.mytripon.checked=false; // make sure the checkbox is off to start with 

	//GEvent.addListener(map, "click", function(overlay,point) {
	//	if ((booMeasure || document.map_form.mytripon.checked) && !booAddingAttraction) {
	//		addLeg(point.y, point.x);
	//	}
	//});
	
	GEvent.addListener(map, "click", function(overlay,point) {
        if (point && (booMeasure || document.map_form.mytripon.checked) && !booAddingAttraction) {
            addLeg(point.y, point.x);
        }
    });

 
	if (gTripId!="") {
		//loadTrip(gLoadTripURL);
		loadTrip(gLoadTripURL+"?tripid="+gTripId+"&userid="+gUserId);
	}
 } else {
  	alert('your browser does not appear to be compatible with this application');
 }
}

// Update this function when schema changes
function processXMLConfigSynchronous(xmlDoc) {
      groups = xmlDoc.documentElement.getElementsByTagName("group");
      for (var i=0; i < groups.length; i++) {
	  	var arrTmp=new Array();
         arrTmp["code"]= groups[i].getAttribute("code");
         arrTmp["color"]= groups[i].getAttribute("color");
         arrTmp["imgsrc"]= groups[i].getAttribute("imgsrc");
         arrTmp["checked"]= trim(groups[i].getAttribute("checked"));
         arrTmp["title"]= groups[i].getAttribute("title");

		 arrGroups[groups[i].getAttribute("code")]=arrTmp;
      }
}

function processXMLData() {
  if (requestData.readyState == 4) {
  	if (requestData.status != 200) {
      	alert("Could not find XML Data File ("+requestData.status+")");
   		return;
  	}
   	var xmlDoc = requestData.responseXML;
	if (!xmlDoc) {
      	alert("Invalid XML Data file");
   		return;
   	}
	// Add Bike Path
	map.addOverlay(new GGeoXml(gKML));
	// Add rest of Markers
  	var xmlMarkers = xmlDoc.documentElement.getElementsByTagName("marker");
   	for (var i=0; i < xmlMarkers.length; i++) {
		// Create Marker
       	marker=initMarker(
			parseFloat(xmlMarkers[i].getAttribute("lng")),
           	parseFloat(xmlMarkers[i].getAttribute("lat")),
 			xmlMarkers[i].getAttribute("title"),
            xmlMarkers[i].firstChild.data,
 			xmlMarkers[i].getAttribute("code"),
 			xmlMarkers[i].getAttribute("id"));
		mymarkerset.push(marker);
        // Make sure settings are updated
		if (arrGroups[xmlMarkers[i].getAttribute("code")]['checked']=="checked") {
			map.addOverlay(marker);
		}
	}
  }
}
  
function getColor(code) {
	return arrGroups[code]['color'];
}

function PopulateLegend() {
    // Loop Marker Point Sets
    for (i in arrGroups) {
		if (gUserId!="guest" || arrGroups[i]['code']!="useradded") {
        	if (arrGroups[i]['imgsrc']=="") {
            	iconImage= mygDefaultIconImage;
        	} else {
            	iconImage=arrGroups[i]['imgsrc'];
        	}
        	document.write('<tr><td align="left" width=20><img border=0 src="'+iconImage+'" title="'+arrGroups[i]['title']+'" alt="'+arrGroups[i]['title']+'" />');
        	document.write('</td><td align="left" width=111 class="green10">');
        	document.write('<input type="checkbox" name="'+arrGroups[i]['code']+'" +  id="'+arrGroups[i]['code']+'" onclick="Markers(\''+ arrGroups[i]['code']+'\');" '+arrGroups[i]['checked']+' /> '+arrGroups[i]['title']);
        	document.write('</td></tr>');
		}
    }
}

// function to display a marker in the overview
function displayOverviewKML(pKML) {
	var kml =new GGeoXml(pKML);
	ovmap.addOverlay(kml);
}

// This is activated when user clicks on checkbox
function startCreatingTrip(pCB) {
    booMeasure=pCB.checked;
    if (pCB.checked) {
        document.getElementById("instructions").style.visibility="visible";
    } else  {
        document.getElementById("instructions").style.visibility="hidden";
    }
}
