//Set global variables and icons:
var map;
var shake;
var stations;
var toggle_sta  = 0;
var toggle_site = 0;
var opa = 0.2;
var strokeC;
//var epi_icon = 'http://maps.google.com/mapfiles/kml/shapes/capital_small_highlight.png';  // Red star
var epi_icon;
//var stn_icon = 'http://maps.google.com/mapfiles/dir_walk_0.png';  //grey triangle
var stn_icon = 'http://maps.google.com/mapfiles/kml/pal4/icon56.png';  //small centered square
var grd_icon;

function initMap() {
    var location = {lat:47.8980, lng:-92.5840};
    var map = new google.maps.Map(document.getElementById('mapPart'), {
        zoom: 6,
        center: location,
        mapTypeId: google.maps.MapTypeId.TERRAIN,
        scaleControl: true
        });
        window.map = map;

//    var r_star = 'http://maps.google.com/mapfiles/kml/shapes/capital_small_highlight.png';  // Red star
    //var marker = new google.maps.Marker({
    //    position: location,
    //    map: map,
    //    title: 'Epicenter',
    //    icon: epi_icon
    //    });
        epi_icon = {
        url: "http://maps.google.com/mapfiles/kml/shapes/capital_small_highlight.png",
        scaledSize: new google.maps.Size(35, 35),
        origin: new google.maps.Point(0,0),
        anchor: new google.maps.Point(15,25),
        };

        grd_icon = {
        url: "http://maps.google.com/mapfiles/kml/pal4/icon57.png",
        scaledSize: new google.maps.Size(15, 15),
        origin: new google.maps.Point(0,0),
        anchor: new google.maps.Point(5,10)
        };

        epicenter= new google.maps.Data({map: map});
    	shake    = new google.maps.Data({map: map});
    	grid     = new google.maps.Data({map: map});
        sites    = new google.maps.Data({map: map});
		epicenter.loadGeoJson('eq.json');
        epicenter.setStyle(function(feature){
            return {icon: epi_icon , title: 'Epicenter' , zIndex: 1000 };
        });
        shake.loadGeoJson('contours.json');
	addShakemap();
	grid.loadGeoJson('grid.json');
        grid.setStyle(function(feature){
            return {icon: grd_icon};
        });
        sites.loadGeoJson('sites.json');
        siteVisibility();

//        document.getElementById('headPart').innerHTML=shake.style;

        google.maps.event.addListener(grid,'click', function(event) {
            var Lat = Number(event.feature.getProperty("Lat"));
            var Lon = Number(event.feature.getProperty("Lon"));
            var latlon = new google.maps.LatLng({lat: Lat , lng: Lon});
            var distance = Number(event.feature.getProperty("Rhyp")).toFixed(2);
			var infoWindow = new google.maps.InfoWindow({
                content: "Rhyp: " + distance + " km",
                position: latlon,
                //pixelOffset: new google.maps.Size(0,-20)
            });
		infoWindow.open(map,grid);
		});

        google.maps.event.addListener(shake,'click', function(event) {
            var Lat = event.latLng.lat();
            var Lon = event.latLng.lng();
            var latlon = new google.maps.LatLng({lat: Lat , lng: Lon});
			var infoWindow = new google.maps.InfoWindow({
                content: event.feature.getProperty("Intensity"),
                position: latlon,
            });
		infoWindow.open(map,shake);
		});

        google.maps.event.addListener(epicenter,'click', function(event) {
            var Lat = Number(event.feature.getProperty("Lat"));
            var Lon = Number(event.feature.getProperty("Lon"));
            var latlon = new google.maps.LatLng({lat: Lat , lng: Lon});
            var content;
			var infoWindow = new google.maps.InfoWindow({
                content: 'Date: ' + event.feature.getProperty("Date") + '<br/>' +
                         'Time: ' + event.feature.getProperty("Time") + '<br/>' +
                         'Lat.: ' + event.feature.getProperty("Lat") + '&deg;<br/>' +
                         'Lon.: ' + event.feature.getProperty("Lon") + '&deg;<br/>' +
                         'Depth: ' + event.feature.getProperty("Dep") + ' km<br/>' +
                         'Mag.: ' + event.feature.getProperty("Mag") + '<br/>' +
                         'Stress: ' + event.feature.getProperty("Sigma") + ' bars',
                position: latlon,
                pixelOffset: new google.maps.Size(0,-20)
            });
		infoWindow.open(map,epicenter);
		});

        //document.getElementById('headPart').innerHTML=Number(event.feature.getProperty("Lon"));
        
//var icon = {
//    url: "http://maps.google.com/mapfiles/kml/pal4/icon57.png", // url
//    scaledSize: new google.maps.Size(5, 5), // scaled size
//    origin: new google.maps.Point(0,0), // origin
//    anchor: new google.maps.Point(0, 0) // anchor
//};
//
// posicion = new google.maps.LatLng(45,-81)
// marker = new google.maps.Marker({
//  position: posicion,
//  map: map,
//  icon: icon
// });        

    }


function addShakemap() {
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: feature.getProperty('color'),
            strokeWeight: 2.5,
            fillOpacity: opa
        });
    });
}


function removeShakemap() {
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
        visible: false
        });
    });
}


function contour() {
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: 'black',
            strokeWeight: feature.getProperty('StrW'),
            fillOpacity: 0
        });
    });
}


function shade() {
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: feature.getProperty('color'),
            strokeWeight: 0,
            fillOpacity: opa
        });
    });
}


function shade_contour() {
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: 'black',
            strokeWeight: feature.getProperty('StrW'),
            fillOpacity: opa,
        });
    });
    strokeC = 'black';
}


function draw_sites() {
    site_bnd.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: 'black',
            strokeWeight: feature.getProperty('StrW'),
            fillOpacity: 0.3
        });
    });
}


function strong() {
    if(opa <= 0.95) opa = opa + 0.05;
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: 'black',
            //strokeColor: strokeC,
            strokeWeight: feature.getProperty('StrW'),
            fillOpacity: opa,
        });
    });
}


function weak() {
    if(opa >=0.05) opa = opa - 0.05;
    shake.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
            fillColor: feature.getProperty('color'),
            strokeColor: 'black',
            //strokeColor: strokeC,
            strokeWeight: feature.getProperty('StrW'),
            fillOpacity: opa,
        });
    });
}


function stationVisibility(){
	if(toggle_sta%2==0)
		{
		stationInvisible();
		}
		else
		{
        stationVisible();
		}
	toggle_sta = toggle_sta + 1;
}


function siteVisibility(){
	if(toggle_site%2==0)
		{
		siteInvisible();
		}
		else
		{
        siteVisible();
		}
	toggle_site = toggle_site + 1;
}
		

function stationInvisible() {
    grid.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
		    visible: false
        });
    });
}


function stationVisible() {
    grid.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
		    visible: true,
            icon: grd_icon
        });
    });
}


function siteInvisible() {
    sites.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
	    visible: false
        });
    });
}


function siteVisible() {
    sites.setStyle(function(feature) {
        return /** @type {google.maps.Data.StyleOptions} */({
	    visible: true,
            fillColor: feature.getProperty('color'),
            strokeColor: 'black',
            strokeWeight: feature.getProperty('StrW'),
            fillOpacity: 0.3
        });
    });
}


google.maps.event.addDomListener(window, 'load', initialize);
