text: // Copyright 2014 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  cr.define('cr.ui.login', function() {
    /**
     * Constructs a slide manager for the user manager tutorial.
     *
     * @constructor
     */
    function UserManagerTutorial() {
    }
  
    cr.addSingletonGetter(UserManagerTutorial);
  
    UserManagerTutorial.prototype = {
      /**
       * Tutorial slides.
       */
      slides_: ['slide-welcome',
                'slide-your-chrome',
                'slide-friends',
                'slide-guests',
                'slide-complete',
                'slide-not-you'],
  
      /**
       * Current tutorial step, index in the slides array.
       * @type {number}
       */
      currentStep_: 0,
  
      /**
       * Switches to the next tutorial step.
       * @param {number} nextStepIndex Index of the next step.
       */
      toggleStep_: function(nextStepIndex) {
        if (nextStepIndex > this.slides_.length)
          return;
  
        var currentStepId = this.slides_[this.currentStep_];
        var nextStepId = this.slides_[nextStepIndex];
        var oldStep = $(currentStepId);
        var newStep = $(nextStepId);
  
        newStep.classList.remove('hidden');
  
        if (nextStepIndex != this.currentStep_)
          oldStep.classList.add('hidden');
  
        this.currentStep_ = nextStepIndex;
  
        // The last tutorial step is an information bubble that ends the tutorial.
        if (this.currentStep_ == this.slides_.length - 1)
          this.endTutorial_();
      },
  
      next_: function() {
        var nextStep = this.currentStep_ + 1;
        this.toggleStep_(nextStep);
      },
  
      skip_: function() {
        this.endTutorial_();
        $('user-manager-tutorial').hidden = true;
      },
  
      /**
       * Add user button click handler.
       * @private
       */
      handleAddUserClick_: function(e) {
        chrome.send('addUser');
        $('user-manager-tutorial').hidden = true;
        // Prevent further propagation of click event. Otherwise, the click event
        // handler of document object will set wallpaper to user's wallpaper when
        // there is only one existing user. See http://crbug.com/166477
        e.stopPropagation();
      },
  
      endTutorial_: function(e) {
        $('inner-container').classList.remove('disabled');
      },
  
      decorate: function() {
        // Transitions between the tutorial slides.
        for (var i = 0; i < this.slides_.length; ++i) {
          var buttonNext = $(this.slides_[i] + '-next');
          var buttonSkip = $(this.slides_[i] + '-skip');
          if (buttonNext)
            buttonNext.addEventListener('click', this.next_.bind(this));
          if (buttonSkip)
            buttonSkip.addEventListener('click', this.skip_.bind(this));
        }
        $('slide-add-user').addEventListener('click',
            this.handleAddUserClick_.bind(this));
      }
    };
  
    /**
     * Initializes the tutorial manager.
     */
    UserManagerTutorial.startTutorial = function() {
      $('user-manager-tutorial').hidden = false;
  
      // If there's only one pod, show the slides to the side of the pod.
      // Otherwise, center the slides and disable interacting with the pods
      // while the tutorial is showing.
      if ($('pod-row').pods.length == 1) {
        $('slide-welcome').classList.add('single-pod');
        $('slide-your-chrome').classList.add('single-pod');
        $('slide-complete').classList.add('single-pod');
      }
  
      $('pod-row').focusPod();  // No focused pods.
      $('inner-container').classList.add('disabled');
    };
  
    /**
     * Initializes the tutorial manager.
     */
    UserManagerTutorial.initialize = function() {
      UserManagerTutorial.getInstance().decorate();
    };
  
    // Export.
    return {
      UserManagerTutorial: UserManagerTutorial
    };
  });
  