angular.module('appWrapperDemo')
    .controller('appWrapperDemoController', [
        '$scope',
        '$rootScope',
        '$timeout',
        '$uibModalStack',
        function ($scope, $rootScope, $timeout, $uibModalStack) {
            $scope.usarTeclado = false;
            $rootScope.$broadcast('usarTeclado', false);
            $scope.mostrarTeclado = false;
            //Envía broadcast para avisar que el teclado está en funcionamiento o no
            //para su uso cambiar ng-click del boton por esta función
            $scope.cambioUsoTeclado = function () {
                if ($scope.usarTeclado) {
                    $scope.usarTeclado = false;
                    $rootScope.$broadcast('usarTeclado', false);
                    return;
                }
                $scope.usarTeclado = true;
                $rootScope.$broadcast('usarTeclado', true);
            };

            $rootScope.$on('focus', function () {
                if (!$scope.usarTeclado) {
                    return;
                }
                $scope.mostrarTeclado = true;
                $timeout.cancel($scope.timeout);
                if (!$scope.$$phase) {
                    $scope.$apply();
                }
            });
            $rootScope.$on('blur', function () {
                $scope.timeout = $timeout(function () {
                    $scope.mostrarTeclado = false;
                    if (!$scope.$$phase) {
                        $scope.$apply();
                    }
                }, 150);
            });

            // Close all modals
            $rootScope.$on('$locationChangeSuccess', function () {
                $uibModalStack.dismissAll('close');
            });
        }
    ]);
