15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @fileoverview Login UI header bar implementation.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('login', function() {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Creates a header bar element.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @extends {HTMLDivElement}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var HeaderBar = cr.ui.define('div');
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HeaderBar.prototype = {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __proto__: HTMLDivElement.prototype,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Whether guest button should be shown when header bar is in normal mode.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    showGuest_: false,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Current UI state of the sign-in screen.
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    signinUIState_: SIGNIN_UI_STATE.HIDDEN,
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Whether to show kiosk apps menu.
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    hasApps_: false,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /** @override */
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    decorate: function() {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('shutdown-header-bar-item').addEventListener('click',
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.handleShutdownClick_);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('shutdown-button').addEventListener('click',
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.handleShutdownClick_);
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      $('add-user-button').addEventListener('click',
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.handleAddUserClick_);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('cancel-add-user-button').addEventListener('click',
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.handleCancelAddUserClick_);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('guest-user-header-bar-item').addEventListener('click',
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.handleGuestClick_);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('guest-user-button').addEventListener('click',
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.handleGuestClick_);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('sign-out-user-button').addEventListener('click',
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.handleSignoutClick_);
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      $('cancel-multiple-sign-in-button').addEventListener('click',
46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)          this.handleCancelMultipleSignInClick_);
477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      if (document.documentElement.getAttribute('screen') == 'login')
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        login.AppsMenuButton.decorate($('show-apps-button'));
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Tab index value for all button elements.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {number}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set buttonsTabIndex(tabIndex) {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var buttons = this.getElementsByTagName('button');
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for (var i = 0, button; button = buttons[i]; ++i) {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        button.tabIndex = tabIndex;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Disables the header bar and all of its elements.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {boolean}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set disabled(value) {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var buttons = this.getElementsByTagName('button');
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      for (var i = 0, button; button = buttons[i]; ++i)
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        if (!button.classList.contains('button-restricted'))
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          button.disabled = value;
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    },
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Add user button click handler.
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    handleAddUserClick_: function(e) {
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      Oobe.showSigninUI();
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      // Prevent further propagation of click event. Otherwise, the click event
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      // handler of document object will set wallpaper to user's wallpaper when
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      // there is only one existing user. See http://crbug.com/166477
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      e.stopPropagation();
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Cancel add user button click handler.
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    handleCancelAddUserClick_: function(e) {
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      // Let screen handle cancel itself if that is capable of doing so.
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      if (Oobe.getInstance().currentScreen &&
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          Oobe.getInstance().currentScreen.cancel) {
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        Oobe.getInstance().currentScreen.cancel();
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return;
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      }
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $('pod-row').loadLastWallpaper();
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      Oobe.showScreen({id: SCREEN_ACCOUNT_PICKER});
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      Oobe.resetSigninUI(true);
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Guest button click handler.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    handleGuestClick_: function(e) {
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      Oobe.disableSigninUI();
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      chrome.send('launchIncognito');
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      e.stopPropagation();
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Sign out button click handler.
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    handleSignoutClick_: function(e) {
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.disabled = true;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      chrome.send('signOutUser');
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      e.stopPropagation();
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Shutdown button click handler.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    handleShutdownClick_: function(e) {
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      chrome.send('shutdownSystem');
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      e.stopPropagation();
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
133868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)     * Cancel user adding button handler.
134868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)     * @private
135868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)     */
136868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    handleCancelMultipleSignInClick_: function(e) {
137868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      chrome.send('cancelUserAdding');
138868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      e.stopPropagation();
139868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    },
140868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
141868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    /**
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * If true then "Browse as Guest" button is shown.
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {boolean}
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set showGuestButton(value) {
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.showGuest_ = value;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.updateUI_();
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Update current header bar UI.
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @type {number} state Current state of the sign-in screen
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     *                      (see SIGNIN_UI_STATE).
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    set signinUIState(state) {
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.signinUIState_ = state;
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.updateUI_();
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Whether the Cancel button is enabled during Gaia sign-in.
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {boolean}
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set allowCancel(value) {
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.allowCancel_ = value;
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.updateUI_();
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Update whether there are kiosk apps.
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @type {boolean}
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    set hasApps(value) {
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.hasApps_ = value;
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.updateUI_();
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    },
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Updates visibility state of action buttons.
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    updateUI_: function() {
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      var gaiaIsActive = (this.signinUIState_ == SIGNIN_UI_STATE.GAIA_SIGNIN);
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      var accountPickerIsActive =
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          (this.signinUIState_ == SIGNIN_UI_STATE.ACCOUNT_PICKER);
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      var managedUserCreationDialogIsActive =
187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          (this.signinUIState_ == SIGNIN_UI_STATE.MANAGED_USER_CREATION_FLOW);
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      var wrongHWIDWarningIsActive =
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          (this.signinUIState_ == SIGNIN_UI_STATE.WRONG_HWID_WARNING);
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var isMultiProfilesUI = Oobe.getInstance().isSignInToAddScreen();
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      $('add-user-button').hidden = !accountPickerIsActive || isMultiProfilesUI;
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      $('cancel-add-user-button').hidden = accountPickerIsActive ||
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          !this.allowCancel_ ||
195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          wrongHWIDWarningIsActive ||
196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          isMultiProfilesUI;
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      $('guest-user-header-bar-item').hidden = gaiaIsActive ||
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          managedUserCreationDialogIsActive ||
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          !this.showGuest_ ||
200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          wrongHWIDWarningIsActive ||
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          isMultiProfilesUI;
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      $('add-user-header-bar-item').hidden =
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          $('add-user-button').hidden && $('cancel-add-user-button').hidden;
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      $('apps-header-bar-item').hidden = !this.hasApps_ ||
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          (!gaiaIsActive && !accountPickerIsActive);
206868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      $('cancel-multiple-sign-in-item').hidden = !isMultiProfilesUI;
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      if (!$('apps-header-bar-item').hidden)
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        $('show-apps-button').didShow();
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Animates Header bar to hide from the screen.
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param {function()} callback will be called once animation is finished.
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    animateOut: function(callback) {
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var launcher = this;
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      launcher.addEventListener(
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'webkitTransitionEnd', function f(e) {
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            launcher.removeEventListener('webkitTransitionEnd', f);
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            callback();
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          });
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.classList.remove('login-header-bar-animate-slow');
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.classList.add('login-header-bar-animate-fast');
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.classList.add('login-header-bar-hidden');
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Animates Header bar to slowly appear on the screen.
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    animateIn: function() {
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.classList.remove('login-header-bar-animate-fast');
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.classList.add('login-header-bar-animate-slow');
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.classList.remove('login-header-bar-hidden');
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  /**
239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * Convenience wrapper of animateOut.
240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   */
241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  HeaderBar.animateOut = function(callback) {
242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    $('login-header-bar').animateOut(callback);
243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  /**
246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * Convenience wrapper of animateIn.
247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   */
248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  HeaderBar.animateIn = function() {
249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    $('login-header-bar').animateIn();
250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    HeaderBar: HeaderBar
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
256