/*! Created by Evelyn Lindbergh, Washington State Library, contact: evelyn.lindbergh@sos.wa.gov*/
var folders = location.pathname.split("/"); 
var thiscollection = folders[folders.length-2];

var centerLatitude = 47.273085;
var centerLongitude = -120.832725;
var startZoom = 5;

var map;
var thisdirectory;
var thiscenter;
var thiszoom;
var coords = [];
var gmarkers = [];
var side_bar_html = [];
var bounds = new GLatLngBounds();
var latlngarray = [];
var titles = [];
var titlearray = [];
var descriptions = [];
var descriptionarray = [];
var htmls = [];
var markersarray = [];
var uniques = [];
var xy = [];
var superarray = [];
var iconImages = [];
var superarrayImages = [];

  function init() {
    if (GBrowserIsCompatible()) {
      if (document.getElementById("map")) {
		  		map = new GMap2(document.getElementById("map"));
	 }
	  else if (document.getElementById("smallmap")) {
		  		map = new GMap2(document.getElementById("smallmap"));
	  }
			map.addControl(new GSmallMapControl()); // 4 directional arrows and 
			map.addControl(new GScaleControl()); // mi | km
			map.addMapType(G_PHYSICAL_MAP); 
			map.addControl(new GMapTypeControl()); // Map|Satellite|Hybrid
      var location = new GLatLng(centerLatitude, centerLongitude);
      map.setCenter(location, startZoom, G_PHYSICAL_MAP);
			map.enableDoubleClickZoom();
			map.enableScrollWheelZoom(); // added by Ross Fuqua 02 Dec 2011 - ross.fuqua@sos.wa.gov
			//map.addControl(new GOverviewMapControl(new GSize(200,200)));
      retrieveMarkers();     
		}
  } //function init
 
  window.onload = init;
  windowonunload = GUnload; 

  function retrieveMarkers() {
  
  if(thiscollection=="wrh") {thisdirectory="maps"} else {thisdirectory='../' + thiscollection}
  
  	var request = GXmlHttp.create();
  	request.open('GET', thisdirectory + '/mapdata.xml', true); 
  	request.onreadystatechange = function() { 
  		if (request.readyState == 4) {
  			var xmlDoc = request.responseXML; 
				var markers = xmlDoc.documentElement.getElementsByTagName("marker");
				var malform = 0;
				var errmessage = ""; //alert(markers.length);
				for (var i=0; i < markers.length; i++) { 
					var coordinates = markers[i].getAttribute("coordinates");
					if(coordinates.charAt(6) != "N" || coordinates.charAt(14) != "W") {
						errmessage += "Coordinate " + (i+1) + " malformed\n"; 
						malform++;
					}
					else {
					var lat = (parseFloat(coordinates.substr(0,2)) + parseFloat((coordinates.substr(2,2)/60)) + parseFloat((coordinates.substr(4,2)/3600))).toFixed(6); 
					var lng = -(parseFloat(coordinates.substr(7,3)) + parseFloat((coordinates.substr(10,2)/60)) + parseFloat((coordinates.substr(12,2)/3600))).toFixed(6);
					}
					if (lat && lng) {
						var collection = markers[i].getAttribute("reference").substring(markers[i].getAttribute("reference").indexOf('?/')+2,markers[i].getAttribute("reference").indexOf(','));
						var refurl = "http://content.statelib.wa.gov/u?/" + collection + ",";
						var thumbnail = "http://content.statelib.wa.gov/cgi-bin/thumbnail.exe?CISOROOT=/" + collection + "&CISOPTR=";
						var ref = parseFloat(markers[i].getAttribute("reference").substring(markers[i].getAttribute("reference").indexOf(',')+1,markers[i].getAttribute("reference").length)); 
						var latlng = new GLatLng(parseFloat(lat),parseFloat(lng));
						var html = '<div style="width:325px; font-size:13px;">' // height:' + moreheight + 'px;
							+ '<div style="text-align:center; margin-bottom:5px;"><b>' + markers[i].getAttribute("title") + '</b></div>'
							+ '<div style="text-align:center; margin-bottom:7px;"><a href="' + refurl + ref + '" target="_blank">'
							+ '<img src="' + thumbnail + ref + '" border="0" /></a></div>'
							+ '<div style="margin-bottom:7px; text-align:left;">' + markers[i].getAttribute("description") + '</div>'
							+ '<div "style="margin-bottom:5px;"><a href="' + refurl + ref + '" target="_blank">' + refurl + ref + '</a></div>'
							+ '</div>';
		  			var iconImage = thumbnail + ref + '.jpg';

						bounds.extend(latlng);

						latlngarray[i] = latlng;
						titles[i] = markers[i].getAttribute("title");
						descriptions[i] = markers[i].getAttribute("description");
						htmls[i] = html;
						uniques[latlngarray[i]] = i;
						iconImages[i] = iconImage;
					} //if
				} //for
				if (malform > 0) {
					alert(errmessage);
					return false;
				}

////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
				var j=0;
				for (var name in uniques) { 
					var k=0;
					xy[j] = [];
					descriptionarray[j] = [];
					superarray[j] = [];
					superarrayImages[j] = [];
					titlearray[j] = [];
//					alert("Index: " + name +  " is " + uniques[name]); 
					for (var i=0; i < htmls.length; i++) { 
						if(name == latlngarray[i]) { 
							xy[j][k] = latlngarray[i];
							descriptionarray[j][k] = descriptions[i];
							superarray[j][k] = htmls[i];
							superarrayImages[j][k] = iconImages[i];
							titlearray[j][k] = titles[i];	
//							alert(j + " | " + k + " | " + superarray[j][k]);
							k++; 
						}
					} j++; 
				} //for

				for (i=0; i < superarray.length; i++) { 
					if (superarray[i].length < 2) { 
						for (m=0; m<superarray[i].length; m++) { 
							var html = '<div style="margin-top:20px; width:350px; height:250px; overflow-x:hidden; overflow-y:scroll;">\n' + superarray[i][m] + '\n</div>';
  						var marker = createMarker(xy[i][m], html, superarrayImages[i][m], i);
  						map.addOverlay(marker);
				      side_bar_html.push('<dd><a href="javascript:navclick(' + i + ')">' + titlearray[i][m] + '</a></dd><p style="font-size:8px;" />');
						}
					} //if
					else { 
						var divcontent = ""; 
						var links = "";

	          for (j=0; j<superarray[i].length; j++) { 
							if(j==0){	
  	          	divcontent += '<div id="div' + i + '-' + (j+1) + '" style="display:block;">' + superarray[i][j] + '</div>\n';							
	 	        		links += '<a href="javascript:showhide(\'' + i + '-' + (j+1) + '\',\'' + i + '\',\'' + superarray[i].length + '\',\'' + (j) + '\');" class="selectedlink" id="a' + i + '-' + (j+1) + '" style="font-weight:bold; font-size:13px;">' + (j+1) + '</a> | ';
							}
							else {
  	          	divcontent += '<div id="div' + i + '-' + (j+1) + '" style="display:none;">' + superarray[i][j] + '</div>\n';
  	        		links += '<a href="javascript:showhide(\'' + i + '-' + (j+1) + '\',\'' + i + '\',\'' + superarray[i].length + '\',\'' + (j) + '\');" class="unselectedlink" id="a' + i + '-' + (j+1) + '" style="font-weight:bold; font-size:13px;">' + (j+1) + '</a> | ';
							}
					      side_bar_html.push('<dd><a href="javascript:navclick(' + i + ');showhide(\'' + i + '-' + (j+1) + '\',\'' + i + '\',\'' + superarray[i].length + '\',\'' + (j) + '\');">' + titlearray[i][j] + '</a></dd><p style="font-size:8px;" />');
    	      } //for
    	      var html = '<div style="text-align:center; margin-top:11px; margin-bottom:12px; padding-right:25px; width:325px;">' + links.substring(0,links.length-3) + '</div>\n<div style="width:350px; height:250px; overflow-x:hidden; overflow-y:scroll;">\n' + divcontent + '\n</div>'; 
  					var marker = createMarker(xy[i][0], html, superarrayImages[i][0], i);
 						map.addOverlay(marker);

marker.openInfoWindowHtml('<div align="center" style="width:1px; height:1px;">Welcome!</div>');
marker.closeInfoWindow();

					} //else
				} //for
////////////////////////////////////
////////////////////////////////////
////////////////////////////////////
			if (document.getElementById("map")){
			  navbar(side_bar_html);
			}
				map.setZoom(map.getBoundsZoomLevel(bounds)); //auto zoom
				map.setCenter(bounds.getCenter()); //auto zoom
				map.savePosition();
				thiscenter=map.getCenter();
				thiszoom=map.getZoom();

  		GEvent.addListener(map, 'zoomend', function() { 
				if(map.getZoom()>13) {
		      map.setMapType(G_NORMAL_MAP);
				}
				if(map.getZoom()<14) {
		      map.setMapType(G_PHYSICAL_MAP);
				}
	  	});

  		} //if
  	} 
  	request.send(null);
  } //function retrieveMarkers

  function createMarker(latlng, html, iconImage, i) { 
		if(iconImage) {
			var icon = new GIcon();
			icon.image=iconImage;
			icon.iconSize = new GSize(45,30);
			icon.shadow = "http://greyfiber.org/maps/resources/shadow.gif";
    	icon.shadowSize = new GSize(47, 32);
			icon.transparent = "http://greyfiber.org/maps/resources/transparent.gif";
			icon.iconAnchor = new GPoint(18, 18); //12, 12
			icon.infoWindowAnchor = new GPoint(18, 18); // 12, 12
			var marker = new GMarker(latlng, icon);
			markersarray[i]=marker;
			} //if
			else {
	  		var marker = new GMarker(latlng); 
			markersarray[i]=marker;
	  	}

  		GEvent.addListener(marker, 'click', function() { 
    	  var markerHTML = html;
      	marker.openInfoWindowHtml(markerHTML);      	
	  	});

	  	GEvent.addListener(marker, 'infowindowclose', function () {
				var coords = marker.getPoint();
				for (i=0; i<superarray.length; i++) {
					if(coords == latlngarray[i]) {
						marker.setImage(superarrayImages[i][0]);					
					}
				}
//	  		map.setCenter(bounds.getCenter());
	  	});
			gmarkers[i] = marker;
	  	return marker;
	} //function createMarker

	function comparesort(a, b) {
		return (b.substring(b.indexOf('">')+2,b.indexOf('</a>')).toLowerCase() < a.substring(a.indexOf('">')+2,a.indexOf('</a>')).toLowerCase()) - (a.substring(a.indexOf('">')+2,a.indexOf('</a>')).toLowerCase() < b.substring(b.indexOf('">')+2,b.indexOf('</a>')).toLowerCase());
	} // function comparesort

	function navbar(side_bar_html) {
		side_bar_html = side_bar_html.sort(comparesort);
		var navhtml = "";
		for (i=0; i < side_bar_html.length; i++) { 
			navhtml += side_bar_html[i] + '\n';
		}
		navhtml = '<dl style="font-size:13px; text-indent:-40px;">' + navhtml + '</dl>';
		document.getElementById("navbar").innerHTML = navhtml;
	} //function navbar

	function navclick(i) {
		GEvent.trigger(gmarkers[i], "click");
	} // function navclick

	function showhide(div,set,length,index) { 
		for (i=0; i<length; i++) {
			var divs = eval(document.getElementById("div" + set + '-' + (i+1)));
	    	divs.style.display = "none";
	    	var anchors = eval(document.getElementById("a" + set + '-' + (i+1)));
	    	anchors.className = "unselectedlink";
		}
		var thisdiv = eval(document.getElementById('div' + div));
		thisdiv.style.display="block";
		var thisanchor = eval(document.getElementById('a' + div));
		thisanchor.className = "selectedlink";
		gmarkers[set].setImage(superarrayImages[set][index]);
	} // function showhide

