1window.angular && (function (angular) {
2    'use strict';
3
4    angular
5        .module('app.common.directives')
6        .directive('appNavigation', function () {
7            return {
8                'restrict': 'E',
9                'template': require('./app-navigation.html'),
10                'scope': {
11                    'path': '=',
12                    'showNavigation': '='
13                },
14                'controller': ['$scope', '$location', 'dataService', function($scope, $location, dataService){
15                    $scope.dataService = dataService;
16                    $scope.showSubMenu = false;
17                    $scope.change = function(firstLevel){
18                        if(firstLevel != $scope.firstLevel) {
19                            $scope.firstLevel = firstLevel;
20                            $scope.showSubMenu = true;
21                        }else{
22                           $scope.showSubMenu = !$scope.showSubMenu;
23                        }
24                    };
25                    $scope.closeSubnav = function(){
26                        $scope.showSubMenu = false;
27                    };
28                    $scope.$watch('path', function(){
29                        var urlRoot = $location.path().split("/")[1];
30                        if(urlRoot != ""){
31                            $scope.firstLevel = urlRoot;
32                        }else{
33                            $scope.firstLevel = 'overview';
34                        }
35                        $scope.showSubMenu = false;
36                    });
37                    $scope.$watch('showNavigation', function(){
38                        var paddingTop = 0;
39                        var urlRoot = $location.path().split("/")[1];
40                        if(urlRoot != ""){
41                            $scope.firstLevel = urlRoot;
42                        }else{
43                            $scope.firstLevel = 'overview';
44                        }
45
46                        if($scope.showNavigation){
47                            paddingTop = document.getElementById('header__wrapper').offsetHeight;
48                        }
49                        dataService.bodyStyle = {'padding-top': paddingTop + 'px'};
50                        $scope.navStyle = {'top': paddingTop + 'px'};
51                    });
52                }],
53                link: function(scope, element, attributes) {
54                    var rawNavElement = angular.element(element)[0];
55                    angular.element(window.document).bind('click', function(event){
56                       if (rawNavElement.contains(event.target))
57                           return;
58
59                       if(scope.showSubMenu){
60                           scope.$apply(function(){
61                              scope.showSubMenu = false;
62                           });
63                       }
64                   });
65                }
66            };
67        });
68})(window.angular);
69