text: // Copyright (c) 2013 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.
  
  // TODO(dbeam): should these be global like this?
  var Page = cr.ui.pageManager.Page;
  var PageManager = cr.ui.pageManager.PageManager;
  var BluetoothPairing = options.BluetoothPairing;
  
  /** @override */
  PageManager.closeOverlay = function() {
    chrome.send('dialogClose');
  };
  
  /**
   * Listener for the |beforeunload| event.
   * TODO(dbeam): probably ought to be using addEventListener() instead.
   */
  window.onbeforeunload = function() {
    PageManager.willClose();
  };
  
  /**
   * Override calls from BluetoothOptionsHandler.
   */
  cr.define('options', function() {
    function BluetoothOptions() {}
  
    BluetoothOptions.startDeviceDiscovery = function() {};
    BluetoothOptions.updateDiscoveryState = function() {};
    BluetoothOptions.dismissOverlay = function() {
      PageManager.closeOverlay();
    };
  
    return {
      BluetoothOptions: BluetoothOptions
    };
  });
  
  /**
   * DOMContentLoaded handler, sets up the page.
   */
  function load() {
    if (cr.isChromeOS)
      document.documentElement.setAttribute('os', 'chromeos');
  
    // Decorate the existing elements in the document.
    cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox);
    cr.ui.decorate('input[pref][type=number]', options.PrefNumber);
    cr.ui.decorate('input[pref][type=radio]', options.PrefRadio);
    cr.ui.decorate('input[pref][type=range]', options.PrefRange);
    cr.ui.decorate('select[pref]', options.PrefSelect);
    cr.ui.decorate('input[pref][type=text]', options.PrefTextField);
    cr.ui.decorate('input[pref][type=url]', options.PrefTextField);
  
    // TODO(ivankr): remove when http://crosbug.com/20660 is resolved.
    var inputs = document.querySelectorAll('input[pref]');
    for (var i = 0, el; el = inputs[i]; i++) {
      el.addEventListener('keyup', function(e) {
        cr.dispatchSimpleEvent(this, 'change');
      });
    }
  
    chrome.send('coreOptionsInitialize');
  
    var pairingPage = new Page('bluetooth', '', 'bluetooth-container');
    PageManager.register(pairingPage);
    PageManager.registerOverlay(BluetoothPairing.getInstance(), pairingPage);
  
    // Since this UI is used to host a BluetoothPairing dialog we need to add
    // an onPairing observer. (Normally that would be added in browser_options).
    chrome.bluetoothPrivate.onPairing.addListener(
        BluetoothPairing.onBluetoothPairingEvent);
  
    // Show the BluetoothPairing dialog.
    var args = JSON.parse(chrome.getVariableValue('dialogArguments'));
    var device = /** @type {!chrome.bluetooth.Device} */ (args);
    BluetoothPairing.connect(device, true);
  }
  
  document.addEventListener('DOMContentLoaded', load);
  