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)cr.define('print_preview', function() {
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  'use strict';
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * UI component that renders checkboxes for various print options.
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   * @param {!print_preview.ticket_items.Duplex} duplex Duplex ticket item.
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   * @param {!print_preview.ticket_items.FitToPage} fitToPage Fit-to-page ticket
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   *     item.
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   * @param {!print_preview.ticket_items.CssBackground} cssBackground CSS
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   *     background ticket item.
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   * @param {!print_preview.ticket_items.SelectionOnly} selectionOnly Selection
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   *     only ticket item.
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   * @param {!print_preview.ticket_items.HeaderFooter} headerFooter Header
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)   *     footer ticket item.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @extends {print_preview.Component}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  function OtherOptionsSettings(
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      duplex, fitToPage, cssBackground, selectionOnly, headerFooter) {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    print_preview.Component.call(this);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Duplex ticket item, used to read/write the duplex selection.
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @type {!print_preview.ticket_items.Duplex}
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    this.duplexTicketItem_ = duplex;
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Fit-to-page ticket item, used to read/write the fit-to-page selection.
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @type {!print_preview.ticket_items.FitToPage}
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    this.fitToPageTicketItem_ = fitToPage;
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Enable CSS backgrounds ticket item, used to read/write.
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @type {!print_preview.ticket_items.CssBackground}
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    this.cssBackgroundTicketItem_ = cssBackground;
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Print selection only ticket item, used to read/write.
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @type {!print_preview.ticket_items.SelectionOnly}
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    this.selectionOnlyTicketItem_ = selectionOnly;
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)     * Header-footer ticket item, used to read/write.
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)     * @type {!print_preview.ticket_items.HeaderFooter}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    this.headerFooterTicketItem_ = headerFooter;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Header footer container element.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {HTMLElement}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.headerFooterContainer_ = null;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Header footer checkbox.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {HTMLInputElement}
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.headerFooterCheckbox_ = null;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Fit-to-page container element.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {HTMLElement}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.fitToPageContainer_ = null;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Fit-to-page checkbox.
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {HTMLInputElement}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.fitToPageCheckbox_ = null;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Duplex container element.
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {HTMLElement}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.duplexContainer_ = null;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Duplex checkbox.
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {HTMLInputElement}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.duplexCheckbox_ = null;
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Print CSS backgrounds container element.
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @type {HTMLElement}
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    this.cssBackgroundContainer_ = null;
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Print CSS backgrounds checkbox.
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @type {HTMLInputElement}
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    this.cssBackgroundCheckbox_ = null;
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Print selection only container element.
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @type {HTMLElement}
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    this.selectionOnlyContainer_ = null;
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Print selection only checkbox.
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @type {HTMLInputElement}
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    this.selectionOnlyCheckbox_ = null;
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OtherOptionsSettings.prototype = {
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __proto__: print_preview.Component.prototype,
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @param {boolean} isEnabled Whether the settings is enabled. */
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set isEnabled(isEnabled) {
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.headerFooterCheckbox_.disabled = !isEnabled;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.fitToPageCheckbox_.disabled = !isEnabled;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.duplexCheckbox_.disabled = !isEnabled;
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.cssBackgroundCheckbox_.disabled = !isEnabled;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @override */
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    enterDocument: function() {
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      print_preview.Component.prototype.enterDocument.call(this);
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.headerFooterCheckbox_,
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'click',
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.onHeaderFooterCheckboxClick_.bind(this));
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.fitToPageCheckbox_,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'click',
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.onFitToPageCheckboxClick_.bind(this));
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.duplexCheckbox_,
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'click',
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.onDuplexCheckboxClick_.bind(this));
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.cssBackgroundCheckbox_,
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          'click',
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.onCssBackgroundCheckboxClick_.bind(this));
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.tracker.add(
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.selectionOnlyCheckbox_,
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          'click',
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.onSelectionOnlyCheckboxClick_.bind(this));
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.tracker.add(
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.duplexTicketItem_,
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          print_preview.ticket_items.TicketItem.EventType.CHANGE,
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.onDuplexChange_.bind(this));
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.tracker.add(
171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.fitToPageTicketItem_,
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          print_preview.ticket_items.TicketItem.EventType.CHANGE,
173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.onFitToPageChange_.bind(this));
174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.tracker.add(
175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.cssBackgroundTicketItem_,
176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          print_preview.ticket_items.TicketItem.EventType.CHANGE,
177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.onCssBackgroundChange_.bind(this));
178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.tracker.add(
179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.selectionOnlyTicketItem_,
180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          print_preview.ticket_items.TicketItem.EventType.CHANGE,
181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.onSelectionOnlyChange_.bind(this));
18290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      this.tracker.add(
18390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)          this.headerFooterTicketItem_,
18490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)          print_preview.ticket_items.TicketItem.EventType.CHANGE,
18590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)          this.onHeaderFooterChange_.bind(this));
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @override */
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exitDocument: function() {
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      print_preview.Component.prototype.exitDocument.call(this);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.headerFooterContainer_ = null;
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.headerFooterCheckbox_ = null;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.fitToPageContainer_ = null;
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.fitToPageCheckbox_ = null;
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.duplexContainer_ = null;
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.duplexCheckbox_ = null;
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.cssBackgroundContainer_ = null;
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.cssBackgroundCheckbox_ = null;
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.selectionOnlyContainer_ = null;
2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.selectionOnlyCheckbox_ = null;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @override */
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    decorateInternal: function() {
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.headerFooterContainer_ = this.getElement().querySelector(
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          '.header-footer-container');
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.headerFooterCheckbox_ = this.headerFooterContainer_.querySelector(
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          '.header-footer-checkbox');
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.fitToPageContainer_ = this.getElement().querySelector(
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          '.fit-to-page-container');
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.fitToPageCheckbox_ = this.fitToPageContainer_.querySelector(
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          '.fit-to-page-checkbox');
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.duplexContainer_ = this.getElement().querySelector(
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          '.duplex-container');
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.duplexCheckbox_ = this.duplexContainer_.querySelector(
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          '.duplex-checkbox');
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.cssBackgroundContainer_ = this.getElement().querySelector(
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          '.css-background-container');
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.cssBackgroundCheckbox_ = this.cssBackgroundContainer_.querySelector(
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          '.css-background-checkbox');
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.selectionOnlyContainer_ = this.getElement().querySelector(
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          '.selection-only-container');
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.selectionOnlyCheckbox_ = this.selectionOnlyContainer_.querySelector(
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          '.selection-only-checkbox');
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Updates the state of the entire other options settings area.
229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    updateContainerState_: function() {
23290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      if (this.headerFooterTicketItem_.isCapabilityAvailable() ||
233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.fitToPageTicketItem_.isCapabilityAvailable() ||
234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.duplexTicketItem_.isCapabilityAvailable() ||
235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.cssBackgroundTicketItem_.isCapabilityAvailable() ||
236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.selectionOnlyTicketItem_.isCapabilityAvailable()) {
237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        fadeInOption(this.getElement());
238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      } else {
239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        fadeOutOption(this.getElement());
240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      }
241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    },
242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Called when the header-footer checkbox is clicked. Updates the print
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * ticket.
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onHeaderFooterCheckboxClick_: function() {
24990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      this.headerFooterTicketItem_.updateValue(
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.headerFooterCheckbox_.checked);
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Called when the fit-to-page checkbox is clicked. Updates the print
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * ticket.
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onFitToPageCheckboxClick_: function() {
259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.fitToPageTicketItem_.updateValue(this.fitToPageCheckbox_.checked);
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Called when the duplex checkbox is clicked. Updates the print ticket.
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onDuplexCheckboxClick_: function() {
267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.duplexTicketItem_.updateValue(this.duplexCheckbox_.checked);
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Called when the print CSS backgrounds checkbox is clicked. Updates the
2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * print ticket store.
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    onCssBackgroundCheckboxClick_: function() {
276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.cssBackgroundTicketItem_.updateValue(
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.cssBackgroundCheckbox_.checked);
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    },
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * Called when the print selection only is clicked. Updates the
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * print ticket store.
2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     * @private
2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)     */
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    onSelectionOnlyCheckboxClick_: function() {
286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.selectionOnlyTicketItem_.updateValue(
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          this.selectionOnlyCheckbox_.checked);
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    },
2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    /**
291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Called when the duplex ticket item has changed. Updates the duplex
292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * checkbox.
293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    onDuplexChange_: function() {
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      setIsVisible(this.duplexContainer_,
297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                   this.duplexTicketItem_.isCapabilityAvailable());
298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.duplexCheckbox_.checked = this.duplexTicketItem_.getValue();
299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.updateContainerState_();
300c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    },
301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Called when the fit-to-page ticket item has changed. Updates the
304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * fit-to-page checkbox.
305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    onFitToPageChange_: function() {
308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      setIsVisible(this.fitToPageContainer_,
309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                   this.fitToPageTicketItem_.isCapabilityAvailable());
310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.fitToPageCheckbox_.checked = this.fitToPageTicketItem_.getValue();
311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.updateContainerState_();
312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    },
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Called when the CSS background ticket item has changed. Updates the
316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * CSS background checkbox.
317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    onCssBackgroundChange_: function() {
3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      setIsVisible(this.cssBackgroundContainer_,
321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                   this.cssBackgroundTicketItem_.isCapabilityAvailable());
3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.cssBackgroundCheckbox_.checked =
323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.cssBackgroundTicketItem_.getValue();
324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.updateContainerState_();
325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    },
3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    /**
328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Called when the print selection only ticket item has changed. Updates the
329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * CSS background checkbox.
330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @private
331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     */
332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    onSelectionOnlyChange_: function() {
3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      setIsVisible(this.selectionOnlyContainer_,
334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                   this.selectionOnlyTicketItem_.isCapabilityAvailable());
3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this.selectionOnlyCheckbox_.checked =
336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.selectionOnlyTicketItem_.getValue();
337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.updateContainerState_();
33890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    },
33990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
34090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    /**
34190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)     * Called when the header-footer ticket item has changed. Updates the
34290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)     * header-footer checkbox.
34390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)     * @private
34490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)     */
34590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    onHeaderFooterChange_: function() {
34690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      setIsVisible(this.headerFooterContainer_,
34790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                   this.headerFooterTicketItem_.isCapabilityAvailable());
34890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      this.headerFooterCheckbox_.checked =
34990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)          this.headerFooterTicketItem_.getValue();
35090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      this.updateContainerState_();
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    OtherOptionsSettings: OtherOptionsSettings
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
359