﻿var regionid;

var googleMap = null;
var googleBoundsAll = null;
var googleMarkers = [];
var googleInfoWindow = null;

var defaultLatitude = 55.684013
var defaultLongitude = 12.569457

function createGoogleMap(latlng) {

    if (latlng == null) {
        latlng = new google.maps.LatLng(defaultLatitude, defaultLongitude);
    }

    if (googleMap == null) {

        googleMap = new google.maps.Map(document.getElementById('map'), {
            zoom: 15,
            center: latlng,
            mapTypeControl: false,
            streetViewControl: false
        });
    }
}

function initMap() {

    if (googleMap == null) {
        createGoogleMap();
    }

    googleBoundsAll = new google.maps.LatLngBounds();

    for (var treatmentItemIndex = 0; treatmentItemIndex < treatmentItems.length; treatmentItemIndex++) {

        treatmentItems[treatmentItemIndex].treatmentItemIndex = treatmentItemIndex;

        var treatmentItem = treatmentItems[treatmentItemIndex];
        var position = null;

        if (treatmentItem.Latitude != 0 && treatmentItem.Longitude != 0) {

            position = new google.maps.LatLng(treatmentItem.Latitude, treatmentItem.Longitude);
        }

        if (position != null) {

            var marker = new google.maps.Marker({
                position: position,
                map: googleMap,
                customInfo: treatmentItemIndex
            });

            googleMarkers.push(marker);
            googleBoundsAll.extend(position);

            marker.addListener('click', function () {

                if (googleInfoWindow != null) {

                    googleInfoWindow.close();
                }

                var currentTreatmentIndex = this.customInfo;

                treatmentItems.forEach(function (treatmentItem) {

                    if (treatmentItem.treatmentItemIndex === currentTreatmentIndex) {

                        var extraContent = '';
                        var therapist = '';

                        if (treatmentItem.Therapist != '') {
                            therapist = 'Behandler: ' + treatmentItem.Therapist + '<br />';
                        }

                        if (treatmentItem.PhoneNumber != '') {
                            extraContent += 'Telefon: ' + treatmentItem.PhoneNumber + '<br />';
                        }

                        if (treatmentItem.Email != '') {
                            extraContent += '<a href="mailto:' + treatmentItem.Email + '">' + treatmentItem.Email + '</a><br />';
                        }

                        if (treatmentItem.Website != '') {
                            extraContent += '<a href="' + treatmentItem.Website + '" target="_blank">Hjemmeside</a><br />';
                        }

                        googleInfoWindow = new google.maps.InfoWindow({
                            content: '<div class="google-infowindow">'
                                + '<strong>' + treatmentItem.Clinic + '</strong><br />'
                                + therapist
                                + treatmentItem.Street + '<br />'
                                + treatmentItem.ZipCode + ' ' + treatmentItem.City + '<br />'
                                + extraContent
                                + '</div>'
                        });

                        googleInfoWindow.open(googleMap, treatmentItem.marker);
                    }
                });
            });
        }

        treatmentItems[treatmentItemIndex].marker = marker;
    }

    setBoundsToRegion();
}

function safeZoom() {

    var currentZoom = googleMap.getZoom();

    // just to be safe we don't auto zoom in too far
    if (currentZoom > 15) {

        googleMap.setZoom(15);
    } else {

        googleMap.setZoom(currentZoom - 1); // lets move 1 zoom further out
    }
}

function setBoundsToRegion() {

    if (googleMap == null) {
        return;
    }

    var useBoundsAll = true;

    if (regionid != null && regionid != '') {

        var boundsRegion = new google.maps.LatLngBounds();
        var foundTreatments = false;

        treatmentItems.forEach(function (treatmentItem) {

            if (treatmentItem.RegionId === regionid) {

                boundsRegion.extend(treatmentItem.marker.position);
                foundTreatments = true;
            }
        });

        if (foundTreatments) {

            useBoundsAll = false;
            googleMap.fitBounds(boundsRegion);
            safeZoom();
        }
    }

    if (useBoundsAll) {

        googleMap.fitBounds(googleBoundsAll);
        safeZoom();
    }
}

function createCookie(name, value, days) {
    let expires = 0;

    if (days.length === 0) {
        days = 365;
    }

    var date = new Date();
    date.setDate(date.getDate() + days);
    expires = "; expires=" + date;
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

$(document).ready(function () {

    setTimeout(function () {
        var cookieAlias = "shown-cookie";
        var datoCookieValue = readCookie(cookieAlias);

        if (!datoCookieValue) {
            $('.cookie').addClass("active");

            $(".cookie-btn").click(function () {
                $('.cookie').removeClass("active");
                createCookie(cookieAlias, 1, 365); //expire in 365 days
            });
        }
    }, 1000);

    // show selected value
    $(".dropdown-menu li a").click(function () {

        $(".btn:first-child").text($(this).text());
        $(".btn:first-child").val($(this).text());

    });

    $('.menu-toggle').on('click', function () {
        $('.right-content, body').toggleClass('active');
    });

    $('[data-unionregionmenu] li a').click(function (e) {

        e.preventDefault();

        regionid = $(this).parent().data('regionid');

        var treatmentList = $('#list-content');

        if (regionid == null) {
            
            treatmentList.find('[data-regionid]').show();
        }
        else {

            treatmentList.find('[data-regionid]').hide();
            treatmentList.find("[data-regionid='" + regionid + "']").show();
        }

        $('[data-treatmentgroup]').each(function () {
            
            var treatmentGroupLetter = $(this).data('treatmentgroup');

            var visibleTreatments = $("[data-treatmentgroupchild='" + treatmentGroupLetter + "']").find('[data-regionid]:visible').length;

            if (visibleTreatments > 0) {

                $(this).show();

            } else {

                $(this).hide();
            }
        });

        setBoundsToRegion();
    });
});