15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 2012 The Chromium Authors. All rights reserved.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//Contains true if multiple calendar option is checked, false otherwise.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var isMultiCalendar;
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//adding listener when body is loaded to call init function.
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)window.addEventListener('load', init, false);
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Sets the value of multiple calendar checkbox based on value from
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * local storage, and sets up the `save` event handler.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function init() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  isMultiCalendar = JSON.parse(localStorage.multiCalendar || false);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('multiCalendar').checked = isMultiCalendar;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('multiCalendarText').innerHTML =
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      chrome.i18n.getMessage('multiCalendarText');
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('optionsTitle').innerHTML = chrome.i18n.getMessage('optionsTitle');
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('imageTooltip').title = chrome.i18n.getMessage('imageTooltip');
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('imageTooltip').alt = chrome.i18n.getMessage('imageTooltip');
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('multiCalendarText').title = chrome.i18n.getMessage('multiCalendarToolTip');
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('multiCalendar').title = chrome.i18n.getMessage('multiCalendarToolTip');
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('extensionName').innerHTML = chrome.i18n.getMessage('extensionName');
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (chrome.i18n.getMessage('direction') == 'rtl') {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    document.querySelector('body').style.direction = 'rtl';
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  document.querySelector('#multiCalendar').addEventListener('click', save);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Saves the value of the checkbox into local storage.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function save() {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var multiCalendarId = $('multiCalendar');
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  localStorage.multiCalendar = multiCalendarId.checked;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (multiCalendarId) {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    multiCalendar.disabled = true;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('status').innerHTML = chrome.i18n.getMessage('status_saving');
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('status').style.display = 'block';
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome.extension.getBackgroundPage().onSettingsChange();
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Fired when a request is sent from either an extension process or a content
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * script. Add Listener to enable the save checkbox button on server response.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {String} request Request sent by the calling script.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} sender Information about the script that sent a message or
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     request.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Function} sendResponse Function to call when there is a response.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     The argument should be any JSON-ifiable object, or undefined if there
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *     is no response.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!request.message)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (request.message) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 'enableSave':
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if ($('multiCalendar')) {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if ($('multiCalendar').disabled) {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $('status').innerHTML = chrome.i18n.getMessage('status_saved');
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $('status').style.display = 'block';
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          setTimeout("$('status').style.display = 'none'", 1500);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $('multiCalendar').disabled = false;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      sendResponse();
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
75