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