//------------------------------------------------------------------------------------
//parameters and script to call in Google docs spreadsheet containing locations to display

var cm_mapMarkers = [];
var cm_mapHTMLS = [];

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
var cm_baseIcon = new GIcon();
cm_baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
cm_baseIcon.iconSize = new GSize(20, 34);
cm_baseIcon.shadowSize = new GSize(37, 34);
cm_baseIcon.iconAnchor = new GPoint(9, 34);
cm_baseIcon.infoWindowAnchor = new GPoint(9, 2);
cm_baseIcon.infoShadowAnchor = new GPoint(18, 25);

// Change these parameters to customize map
var param_wsId = "od6";
var param_ssKey = "o14179941933799271822.816573389351164996";
/**leave this next one set to false, setting it to true causes errors
that could be addressed if you want to pursue further sometime 
*/
var param_useSidebar = false;
var param_typeColumn = "type";
var param_titleColumn = "item";
var param_descColumn = "desc";
var param_latColumn = "lat";
var param_lngColumn = "long";
var param_addressColumn = "address";
var param_cityColumn = "city";
var param_stateColumn = "state";
var param_zipColumn = "zip";

/**
 * Function called when marker on the map is clicked.
 * Opens an info window (bubble) above the marker.
 * @param {Number} markerNum Number of marker in global array
 */
function cm_markerClicked(markerNum) {
  cm_mapMarkers[markerNum].openInfoWindowHtml(cm_mapHTMLS[markerNum]);
}

/** 
 * Called when JSON is loaded. Creates sidebar if param_sideBar is true.
 * Sorts rows if param_rankColumn is valid column. Iterates through worksheet rows, 
 * creating marker and sidebar entries for each row.
 * @param {JSON} json Worksheet feed
 */       
function cm_loadMapJSON(json) {
  var bounds = new GLatLngBounds();	  
  for (var i = 0; i < json.feed.entry.length; i++) {
    var entry = json.feed.entry[i];
    if(entry["gsx$" + param_latColumn]) {
      var lat = parseFloat(entry["gsx$" + param_latColumn].$t);
      var lng = parseFloat(entry["gsx$" + param_lngColumn].$t);
      var point = new GLatLng(lat,lng);
	  var type = entry["gsx$"+param_typeColumn].$t;
      var desc = entry["gsx$"+param_descColumn].$t;
	  var html = "<div style='font-size:12px'>";
      html += "<strong>" + entry["gsx$"+param_titleColumn].$t 
              + "</strong>";
      html +=  "<br/>" + entry["gsx$"+param_descColumn].$t;			  
	  if(entry["gsx$" + param_addressColumn]) {
	      if (entry["gsx$"+param_addressColumn].$t != "") {
			html += "<br/>" + entry["gsx$"+param_addressColumn].$t;
		  }	
	  }
   	  if(entry["gsx$" + param_cityColumn]) {
         if (entry["gsx$"+param_cityColumn].$t != "") {
			  html += "<br/>" + entry["gsx$"+param_cityColumn].$t + ", " ;
	      }	  	  
	  }
	  if(entry["gsx$" + param_stateColumn]) {
		  if (entry["gsx$"+param_stateColumn].$t != "") {	
			html += entry["gsx$"+param_stateColumn].$t;
		  }	 
	  }
	  if(entry["gsx$" + param_zipColumn]) {
		if (entry["gsx$"+param_zipColumn].$t!= "") {	  
			html += " " + entry["gsx$"+param_zipColumn].$t;
		  }	
	  }  	  	  

	  html += '<br/> <a href="http://maps.google.com/maps?saddr=&daddr=' + point.toUrlValue() + '" target ="_blank"><u>Driving Directions</u></a>';
      html += "</div>";

      // create the marker
      var marker = cm_createMarker(point,type,desc,html);
      usngmap.addOverlay(marker);
      cm_mapMarkers.push(marker);
      cm_mapHTMLS.push(html);
      bounds.extend(point);
    }
  }
}



/**
 * Creates marker with ranked Icon or blank icon,
 * depending if rank is defined. Assigns onclick function.
 * @param {GLatLng} point Point to create marker at
 * @param {String} title Tooltip title to display for marker
 * @param {String} html HTML to display in InfoWindow
 * @param {Number} rank Number rank of marker, used in creating icon
 * @return {GMarker} Marker created
 */
function cm_createMarker(point, type, title, html) {
  var markerOpts = {};
  var nIcon = new GIcon(cm_baseIcon);
 	if(type == "SHELTER") {
		nIcon.imageOut = "http://gmaps-samples.googlecode.com/svn/trunk/markers/green/blank.png";
		nIcon.imageOver = "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/blank.png";
		nIcon.image = nIcon.imageOut;
	/*} else if (type == "DRC") { 		
		nIcon.imageOut = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/blank.png";
		nIcon.imageOver = "http://gmaps-samples.googlecode.com/svn/trunk/markers/pink/blank.png";
    	nIcon.image = nIcon.imageOut; */	
	} else if (type == "RDC") { 
		nIcon.imageOut = "http://gmaps-samples.googlecode.com/svn/trunk/markers/red/blank.png";
		nIcon.imageOver = "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/blank.png";
    	nIcon.image = nIcon.imageOut; 
	} else if (type == "FLD") { 
		nIcon.imageOut = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/blank.png";
		nIcon.imageOver = "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/blank.png";
    	nIcon.image = nIcon.imageOut; 
		
	/*} else if (type == "TOR") { 
		nIcon.imageOut = "http://gmaps-samples.googlecode.com/svn/trunk/markers/red/blank.png";
		nIcon.imageOver = "http://gmaps-samples.googlecode.com/svn/trunk/markers/pink/blank.png";
    	nIcon.image = nIcon.imageOut; */
		
	} else if (type == "OPS") { 
		nIcon.imageOut = "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/blank.png";
		nIcon.imageOver = "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/blank.png";
    	nIcon.image = nIcon.imageOut; 		
	}
 
  markerOpts.icon = nIcon;
  markerOpts.title = title;		 
  
  var marker = new GMarker(point, markerOpts);
	
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  GEvent.addListener(marker, "mouseover", function() {
    marker.setImage(marker.getIcon().imageOver);
  });
  GEvent.addListener(marker, "mouseout", function() {
    marker.setImage(marker.getIcon().imageOut);
  });
  GEvent.addListener(marker, "infowindowopen", function() {
    marker.setImage(marker.getIcon().imageOver);
  });
  GEvent.addListener(marker, "infowindowclose", function() {
    marker.setImage(marker.getIcon().imageOut);
  });
  return marker;
}

/**
 * Creates a script tag in the page that loads in the 
 * JSON feed for the specified key/ID. 
 * Once loaded, it calls cm_loadMapJSON.
 */
function cm_getJSON() {
  // Retrieve the JSON feed.
  var script = document.createElement('script');

  script.setAttribute('src', 'http://spreadsheets.google.com/feeds/list'
                         + '/' + param_ssKey + '/' + param_wsId + '/public/values' +
                        '?alt=json-in-script&callback=cm_loadMapJSON');
  script.setAttribute('id', 'jsonScript');
  script.setAttribute('type', 'text/javascript');
  document.documentElement.firstChild.appendChild(script);

}











