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);
