app.controller("headerController", function ($scope,$rootScope, $location, $http, perfilFactory,versaoFactory, $modal) {
    
    $scope.houveAlteracoes = false;
    $rootScope.root_mostraBarraCabecalho = true;

    $rootScope.$on("$locationChangeStart", function (event, next, current) {
        
        if ($scope.houveAlteracoes == true)
        {
            var c = confirm("Houve Alterações que não foram Guardadas.\nDeseja Continuar?");
            if (c == true)
                return;
            event.preventDefault(); //impede de mudar a pagina
        }
        
    });

    $rootScope.$on("$locationChangeSuccess", function (event, next, current) {
        $scope.houveAlteracoes = false;
        
    });

    $rootScope.$on('houveAlteracoes', function (event,data) {
        
        $scope.houveAlteracoes = data;
    });

    $scope.$on('event:perfisRequired', function (event, data) {
        
        $scope.perfisuser = data;
        
        if ($scope.perfisuser.length > 0) {
            
            
            $scope.perfilSeleccionado = $scope.perfisuser[0];
            $scope.selPerfilUsar($scope.perfisuser[0]);
            sessionStorage.perfilSelect = $scope.perfisuser[0].NomePerfil;
        }

    });

    $scope.isActive = function (viewLocation) {

        return viewLocation === $location.path();
    };

    $scope.isActive1 = function (viewLocation) {

        if (viewLocation === $location.path())
            return { "background": "none", "background-color": "white", "color": "black" };
        return { "background": "none", "color": "white" };
    };

    $scope.findPos = function (lst,nomePerfil) {
        var i = lst.length;
        while (i--) {
            if (lst[i].NomePerfil === nomePerfil) break;
        }
        return i;
    };

    $scope.verificaLeitura = function () {
        row = $scope.perfilSeleccionado;
        if (row == null)
            return;

        for (i=0; i<row.Acessos.length; i++)
        {
            if (row.Acessos[i].SoLeitura==true)
            {
                row.Acessos[i].PCriar = false;
                row.Acessos[i].PEditar = false;
                row.Acessos[i].PApagar = false;
            }
        }
    };

    

    $scope.getPosicaoMenu = function (row,nomemenu) {
        var pos = 0;
        for (i = 0; i < row.Acessos.length; i++)
        {
            
            if (row.Acessos[i].DescSubMenu == nomemenu)
            {

                pos = i;
                i = row.length;
            }
        }
        //alert(pos + " " + nomemenu);
        return pos;

        /*
        Menu Amortizações
        Menu de Dados Gerais
        Menu Cadastro - Geral
        Menu Valorização
        Acesso Menus
        Menu Configurações
        Menu Diversos - Geral
        Menu Tabelas
        Menu Utilizadores*/
    };


    $scope.selPerfilUsar = function (row) {
       
        
        $scope.perfilSeleccionado = row;
        $scope.verificaLeitura();
        
        /*$scope.mnuAmort = row.Acessos[0];
        $scope.mnuDados = row.Acessos[2];
        $scope.mnuCadastro = row.Acessos[2];
        $scope.mnuValorizacao = row.Acessos[3];
        $scope.mnuAcessoMenus = row.Acessos[4];
        $scope.mnuConf = row.Acessos[5];
        $scope.mnuDiversos = row.Acessos[6];
        $scope.mnuTabelas = row.Acessos[7];
        $scope.mnuUtilizadores = row.Acessos[8];*/
        $scope.mnuAmort = row.Acessos[$scope.getPosicaoMenu(row, "Menu Amortizações")];
        $scope.mnuDados = row.Acessos[$scope.getPosicaoMenu(row, "Menu de Dados Gerais")];
        $scope.mnuCadastro = row.Acessos[$scope.getPosicaoMenu(row, "Menu Cadastro - Geral")];
        $scope.mnuValorizacao = row.Acessos[$scope.getPosicaoMenu(row, "Menu Valorização")];
        $scope.mnuAcessoMenus = row.Acessos[$scope.getPosicaoMenu(row, "Acesso Menus")];
        $scope.mnuConf = row.Acessos[$scope.getPosicaoMenu(row, "Menu Configurações")];
        $scope.mnuDiversos = row.Acessos[$scope.getPosicaoMenu(row, "Menu Diversos - Geral")];
        $scope.mnuTabelas = row.Acessos[$scope.getPosicaoMenu(row, "Menu Tabelas")];
        $scope.mnuUtilizadores = row.Acessos[$scope.getPosicaoMenu(row, "Menu Utilizadores")];
        $scope.mnuGESTAO = row.Acessos[$scope.getPosicaoMenu(row,"Menu gestão")];
        $scope.mnuMANUTENCAO = row.Acessos[$scope.getPosicaoMenu(row,"Menu manutenção")];

       
        sessionStorage.perfilSelect = $scope.perfilSeleccionado.NomePerfil;
       
        $rootScope.perm_mnuUtilizadores = $scope.mnuUtilizadores;

        $rootScope.root_nomePerfilSelecionado = $scope.perfilSeleccionado.NomePerfil;
    };


    $scope.iniciarPerfisUser = function () {
        
        
        if (!sessionStorage.getItem('id.cibe.inovar'))
            return;
        

        var id = Number(sessionStorage.getItem('id.cibe.inovar'));

        var getSuccessCallback = function (data, status) {
            $scope.perfisuser = data;

            if ($scope.perfisuser.length > 0) {
                
                if (sessionStorage.perfilSelect) {


                    var nome = sessionStorage.perfilSelect;

                    var ind = $scope.findPos($scope.perfisuser, nome);

                    //console.log(ind);
                    if (Number(ind) == -1)
                        ind = 0;
                    if (Number(ind) > $scope.perfisuser.length - 1)
                        ind = 0;

                    $scope.perfilSeleccionado = $scope.perfisuser[Number(ind)];
                    $scope.selPerfilUsar($scope.perfilSeleccionado);
                }

                else {
                    $scope.perfilSeleccionado = $scope.perfisuser[0];
                    $scope.selPerfilUsar($scope.perfilSeleccionado);
                }
            }
        };


        var errorCallback = function (data, status, headers, config) {
            //notificationFactory.error(data);
        };

        
        perfilFactory.getPerfisUser(id).success(getSuccessCallback).error(errorCallback);

    };

    $scope.listarPerfisUser = function () {
        
        if (!sessionStorage.getItem('id.cibe.inovar'))
            return;
       

        var id = Number(sessionStorage.getItem('id.cibe.inovar'));

        var getSuccessCallback = function (data, status) {
            $scope.perfisuser = data;

            if ($scope.perfisuser.length > 0) {

                $scope.perfilSeleccionado = $scope.perfisuser[0];

            }
        };


        var errorCallback = function (data, status, headers, config) {
            //notificationFactory.error(data);
        };


        perfilFactory.getPerfisUser(id).success(getSuccessCallback).error(errorCallback);

    };

    $scope.getSessionId=function() {
        
        if (sessionStorage.getItem('id.cibe.inovar'))
            return Number(sessionStorage.getItem('id.cibe.inovar'));
        else return 0;
    };

    $scope.versao = {};

    $scope.getVersao = function () {
        var getSuccessCallback = function (data, status) {

            $scope.versao = data;
            var tit = $scope.versao.Titulo + " v" + $scope.versao.Versao;
            
            if (tit == "v")
                tit = "Inovar Inventário";
            document.title = tit;
        };


        var errorCallback = function (data, status, headers, config) {
            doc.title = "Inovar Inventário";
        };

        versaoFactory.getVersao().success(getSuccessCallback).error(errorCallback);
    };

    $scope.getVersao();
    
    $scope.getUltimaEntradaUtilizador = function () {
        return sessionStorage.getItem("CibeUltimaEntradaStr");
    };

    $scope.getNomeEntradaUtilizador = function () {
        return sessionStorage.getItem("CibeUsernameAlt");
    };

    $scope.getTextoDireitos = function () {
        var dat = new Date();

        return 'Inovar+ AZ - Sistemas de Informação © ' + dat.getFullYear() + ' - Todos os direitos reservados';
    };

    $rootScope.root_usaProgContabilidade = function () {
        return JSON.parse(sessionStorage.getItem('usaProgContabilidade'));
    };

    

});