Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / ui / accessibility / extensions / highcontrast / popup.js
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 var site;
6 var key1;
7 var key2;
8
9 function setRadio(name, value) {
10   var radios = document.querySelectorAll('input[name="' + name + '"]');
11   for (var i = 0; i < radios.length; i++) {
12     radios[i].checked = (radios[i].value == value);
13     radios[i].disabled = !getEnabled();
14   }
15 }
16
17 function update() {
18   document.body.className = getEnabled() ? '' : 'disabled';
19
20   if (getEnabled()) {
21     $('title').innerText = 'High Contrast is Enabled';
22     $('toggle').innerHTML = '<b>Disable</b> ' +
23                             '<span class="kb">(' + key1 + ')</span>';
24     $('subcontrols').style.display = 'block';
25   } else {
26     $('title').innerText = 'High Contrast is Disabled';
27     $('toggle').innerHTML = '<b>Enable</b> ' +
28                             '<span class="kb">(' + key1 + ')</span>';
29     $('subcontrols').style.display = 'none';
30   }
31
32   setRadio('keyaction', getKeyAction());
33   if (site) {
34     setRadio('scheme', getSiteScheme(site));
35     $('make_default').disabled = (getSiteScheme(site) == getDefaultScheme());
36   } else {
37     setRadio('scheme', getDefaultScheme());
38   }
39   if (getEnabled()) {
40     document.documentElement.setAttribute(
41         'hc',
42         site ? 'a' + getSiteScheme(site) : 'a' + getDefaultScheme());
43   } else {
44     document.documentElement.setAttribute('hc', 'a0');
45   }
46   chrome.extension.getBackgroundPage().updateTabs();
47 }
48
49 function onToggle() {
50   setEnabled(!getEnabled());
51   update();
52 }
53
54 function onForget() {
55   resetSiteSchemes();
56   update();
57 }
58
59 function onRadioChange(name, value) {
60   switch (name) {
61     case 'keyaction':
62       setKeyAction(value);
63       break;
64     case 'apply':
65       setApply(value);
66       break;
67     case 'scheme':
68       if (site) {
69         setSiteScheme(site, value);
70       } else {
71         setDefaultScheme(value);
72       }
73       break;
74   }
75   update();
76 }
77
78 function onMakeDefault() {
79   setDefaultScheme(getSiteScheme(site));
80   update();
81 }
82
83 function addRadioListeners(name) {
84   var radios = document.querySelectorAll('input[name="' + name + '"]');
85   for (var i = 0; i < radios.length; i++) {
86     radios[i].addEventListener('change', function(evt) {
87       onRadioChange(evt.target.name, evt.target.value);
88     }, false);
89     radios[i].addEventListener('click', function(evt) {
90       onRadioChange(evt.target.name, evt.target.value);
91     }, false);
92   }
93 }
94
95 function init() {
96   var i18nElements = document.querySelectorAll('*[i18n-content]');
97   for (var i = 0; i < i18nElements.length; i++) {
98     var elem = i18nElements[i];
99     var msg = elem.getAttribute('i18n-content');
100     elem.innerHTML = chrome.i18n.getMessage(msg);
101   }
102
103   addRadioListeners('keyaction');
104   addRadioListeners('apply');
105   addRadioListeners('scheme');
106   $('toggle').addEventListener('click', onToggle, false);
107   $('make_default').addEventListener('click', onMakeDefault, false);
108   $('forget').addEventListener('click', onForget, false);
109   if (navigator.appVersion.indexOf('Mac') != -1) {
110     key1 = '&#x2318;+Shift+F11';
111     key2 = '&#x2318;+Shift+F12';
112   } else {
113     key1 = 'Shift+F11';
114     key2 = 'Shift+F12';
115   }
116
117   chrome.windows.getLastFocused({'populate': true}, function(window) {
118     for (var i = 0; i < window.tabs.length; i++) {
119       var tab = window.tabs[i];
120       if (tab.active) {
121         if (isDisallowedUrl(tab.url)) {
122           $('scheme_title').innerText = 'Default color scheme:';
123           $('make_default').style.display = 'none';
124         } else {
125           site = siteFromUrl(tab.url);
126           $('scheme_title').innerHTML = 'Color scheme for <b>' + site +
127               '</b>:<br><span class="kb">(' + key2 + ')</span>';
128           $('make_default').style.display = 'block';
129         }
130         update();
131         return;
132       }
133     }
134     site = 'unknown site';
135     update();
136   });
137 }
138
139 window.addEventListener('load', init, false);