﻿// JScript File
    var map;
    var directionsPanel;
    var directions;
    var gdir;
    var homelatlng;
    var centerpoint;
    var homepoint;
    var mrkr;
    var xcoord;
    var ycoord;
    var panel_html = "";
    var gmarkers = new Array();
    var htmls = new Array();
    var mi = 0;
    var Ctgry = new Array();
    var SelIndex = 0;
    var xmlDoc;

    function MarkerCategory(name, centerpiont, zoom, mapicon, imageoff, imageon)
    {
        this.Name = name;
        this.Center = centerpiont;
        this.Zoom = zoom;
        this.MapIcon = mapicon;
        this.ImageOff = imageoff;
        this.ImageOn = imageon;
    }
    
    function initialize() 
    {
        try
        {
            if (GBrowserIsCompatible()) 
            {      
                map = new GMap2(document.getElementById("map_canvas"));
                map.addControl(new GSmallMapControl());
                centerpoint = new GLatLng(39.409573,-120.409019);
                map.setCenter(centerpoint, 10);
                var baseIcon = new GIcon();
                baseIcon.iconAnchor = new GPoint(15, 47);
                baseIcon.infoWindowAnchor = new GPoint(15, 50);
                baseIcon.infoShadowAnchor = new GPoint(0, 0);
                
                //alert('hi 1');
                var mlrpoint = new GLatLng(39.23948284673148,-120.05170583724976);
	            map.addOverlay(createMLRMarker(mlrpoint));
	            //map.addOverlay(new GMarker(centerpoint));
	            //alert('hi 2');


                var xmlpath = 'XML/areamap.xml';
	            if(window.ActiveXObject)// code for IE
	            {
		            xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
	            }
	            else if(window.XMLHttpRequest)// code for Mozilla, etc.
	            {
		            xmlDoc = new XMLHttpRequest();
	            }
	            else
	            {
		            alert("Your browser does not support XMLHTTP.")
	            }
	            if(xmlDoc)
	            {
		            xmlDoc.onreadystatechange =     function ()
                    {
                        if(xmlDoc.readyState == 4)
                        {
                            var categories;
                            var firstindex;
                            var mapicon;
                            var imageoff;
                            var imageon;
                            var markers;
                            var AreaMap;
                            var specialIcon;
                            var response = xmlDoc.responseXML.documentElement;
                            categories = response.getElementsByTagName('Category');
                            for (var c = 0; c < categories.length; c++) 
                            {
                                specialIcon = new GIcon();
                                specialIcon.iconSize = new GSize(36, 36);
                                specialIcon.shadowSize = new GSize(62, 36);
                                specialIcon.iconAnchor = new GPoint(36, 36);
                                specialIcon.infoWindowAnchor = new GPoint(16, 8);
                                var navlink = document.getElementById('link'+c);
                                var linktext = '<a href="javascript:cat_select(';
                                linktext = linktext + c;
                                linktext = linktext + ');" border="0"><img src="';
                                //alert(categories[c].getElementsByTagName('Name')[0].childNodes[0].nodeValue);
                                createMarkerCategory(categories[c].getElementsByTagName('Name')[0].childNodes[0].nodeValue,
                                    new GLatLng( parseFloat(categories[c].getElementsByTagName('CenterLat')[0].childNodes[0].nodeValue) , parseFloat(categories[c].getElementsByTagName('CenterLng')[0].childNodes[0].nodeValue)), 
                                    parseInt(categories[c].getElementsByTagName('Zoom')[0].childNodes[0].nodeValue),
                                    categories[c].getElementsByTagName('MapIcon')[0].childNodes[0].nodeValue,
                                    categories[c].getElementsByTagName('ImageOff')[0].childNodes[0].nodeValue,
                                    categories[c].getElementsByTagName('ImageOn')[0].childNodes[0].nodeValue);
                                specialIcon.image = categories[c].getElementsByTagName('MapIcon')[0].childNodes[0].nodeValue;
                                specialIcon.shadow = categories[c].getElementsByTagName('MapIconShadow')[0].childNodes[0].nodeValue;
                                if(c>0)
                                {
                                    linktext = linktext + categories[c].getElementsByTagName('ImageOff')[0].childNodes[0].nodeValue;
                                }
                                else
                                {
                                    linktext = linktext + categories[c].getElementsByTagName('ImageOn')[0].childNodes[0].nodeValue;
                                }
                            
                                linktext = linktext + '" id="imglink';
                                linktext = linktext + c;
                                linktext = linktext + '" onmouseover="cat_over(';
                                linktext = linktext + c;
                                linktext = linktext + ');" onmouseout="cat_out(';
                                linktext = linktext + c;
                                linktext = linktext + ');" border="0"/></a>';
                                navlink.innerHTML = linktext;

                                markers = categories[c].getElementsByTagName('Marker');
                                for (var m = 0; m < markers.length; m++) 
                                {
                                    var label = markers[m].getAttribute('label');
                                    //alert(label);
                                    var lat = parseFloat(markers[m].getAttribute("lat"));
                                    var lng = parseFloat(markers[m].getAttribute("lng"));
                                    var point = new GLatLng(lat,lng);
                                    var html = markers[m].getAttribute("html");
                                    var label = markers[m].getAttribute("label");
                                            
                                    var marker = createMarker(point,label,html,specialIcon, c);
                                    map.addOverlay(marker);
                                }

                                //show(0);
                            }
                            show(0);
                       }

                    };
		            xmlDoc.open("GET", xmlpath);
		            xmlDoc.send(null);
	            }
                            
    	        
    	        /*
                GEvent.addListener(map,"click", function(overlay,latlng) {
                      if (overlay) {
                        // ignore if we click on the info window
                        return;
                      }
                      var tileCoordinate = new GPoint();
                      var tilePoint = new GPoint();
                      var currentProjection = G_NORMAL_MAP.getProjection();
                      tilePoint = currentProjection.fromLatLngToPixel(latlng, map.getZoom());
                      tileCoordinate.x = Math.floor(tilePoint.x / 256);
                      tileCoordinate.y = Math.floor(tilePoint.y / 256);
                      var myHtml = "Latitude: " + latlng.lat() + "<br/>Longitude: " + latlng.lng() + 
                        "<br/>The Tile Coordinate is:<br/> x: " + tileCoordinate.x + 
                        "<br/> y: " + tileCoordinate.y + "<br/> at zoom level " + map.getZoom();	
                      map.openInfoWindow(latlng, myHtml);
                    });       */     
                    /*
                    */
                        //alert('show');
            }
            else
            {
                alert("Sorry, the Google Maps API is not compatible with this browser");
            }
        }
        catch(err)
        {
        
        }
    }

    function createMarkerCategory(name, centerpiont, zoom, mapicon, imageoff, imageon)
    {
        var MC = new MarkerCategory(name, centerpiont, zoom, mapicon, imageoff, imageon);
        Ctgry.push(MC);
    }
        
    function createMarker(point,name,html, specialIcon, catidx) 
    {
        markerOptions = { icon:specialIcon, title:name };
        InfoOffset = new GSize(-100, 100);
        var marker = new GMarker(point, markerOptions);
            //alert(Ctgry[catidx].Name);
        marker.mycategory = Ctgry[catidx].Name;                                 
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        
        // save the info we need to use later for the side_bar
        gmarkers[mi] = marker;
        
        htmls[mi] = html;
        // add a line to the side_bar html
        mi++;
        return marker;
    }
      
    function createMLRMarker(point) 
    {  
        var IconImage = new GIcon();
        IconImage.shadow = "assets/areamap/icons/mlr-bubbleshadow.png";
        IconImage.iconSize = new GSize(47, 53);
        IconImage.shadowSize = new GSize(71, 45);
        IconImage.iconAnchor = new GPoint(20, 0);
        IconImage.infoWindowAnchor = new GPoint(9, 2);

        IconImage.image = "assets/areamap/icons/mlr-bubble.png";  
        // Set up our GMarkerOptions object  
        MLRmarkerOptions = { icon:IconImage };  
        //var marker = new GMarker(point, markerOptions);  
        var marker = new GMarker(point, MLRmarkerOptions);  
        return marker;
    }
    
    function show(catindx) 
    {
        map.closeInfoWindow();
        hideall();
        //alert(Ctgry[catindx].Center)
        
        gotomap(Ctgry[catindx].Center, Ctgry[catindx].Zoom);
        for (var i=0; i<gmarkers.length; i++) 
        {
            if (gmarkers[i].mycategory == Ctgry[catindx].Name) 
            {
                gmarkers[i].show();
            }
        }
    }     
                  // == hides all markers of a particular category, and ensures the checkbox is cleared ==
    function hide(catindx) 
    {
        for (var i=0; i<gmarkers.length; i++) 
        {
            if (gmarkers[i].mycategory == Ctgry[catindx].Name) 
            {
                gmarkers[i].hide();
            }
        }
    }  

    function hideall()
    {
        len = Ctgry.length;
        for (var i=0; i<len; i++) 
        {
            hide(i);
        }                   
    }      
                
    function gotomap(latlong, zoom)
    {
        if(map.getZoom()!=zoom)
        {
            map.setZoom(zoom);
        }
        map.panTo(latlong);
    }
    
    function myclick(i) 
    {
        gmarkers[i].openInfoWindowHtml(htmls[i]);
    }

    

    function cat_select(indx)
    {
        var oldindex = SelIndex;
        cat_over(indx);
        SelIndex=indx;
        cat_out(oldindex);
        show(indx);
    }
     
    function cat_over(indx)
    {
        if(SelIndex!=indx)
        {
            var navlink = document.getElementById('imglink'+indx);
            navlink.src = Ctgry[indx].ImageOn;
        }
    }
     
    function cat_out(indx)
    {
        if(SelIndex!=indx)
        {
            var navlink = document.getElementById('imglink'+indx);
            navlink.src = Ctgry[indx].ImageOff;
        }
    }
   