class ConfirmModal extends Factory('hn.enterprise')
    constructor: ($modal, $q, $rootScope) ->
        saveChangesModal = null
        return {
            newModal: (title, content, buttons, scope) ->
                modalScope = scope
                modalScope.title = title
                modalScope.content = content
                modalScope.buttons = buttons
                return $modal.open({
                    templateUrl: "/modules/enterprise/views/confirm_modal.html"
                    scope: modalScope
                })
            saveChanges: (saveText="Yes", cancelText="No") ->
                df = $q.defer()

                modalScope = $rootScope # it already calls $new() on this internally
                modalScope.title = "Would you like to save your changes?"
                modalScope.content = "Any unsaved changes will be lost."
                modalScope.buttons = [
                    {
                        "text": cancelText
                        "class": "btn-default"
                        "click": (closeFn) ->
                            closeFn("cancel")
                    },
                    {
                        "text": saveText
                        "class": "btn-primary"
                        "click": (closeFn) ->
                            closeFn("save")
                    }
                ]
                if saveChangesModal
                    saveChangesModal.close()

                saveChangesModal = $modal.open({
                    templateUrl: "/modules/enterprise/views/confirm_modal.html"
                    scope: modalScope
                    backdrop: 'static'
                })
                handle = (reason) ->
                    if reason == "save"
                        df.resolve()
                    else
                        df.reject()
                saveChangesModal.result.then(handle, handle)
                return df.promise
        }
