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)   * Component that renders a destination item in a destination list.
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!cr.EventTarget} eventTarget Event target to dispatch selection
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     events to.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!print_preview.Destination} destination Destination data object to
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     render.
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)   * @param {RegExp} query Active filter query.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @extends {print_preview.Component}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  function DestinationListItem(eventTarget, destination, query) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    print_preview.Component.call(this);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Event target to dispatch selection events to.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {!cr.EventTarget}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.eventTarget_ = eventTarget;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Destination that the list item renders.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {!print_preview.Destination}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.destination_ = destination;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Active filter query text.
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @type {RegExp}
38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @private
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    this.query_ = query;
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * FedEx terms-of-service widget or {@code null} if this list item does not
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * render the FedEx Office print destination.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {print_preview.FedexTos}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.fedexTos_ = null;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Event types dispatched by the destination list item.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @enum {string}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DestinationListItem.EventType = {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Dispatched when the list item is activated.
57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    SELECT: 'print_preview.DestinationListItem.SELECT',
58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    REGISTER_PROMO_CLICKED:
59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        'print_preview.DestinationListItem.REGISTER_PROMO_CLICKED'
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * CSS classes used by the destination list item.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @enum {string}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @private
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DestinationListItem.Classes_ = {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ICON: 'destination-list-item-icon',
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    NAME: 'destination-list-item-name',
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    STALE: 'stale'
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DestinationListItem.prototype = {
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __proto__: print_preview.Component.prototype,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @override */
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    createDom: function() {
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.setElementInternal(this.cloneTemplateInternal(
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'destination-list-item-template'));
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var iconImg = this.getElement().getElementsByClassName(
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          print_preview.DestinationListItem.Classes_.ICON)[0];
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      iconImg.src = this.destination_.iconUrl;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var nameEl = this.getElement().getElementsByClassName(
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          DestinationListItem.Classes_.NAME)[0];
87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      var textContent = this.destination_.displayName;
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      if (this.query_) {
89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // When search query is specified, make it obvious why the particular
90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // printer made it to the list. Display name is always visible, even if
91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // it does not match the search query.
92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        this.addTextWithHighlight_(nameEl, textContent);
93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // Show the first matching property.
94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        this.destination_.extraPropertiesToMatch.some(function(property) {
95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          if (property.match(this.query_)) {
96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            var hintSpan = document.createElement('span');
97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            hintSpan.className = 'search-hint';
98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            nameEl.appendChild(hintSpan);
99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            this.addTextWithHighlight_(hintSpan, property);
100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            // Add the same property to the element title.
101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            textContent += ' (' + property + ')';
102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            return true;
103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          }
104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        }, this);
105a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      } else {
106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        // Show just the display name and nothing else to lessen visual clutter.
107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        nameEl.textContent = textContent;
108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      }
109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      nameEl.title = textContent;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.initializeOfflineStatusElement_();
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      this.initializeRegistrationPromoElement_();
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @override */
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    enterDocument: function() {
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      print_preview.Component.prototype.enterDocument.call(this);
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(this.getElement(), 'click', this.onActivate_.bind(this));
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Initializes the element which renders the print destination's
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * offline status.
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    initializeOfflineStatusElement_: function() {
1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      if (this.destination_.isOffline) {
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.getElement().classList.add(DestinationListItem.Classes_.STALE);
1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        var offlineStatusEl = this.getChildElement('.offline-status');
1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        offlineStatusEl.textContent = this.destination_.offlineStatusText;
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        setIsVisible(offlineStatusEl, true);
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * Initialize registration promo element for Privet unregistered printers.
137a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     */
138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    initializeRegistrationPromoElement_: function() {
139a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      if (this.destination_.connectionStatus ==
140a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          print_preview.Destination.ConnectionStatus.UNREGISTERED) {
1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        var registerBtnEl = this.getChildElement('.register-promo-button');
142a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        registerBtnEl.addEventListener('click',
143a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                       this.onRegisterPromoClicked_.bind(this));
144a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        var registerPromoEl = this.getChildElement('.register-promo');
146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        setIsVisible(registerPromoEl, true);
147a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      }
148a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    },
149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /**
151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * Adds text to parent element wrapping search query matches in highlighted
152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * spans.
153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @param {!Element} parent Element to build the text in.
154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @param {string} text The text string to highlight segments in.
155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     * @private
156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)     */
157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    addTextWithHighlight_: function(parent, text) {
158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      var sections = text.split(this.query_);
159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      for (var i = 0; i < sections.length; ++i) {
160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        if (i % 2 == 0) {
161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          parent.appendChild(document.createTextNode(sections[i]));
162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        } else {
163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          var span = document.createElement('span');
164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          span.className = 'destination-list-item-query-highlight';
165a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          span.textContent = sections[i];
166a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          parent.appendChild(span);
167a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        }
168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      }
169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    },
170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    /**
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Called when the destination item is activated. Dispatches a SELECT event
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * on the given event target.
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onActivate_: function() {
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (this.destination_.id ==
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              print_preview.Destination.GooglePromotedId.FEDEX &&
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          !this.destination_.isTosAccepted) {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (!this.fedexTos_) {
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.fedexTos_ = new print_preview.FedexTos();
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.fedexTos_.render(this.getElement());
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.tracker.add(
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              this.fedexTos_,
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              print_preview.FedexTos.EventType.AGREE,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              this.onTosAgree_.bind(this));
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.fedexTos_.setIsVisible(true);
189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      } else if (this.destination_.connectionStatus !=
1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     print_preview.Destination.ConnectionStatus.UNREGISTERED) {
1914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        var selectEvt = new Event(DestinationListItem.EventType.SELECT);
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        selectEvt.destination = this.destination_;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this.eventTarget_.dispatchEvent(selectEvt);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Called when the user agrees to the print destination's terms-of-service.
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Selects the print destination that was agreed to.
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onTosAgree_: function() {
2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      var selectEvt = new Event(DestinationListItem.EventType.SELECT);
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      selectEvt.destination = this.destination_;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.eventTarget_.dispatchEvent(selectEvt);
206a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    },
207a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
208a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    /**
209a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * Called when the registration promo is clicked.
210a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     * @private
211a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     */
212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    onRegisterPromoClicked_: function() {
213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      var promoClickedEvent = new Event(
214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          DestinationListItem.EventType.REGISTER_PROMO_CLICKED);
215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      promoClickedEvent.destination = this.destination_;
216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      this.eventTarget_.dispatchEvent(promoClickedEvent);
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DestinationListItem: DestinationListItem
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
225