class CardCarousel extends Directive('hn.enterprise')
    constructor: () ->
        return {
            scope: {}
            templateUrl: '/modules/enterprise/components/card_carousel/carousel.html'
            transclude: yes
            controllerAs: 'vm'
            ### @ngInject ###
            controller: () ->
                vm = @
                vm.slides = []
                vm.active = null # name of active slide

                vm.addSlide = (name) ->
                    vm.slides.push(name)

                    # make the first one added active
                    if vm.slides.length == 1
                        vm.active = name

                vm.goToSlide = (name) ->
                    vm.last_slide = vm.active
                    vm.active = name
        }

class CardCarouselSlide extends Directive('hn.enterprise')
    constructor: (Branding) ->
        return {
            scope: {
                item: '='
            }
            require: '^cardCarousel'
            templateUrl: '/modules/enterprise/components/card_carousel/carousel_slide.html'
            controllerAs: 'vm'
            ### @ngInject ###
            controller: () ->
                vm = @
                vm.companyName = Branding.company_name

            link: (scope, elem, attrs, ctrl) ->
                scope.template = "/modules/enterprise/components/card_carousel/slides/" + attrs.template
                ctrl.addSlide(attrs.name)

                scope.isActive = () ->

                    return ctrl.active == attrs.name

        }
