window.angular && (function(angular) {
  'use strict';

  angular.module('app.common.directives')
      .directive('toggleFlag', function($document) {
        return {
          restrict: 'A',
          link: function(scope, element, attrs) {
            function elementClick(e) {
              e.stopPropagation();
            }

            function documentClick(e) {
              scope[attrs.toggleFlag] = false;
              scope.$apply();
            }

            element.on('click', elementClick);
            $document.on('click', documentClick);

            // remove event handlers when directive is destroyed
            scope.$on('$destroy', function() {
              element.off('click', elementClick);
              $document.off('click', documentClick);
            });
          }
        };
      });
})(window.angular);
