(function($) {
    
    "use strict";

/* --------------------------------------------
Google Map
-------------------------------------------- */ 
window.onload = MapLoadScript;
function GmapInit() {
      var Gmap = $('.map');
      Gmap.each(function() {
        var $this           = $(this),
            lat             = '',
            lng             = '',
            zoom            = 12,
            scrollwheel     = false,
            zoomcontrol     = true,
            draggable       = true,
            mapType         = google.maps.MapTypeId.ROADMAP,
            title           = '',
            contentString   = '',
            theme_icon_path         = $this.data('icon-path'),
            dataLat         = $this.data('lat'),
            dataLng         = $this.data('lng'),
            dataZoom        = $this.data('zoom'),
            dataType        = $this.data('type'),
            dataScrollwheel = $this.data('scrollwheel'),
            dataZoomcontrol = $this.data('zoomcontrol'),
            dataHue         = $this.data('hue'),
            dataTitle       = $this.data('title'),
            dataContent     = $this.data('content');
            
        if( dataZoom !== undefined && dataZoom !== false ) {
            zoom = parseFloat(dataZoom);
        }
        if( dataLat !== undefined && dataLat !== false ) {
            lat = parseFloat(dataLat);
        }
        if( dataLng !== undefined && dataLng !== false ) {
            lng = parseFloat(dataLng);
        }
        if( dataScrollwheel !== undefined && dataScrollwheel !== null ) {
            scrollwheel = dataScrollwheel;
        }
        if( dataZoomcontrol !== undefined && dataZoomcontrol !== null ) {
            zoomcontrol = dataZoomcontrol;
        }
        if( dataType !== undefined && dataType !== false ) {
            if( dataType == 'satellite' ) {
                mapType = google.maps.MapTypeId.SATELLITE;
            } else if( dataType == 'hybrid' ) {
                mapType = google.maps.MapTypeId.HYBRID;
            } else if( dataType == 'terrain' ) {
                mapType = google.maps.MapTypeId.TERRAIN;
            }           
        }
        if( dataTitle !== undefined && dataTitle !== false ) {
            title = dataTitle;
        }
        if( navigator.userAgent.match(/iPad|iPhone|Android/i) ) {
            draggable = false;
        }
        
        var mapOptions = {
          zoom        : zoom,
          scrollwheel : scrollwheel,
          zoomControl : zoomcontrol,
          draggable   : draggable,
          center      : new google.maps.LatLng(lat, lng),
          mapTypeId   : mapType
        };      
        var map = new google.maps.Map($this[0], mapOptions);
        
        //var image = 'images/icons/map-marker.png';
        var image = theme_icon_path;
        
        if( dataContent !== undefined && dataContent !== false ) {
            contentString = '<div class="map-data">' + '<h6>' + title + '</h6>' + '<div class="map-content">' + dataContent + '</div>' + '</div>';
        }
        var infowindow = new google.maps.InfoWindow({
            content: contentString
        });
        
        var marker = new google.maps.Marker({
          position : new google.maps.LatLng(lat, lng),
          map      : map,
          icon     : image,
          title    : title
        });
        if( dataContent !== undefined && dataContent !== false ) {
            google.maps.event.addListener(marker, 'click', function() {
                infowindow.open(map,marker);
            });
        }
        
        if( dataHue !== undefined && dataHue !== false ) {
          var styles = [
    {
        "featureType": "all",
        "elementType": "labels.text.fill",
        "stylers": [
            {
                "saturation": 36
            },
            {
                "color": "#222222"
            },
            {
                "lightness": 40
            }
        ]
    },
    {
        "featureType": "all",
        "elementType": "labels.text.stroke",
        "stylers": [
            {
                "visibility": "on"
            },
            {
                "color": "#F6F6F4"
            },
            {
                "lightness": 16
            }
        ]
    },
    {
        "featureType": "all",
        "elementType": "labels.icon",
        "stylers": [
            {
                "visibility": "off"
            }
        ]
    },
    {
        "featureType": "administrative",
        "elementType": "geometry.fill",
        "stylers": [
            {
                "color": "#F6F6F4"
            },
            {
                "lightness": 20
            }
        ]
    },
    {
        "featureType": "administrative",
        "elementType": "geometry.stroke",
        "stylers": [
            {
                "color": "#C7E4CC"
            },
            {
                "lightness": 17
            },
            {
                "weight": 1.2
            }
        ]
    },
    {
        "featureType": "landscape",
        "elementType": "geometry",
        "stylers": [
            {
                "color": "#F6F6F4"
            },
            {
                "lightness": 20
            }
        ]
    },
    {
        "featureType": "poi",
        "elementType": "geometry",
        "stylers": [
            {
                "color": "#C7E4CC"
            },
            {
                "lightness": 21
            }
        ]
    },
    {
        "featureType": "road.highway",
        "elementType": "geometry.fill",
        "stylers": [
            {
                "color": "#FFFFFF"
            },
            {
                "lightness": 17
            }
        ]
    },
    {
        "featureType": "road.highway",
        "elementType": "geometry.stroke",
        "stylers": [
            {
                "color": "#F6F6F4"
            },
            {
                "lightness": 29
            },
            {
                "weight": 0.2
            }
        ]
    },
    {
        "featureType": "road.arterial",
        "elementType": "geometry",
        "stylers": [
            {
                "color": "#FFFFFF"
            },
            {
                "lightness": 18
            }
        ]
    },
    {
        "featureType": "road.local",
        "elementType": "geometry",
        "stylers": [
            {
                "color": "#F6F6F4"
            },
            {
                "lightness": 16
            }
        ]
    },
    {
        "featureType": "transit",
        "elementType": "geometry",
        "stylers": [
            {
                "color": "#F6F6F4"
            },
            {
                "lightness": 19
            }
        ]
    },
    {
        "featureType": "water",
        "elementType": "geometry",
        "stylers": [
            {
                "color": "#BDE2F1"
            },
            {
                "lightness": 17
            }
        ]
    }
];
          map.setOptions({styles: styles});
        }
     });
}
    
function MapLoadScript() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    GmapInit();
    document.body.appendChild(script);
}

})(window.jQuery);