﻿// JScript File
var map;
var directionsPanel;
var directions;
var gdir;
var homelatlng;
var centerpoint;
var homepoint;
var mrkr;
var xcoord;
var ycoord;
var panpoint;
var gmarkers = [];
var resortmarkers = [];
var resorthtmls = [];
var htmls = [];
var i = 0;
function initialize() 
{

    xcoord = 39.26203141523749;
    ycoord = -120.10665893554687;
          // arrays to hold variants of the info window html with get direction forms open
    var to_htmls = [];
    var from_htmls = [];
    if (GBrowserIsCompatible()) 
    {      

        map = new GMap2(document.getElementById("map_canvas"));
        map.addControl(new GSmallMapControl());
        centerpoint = new GLatLng(39.26203141523749,-120.10665893554687);
        homepoint = new GLatLng(xcoord, ycoord);
        map.setCenter(centerpoint, 11);

        function createMarker(point,name,html,addr,idx) 
        {
            var specialIcon = new GIcon();
            specialIcon.iconSize = new GSize(62, 32);
            specialIcon.shadowSize = new GSize(82, 32);
            specialIcon.iconAnchor = new GPoint(16, 32);
            specialIcon.infoWindowAnchor = new GPoint(5, 36);
            if(idx>0)
            {
                specialIcon.image = "assets/d.png";
                specialIcon.shadow = "assets/d-shadow.png";
            }
            else
            {
                specialIcon.image = "assets/spacer.gif";
            }
            markerOptions = { icon:specialIcon, title:name };
            InfoOffset = new GSize(-100, 100);
            var marker = new GMarker(point, markerOptions);


            GEvent.addListener(marker, "click", function() 
            {
                marker.openInfoWindow(html,{ maxWidth:200});
                var zoom = map.getZoom();
                var newlat;
                newlat = (zoom*zoom)/2.1*Math.pow(0.1,zoom/2.1)*100;
                panpoint = new GLatLng(point.lat()+(newlat), point.lng()+(newlat/3));
                setTimeout("map.panTo(panpoint);",500);
                //map.panTo(panpoint);

            });
            var dirlink = '<br/><a href="http://maps.google.com/maps?f=d&hl=en&geocode=&saddr=' + addr + '&daddr=&sll=' + point.lat() + ',' + point.lng() + '&sspn=0.012169,0.019848&doflg=ptm&ie=UTF8&z=11" target="_blank" class="redlink">directions</a><br/><br/>'
            html = '<div class=\'infowindow\'>' + html + dirlink + '</div>';

            gmarkers[i] = marker;
            htmls[i] = html;

            i++;
            return marker;

        }
        function createResortMarker(point,name) 
        {
            var specialIcon = new GIcon();
            specialIcon.iconSize = new GSize(32, 24);
            specialIcon.shadowSize = new GSize(45, 24);
            specialIcon.iconAnchor = new GPoint(12, 24);
            specialIcon.image = "assets/skiier.png";
            specialIcon.shadow = "assets/skiier-shadow.png";
            markerOptions = { icon:specialIcon, title:name };
            InfoOffset = new GSize(-100, 100);
            var marker = new GMarker(point, markerOptions);

            return marker;

        }

        function myclick(i) 
        {
            gmarkers[i].openInfoWindow(htmls[i],{ maxWidth:200 });
                var zoom = map.getZoom();
                var newlat;
                newlat = (zoom*zoom)/2.2*Math.pow(0.1,zoom/2.2)*100;
                panpoint = new GLatLng(point.lat()+(newlat), point.lng()+(newlat));
                setTimeout("map.panTo(panpoint);",500);
        }

        //add resort icons
        var requestResort = GXmlHttp.create();
        requestResort.open("GET", "xml/resorts4.xml", true);
        requestResort.onreadystatechange = function() 
        {
            if (requestResort.readyState == 4) 
            {
                var xmlRDoc = GXml.parse(requestResort.responseText);
                // obtain the array of markers and loop through it
                var rmarkers = xmlRDoc.documentElement.getElementsByTagName("marker");
          
                for (var r = 0; r < rmarkers.length; r++) 
                {
                    // obtain the attribues of each marker
                    var lat = parseFloat(rmarkers[r].getAttribute("lat"));
                    var lng = parseFloat(rmarkers[r].getAttribute("lng"));
                    var point = new GLatLng(lat,lng);
                    var html = rmarkers[r].getAttribute("html");
                    var label = rmarkers[r].getAttribute("label");
                    // create the marker
                    var rmarker = createResortMarker(point,label);
                    map.addOverlay(rmarker);
                }
            }
        }
        requestResort.send(null);

        // Read the data from example.xml
        var request = GXmlHttp.create();
        request.open("GET", "xml/davesloc.xml", true);
        request.onreadystatechange = function() 
        {
            if (request.readyState == 4) 
            {
                var xmlDoc = GXml.parse(request.responseText);
                // obtain the array of markers and loop through it
                var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          
                for (var i = 0; i < markers.length; i++) 
                {
                    // obtain the attribues of each marker
                    var lat = parseFloat(markers[i].getAttribute("lat"));
                    var lng = parseFloat(markers[i].getAttribute("lng"));
                    var point = new GLatLng(lat,lng);
                    var html = markers[i].getAttribute("html");
                    var label = markers[i].getAttribute("label");
                    var addr = markers[i].getAttribute("addr");
                    // create the marker
                    var marker = createMarker(point,label,html,addr,i);
                    map.addOverlay(marker);
                }
            }
        }
        request.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);
                });*/
    }
    else 
    {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }    
}

function myclick(i) 
{
    var point = gmarkers[i].getLatLng();
    gmarkers[i].openInfoWindow(htmls[i],{ maxWidth:200 });
                var zoom = 12;
                map.setZoom(zoom);
                var newlat;
                newlat = (zoom*zoom)/2.15*Math.pow(0.1,zoom/2.15)*100;
                panpoint = new GLatLng(point.lat()+(newlat), point.lng()+(newlat/4));
                setTimeout("map.panTo(panpoint);",500);
}