1/**
2 * Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7//Contains true if multiple calendar option is checked, false otherwise.
8var isMultiCalendar;
9
10//adding listener when body is loaded to call init function.
11window.addEventListener('load', init, false);
12
13/**
14 * Sets the value of multiple calendar checkbox based on value from
15 * local storage, and sets up the `save` event handler.
16 */
17function init() {
18  isMultiCalendar = JSON.parse(localStorage.multiCalendar || false);
19  $('multiCalendar').checked = isMultiCalendar;
20  $('multiCalendarText').innerHTML =
21      chrome.i18n.getMessage('multiCalendarText');
22  $('optionsTitle').innerHTML = chrome.i18n.getMessage('optionsTitle');
23  $('imageTooltip').title = chrome.i18n.getMessage('imageTooltip');
24  $('imageTooltip').alt = chrome.i18n.getMessage('imageTooltip');
25  $('multiCalendarText').title = chrome.i18n.getMessage('multiCalendarToolTip');
26  $('multiCalendar').title = chrome.i18n.getMessage('multiCalendarToolTip');
27  $('extensionName').innerHTML = chrome.i18n.getMessage('extensionName');
28  if (chrome.i18n.getMessage('direction') == 'rtl') {
29    document.querySelector('body').style.direction = 'rtl';
30  }
31  document.querySelector('#multiCalendar').addEventListener('click', save);
32};
33
34/**
35 * Saves the value of the checkbox into local storage.
36 */
37function save() {
38  var multiCalendarId = $('multiCalendar');
39  localStorage.multiCalendar = multiCalendarId.checked;
40  if (multiCalendarId) {
41    multiCalendar.disabled = true;
42  }
43  $('status').innerHTML = chrome.i18n.getMessage('status_saving');
44  $('status').style.display = 'block';
45  chrome.extension.getBackgroundPage().onSettingsChange();
46};
47
48/**
49 * Fired when a request is sent from either an extension process or a content
50 * script. Add Listener to enable the save checkbox button on server response.
51 * @param {String} request Request sent by the calling script.
52 * @param {Object} sender Information about the script that sent a message or
53 *     request.
54 * @param {Function} sendResponse Function to call when there is a response.
55 *     The argument should be any JSON-ifiable object, or undefined if there
56 *     is no response.
57 */
58chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
59  if (!request.message)
60    return;
61  switch (request.message) {
62    case 'enableSave':
63      if ($('multiCalendar')) {
64        if ($('multiCalendar').disabled) {
65          $('status').innerHTML = chrome.i18n.getMessage('status_saved');
66          $('status').style.display = 'block';
67          setTimeout("$('status').style.display = 'none'", 1500);
68        }
69        $('multiCalendar').disabled = false;
70      }
71      sendResponse();
72      break;
73  }
74});
75