]>
Commit | Line | Data |
---|---|---|
a5409a6b MF |
1 | // Copyright 2011 Google Inc. All Rights Reserved. |
2 | ||
3 | /** | |
4 | * @fileoverview Script for the options page. | |
5 | * @author arunjit@google.com (Arunjit Singh) | |
6 | */ | |
7 | ||
8 | window.addEventListener('load', init, false); | |
9 | ||
a5409a6b MF |
10 | /** |
11 | * Initializes the i18n strings. | |
12 | * Loads values from localStorage and applies them to the elements | |
13 | */ | |
14 | function init() { | |
15 | // Localize strings: | |
16 | CONSTANTS.TIMES.forEach(function(time) { | |
17 | var selector = 'input[name=time][value="{t}"], .opt-label#opt-{t}' | |
18 | .supplant({t: time}); | |
19 | var elements = $(selector); | |
20 | time = getUnitsForTime(time); | |
21 | var message = (time.time === -1) ? | |
22 | chrome.i18n.getMessage('optionsTimeAll') : | |
23 | chrome.i18n.getMessage('optionsTime', | |
24 | [time.time, time.units]); | |
25 | elements[0].title = message; | |
26 | elements[1].innerText = message; | |
27 | }); | |
28 | ||
29 | $('#optionsTitle')[0].innerText = chrome.i18n.getMessage('optionsTitle'); | |
30 | $('#optionsHeader')[0].innerText = chrome.i18n.getMessage('optionsHeader'); | |
31 | $('#optionsPrompt')[0].innerText = chrome.i18n.getMessage('optionsPrompt'); | |
32 | $('#optionsTimeFor')[0].innerText = chrome.i18n.getMessage('optionsTimeFor'); | |
cc8be426 | 33 | $('#optionsTimeStart')[0].innerText = chrome.i18n.getMessage('optionsTimeStart'); |
77dffdcd | 34 | $('#optionsCookies')[0].innerText = chrome.i18n.getMessage('optionsCookies'); |
6565d921 | 35 | $('#optionsAutoclear')[0].innerText = chrome.i18n.getMessage('optionsAutoclear'); |
a5409a6b MF |
36 | $('#optionsSaved > b')[0].innerText = chrome.i18n.getMessage('optionsSaved'); |
37 | ||
38 | // Bind all the callbacks | |
39 | $('#opt-time input.opt-chk[type=radio]').forEach(function(e) { | |
40 | e.onclick = toggle; | |
41 | }); | |
77dffdcd MF |
42 | $('input.opt-chk[type=checkbox]').forEach(function(e) { |
43 | e.onclick = setCheck; | |
44 | }); | |
a5409a6b MF |
45 | $('#opt-prompt input.opt-chk[type=checkbox]').forEach(function(e) { |
46 | e.onclick = setPrompt; | |
47 | }); | |
48 | ||
49 | // Load or set localStorage data | |
cc8be426 | 50 | var timeStart = localStorage['timeStart'] || CONSTANTS.YES; |
a5409a6b MF |
51 | var time = ~~(localStorage['time']) || |
52 | (localStorage['time'] = CONSTANTS.DEFAULT_TIME); | |
53 | var showPrompt = localStorage['prompt'] || | |
54 | (localStorage['prompt'] = CONSTANTS.YES); | |
77dffdcd | 55 | var clearCookies = localStorage['cookies'] || CONSTANTS.NO; |
6565d921 | 56 | var autoClear = localStorage['autoclear'] || CONSTANTS.NO; |
a5409a6b | 57 | |
cc8be426 | 58 | $('input[name=timeStart]')[0].checked = (timeStart === CONSTANTS.YES); |
a5409a6b MF |
59 | $('input[name=time][value="' + time + '"]')[0].checked = true; |
60 | $('input[name=prompt]')[0].checked = (showPrompt === CONSTANTS.YES); | |
77dffdcd | 61 | $('input[name=cookies]')[0].checked = (clearCookies === CONSTANTS.YES); |
6565d921 | 62 | $('input[name=autoclear]')[0].checked = (autoClear === CONSTANTS.YES); |
a5409a6b MF |
63 | } |
64 | ||
65 | /** | |
66 | * Toggles the value in localStorage for the element selected | |
67 | * @this {HTMLInputElement} The element (radio button) that was clicked. | |
68 | */ | |
69 | function toggle() { | |
70 | localStorage['time'] = this.value; | |
71 | optionSaved(); | |
72 | } | |
73 | ||
74 | /** | |
75 | * Sets the {@code localStorage.prompt} property when selected | |
76 | * @this {HTMLInputElement} The element (checkbox) that was clicked. | |
77 | */ | |
78 | function setPrompt() { | |
79 | localStorage['prompt'] = this.checked ? CONSTANTS.YES : CONSTANTS.NO; | |
80 | optionSaved(); | |
81 | } | |
82 | ||
77dffdcd MF |
83 | function setCheck() { |
84 | localStorage[this.name] = this.checked ? CONSTANTS.YES : CONSTANTS.NO; | |
85 | optionSaved(); | |
86 | } | |
87 | ||
a5409a6b MF |
88 | // For rapid changes/saves |
89 | var isSaving = null; | |
90 | /** | |
91 | * Updates the UI to indicate save completed | |
92 | */ | |
93 | function optionSaved() { | |
94 | var element = $('#optionsSaved')[0]; | |
95 | element.classList.add('show'); | |
96 | clearTimeout(isSaving); | |
97 | isSaving = setTimeout(function() { | |
98 | element.classList.remove('show'); | |
99 | }, 1000); | |
100 | } |