(function () {
    'use strict';

    angular
        .module('editorRotas')
        .directive('ajustarTrecho', ajustarTrecho);

    ajustarTrecho.$inject = ['ferramentaAjustarTrecho', 'FuncionalidadesMapa'];

    function ajustarTrecho(ferramentaAjustarTrecho, FuncionalidadesMapa) {
        var directive = {
            link: link,
            restrict: 'E',
            replace: true,
            templateUrl: 'angular/EditorRotas/app/scripts/components/ferramentas/ajustar-trecho/ajustar-trecho.html',
        };
        return directive;

        function link(scope, element, attrs) {
            if (scope.vm.permissions.indexOf('ajustarTrecho') == -1) element.addClass('disabled');

            ferramentaAjustarTrecho.SetScope(scope);
            scope.HabilitarAjustarTrecho = HabilitarAjustarTrecho;
            scope.Unificar = () => { if (FuncionalidadesMapa.GetArrayPathPolylineHighlight().length > 2) ferramentaAjustarTrecho.UnificarTrecho(); };

            element.find('.open-tool-tip').on('click', function () {
                $(this).next().fadeIn();
            });

            element.find('.close-tool-tip').on('click', function () {
                $(this).parent().fadeOut();
            });

            scope.SetActive = SetActive;
            function HabilitarAjustarTrecho(habilitado, tipo) {
                if (habilitado) {
                    scope.elementTool.find('.tool.active').removeClass('open');
                    scope.elementTool.find('.tool.active').removeClass('active');
                    scope.elementTool.find('.icon-bezier').parent().addClass('active open');
                    SetActive(tipo);
                } else {
                    scope.elementTool.find('.tool.active').removeClass('active');
                    scope.elementTool.find('.segmentar-trechos').removeClass('active');
                    scope.elementTool.find('.selecionar-trechos').removeClass('active');
                    scope.elementTool.find('.unificar-trechos').removeClass('active');
                    scope.elementTool.find('.icon-bezier').parent().removeClass('active open');
                    scope.setCursor("");
                }
            }
            function SetActive(tipo) {
                switch (tipo) {
                    case "Selecionar":
                        scope.setCursor("cursor-selecionar-trechos");
                        scope.elementTool.find('.selecionar-trechos').addClass('active');
                        scope.elementTool.find('.unificar-trechos').removeClass('active');
                        scope.elementTool.find('.segmentar-trechos').removeClass('active');
                        break;
                    case "Unificar":
                        scope.setCursor("cursor-unificar-trechos");
                        scope.elementTool.find('.unificar-trechos').addClass('active');
                        scope.elementTool.find('.selecionar-trechos').removeClass('active');
                        scope.elementTool.find('.segmentar-trechos').removeClass('active');
                        break;
                    case "Segmentar":
                        scope.setCursor("cursor-segmentar-trechos");
                        scope.elementTool.find('.segmentar-trechos').addClass('active');
                        scope.elementTool.find('.selecionar-trechos').removeClass('active');
                        scope.elementTool.find('.unificar-trechos').removeClass('active');
                        break;
                    default:

                }
            }
        }
    }
})();
