class GEPortal extends Config('hn.enterprise')
    constructor: ($provide, settingsProvider, $logProvider, $uiViewScrollProvider, $urlRouterProvider, $httpProvider) ->
        settingsProvider.set('hn.auth.enable_sso', false)
        settingsProvider.set('hn.auth.sso_url', '/api/saml/sso')
        settingsProvider.set('hn.auth.slo_url', '/api/saml/slo')

        settingsProvider.set('hn.states.root', 'hn.login')
        settingsProvider.set('hn.states.settings', 'hn.dashboard')
        settingsProvider.set('hn.states.home', 'hn.dashboard')

        debug = settingsProvider.get('hn.debug')
        $logProvider.debugEnabled(debug)

        $uiViewScrollProvider.useAnchorScroll()

        $provide.decorator('$templateCache', ['$delegate', '$log', ($delegate, $log) ->
            originalPut = $delegate.put
            $delegate.put = (key, value) ->
                if not angular.isString(value)
                    $log.warn("Template missing from cache: %s", key)
                return originalPut(key, value)

            return $delegate
        ])

        $provide.decorator('$locale', ['$delegate', ($delegate) ->
            $delegate.NUMBER_FORMATS.PATTERNS[1].maxFrac = 0
            $delegate.NUMBER_FORMATS.PATTERNS[1].minFrac = 0
            return $delegate;
        ])

        $provide.decorator('$log', ['$delegate', ($delegate) ->
            originals =
                log: $delegate.log
                info: $delegate.info
                warn: $delegate.warn
                error: $delegate.error
            replaceFunc = (fun) ->
                $delegate[fun] = () ->
                    return originals[fun].apply(this, _.toArray(arguments)) if debug
            replaceFunc('log')
            replaceFunc('info')
            replaceFunc('warn')
            replaceFunc('error')

            $delegate.start = () -> console.group.apply(console, arguments) if debug
            $delegate.end   = () -> console.groupEnd.apply(console, arguments) if debug

            return $delegate
        ])
