/*
* ===========================================================
* GOOGLE MAPS - FRAMEWORK Y
* ===========================================================
* Google Maps script for show Google maps in different ways
* The script require maps.googleapis.com/maps/api/js script
* Documentation: www.framework-y.com/components/components.html#google-maps
* 
* Schiocco - Copyright (c) Federico Schiocchet - Schiocco - Framework Y
*/

"use strict";
(function ($) {
    $.fn.googleMap = function (n) {
        if ($(this).attr("data-trigger") != "initialized") {
            var arrGmap = getAttrs(this);
            if (isEmpty(arrGmap["coords"])) {
                initializeGMapByAdress(this);
            } else initializeGMap(this);
            $(this).attr("data-trigger", "initialized");
        }
    };
    function getAttrs(obj) {
        var arrGmap = {};
        arrGmap["coords"] = $(obj).attr("data-coords");
        arrGmap["address"] = $(obj).attr("data-address");
        arrGmap["marker"] = $(obj).attr("data-marker");
        arrGmap["marker-pos"] = $(obj).attr("data-marker-pos");
        arrGmap["marker-pos-top"] = $(obj).attr("data-marker-pos-top");
        arrGmap["marker-pos-left"] = $(obj).attr("data-marker-pos-left");
        arrGmap["skin"] = $(obj).attr("data-skin");
        arrGmap["zoom"] = $(obj).attr("data-zoom");
        if (isEmpty(arrGmap["zoom"])) arrGmap["zoom"] = 12;
        if (isEmpty(arrGmap["marker-pos-top"])) arrGmap["marker-pos-top"] = 0;
        if (isEmpty(arrGmap["marker-pos-left"])) arrGmap["marker-pos-left"] = 0;
        return arrGmap;
    }
    function initializeGMap(obj) {
        var arrGmap = getAttrs(obj);
        var cx = parseFloat(arrGmap["coords"].split(",")[0]);
        var cy = parseFloat(arrGmap["coords"].split(",")[1]);
        var geocoder, GMap;
        geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(cx, cy);
        var mapOptions = {
            zoom: parseInt(arrGmap["zoom"], 10),
            scrollwheel: false,
            center: latlng
        }
        GMap = new google.maps.Map(obj.get(0), mapOptions);
        if (!isEmpty(arrGmap["skin"])) GMap.setOptions({ styles: arrSkins[arrGmap["skin"]] });
        var arrMarker = {
            position: latlng,
            map: GMap,
        };
        if (!isEmpty(arrGmap["marker"])) arrMarker = { position: latlng, map: GMap, icon: arrGmap["marker"] };
        var marker = new google.maps.Marker(arrMarker);

        var x = 0 - arrGmap["marker-pos-left"];
        var y = 0 - arrGmap["marker-pos-top"];
        if (!isEmpty(arrGmap["marker-pos"]) && $(window).width() > 993) {
            var p = arrGmap["marker-pos"];
            if (p == 'col-md-6-right') x = x - 1 * $(".col-md-6").outerWidth() / 2;
            else if (p == 'col-md-6-left') x = x + $(".col-md-6").outerWidth() / 2;
            else if (p == 'center-bottom') y = y - 1 * $(obj).outerHeight() / 4 - 30;
            else if (p == 'center-top') y = y + $(obj).outerHeight() / 2 - 60;
        }
        if ($(window).width() > 993 || isEmpty(p)) GMap.panBy(x, y);
    }
    function initializeGMapByAdress(obj) {
        var arrGmap = getAttrs(obj);
        var geocoder;
        geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'address': arrGmap["address"] }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                $(obj).attr("data-coords", results[0].geometry.location.lat() + "," + results[0].geometry.location.lng());
                initializeGMap(obj);
            }
        });
    }
    $(".google-map").each(function (index) {
        if ($(this).attr("data-trigger") != "manual") $(this).googleMap();
    });
    var arrSkins = {
        "gray": [{ "featureType": "water", "elementType": "geometry", "stylers": [{ "color": "#e9e9e9" }, { "lightness": 17 }] }, { "featureType": "landscape", "elementType": "geometry", "stylers": [{ "color": "#f5f5f5" }, { "lightness": 20 }] }, { "featureType": "road.highway", "elementType": "geometry.fill", "stylers": [{ "color": "#ffffff" }, { "lightness": 17 }] }, { "featureType": "road.highway", "elementType": "geometry.stroke", "stylers": [{ "color": "#ffffff" }, { "lightness": 29 }, { "weight": 0.2 }] }, { "featureType": "road.arterial", "elementType": "geometry", "stylers": [{ "color": "#ffffff" }, { "lightness": 18 }] }, { "featureType": "road.local", "elementType": "geometry", "stylers": [{ "color": "#ffffff" }, { "lightness": 16 }] }, { "featureType": "poi", "elementType": "geometry", "stylers": [{ "color": "#f5f5f5" }, { "lightness": 21 }] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [{ "color": "#dedede" }, { "lightness": 21 }] }, { "elementType": "labels.text.stroke", "stylers": [{ "visibility": "on" }, { "color": "#ffffff" }, { "lightness": 16 }] }, { "elementType": "labels.text.fill", "stylers": [{ "saturation": 36 }, { "color": "#333333" }, { "lightness": 40 }] }, { "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "featureType": "transit", "elementType": "geometry", "stylers": [{ "color": "#f2f2f2" }, { "lightness": 19 }] }, { "featureType": "administrative", "elementType": "geometry.fill", "stylers": [{ "color": "#fefefe" }, { "lightness": 20 }] }, { "featureType": "administrative", "elementType": "geometry.stroke", "stylers": [{ "color": "#fefefe" }, { "lightness": 17 }, { "weight": 1.2 }] }],
        "black": [{ "featureType": "all", "elementType": "labels.text.fill", "stylers": [{ "saturation": 36 }, { "color": "#000000" }, { "lightness": 40 }] }, { "featureType": "all", "elementType": "labels.text.stroke", "stylers": [{ "visibility": "on" }, { "color": "#000000" }, { "lightness": 16 }] }, { "featureType": "all", "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "featureType": "administrative", "elementType": "geometry.fill", "stylers": [{ "color": "#000000" }, { "lightness": 20 }] }, { "featureType": "administrative", "elementType": "geometry.stroke", "stylers": [{ "color": "#000000" }, { "lightness": 17 }, { "weight": 1.2 }] }, { "featureType": "landscape", "elementType": "geometry", "stylers": [{ "color": "#000000" }, { "lightness": 20 }] }, { "featureType": "poi", "elementType": "geometry", "stylers": [{ "color": "#000000" }, { "lightness": 21 }] }, { "featureType": "road.highway", "elementType": "geometry.fill", "stylers": [{ "color": "#000000" }, { "lightness": 17 }] }, { "featureType": "road.highway", "elementType": "geometry.stroke", "stylers": [{ "color": "#000000" }, { "lightness": 29 }, { "weight": 0.2 }] }, { "featureType": "road.arterial", "elementType": "geometry", "stylers": [{ "color": "#000000" }, { "lightness": 18 }] }, { "featureType": "road.local", "elementType": "geometry", "stylers": [{ "color": "#000000" }, { "lightness": 16 }] }, { "featureType": "transit", "elementType": "geometry", "stylers": [{ "color": "#000000" }, { "lightness": 19 }] }, { "featureType": "water", "elementType": "geometry", "stylers": [{ "color": "#000000" }, { "lightness": 17 }] }],
        "green": [{ "featureType": "water", "elementType": "geometry", "stylers": [{ "visibility": "on" }, { "color": "#aee2e0" }] }, { "featureType": "landscape", "elementType": "geometry.fill", "stylers": [{ "color": "#abce83" }] }, { "featureType": "poi", "elementType": "geometry.fill", "stylers": [{ "color": "#769E72" }] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [{ "color": "#7B8758" }] }, { "featureType": "poi", "elementType": "labels.text.stroke", "stylers": [{ "color": "#EBF4A4" }] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [{ "visibility": "simplified" }, { "color": "#8dab68" }] }, { "featureType": "road", "elementType": "geometry.fill", "stylers": [{ "visibility": "simplified" }] }, { "featureType": "road", "elementType": "labels.text.fill", "stylers": [{ "color": "#5B5B3F" }] }, { "featureType": "road", "elementType": "labels.text.stroke", "stylers": [{ "color": "#ABCE83" }] }, { "featureType": "road", "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.local", "elementType": "geometry", "stylers": [{ "color": "#A4C67D" }] }, { "featureType": "road.arterial", "elementType": "geometry", "stylers": [{ "color": "#9BBF72" }] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [{ "color": "#EBF4A4" }] }, { "featureType": "transit", "stylers": [{ "visibility": "off" }] }, { "featureType": "administrative", "elementType": "geometry.stroke", "stylers": [{ "visibility": "on" }, { "color": "#87ae79" }] }, { "featureType": "administrative", "elementType": "geometry.fill", "stylers": [{ "color": "#7f2200" }, { "visibility": "off" }] }, { "featureType": "administrative", "elementType": "labels.text.stroke", "stylers": [{ "color": "#ffffff" }, { "visibility": "on" }, { "weight": 4.1 }] }, { "featureType": "administrative", "elementType": "labels.text.fill", "stylers": [{ "color": "#495421" }] }, { "featureType": "administrative.neighborhood", "elementType": "labels", "stylers": [{ "visibility": "off" }] }]
    };

}(jQuery));

