(function() {
  /**
   * Landing page.
   */
  angular.module('quayPages').config(['pages', function(pages) {
    pages.create('landing', 'landing.html', LandingCtrl, {
      'pageClass': 'landing-page'
    });
  }]);

  function LandingCtrl($scope, UserService, ApiService, Features, Config) {
    $scope.namespace = null;
    $scope.currentScreenshot = 'repo-view';

    $scope.$watch('namespace', function(namespace) {
      loadMyRepos(namespace);
    });

    UserService.updateUserIn($scope, function() {
      loadMyRepos($scope.namespace);
    });

    $scope.changeScreenshot = function(screenshot) {
      $scope.currentScreenshot = screenshot;
    };

    $scope.canCreateRepo = function(namespace) {
      if (!$scope.user) { return false; }

      if (namespace == $scope.user.username) {
        return true;
      }

      if ($scope.user.organizations) {
        for (var i = 0; i < $scope.user.organizations.length; ++i) {
          var org = $scope.user.organizations[i];
          if (org.name == namespace) {
            return org.can_create_repo;
          }
        }
      }

      return false;
    };

    var loadMyRepos = function(namespace) {
      if (!$scope.user || $scope.user.anonymous || !namespace) {
        return;
      }

      var options = {'limit': 4, 'public': false, 'sort': true, 'namespace': namespace };
      $scope.my_repositories = ApiService.listReposAsResource().withOptions(options).get(function(resp) {
        return resp.repositories;
      });
    };

    $scope.chromify = function() {
      browserchrome.update();

      var jcarousel = $('.jcarousel');

      jcarousel
        .on('jcarousel:reload jcarousel:create', function () {
          var width = jcarousel.innerWidth();
          jcarousel.jcarousel('items').css('width', width + 'px');
        })
        .jcarousel({
          wrap: 'circular'
        });

      $('.jcarousel-control-prev')
        .on('jcarouselcontrol:active', function() {
          $(this).removeClass('inactive');
        })
        .on('jcarouselcontrol:inactive', function() {
          $(this).addClass('inactive');
        })
        .jcarouselControl({
          target: '-=1'
        });

      $('.jcarousel-control-next')
        .on('jcarouselcontrol:active', function() {
          $(this).removeClass('inactive');
        })
        .on('jcarouselcontrol:inactive', function() {
          $(this).addClass('inactive');
        })
        .jcarouselControl({
          target: '+=1'
        });

      $('.jcarousel-pagination')
        .on('jcarouselpagination:active', 'a', function() {
          $(this).addClass('active');
        })
        .on('jcarouselpagination:inactive', 'a', function() {
          $(this).removeClass('active');
        })
        .jcarouselPagination({
          'item': function(page, carouselItems) {
            return '<a href="javascript:void(0)" class="jcarousel-page"></a>';
          }
        });
    };

    $scope.getEnterpriseLogo = function() {
      if (!Config.ENTERPRISE_LOGO_URL) {
        return '/static/img/quay-logo.png';
      }

      return Config.ENTERPRISE_LOGO_URL;
    };
  }
})();