 /*
Javascript eparks
v1.0 2009-06-10
*/
//-->

	var mapMarkers = [];
	var map;
	var xmlhttp;
	var region = "";
	var flag = false;
	var browserType;
	var parkAddress;

	function transition(){
		/*$('#gallery a').lightBox();*/
		$('a#description').hide();
		$('a#amenities').click(function(){
			$('.parkdescription').slideUp();
			$('a#amenities').hide();
			$('a#description').show();
			$('.amenity').fadeIn();
		});


		$('a#description').click(function(){
			$('.parkdescription').slideDown();
			$('a#amenities').show();
			$('a#description').hide();
			$('.amenity').fadeOut();
		});


		$('a#closepark').click(function(){
			$('.park').fadeOut();
		});

		$('.parkslist li a').click(function(){
			$('.park').fadeIn();
		});

	}

	// Get URL parameter value
	function getURLParam(strParamName){
		var strReturn = "";
		var strHref = document.location.href;
		if ( strHref.indexOf("?") > -1 ){
			var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
			var aQueryString = strQueryString.split("&");
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
					var aParam = aQueryString[iParam].split("=");
					strReturn = aParam[1];
					break;
				}
			}
		}
		return strReturn;
	}

	// Initialize map - called when page is loaded
	function initMap(){
    	if (GBrowserIsCompatible()) {
       		map = new GMap2(document.getElementById("map"));
       		map.setCenter(new GLatLng(43.588280, -79.643723), 11);
       		map.enableScrollWheelZoom();
			map.setMapType(G_PHYSICAL_MAP);

       		map.setUIToDefault();

			var urlID = getURLParam("id");
			if ( (urlID != "" ) && (urlID != null) ){
				loadParks("parkname", urlID);
				flag = true;
			}
			else{
				loadParks("amenity", 'PICAR');
			}

      	}
	}

	function get_radio_value(){
		for (var i=0; i < document.searchform.searchtype.length; i++)
   			if (document.searchform.searchtype[i].checked)
      			return document.searchform.searchtype[i].value;
	}

	function GetXmlHttpObject(){
		if (window.XMLHttpRequest){
  			// code for IE7+, Firefox, Chrome, Opera, Safari
  			return new XMLHttpRequest();
  		}

		if (window.ActiveXObject){
  			// code for IE6, IE5
  			return new ActiveXObject("Microsoft.XMLHTTP");
  		}

		return null;
	}

	function stateChanged(){
		if (xmlhttp.readyState==4){
  			var xmlDoc=xmlhttp.responseXML.documentElement;

			var parkID = parseInt(xmlDoc.getElementsByTagName("PARKID")[0].childNodes[0].nodeValue);
			var parkName = xmlDoc.getElementsByTagName("PARKNAME")[0].childNodes[0].nodeValue;
			var hasImages = xmlDoc.getElementsByTagName("PARKPHOTO")[0].childNodes[0].nodeValue;
			var parkDescr = xmlDoc.getElementsByTagName("DESCRIPTION")[0].childNodes[0].nodeValue;
			parkAddress = xmlDoc.getElementsByTagName("ADDRESS")[0].childNodes[0].nodeValue;
			if ((parkDescr != " ") && (parkDescr != "CDATA")){
				document.getElementById("parkdescription").innerHTML = parkDescr;
			}
			else{
				document.getElementById("parkdescription").innerHTML = "";
			}

  			document.getElementById("partitle").innerHTML   = parkName;
  			document.getElementById("parkaddress").innerHTML = parkAddress;
  			//document.getElementById("parkdescription").innerHTML = parkDescr;

  			x=xmlDoc.getElementsByTagName("DETAILTYPE");

			html = "<ul>";

			for (i=0;i<x.length;i++){
  				detailtype = xmlDoc.getElementsByTagName("DETAILTYPE")[i].childNodes[0].nodeValue;
  				if ((detailtype != " ") && (detailtype != "CDATA"))
					html = html + "<li>" + detailtype + "</li>";
  			}
			html = html + "</ul>";

  			document.getElementById("amenitieslist").innerHTML = html;

			getParkPhoto(parkID, parkName, hasImages);

  		}
	}

	function showMarker(id, markerIndex){
		map.panTo(mapMarkers[markerIndex].getLatLng());
		GEvent.trigger(mapMarkers[markerIndex], "mouseout");
		GEvent.trigger(mapMarkers[markerIndex], "mouseover");
	}

	function getParkDescr(id, markerIndex){
		xmlhttp=GetXmlHttpObject();

		if (xmlhttp==null){
  			alert ("Your browser does not support AJAX!");
  			return;
  		}

  		var parkId = parseInt(id);
		//url = "eparksservlet?querytype=parkdescr&key="+parkId;
		url = "http://www.eparks.ca/eparksServlet/eparksservlet?querytype=parkdescr&key="+id;
		//url = "http://localhost:8080/eparksServlet/eparksservlet?querytype=parkdescr&key="+parkId;

		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);

		$('.park').fadeIn();

	}

	function getParkPhoto(parkId, parkName, hasImages){
		var photodiv = "";
		if (hasImages == "Y"){
			var photoCount = 7;
			photodiv = "<a href=\"photos/" + parkId + "/1.jpg\" rel=\"jack\" title=\"" + parkName + "\">" +
						"<img onclick=\"showPhotos()\" src=\"photos/" + parkId +  "/thumbnail.jpg\" /></a>";
			for (i=2; i<=photoCount; i++){
				photodiv = photodiv + "<a href=\"photos/" + parkId + "/" + i + ".jpg\" rel=\"jack\" title=\"" + parkName + "\" style=\"display:none\"></a>";
			}
		}
		else{
			photodiv = "<img src=\"images/park_Thumbnail.jpg\" />";
		}
		document.getElementById("parkphoto").innerHTML   = photodiv;
	}

	function showPhotos(){
		$("a[rel='jack']").colorbox({transition:"fade"});
		$('#showdescription_icon').hide();
	}

	function searchByAmenities(id){

		$('.errormessage').fadeOut();
		clearMap();
		loadParks("amenity", id);
	}

	function showParks(){
		$('.errormessage').fadeOut();
		clearMap();
    	loadParks(get_radio_value(), document.getElementById('key').value);
	}

	function resetList(){
		$('.park').fadeOut();
	}

	function clearMap(){
		resetList();
		mapPoints = [];
		mapMarkers = [];
    	map.clearOverlays();
	}

    function createParkMarker(point) {
    	var baseIcon = new GIcon();
         baseIcon.iconSize=new GSize(32,32);
         baseIcon.shadowSize=new GSize(56,32);
         baseIcon.iconAnchor=new GPoint(16,32);
         baseIcon.infoWindowAnchor=new GPoint(16,0);

		var icon = new GIcon("Tree");
        icon.image = "images/tree_icon.png";
        icon.iconSize = new GSize(32, 32);
        icon.iconAnchor = new GPoint(5, 25);
        icon.infoWindowAnchor = new GPoint(15, 25);
        var marker = new GMarker(point, icon);

		var tooltip = new Tooltip(marker, point.parkname, 5);
		marker.tooltip = tooltip;
		marker.id = point.id;

		GEvent.addListener(marker,"mouseover",function(){
			this.tooltip.show();
		});

		GEvent.addListener(marker,"mouseout",function(){
			for (var i=0;i < mapMarkers.length;i++)  {
          		mapMarkers[i].tooltip.hide();
      		 }

		});

      	GEvent.addListener(marker, "click", function() {
			getParkDescr(point.id,"");
      	});

      return marker;
    }

	function updateParkList(markers){

		document.getElementById("totalpark").innerHTML = markers.length + " - PARKS FOUND";
		htmllist= "<ul id='ul_parklist'>";

		for (var i = 0; i < markers.length; i++) {
		  	var point = new GLatLng(parseFloat(markers[i].getAttribute("LATITUDE")), parseFloat(markers[i].getAttribute("LONGITUDE")));

			var parkID = markers[i].getAttribute("ID");
            var parkName = markers[i].getAttribute("PARKNAME");
            var parkDescription = markers[i].getAttribute("DESCRIPTION");
            var parkAddress = markers[i].getAttribute("ADDRESS");

			point.id = parkID;
			point.parkname = parkName;
            point.name  = "<div class='info-window'><b>" + parkName + "</b> <br>" +
                            parkAddress + "</div>";
            htmllist = htmllist + "<li id=\""+parkID+"\" onmouseover=\"showMarker(id," + i + ")\" onclick=\"getParkDescr(id," + i + ")\"><a href='#'><strong>"+parkName+"</strong><br>"+parkAddress+"</a></li>";

         	mapMarkers.push(createParkMarker(point));
        }
		 htmllist = htmllist + "</ul>";

		document.getElementById("parklist").innerHTML =htmllist;
	}

	function loadParks(searchType, searchKey) {
		GDownloadUrl("http://www.eparks.ca/eparksServlet/eparksservlet?querytype="+searchType+"&key="+searchKey, function(data, responseCode) {
		//GDownloadUrl("http://localhost:8080/eparksServlet/eparksservlet?querytype="+searchType+"&key="+searchKey, function(data, responseCode) {
		//GDownloadUrl("eparksservlet?querytype="+searchType+"&key="+searchKey, function(data, responseCode) {
        	var xml = GXml.parse(data);
        	var markers = xml.documentElement.getElementsByTagName("PARK");

        	if (markers.length == 0){
       			$('.errormessage').fadeIn();
        	}
        	else  {
				updateParkList(markers);
				showMap();
				if (flag == true){
					getParkDescr(mapMarkers[0].id,"");
					flag = false;
				}

        	}
     	 });
    }

    // Show Google map
    function showMap(){
      // Find boundary points of locations
      var bounds = new GLatLngBounds();
      for (var i=0;i < mapMarkers.length;i++)  {
          map.addOverlay(mapMarkers[i]);
          map.addOverlay(mapMarkers[i].tooltip);
          bounds.extend(mapMarkers[i].getPoint());
       }

      // Reset center and zoom level based on queried locations
      map.setCenter(bounds.getCenter());
      map.setZoom(map.getBoundsZoomLevel(bounds));

    }

    function get_directions() {
		if (document.getElementById('from_address').value == "") {
			alert("Please enter a valid address first.");
			return false;
		}
		directionFrom = document.getElementById('from_address').value;
		directionTo = parkAddress + ",Mississauga,ON,CA";
		window.open ("getdirections.html","getdirectionwindow","status=1,toolbar=1,menubar=1,scrollbars=1");
		return false;
	}



