﻿var stylez = [
/*
    { featureType: "landscape", elementType: "geometry", stylers: [{ lightness: -80}] }
  , { featureType: "landscape", elementType: "labels", stylers: [{ lightness: 75 }] }
  , { featureType: "landscape.natural", elementType: "all", stylers: [ { visibility: "off" }] }
  , { featureType: "poi", elementType: "all", stylers: [ { visibility: "off" }] }
  , { featureType: "road", elementType: "all", stylers: [{ saturation: -100 }] }
  , { featureType: "transit", elementType: "all", stylers: [{ saturation: -100 }] }
  , { featureType: "water", elementType: "all", stylers: [{ lightness: 100 }] }
  */
/*
  {
      featureType: "road",
      stylers: [
      { hue: "#ff0900" }
    ]
  }, {
      featureType: "landscape.natural",
      stylers: [
      { hue: "#e6ff00" },
      { saturation: -100 },
      { lightness: 23 }
    ]
  }, {
      featureType: "poi.park",
      stylers: [
      { hue: "#08ff00" },
      { saturation: -100 },
      { lightness: 41 }
    ]
  }, {
      featureType: "water",
      stylers: [
      { hue: "#0077ff" },
      { saturation: -43 },
      { lightness: 23 }
    ]
  }, {
      featureType: "landscape.man_made",
      stylers: [
      { hue: "#00eeff" },
      { saturation: -94 },
      { lightness: 2 }
    ]
  }, {
      featureType: "administrative",
      stylers: [
      { hue: "#ff1a00" },
      { lightness: 14 }
    ]
  }
  */
];

function initialize_gmapNoPins(divToDrawOn) {
    try {
            var latlng = new google.maps.LatLng(30, 0);
            var mapOptions = {
                zoom: 1,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                navigationControl: false,
                mapTypeControl: false,
                scaleControl: false,
                streetViewControl: false,
                mapTypeControlOptions: {
                    mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'traveluxSimple']
                }
            }
            map = new google.maps.Map(document.getElementById(divToDrawOn), mapOptions);

            var styledMapOptions = {
                name: "traveluxSimple"
            }
            var tlMapType = new google.maps.StyledMapType(stylez, styledMapOptions);
            map.mapTypes.set('traveluxSimple', tlMapType);
            map.setMapTypeId('traveluxSimple');
        }
        catch (e) {
            //alert(e);
        }
}

function gmapSetup(latlonArray, divToDrawOn, zoomLevel) 
{
    if (typeof (latlonArray) == undefined) {

        try {
            var latlng = new google.maps.LatLng(30, 0);
            var mapOptions = {
                zoom: 1,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                navigationControl: false,
                mapTypeControl: false,
                scaleControl: false,
                streetViewControl: false,
                mapTypeControlOptions: {
                    mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'traveluxSimple']
                }
            }
            map = new google.maps.Map(document.getElementById(divToDrawOn), mapOptions);

            var styledMapOptions = {
                name: "traveluxSimple"
            }
            var tlMapType = new google.maps.StyledMapType(stylez, styledMapOptions);
            map.mapTypes.set('traveluxSimple', tlMapType);
            map.setMapTypeId('traveluxSimple');
        }
        catch (e) {
        }
    }
    else 
    {
        try {
            var bounds = new google.maps.LatLngBounds();
            var zoomLevel = 15;
            if (typeof (latlonArray[0].addLevel) == 'undefined') {
                zoomLevel = 1;
            }
            else {

                if (latlonArray[0].addLevel === '0') {
                    zoomLevel = 2;
                }
                else if (latlonArray[0].addLevel === '1') {
                    zoomLevel = 5;
                }
                else if (latlonArray[0].addLevel === '2') {
                    zoomLevel = 6;
                }
                else if (latlonArray[0].addLevel === '3') {
                    zoomLevel = 8;
                }
                else if (latlonArray[0].addLevel === '4') {
                    zoomLevel = 11;
                }
                else if (latlonArray[0].addLevel === '5') {
                    zoomLevel = 15;
                }
            }
            var mapOptions = {
                zoom: zoomLevel,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                navigationControl: true,
                mapTypeControl: false,
                scaleControl: false,
                streetViewControl: false,
                mapTypeControlOptions: {
                    mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'traveluxSimple']
                }
            }
            map = new google.maps.Map(document.getElementById(divToDrawOn), mapOptions);
            var styledMapOptions = {
                name: "traveluxSimple"
            }
            var tlMapType = new google.maps.StyledMapType(stylez, styledMapOptions);
            map.mapTypes.set('traveluxSimple', tlMapType);
            map.setMapTypeId('traveluxSimple');
            for (var i = 0; i < latlonArray.length; i++) {
                var latlon = new google.maps.LatLng(latlonArray[i].latitude, latlonArray[i].longitude);
                var markerImage = new google.maps.MarkerImage(latlonArray[i].image);
                var marker = new google.maps.Marker({
                    position: latlon,
                    map: map,
                    icon: markerImage,
                    title: latlonArray[i].name
                });
                bounds.extend(marker.getPosition());
            }
            if (zoomLevel == 18)
                map.fitBounds(bounds);
            map.setCenter(bounds.getCenter());
        }
        catch (e) {
        }
    }
}


function initialize_gmap(latlonArray, divToDrawOn) {
    if (typeof (latlonArray) !== 'undefined') {
        try {
            var bounds = new google.maps.LatLngBounds();
            //var latlonCenter = new google.maps.LatLng(latlonArray[0].latitude, latlonArray[0].longitude);
            var zoomLevel = 15;
            if(typeof (latlonArray[0].addLevel !== 'undefined')){
                if(latlonArray[0].addLevel == '0'){
                    zoomLevel = 2;
                }
                else if(latlonArray[0].addLevel == '1'){
                    zoomLevel = 4;
                }
                else if(latlonArray[0].addLevel == '2'){
                    zoomLevel = 6;
                }
                else if(latlonArray[0].addLevel == '3'){
                    zoomLevel = 8;
                }
                else if(latlonArray[0].addLevel == '4'){
                    zoomLevel = 11;
                }
                else if (latlonArray[0].addLevel == '5') {
                    zoomLevel = 15;
                }
            }

            var mapOptions = {
                zoom: zoomLevel,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                navigationControl: true,
                mapTypeControl: false,
                scaleControl: false,
                streetViewControl: false,
                mapTypeControlOptions: {
                    mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'traveluxSimple']
                }
            }
            map = new google.maps.Map(document.getElementById(divToDrawOn), mapOptions);
            
            var styledMapOptions = {
                name: "traveluxSimple"
            }
            var tlMapType = new google.maps.StyledMapType(stylez, styledMapOptions);
            map.mapTypes.set('traveluxSimple', tlMapType);
            map.setMapTypeId('traveluxSimple');

            for (var i = 0; i < latlonArray.length; i++) {
                var latlon = new google.maps.LatLng(latlonArray[i].latitude, latlonArray[i].longitude);
                var markerImage = new google.maps.MarkerImage(latlonArray[i].image);
                var marker = new google.maps.Marker({
                    position: latlon,
                    map: map,
                    icon: markerImage,
                    title: latlonArray[i].name
                });
                bounds.extend(marker.getPosition());
            }
            if(latlonArray.length > 1)
                map.fitBounds(bounds);
            map.setCenter(bounds.getCenter());
        }
        catch (e) {
            //alert(e);
        }
    }
}

function setupMaps() {
    // for each map call function to setup map, passing in position for associating items to map
    var latlontosetup;
    if (typeof (latlons) !== 'undefined') {
        for (n = 0; n < latlons.gpscoord.length; n++) {
            if (latlons.gpscoord[n].locations.length > 0) {
                divToDrawOn = "divMapGroup" + latlons.gpscoord[n].day;
                if (document.getElementById(divToDrawOn) !== undefined) {
                    latlontosetup = latlons.gpscoord[n].locations;
                    gmapSetup(latlontosetup, divToDrawOn);
                }
            }
        }
    }
    else {
        initialize_gmapNoPins("divMapGroup0");
    }
}

function setupMapsZoom() 
{
    // for each map call function to setup map, passing in position for associating items to map
    var latlontosetup;
    if (typeof (latlons) !== 'undefined') {
        for (n = 0; n < latlons.gpscoord.length; n++) {
            if (latlons.gpscoord[n].locations.length > 0) {
                divToDrawOn = "divMapGroup" + latlons.gpscoord[n].day;
                if (document.getElementById(divToDrawOn) !== undefined) {
                    latlontosetup = latlons.gpscoord[n].locations;
                    gmapSetup(latlontosetup, divToDrawOn, 1);
                }
            }
        }
    }
    else {
        gmapSetup("","divMapGroup0",1);
    }
}

function codeAddress(address) {
    geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            return results;
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

function codeAndSetup() {
    var latlontosetup;
    if (typeof (latlons) !== 'undefined') {
        for (n = 0; n < latlons.gpscoord.length; n++) {
            if (latlons.gpscoord[n].locations.length > 0) {
                divToDrawOn = "divMapGroup" + latlons.gpscoord[n].day;
                if (document.getElementById(divToDrawOn) !== undefined) {
                    for (m = 0; m < latlons.gpscoord[n].locations.length; m++) {
                        var gpsresults = codeAddress(latlons.gpscoord[n].locations[m].address);
                        latlons.gpscoord[n].locations[m].latitude = gpsresults[0].geometry.location;
                    }
                    latlontosetup = latlons.gpscoord[n].locations;
                    gmapSetup(latlontosetup, divToDrawOn, 1);
                }
            }
        }
    }
}
