summaryrefslogtreecommitdiffstats
path: root/assets/plugins/gears-0.4.23.0/settings_dialog.html
diff options
context:
space:
mode:
Diffstat (limited to 'assets/plugins/gears-0.4.23.0/settings_dialog.html')
-rw-r--r--assets/plugins/gears-0.4.23.0/settings_dialog.html2750
1 files changed, 0 insertions, 2750 deletions
diff --git a/assets/plugins/gears-0.4.23.0/settings_dialog.html b/assets/plugins/gears-0.4.23.0/settings_dialog.html
deleted file mode 100644
index e70e790e3..000000000
--- a/assets/plugins/gears-0.4.23.0/settings_dialog.html
+++ /dev/null
@@ -1,2750 +0,0 @@
-<!DOCTYPE html>
-
-<!--
-Copyright 2007, The Android Open Source Project
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 3. Neither the name of Google Inc. nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<html>
-<head>
- <style type="text/css">
-
-
-/*
-Copyright 2007, The Android Open Source Project
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 3. Neither the name of Google Inc. nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-body, html {
- background-color:white;
- padding:0;
- margin:0;
- height:100%;
- overflow:hidden;
- cursor:default;
-
- /*
- Makes the text unselectable in mozilla. See html_diaog.js for IE
- implementation.
- */
- -moz-user-select:none;
-}
-
-body, td, input, select, button {
- font-family:arial,sans-serif;
- font-size:13px;
-}
-
-p {
- margin:0;
- margin-bottom:1em;
-}
-
-a {
- color:blue;
- text-decoration:underline;
-}
-
-button {
- /*
- It would be better to express margins in ems, but it causes layout
- artifacts (presumably because of rounding errors) when combined with
- the -moz-border-radius property used in button.css on Firefox 2.
-
- Also: bizarely, if I try to use the more natural margin-left:10px, I get
- a bug where the buttons bounce on IE when you hover over them.
- */
- position:relative;
- margin-right:7px;
- left:7px;
-}
-
-#head {
- padding:1em;
-}
-
-#foot {
-
- /*
- On Android we do not use position:absolute due to some
- rendering limitations (absolute positioning works, but
- the automatic resizing of dialog is confused by the
- variable content and the display is wrong, while if we
- remove the absolute positioning, #foot is back in the
- flow and the dialog displays correctly)
- */
-
- background:white;
- bottom:0;
- width:100%;
-}
-
-#button-row {
- margin:1em;
-}
-
-.accesskey {
- text-decoration: underline;
-
- /* IE CSS extension */
- accelerator: true;
-}
-
- h1 {
- font-size:1.2em;
- margin:0;
- }
-
- h2 {
- font-size:1.1em;
- margin:0;
- }
-
- /* TODO(aa): Move into standard stylesheet if used in all dialogs? */
- #icon {
- margin-right:0.5em;
- }
-
- #content {
- overflow-x:hidden;
- overflow-y:auto;
-
- margin:0 1em;
-
- }
-
- #content table {
- border: 1px #ccc;
- /* Only set the sides and bottom border of the table because
- border-colapse doesn't work on WinCE. */
- border-style: none solid;
- border-collapse: collapse;
- /* A bug in Mozilla with border-collapse:collapse along with the overflow
- settings we have on the scroll element causes the left border to be
- placed 1px to the left, making the element invisible. */
- margin-left:1px;
- }
-
- #content td {
-
- padding: 4px;
-
- }
-
- #content table.permissions {
- border-bottom-style: solid;
- }
-
- #version {
- font-size:0.8em;
- font-style:italic;
- }
-
- #content td.left {
- width: 100%;
-
- padding-left: 20px;
-
- }
-
- #content td.right {
-
- padding-right: 20px;
-
- }
-
- .app-icon {
- width: 30px;
- }
-
- .app-name {
- width: 150px;
- }
-
- .app-origin {
- width: 70px;
- }
-
-
-
- td.origin-name {
- font-weight: bold;
- width: 100%;
- }
-
-
- div.radio-buttons {
-
- width: 150px;
-
- }
-
-
-
-
- </style>
-</head>
-<body>
- <div id="strings" style="display:none;">
- <div id="string-cancel"></div>
- <div id="string-cancel-accesskey"></div>
- <div id="string-apply"></div>
- <div id="string-apply-accesskey"></div>
- <div id="string-nosites"></div>
- <div id="string-allowed"></div>
- <div id="string-denied"></div>
- <div id="string-local-storage"></div>
- <div id="string-location-data"></div>
- <div id="string-remove"></div>
- </div>
-
- <div id="head">
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td valign="middle">
-
- <img id="icon" src="data:image/png;base64,
-iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAJPElEQVR4Xq3V
-WWyc1d0G8Oecd515Z/csHsfxntiOE8eOMY6dxFkokJCQlACBhEpsvWgLRkAL
-IhRxEYrSpp/6XYCgUokKBQEl0ABR0wrShBAI2R1nM3HseB+Px2PPPu/Mu3aE
-uKkoUhPzuzhXRzp/PUfPOcQ0TcxGrOcJ9Jz6F4YmTNq2yF4r5436aFyrlyz8
-nyQxH6m7aTdETxO+D8UssSxF/0gGc4NCpc3u2VtctvBNb5HjN71XUw8bxAHd
-pPiGkQeg/PADDI5lMZ3QYRUZL2MpqRVIyhpwGwj62OdTObo1l405svEBd9/h
-J7ae3Nd1p6rIP+wA5/tzuKExgKDfsZm32KHIU6AUaGnwiD5b5u3R0787OXVu
-x0kbF3t7ZuyzPZ/ve2HjfySI65SdPOQf7z/UNM87pPg8zi32wI0/J8oINE1F
-NgewLOBxW8GwxnyTUWCqcSycHyT7Du99V9XY1rX37Lh43QPoagrhS689zRnp
-X/p9btjcZUB+CL29vThwPD6USOnHrRbGqCixNLc3ueuK3BpMQ0U0oaJvONvd
-uvaGoVklkJm+6DbU2Aa3rxxy7CL0VBxj4Qz++s/I4ebF1VvKAyRiaEmkMobt
-bO/0Gy0NRZu9bh5XBifVxqXbnm/p2JiZVQtmJs5WhcZHq+XkEAhlYJrAF2cS
-qUX1pV13bVgSqa+yo6bMgSInl57XdOdDM0l9kFIKniWcwDP6rFtQUn/f6QTt
-uPd0z2AMJoGqGYjMqD1Vc8j5zEw/qJGG3UrBsQwMNpjgqHZW1w3MKbYiFTm1
-StOU2Q3Ai3bcdt9LH4iuusczsgxKCSwiYxLCQMmnwbAUDEMg5/PgRDec3qqc
-yXpQ4rejrjj0zME9j+/IyUnrrGrIsDwal3f1GAbReI7FgiqpeTqWWjQxJePK
-cAY9lxO4MmrCJc6UOt3BDoAFIQbmV3mF7qN7num/3F2CAnb610+CwITAsjAB
-GIYBAkBgKN4ZDiFhAttqq4TpqamNcU0PEULHeUJDnEAUs0P2e0saYeaGsLjO
-bjvfl3pDUWnX0IT8JYMcOprLmsTc0T/yzopyNRsFy7CIzOQQy3kO2ezeQRSQ
-qVvbEc2r2D00DsUwANNEhdWCUknEuyMT6GpvRTCT3GparW/LeQXTyWT0QjT9
-SXEt9+jSX1Xvd7iql+ZiF8CyDBQNmJzO64ZJj9ntLt3lCTaLNp89E+3BmXMD
-hcPVzNh4zLQGOh976oW9f0YBSy0WvD86CcNThLtrKkloZIhSm0PvHp/A1rpq
-lCiy17TbdwY710C72IOiaNR7MqFsuJjVXyoOp6Qq/TIEjiKb08FxHMqDFkY3
-yTLK2UGQQiJ0Bf/4fFQfjJa8sG7zI++1+eYYHo9nCN8iXdWlyIHgyboqsJry
-cljROmKqtreIY/9uJVgkSLaHi5evXKGHQ1Cv9oNQin2FZC5l0i0ttzrifAU5
-FovpvpEJ+YjLzup1VVL7onk2QRQYUGLi4pUYDp7zPvvcrv07BUH47mcUZXg8
-2rYEpqY8JFTUPFKzoKG5UhJ3uIo8J731Da/PWd65AqExGCODoIQAuoYGlw1B
-VthOjpEJPYpVGVNbdvOaus6GGtvqyLSyqvdqdoQS8s21TEZzkGyuE98e/h20
-JeAFL8ttiondjrllQDyGIlGA3+GgFkPH1Imv0NdzFgPxJCJZGQalqHLYsCLg
-vosH+ay4j+9sH3PO0z6e+onLZBzzq8RjMLXtn345irc+upr97Pj48bLy8iF8
-D/Liwhp0+jyBSUU52Oh2LbCYOhiOg6pqOBdL4Eg0poRy6gkLy0SKRaGy2W1v
-bnTZITEMcgB0wsM0ga8GRkFX+G9pvW/xp4qsMOevpFc6JYTL6n98ua55vc5y
-Iv4bsmvxfDS6nYjnlc2VkuWdCqedVxUVR6fj2DM8fpwThF8sdDnPcLoKllJr
-QtXur7NL/9fmcVpFlgWVJBT24FTv1zjjLt39xAcf/5S3cPhfUZFSHJ6YQoVV
-PMKKYpSxSgjJORyYmBoRrNI9j61ZeWZzZSmaXHYEBD7b5nG8GlO0rlAub6LA
-SKehxGOAaMHZLw5u7jt11IdrQP82FkFtSTEsBEGbw+knDidGUhlEFfW9wgM0
-XCynYWMoGl0OgFKEZQUNDuktWTcuEYsFBRhMpvHOhcvZ2k13Ple1uDmNa0C3
-LF6A1ZXl0FRlk3tuOavJWaQ0DQ6OO52MxzE2GQGTzYJwPFoDPlxKpgGYikTJ
-JPUUIUcp9g+OZEtuWXf/s7tff8XqcMi4Bux6K+tNDg8+6F+waAcnSchenIRL
-FGDjGL+mqIjBBCQRNosFJ0NhhFUNIsdxAqU+wenGcH8/ZkTp/PYXd77P8zyu
-FQ0lM09xbvcuR209lKEBUBOolKwICMKDedOkeZb75qV89UIf3uwbwl1zi2GD
-2e4sK68DAQopoaS6Jlzk8+N60LCifjAZS0wo3SdBkgmYlMAncmj3OpvSmvYa
-SyCUFwdg6jp+VlOGeRxtopL0srN+AZcfHYbf5USq50xw7PLXDK4DObS6FZNy
-fr+TZdZRSuEROBT6DoYQjGRljGVz3VaG+cjDMqMCpcvsc+Zs8Ta12JT+y1CH
-BwGGweHxMOTWZY9s2/WHV0S7A9eCnLh5KXoTmTVnYsmtGU2HT+SDLW77+haP
-CzaHA9l0BjlNhVDkg628HILNDvlqP5SxYXAcjwIcn0ng9RPdZ188cLitbvkK
-BdeAPTA5g1a34yDgOFiIHIQQDKayXQ6W/e1ClrWypgE7z4ElJrIDV3ApPImR
-VBYCz6FC0iHrBj4eGE413n3v02WNixVcI7bRaYMBoMJmRR4motk8av2+l6Zj
-sdWKad5htYjQczkkpiI4MDmNL6LxbsUw/1Ik8nmJYe6ITk8vkWoX7ChU8FPu
-OlrA/P+SevhFHj6bhKDVgq/jCUQNwENJkUmwXgCg6QaOzSTx4Wj4PZ/TuX5b
-bfWXQYJTvK69Wbduw/sP7Pz9AZc/YOA6sGo2AxMA1Q0IFCghJj4cGERpqf/I
-J+HIJRNmOSVUOh9LxtxWy/YHW5cotkgImqZC1/K4/dHHrtrm1+J6UXHZKlg7
-b4Jl+SqwHStRe/NatN++EcFVPzrfcOvaVk/nmhaho7Dctn7TA1u3Xg3Mmwd/
-RyduXL8BbbdvAmuxYjb+DcasAaYvg7ldAAAAAElFTkSuQmCC
- ">
-
- <!-- Some browsers automatically focus the first focusable item. We
- don't want anything focused, so we add this fake item. -->
- <a href="#" id="focus-thief"></a>
- </td>
- <td width="100%" valign="middle">
- <h1>
- <span id="string-gears-settings"></span>
- </h1>
- </td>
- </tr>
- </table>
- </div>
- <div id="content">
- <p>
- <span id="string-permissions-description"></span>
- </p>
- <div id='div-permissions'>
- </div>
- <br>
- <br>
- <div id="string-version"></div>
- </div>
- <div id="foot">
- <div id="button-row">
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
- <tr>
-
- <td nowrap="true" align="right" valign="middle">
- <button id="confirm-button" class="custom"
- onclick="saveAndClose(calculateDiff()); return false;"
- ></button
- ><button id="cancel-button" accesskey="C" class="custom"
- onclick="saveAndClose(null); return false;"
- ></button>
- </td>
-
- </tr>
- </table>
- </div>
- </div>
-
-
-</body>
-
-<script>
-/*
-Copyright (c) 2005 JSON.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The Software shall be used for Good, not Evil.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-//Array.prototype.______array = '______array';
-
-var JSON = {
- org: 'http://www.JSON.org',
- copyright: '(c)2005 JSON.org',
- license: 'http://www.crockford.com/JSON/license.html',
-
- stringify: function (arg) {
- var c, i, l, s = '', v;
-
- switch (typeof arg) {
- case 'object':
- if (arg) {
- if (arg.constructor == Array.prototype.constructor) {
- for (i = 0; i < arg.length; ++i) {
- v = this.stringify(arg[i]);
- if (s) {
- s += ',';
- }
- s += v;
- }
- return '[' + s + ']';
- } else if (typeof arg.toString != 'undefined') {
- for (i in arg) {
- v = arg[i];
- if (typeof v != 'undefined' && typeof v != 'function') {
- v = this.stringify(v);
- if (s) {
- s += ',';
- }
- s += this.stringify(i) + ':' + v;
- }
- }
- return '{' + s + '}';
- }
- }
- return 'null';
- case 'number':
- return isFinite(arg) ? String(arg) : 'null';
- case 'string':
- l = arg.length;
- s = '"';
- for (i = 0; i < l; i += 1) {
- c = arg.charAt(i);
- if (c >= ' ') {
- if (c == '\\' || c == '"') {
- s += '\\';
- }
- s += c;
- } else {
- switch (c) {
- case '\b':
- s += '\\b';
- break;
- case '\f':
- s += '\\f';
- break;
- case '\n':
- s += '\\n';
- break;
- case '\r':
- s += '\\r';
- break;
- case '\t':
- s += '\\t';
- break;
- default:
- c = c.charCodeAt();
- s += '\\u00' + Math.floor(c / 16).toString(16) +
- (c % 16).toString(16);
- }
- }
- }
- return s + '"';
- case 'boolean':
- return String(arg);
- default:
- return 'null';
- }
- },
- parse: function (text) {
- var at = 0;
- var ch = ' ';
-
- function error(m) {
- throw {
- name: 'JSONError',
- message: m,
- at: at - 1,
- text: text
- };
- }
-
- function next() {
- ch = text.charAt(at);
- at += 1;
- return ch;
- }
-
- function white() {
- while (ch) {
- if (ch <= ' ') {
- next();
- } else if (ch == '/') {
- switch (next()) {
- case '/':
- while (next() && ch != '\n' && ch != '\r') {}
- break;
- case '*':
- next();
- for (;;) {
- if (ch) {
- if (ch == '*') {
- if (next() == '/') {
- next();
- break;
- }
- } else {
- next();
- }
- } else {
- error("Unterminated comment");
- }
- }
- break;
- default:
- error("Syntax error");
- }
- } else {
- break;
- }
- }
- }
-
- function string() {
- var i, s = '', t, u;
-
- if (ch == '"') {
-outer: while (next()) {
- if (ch == '"') {
- next();
- return s;
- } else if (ch == '\\') {
- switch (next()) {
- case 'b':
- s += '\b';
- break;
- case 'f':
- s += '\f';
- break;
- case 'n':
- s += '\n';
- break;
- case 'r':
- s += '\r';
- break;
- case 't':
- s += '\t';
- break;
- case 'u':
- u = 0;
- for (i = 0; i < 4; i += 1) {
- t = parseInt(next(), 16);
- if (!isFinite(t)) {
- break outer;
- }
- u = u * 16 + t;
- }
- s += String.fromCharCode(u);
- break;
- default:
- s += ch;
- }
- } else {
- s += ch;
- }
- }
- }
- error("Bad string");
- }
-
- function array() {
- var a = [];
-
- if (ch == '[') {
- next();
- white();
- if (ch == ']') {
- next();
- return a;
- }
- while (ch) {
- a.push(value());
- white();
- if (ch == ']') {
- next();
- return a;
- } else if (ch != ',') {
- break;
- }
- next();
- white();
- }
- }
- error("Bad array");
- }
-
- function object() {
- var k, o = {};
-
- if (ch == '{') {
- next();
- white();
- if (ch == '}') {
- next();
- return o;
- }
- while (ch) {
- k = string();
- white();
- if (ch != ':') {
- break;
- }
- next();
- o[k] = value();
- white();
- if (ch == '}') {
- next();
- return o;
- } else if (ch != ',') {
- break;
- }
- next();
- white();
- }
- }
- error("Bad object");
- }
-
- function number() {
- var n = '', v;
- if (ch == '-') {
- n = '-';
- next();
- }
- while (ch >= '0' && ch <= '9') {
- n += ch;
- next();
- }
- if (ch == '.') {
- n += '.';
- while (next() && ch >= '0' && ch <= '9') {
- n += ch;
- }
- }
- if (ch == 'e' || ch == 'E') {
- n += 'e';
- next();
- if (ch == '-' || ch == '+') {
- n += ch;
- next();
- }
- while (ch >= '0' && ch <= '9') {
- n += ch;
- next();
- }
- }
- v = +n;
- if (!isFinite(v)) {
- ////error("Bad number");
- } else {
- return v;
- }
- }
-
- function word() {
- switch (ch) {
- case 't':
- if (next() == 'r' && next() == 'u' && next() == 'e') {
- next();
- return true;
- }
- break;
- case 'f':
- if (next() == 'a' && next() == 'l' && next() == 's' &&
- next() == 'e') {
- next();
- return false;
- }
- break;
- case 'n':
- if (next() == 'u' && next() == 'l' && next() == 'l') {
- next();
- return null;
- }
- break;
- }
- error("Syntax error");
- }
-
- function value() {
- white();
- switch (ch) {
- case '{':
- return object();
- case '[':
- return array();
- case '"':
- return string();
- case '-':
- return number();
- default:
- return ch >= '0' && ch <= '9' ? number() : word();
- }
- }
-
- return value();
- }
-};
-
-// Copyright 2008, The Android Open Source Project
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// 3. Neither the name of Google Inc. nor the names of its contributors may be
-// used to endorse or promote products derived from this software without
-// specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//=============================================================================
-// Various basic JavaScript utilities.
-//=============================================================================
-
-/**
- * Check that the type is not undefined (we do it here as on
- * some devices typeof returns unknown instead of undefined...).
- * We have to pass the evaluation of (typeof elem) (i.e., a string)
- * to the function rather than simply (element) -- passing an
- * undefined object would make the function crash on PIE.
- */
-function isDefined(type) {
- return type != 'undefined' && type != 'unknown';
-}
-
-/**
- * Returns true if val is a function.
- */
-function isFunction(val) {
- return typeof val == "function";
-}
-
-// TODO(aa): more basic type checking here.
-
-
-/**
- * Creates a 'bound' function that calls the current function with a preset
- * 'this' object and set of arguments.
- */
-Function.prototype.bind = function(obj) {
- var preArgs = Array.prototype.slice.call(arguments, 1);
- var self = this;
- return function() {
- var postArgs = Array.prototype.slice.call(arguments, 0);
- var totalArgs = preArgs.concat(postArgs);
- return self.apply(obj, totalArgs);
- }
-};
-
-/**
- * Creates a partially applied function that calls the current function with
- * a preset set of arguments.
- */
-Function.prototype.partial = function() {
- var args = Array.prototype.slice.call(arguments, 0);
- return this.bind(null, args);
-};
-
-/**
- * Binds all the methods in obj to obj.
- */
-function bindMethods(obj) {
- for (var p in obj) {
- if (isFunction(obj[p])) {
- obj[p] = obj[p].bind(obj);
- }
- }
-}
-
-
-/**
- * Trim leading and trailing whitespace from a string.
- */
-String.prototype.trim = function(str) {
- return this.replace(/^\s+/, "").replace(/\s+$/, "");
-};
-
-
-/**
- * Find the index of a given element in an array. Returns -1 if the item does
- * not exist.
- */
-Array.prototype.indexOf = function(item) {
- for (var i = 0; i < this.length; i++) {
- if (this[i] === item) {
- return i;
- }
- }
- return -1;
-};
-
-/**
- * Makes a deep copy of an object.
- */
-function cloneObject(original) {
- var newObject = new Object();
- for (i in original) {
- if (typeof original[i] == 'object') {
- newObject[i] = cloneObject(original[i]);
- }
- else {
- newObject[i] = original[i];
- }
- }
- newObject.length = original.length;
- return newObject;
-}
-
-var browser = {};
-
-(function() {
- var ua = navigator.userAgent;
- browser.opera = typeof opera != "undefined";
- browser.ie = !browser.opera && ua.indexOf("MSIE") > -1;
- browser.ie_mobile = (ua.indexOf("Windows CE") > -1) &&
- (ua.indexOf("MSIE") > -1);
- browser.webkit = ua.indexOf("WebKit") > -1;
- // WebKit also gives product == "gecko".
- browser.mozilla = !browser.webkit && navigator.product == "Gecko";
- browser.safari = ua.indexOf("Safari") > -1;
- browser.mac = navigator.platform.indexOf("Mac") > -1;
- browser.linux = navigator.platform.indexOf("Linux") > -1;
- browser.windows = navigator.platform.indexOf("Win") > -1;
- browser.android = ua.indexOf("Android") > -1;
- if (browser.android) {
- browser.safari = false;
- }
- // TODO(aa): Add detection for more browsers, as necessary.
-})();
-
-// Copyright 2008, The Android Open Source Project
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// 3. Neither the name of Google Inc. nor the names of its contributors may be
-// used to endorse or promote products derived from this software without
-// specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//=============================================================================
-// DOM manipulation utilities.
-// Requires: base.js
-//=============================================================================
-
-var dom = {};
-
-/**
- * Provides a cross-browser way of getting an element by its id
- */
-dom.getElementById = function(id) {
- if (isDefined(typeof document.getElementById)) {
- return document.getElementById(id);
- } else if (isDefined(typeof document.all)) {
- return document.all[id];
- }
- throw new Error("Failed to get element by ID.");
-};
-
-/**
- * Gets the position and dimensions of an element in pixels in relation
- * to the window origin.
- */
-dom.getPosition = function(elem) {
- var ret = { 'left' : 0,
- 'top' : 0,
- 'width' : elem.width,
- 'height' : elem.height };
-
- if (!elem.offsetParent) return ret;
-
- var left = 0;
- var top = 0;
- while (elem) {
- left += elem.offsetLeft;
- top += elem.offsetTop;
- elem = elem.offsetParent
- }
- ret.left = left;
- ret.top = top;
- return ret;
-};
-
-/**
- * Returns the height of the inside of the window.
- */
-dom.getWindowInnerHeight = function() {
- if (isDefined(typeof window.innerHeight)) { // Firefox
- return window.innerHeight;
- } else if (isDefined(typeof document.body.offsetHeight)) { // IE
- return document.body.offsetHeight;
- }
-
- throw new Error("Could not get windowInnerHeight.");
-};
-
-/**
- * Add an event listener to an element cross-browser.
- */
-dom.addEvent = function(element, eventName, handler) {
- var wrapper = dom._callEventHandler.bind(dom, handler);
-
- if (isDefined(typeof element.addEventListener)) {
- // Standards-compatible browsers
- element.addEventListener(eventName, wrapper, false);
- } else if (isDefined(typeof element.attachEvent)) {
- // IE
- element.attachEvent("on" + eventName, wrapper);
- } else {
- throw new Error('Failed to attach event.');
- }
-};
-
-/**
- * Private helper for calling event handlers compatibly across browsers.
- */
-dom._callEventHandler = function(handler, e) {
- // Older versions of IE don't pass event to the handler.
- if (!e) e = window.event;
-
- // TODO(aa): Normalize event object properties.
-
- return handler(e);
-};
-
-/**
- * Gets the CSS classes for an element.
- */
-dom.getClasses = function(elm) {
- return elm.className.split(/\s+/);
-};
-
-/**
- * Check is an element has a particular CSS class name.
- */
-dom.hasClass = function(elm, className) {
- return this.getClasses(elm).indexOf(className) > -1;
-};
-
-/**
- * Adds a CSS class to an element. Do nothing if the class already exists.
- */
-dom.addClass = function(elm, className) {
- var classes = this.getClasses(elm);
- if (classes.indexOf(className) > -1) {
- return;
- }
- classes.push(className);
- elm.className = classes.join(" ");
-};
-
-/**
- * Removes a CSS class from an element. Do nothing if the class doesn't exist.
- */
-dom.removeClass = function(elm, className) {
- var classes = this.getClasses(elm);
- var index = classes.indexOf(className);
- if (index == -1) {
- return;
- }
- classes.splice(index, 1);
- elm.className = classes.join(" ");
-};
-
-/**
- * Gets the text (non-html) content of an element.
- */
-dom.getTextContent = function(elm) {
- if (isDefined(typeof elm.textContent)) {
- return elm.textContent;
- } else if (isDefined(typeof elm.innerText)) {
- return elm.innerText;
- } else {
- throw new Error("Could not find a property to get text content.");
- }
-};
-
-/**
- * Sets the text (non-html) contents of an element.
- */
-dom.setTextContent = function(elm, text) {
- if (isDefined(typeof elm.textContent)) {
- elm.textContent = text;
- } else if (isDefined(typeof elm.innerText)) {
- elm.innerText = text;
- } else {
- throw new Error("Could not find a property to set text content.");
- }
-};
-
-// Copyright 2007, The Android Open Source Project
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// 3. Neither the name of Google Inc. nor the names of its contributors may be
-// used to endorse or promote products derived from this software without
-// specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-/**
- * Initialize the base functionality of the dialog.
- */
-function initDialog() {
- if (!browser.ie_mobile) {
- dom.addEvent(document, "keyup", handleKeyUp);
- } else {
- var buttonRowElem = null;
- if (window.pie_dialog.IsSmartPhone()) {
- buttonRowElem = dom.getElementById("button-row-smartphone");
- } else {
- buttonRowElem = dom.getElementById("button-row");
- }
- if (buttonRowElem) {
- buttonRowElem.style.display = 'block';
- }
- }
- if (browser.ie_mobile) {
- window.pie_dialog.SetScriptContext(window);
- window.pie_dialog.ResizeDialog();
- }
-}
-
-/**
- * Set the label of an input button, and optionally, its accesskey.
- */
-function setButtonLabel(textID, elemID, accessKeyID) {
- var textElem = dom.getElementById(textID);
- var buttonElem = dom.getElementById(elemID);
- if (textElem == null || buttonElem == null) {
- return;
- }
-
- var accessKeyElem = null;
- if (isDefined(typeof accessKeyID)) {
- accessKeyElem = dom.getElementById(accessKeyID);
- }
-
- // This function works for two different kinds of buttons. Simple buttons
- // based on the <input type="button"> tag, and custom buttons based on a
- // <button> tag with the css class "custom".
- // Note that on Windows Mobile 5, the tagName property is not defined.
- // We can therefore safely assume that the converse is also true:
- // if tagName is not defined, then the platform must be Windows Mobile 5.
- if (!isDefined(typeof buttonElem.tagName) ||
- buttonElem.tagName.toLowerCase() == "input") {
- buttonElem.value = dom.getTextContent(textElem).trim();
- if (accessKeyElem != null) {
- buttonElem.accessKey = dom.getTextContent(accessKeyElem).trim();
- }
- } else if (buttonElem.tagName.toLowerCase() == "button") {
- var text = dom.getTextContent(textElem).trim();
-
- if (accessKeyElem != null) {
- // Some browsers use the accessKey attribute of the the anchor tag.
- var accessKey = dom.getTextContent(accessKeyElem).trim();
- buttonElem.accessKey = accessKey;
-
- // Find the first matching character in the text and mark it.
- // Note: this form of String.replace() only replaces the first occurence.
- text = text.replace(accessKey,
- "<span class='accesskey'>" + accessKey + "</span>");
- }
-
- buttonElem.innerHTML = text;
- } else {
- throw new Error("Unexpected button tag name: " + buttonElem.tagName);
- }
-}
-
-/**
- * Allows a dialog to do custom layout when the window changes sizes. The
- * provided function will be called with the height of the content area when the
- * dialog should relayout.
- */
-function initCustomLayout(layoutFunction) {
- function doLayout() {
- layoutFunction(getContentHeight());
- }
-
- doLayout();
-
- // We do an additional layout in onload because sometimes things aren't
- // stabilized when the first doLayout() is called above.
- dom.addEvent(window, "load", doLayout);
- dom.addEvent(window, "resize", doLayout);
-
- // Mozilla doesn't fire continuous events during resize, so if we want to get
- // somewhat smooth resizing, we need to run our own timer loop. This still
- // doesn't look perfect, because the timer goes off out of sync with the
- // browser's internal reflow, but I think it's better than nothing.
- // TODO(aa): Keep looking for a way to get an event for each reflow, like IE.
- if (browser.mozilla) {
- var lastHeight = -1;
-
- function maybeDoLayout() {
- var currentHeight = dom.getWindowInnerHeight();
- if (currentHeight != lastHeight) {
- lastHeight = currentHeight;
- doLayout();
- }
- }
-
- window.setInterval(maybeDoLayout, 30);
- }
-}
-
-/**
- * Get the JSON-formatted arguments that were passed by the caller.
- */
-function getArguments() {
- var argsString;
- if (browser.ie_mobile) {
- argsString = window.pie_dialog.GetDialogArguments();
- } else if (browser.ie) {
- argsString = window.external.GetDialogArguments();
- } else if (browser.mozilla) {
- argsString = getFirefoxArguments(window.arguments[0]);
- } else if (browser.safari) {
- argsString = window.gears_dialogArguments;
- } else if (browser.android) {
- argsString = "" + window.bridge.getDialogArguments();
- }
-
- if (typeof argsString == "string") {
- return JSON.parse(argsString);
- } else {
- return null;
- }
-}
-
-/**
- * Helper used by getArguments(). Getting the arguments in the right type is
- * more involved in Firefox.
- */
-function getFirefoxArguments(windowArguments) {
- var Ci = Components.interfaces;
- windowArguments.QueryInterface(Ci.nsIProperties);
- var supportsString =
- windowArguments.get("dialogArguments", Ci.nsISupportsString);
- return supportsString.data;
-}
-
-/**
- * Close the dialog, sending the specified result back to the caller.
- */
-function saveAndClose(resultObject) {
- var resultString = JSON.stringify(resultObject);
- if (browser.ie_mobile) {
- window.pie_dialog.CloseDialog(resultString);
- } else if (browser.ie) {
- window.external.CloseDialog(resultString);
- } else if (browser.mozilla) {
- saveFirefoxResults(resultString);
- window.close();
- } else if (browser.safari) {
- window.gears_dialog.setResults(resultString);
- } else if (browser.android) {
- window.bridge.closeDialog(resultString);
- }
-}
-
-/**
- * Helper used by endDialog() for Firefox.
- */
-function saveFirefoxResults(resultString) {
- var Cc = Components.classes;
- var Ci = Components.interfaces;
-
- var props = window.arguments[0].QueryInterface(Ci.nsIProperties);
- var supportsString = Cc["@mozilla.org/supports-string;1"]
- .createInstance(Ci.nsISupportsString);
-
- supportsString.data = resultString;
- props.set("dialogResult", supportsString);
-}
-
-/**
- * Returns the height of the content area of the dialog.
- */
-function getContentHeight() {
- var head = dom.getElementById("head");
- var foot = dom.getElementById("foot");
- return dom.getWindowInnerHeight() - head.offsetHeight - foot.offsetHeight;
-}
-
-/**
- * For some reason ESC doesn't work on HTML dialogs in either Firefox or IE. So
- * we implement it manually.
- */
-function handleKeyUp(e) {
- var ESC_KEY_CODE = 27;
-
- if (e.keyCode == ESC_KEY_CODE) {
- saveAndClose(null);
- }
-}
-
-/**
- * Disables a button in the right way, whether it is normal or custom.
- */
-function disableButton(buttonElem) {
- buttonElem.disabled = true;
-
- if (browser.ie_mobile) {
- window.pie_dialog.SetButtonEnabled(false);
- }
-
- if (!isDefined(typeof buttonElem.tagName) ||
- buttonElem.tagName.toLowerCase() == "input") {
- buttonElem.style.color = "gray";
- } else if (buttonElem.tagName.toLowerCase() == "button") {
- dom.addClass(buttonElem, "disabled");
- } else {
- throw new Error("Unexpected tag name: " + buttonElem.tagName);
- }
-}
-
-/**
- * Enables a button in the right way, whether it is normal or custom.
- */
-function enableButton(buttonElem) {
- buttonElem.disabled = false;
-
- if (browser.ie_mobile) {
- window.pie_dialog.SetButtonEnabled(true);
- }
-
- if (!isDefined(typeof buttonElem.tagName) ||
- buttonElem.tagName.toLowerCase() == "input") {
- buttonElem.style.color = "black";
- } else if (buttonElem.tagName.toLowerCase() == "button") {
- dom.removeClass(buttonElem, "disabled");
- } else {
- throw new Error("Unexpected tag name: " + buttonElem.tagName);
- }
-}
-
-/**
- * Returns a wrapped domain (useful for small screens dialogs,
- * e.g. windows mobile devices)
- */
-function wrapDomain(str) {
- if (!browser.ie_mobile) {
- return str;
- }
-
- var max = 20;
- var url;
- var scheme_start = str.indexOf("://");
- var scheme = "";
-
- if (scheme_start != -1) {
- scheme = str.substring(0, scheme_start);
- scheme += "://";
- // there's automatically an hyphenation
- // point used by the browser after http://
- // so we only have to hyphenate the
- // rest of the string
- url = str.substring(scheme.length);
- } else {
- url = str;
- }
-
- // We hyphenate the string on every dot
- var components = url.split(".");
- if (components.length < 1) {
- return str;
- }
-
- var content = components[0];
- var len = content.length;
- for (var i=1; i < components.length; i++) {
- var elem = components[i];
- content += ".";
- len++;
- if (len + elem.length > max) {
- content += "<br>";
- len = 0;
- }
- content += elem;
- len += elem.length;
- }
- return scheme + content;
-}
-
-/**
- * Resizes the dialog to fit the content size.
- */
-function resizeDialogToFitContent(opt_minDialogInnerHeight) {
- // This does not work on PIE (no height measurement)
- if (browser.ie_mobile) {
- window.pie_dialog.ResizeDialog();
- return;
- }
- // window.resize() is not working on Android, we bail out.
- if (browser.android) {
- return;
- }
-
- // Resize the window to fit
- var contentDiv = dom.getElementById("content");
- var contentHeightProvided = getContentHeight();
- var contentHeightDesired = contentDiv.offsetHeight;
-
- var dialogHeightProvided = dom.getWindowInnerHeight();
- var dialogHeightDesired =
- dialogHeightProvided + (contentHeightDesired - contentHeightProvided);
-
- var minDialogHeight = opt_minDialogInnerHeight || 0;
- var maxDialogHeight = 400; // arbitrary max height for a dialog to resize to
-
- var targetHeight = Math.max(dialogHeightDesired, minDialogHeight);
- targetHeight = Math.min(dialogHeightDesired, maxDialogHeight);
-
- if (targetHeight != dialogHeightProvided) {
- var dy = targetHeight - dialogHeightProvided;
- window.resizeBy(0, dy);
- }
-}
-
-/**
- * Safari running on OSX 10.4 can't load images dynamically from the network,
- * this helper function calls gears-specific code to work around this
- * limitation.
- */
-function loadImage(elem, image_url) {
- if (browser.safari) {
- var position = dom.getPosition(elem);
- window.gears_dialog.loadImageIntoElement(image_url, position.top,
- position.left,
- position.width,
- position.height);
- } else {
- elem.src = image_url;
- }
-}
-
-// Copyright 2008, The Android Open Source Project
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-// 3. Neither the name of Google Inc. nor the names of its contributors may be
-// used to endorse or promote products derived from this software without
-// specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//=============================================================================
-// Implements the behavior of our custom buttons. There is no native support in
-// IE for rounded corners on HTML elements, so this script also implements a
-// hack to simulate them in that browser.
-//
-// Requires: base.js, dom.js
-//=============================================================================
-
-/**
- * Constructor.
- */
-function CustomButton(htmlButton) {
- bindMethods(this);
-
- this._focused = false;
- this._htmlButton = htmlButton;
-
- if (!document.all) { // not IE
- dom.addEvent(htmlButton, "mouseover", this._handleMouseOver);
- dom.addEvent(htmlButton, "mouseout", this._handleMouseOut);
- } else { // IE
- // mouseover/mouseout behave badly with nested elements in IE. Luckily,
- // mouseenter/mouseleave are provided and have the equivalent semantics.
- dom.addEvent(htmlButton, "mouseenter", this._handleMouseOver);
- dom.addEvent(htmlButton, "mouseleave", this._handleMouseOut);
-
- // We also handle focus and blur in IE so that we can update the corners
- // to match the black border IE provides.
- dom.addEvent(htmlButton, "focusin", this._handleFocus);
- dom.addEvent(htmlButton, "blur", this._handleBlur);
-
- dom.addClass(htmlButton, "ie");
- this._createCorners();
- }
-
- // Limit button widths to a minimum of 60px. They look funny skinnier.
- if (htmlButton.offsetWidth < 60) {
- htmlButton.style.width = "60px";
- }
-
- htmlButton.style.visibility = "visible";
-}
-
-/**
- * Initializes all the custom buttons on the page.
- */
-CustomButton.initializeAll = function() {
- var buttons = document.getElementsByTagName("button");
- for (var i = 0, button; button = buttons[i]; i++) {
- if (dom.hasClass(button, "custom")) {
- new CustomButton(button);
- }
- }
-};
-
-/**
- * Highlights the button on mouseover. Note that this gets called multiple
- * times while the mouse goes over sub elements inside the button.
- */
-CustomButton.prototype._handleMouseOver = function() {
- if (!this._htmlButton.disabled && !this._focused) {
- dom.addClass(this._htmlButton, "hover");
- this._setCornerColor("blue");
- }
-};
-
-/**
- * Undoes the highlighting of the button on mouseout. Note that this gets called
- * multiple times when the mouse moves out of sub elements, even if it is still
- * over the button. That is OK, as long as there is immediately a mouseover
- * event.
- */
-CustomButton.prototype._handleMouseOut = function() {
- if (!this._htmlButton.disabled && !this._focused) {
- dom.removeClass(this._htmlButton, "hover");
- this._setCornerColor("grey");
- }
-};
-
-/**
- * Highlights the button on focus. Currently only used for IE.
- * TODO(aa): The black highlight looks cool. Consider for other browsers.
- */
-CustomButton.prototype._handleFocus = function() {
- dom.removeClass(this._htmlButton, "hover");
- this._setCornerColor("black");
- this._focused = true;
-};
-
-/**
- * Undoes the highlighting of the button on blur.
- */
-CustomButton.prototype._handleBlur = function() {
- this._setCornerColor("grey");
- this._focused = false;
-};
-
-/**
- * Helper to create the graphics that make the button have rounded corners in
- * IE.
- */
-CustomButton.prototype._createCorners = function() {
- // Making the button position:relative makes it possible to position things
- // inside it relative to it's border.
- this._htmlButton.style.position = "relative";
-
- var verticalEdges = ["left", "right"];
- var horizontalEdges = ["top", "bottom"];
- var colors = ["grey", "blue", "black"];
-
- for (var i = 0; i < verticalEdges.length; i++) {
- for (var j = 0; j < horizontalEdges.length; j++) {
- for (var k = 0; k < colors.length; k++) {
- var img = document.createElement("img");
- img.src = "button_corner_" + colors[k] + ".gif";
- img.color = colors[k];
- img.style.position = "absolute";
- img.style[verticalEdges[i]] = "-2px";
- img.style[horizontalEdges[j]] = "-2px";
- img.style.filter =
- "progid:DXImageTransform.Microsoft.BasicImage(Rotation=" +
- (i + j) + ")";
- this._htmlButton.appendChild(img);
- }
- }
- }
-
- this._setCornerColor("grey");
-};
-
-/**
- * Sets the color of the corners in IE by changing the stack order of the corner
- * images.
- */
-CustomButton.prototype._setCornerColor = function(newColor) {
- var imgs = this._htmlButton.getElementsByTagName("img");
- for (var i = 0, img; img = imgs[i]; i++) {
- img.style.zIndex = Number(img.color == newColor);
- }
-};
-
-var localized_strings = {
- "el": {
- "string-denied": "Δεν επιτρέπονται",
- "string-apply-accesskey": "A",
- "string-remove": "Κατάργηση",
- "string-gears-settings": "Ρυθμίσεις Gears",
- "string-apply": "Εφαρμογή",
- "string-cancel-accesskey": "C",
- "string-cancel": "Άκυρο",
- "string-html-title": "Ρυθμίσεις Gears",
- "string-allowed": "Επιτρέπονται",
- "string-local-storage": "Τοπικός αποθηκευτικός χώρος",
- "string-nosites": "Δεν υπάρχουν ιστότοποι.",
- "string-permissions-description": "Ο παρακάτω πίνακας δείχνει τα δικαιώματα που χορηγήσατε σε κάθε ιστότοπο που επιχείρησε να χρησιμοποιήσει το Gears.",
- "string-location-data": "Τοποθεσία",
- "string-version": "Έκδοση Gears 0.4.23.0"
- },
- "gu": {
- "string-denied": "નકારેલું",
- "string-apply-accesskey": "A",
- "string-remove": "દૂર કરો",
- "string-gears-settings": "Gears સેટિંગ્સ",
- "string-apply": "લાગુ કરો",
- "string-cancel-accesskey": "C",
- "string-cancel": "રદ કરો",
- "string-html-title": "Gears સેટિંગ્સ",
- "string-allowed": "મંજુર કરેલ",
- "string-local-storage": "સ્થાનિક સ્ટોરેજ",
- "string-nosites": "કોઇ સાઇટ્સ નથીં.",
- "string-permissions-description": "નીચેનુ કોષ્ટક દર્શાવે છે કે તમે જુદી-જુદી સાઇટ્સને કઇ પરવાનગીઓ આપેલી છે કે જેમણે Gearsનો ઉપયોગ કરવાનો પ્રયત્ન કર્યો છે.",
- "string-location-data": "સ્થાન",
- "string-version": "Gears સંસ્કરણ 0.4.23.0"
- },
- "zh-TW": {
- "string-denied": "遭拒",
- "string-apply-accesskey": "A",
- "string-remove": "移除",
- "string-gears-settings": "Gears 設定",
- "string-apply": "套用",
- "string-cancel-accesskey": "C",
- "string-cancel": "取消",
- "string-html-title": "Gears 設定",
- "string-allowed": "允許",
- "string-local-storage": "本機儲存",
- "string-nosites": "沒有網站。",
- "string-permissions-description": "下表顯示您授予嘗試使用 Gears 之各個網站的權限。",
- "string-location-data": "位置",
- "string-version": "Gears 版本 0.4.23.0"
- },
- "vi": {
- "string-denied": "Bị từ chối",
- "string-apply-accesskey": "P",
- "string-remove": "Xoá",
- "string-gears-settings": "Cài đặt Gears",
- "string-apply": "Áp dụng",
- "string-cancel-accesskey": "H",
- "string-cancel": "Huỷ",
- "string-html-title": "Cài đặt Gears",
- "string-allowed": "Được phép",
- "string-local-storage": "Bộ nhớ cục bộ",
- "string-nosites": "Không có trang web nào.",
- "string-permissions-description": "Bảng dưới đây hiển thị các quyền bạn cấp cho mỗi trang đã cố gắng sử dụng Gears.",
- "string-location-data": "Vị trí",
- "string-version": "Gears phiên bản 0.4.23.0"
- },
- "ca": {
- "string-denied": "Denegat",
- "string-apply-accesskey": "P",
- "string-remove": "Elimina",
- "string-gears-settings": "Configuració de Gears",
- "string-apply": "Aplica",
- "string-cancel-accesskey": "C",
- "string-cancel": "Cancel·la",
- "string-html-title": "Configuració de Gears",
- "string-allowed": "Permès",
- "string-local-storage": "Emmagatzematge local",
- "string-nosites": "Cap lloc.",
- "string-permissions-description": "La taula següent mostra els permisos que teniu a cada lloc que ha intentat utilizar Gears.",
- "string-location-data": "Ubicació",
- "string-version": "Versió de Gears 0.4.23.0"
- },
- "it": {
- "string-denied": "Non consentito",
- "string-apply-accesskey": "A",
- "string-remove": "Rimuovi",
- "string-gears-settings": "Impostazioni di Google Gears",
- "string-apply": "Applica",
- "string-cancel-accesskey": "A",
- "string-cancel": "Annulla",
- "string-html-title": "Impostazioni di Google Gears",
- "string-allowed": "Consentito",
- "string-local-storage": "Archiviazione locale",
- "string-nosites": "Nessun sito.",
- "string-permissions-description": "La tabella riportata di seguito mostra le autorizzazioni concesse ai siti che hanno tentato di utilizzare Google Gears.",
- "string-location-data": "Posizione",
- "string-version": "Versione di Google Gears 0.4.23.0"
- },
- "kn": {
- "string-denied": "ನಿರಾಕರಿಸಲಾಗಿದೆ",
- "string-apply-accesskey": "A",
- "string-remove": "ತೆಗೆಯಿರಿ",
- "string-gears-settings": "Gears ಸೆಟ್ಟಿಂಗ್ಸ್",
- "string-apply": "ಅನ್ವಯಿಸಿ",
- "string-cancel-accesskey": "C",
- "string-cancel": "ರದ್ದುಮಾಡು",
- "string-html-title": "Gears ಸೆಟ್ಟಿಂಗ್ಸ್",
- "string-allowed": "ಅನುಮತಿಸಲಾಗಿದೆ",
- "string-local-storage": "ಸ್ಥಳೀಯ ಶೇಖರಣೆ",
- "string-nosites": "ಸೈಟುಗಳಿಲ್ಲ.",
- "string-permissions-description": "ಕೆಳಗಿನ ಟೇಬಲ್ Gears ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದ ಪ್ರತಿಯೊಂದು ಸೈಟ್ ಗೂ ನೀವು ನೀಡಿದ ಅನುಮತಿಗಳನ್ನು ತೋರಿಸುತ್ತಿದೆ.",
- "string-location-data": "ಸ್ಥಳ",
- "string-version": "0.4.23.0 Gears ಆವೃತ್ತಿ"
- },
- "ar": {
- "string-denied": "مرفوض",
- "string-apply-accesskey": "س",
- "string-remove": "إزالة",
- "string-gears-settings": "إعدادات Gears",
- "string-apply": "تطبيق",
- "string-cancel-accesskey": "غ",
- "string-cancel": "إلغاء",
- "string-html-title": "إعدادات Gears",
- "string-allowed": "مسموح",
- "string-local-storage": "تخزين محلي",
- "string-nosites": "لا توجد مواقع.",
- "string-permissions-description": "يوضح الجدول أدناه الأذونات التي قمت بمنحها لكل موقع حاول استخدام Gears.",
- "string-location-data": "الموقع",
- "string-version": "Gears الإصدار 0.4.23.0"
- },
- "ml": {
- "string-denied": "തടഞ്ഞു",
- "string-apply-accesskey": "A",
- "string-remove": "നീക്കംചെയ്യൂ",
- "string-gears-settings": "Gears ക്രമീകരണങ്ങള്",
- "string-apply": "അപേക്ഷിക്കുക",
- "string-cancel-accesskey": "C",
- "string-cancel": "റദ്ദാക്കൂ",
- "string-html-title": "Gears ക്രമീകരണങ്ങള്",
- "string-allowed": "അനുവദിച്ചു",
- "string-local-storage": "പ്രാദേശിക ശേഖരം",
- "string-nosites": "സൈറ്റുകളൊന്നുമില്ല.",
- "string-permissions-description": "താഴെക്കാണുന്ന പട്ടിക Gears ഉപയോഗിക്കാന് ശ്രമിച്ച ഓരോ സൈറ്റിലേക്കും അനുവദിച്ചവ കാണിക്കുന്നു.",
- "string-location-data": "ലൊക്കേഷന്",
- "string-version": "Gears പതിപ്പ് 0.4.23.0"
- },
- "cs": {
- "string-denied": "Zamítnuto",
- "string-apply-accesskey": "P",
- "string-remove": "Odebrat",
- "string-gears-settings": "Nastavení aplikace Gears",
- "string-apply": "Použít",
- "string-cancel-accesskey": "R",
- "string-cancel": "Zrušit",
- "string-html-title": "Nastavení aplikace Gears",
- "string-allowed": "Povoleno",
- "string-local-storage": "Místní úložiště",
- "string-nosites": "Žádné weby.",
- "string-permissions-description": "Následující tabulka zobrazuje oprávnění udělená každému webu, který se pokusil použít aplikaci Gears.",
- "string-location-data": "Lokalita",
- "string-version": "Gears verze 0.4.23.0"
- },
- "et": {
- "string-denied": "Keelatud",
- "string-apply-accesskey": "L",
- "string-remove": "Eemalda",
- "string-gears-settings": "Gearsi seaded",
- "string-apply": "Rakenda",
- "string-cancel-accesskey": "T",
- "string-cancel": "Tühista",
- "string-html-title": "Gearsi seaded",
- "string-allowed": "Lubatud",
- "string-local-storage": "Kohalik salvestamine",
- "string-nosites": "Saidid puuduvad.",
- "string-permissions-description": "Alljärgnev tabel näitab lubasid, mille olete igale Gearsi kasutada püüdnud saidile andnud.",
- "string-location-data": "Asukoht",
- "string-version": "Gearsi versioon 0.4.23.0"
- },
- "id": {
- "string-denied": "Ditolak",
- "string-apply-accesskey": "A",
- "string-remove": "Hapus",
- "string-gears-settings": "Pengaturan Gears",
- "string-apply": "Terapkan",
- "string-cancel-accesskey": "C",
- "string-cancel": "Batalkan",
- "string-html-title": "Pengaturan Gears",
- "string-allowed": "Diizinkan",
- "string-local-storage": "Penyimpanan lokal",
- "string-nosites": "Tiada situs.",
- "string-permissions-description": "Tabel berikut menunjukkan izin yang telah Anda berikan ke setiap situs yang berusaha menggunakan Gears.",
- "string-location-data": "Lokasi",
- "string-version": "Versi Gears 0.4.23.0"
- },
- "es": {
- "string-denied": "Denegado",
- "string-apply-accesskey": "P",
- "string-remove": "Quitar",
- "string-gears-settings": "Configuración Gears",
- "string-apply": "Aplicar",
- "string-cancel-accesskey": "C",
- "string-cancel": "Cancelar",
- "string-html-title": "Configuración Gears",
- "string-allowed": "Permitido",
- "string-local-storage": "Almacenamiento local",
- "string-nosites": "No hay sitios.",
- "string-permissions-description": "La siguiente tabla muestra las autorizaciones que has concedido a cada sitio en el que has intentado usar Gears.",
- "string-location-data": "Ubicación",
- "string-version": "Versión Gears 0.4.23.0"
- },
- "en-GB": {
- "string-denied": "Denied",
- "string-apply-accesskey": "A",
- "string-remove": "Remove",
- "string-gears-settings": "Gears Settings",
- "string-apply": "Apply",
- "string-cancel-accesskey": "C",
- "string-cancel": "Cancel",
- "string-html-title": "Gears Settings",
- "string-allowed": "Allowed",
- "string-local-storage": "Local storage",
- "string-nosites": "No sites.",
- "string-permissions-description": "The table below shows the permissions you have granted to each site that has attempted to use Gears.",
- "string-location-data": "Location",
- "string-version": "Gears version 0.4.23.0"
- },
- "ru": {
- "string-denied": "Отказано",
- "string-apply-accesskey": "A",
- "string-remove": "Удалить",
- "string-gears-settings": "Настройки Gears",
- "string-apply": "Применить",
- "string-cancel-accesskey": "C",
- "string-cancel": "Отмена",
- "string-html-title": "Настройки Gears",
- "string-allowed": "Разрешено",
- "string-local-storage": "Локальное хранилище",
- "string-nosites": "Нет сайтов.",
- "string-permissions-description": "В таблице ниже перечислены разрешения, предоставленные каждому сайту, который пытался воспользоваться Gears.",
- "string-location-data": "Местонахождение",
- "string-version": "Gears версии 0.4.23.0"
- },
- "nl": {
- "string-denied": "Geweigerd",
- "string-apply-accesskey": "A",
- "string-remove": "Verwijderen",
- "string-gears-settings": "Instellingen voor Gears",
- "string-apply": "Toepassen",
- "string-cancel-accesskey": "C",
- "string-cancel": "Annuleren",
- "string-html-title": "Instellingen voor Gears",
- "string-allowed": "Toegestaan",
- "string-local-storage": "Lokale opslag",
- "string-nosites": "Geen sites.",
- "string-permissions-description": "Voor elke site die heeft geprobeerd Gears te gebruiken, worden in de tabel hieronder de machtigingen weergegeven die u aan deze site hebt verleend.",
- "string-location-data": "Locatie",
- "string-version": "Gears-versie 0.4.23.0"
- },
- "no": {
- "string-denied": "Ikke tillatt",
- "string-apply-accesskey": "T",
- "string-remove": "Fjern",
- "string-gears-settings": "Innstillinger for Gears",
- "string-apply": "Bruk",
- "string-cancel-accesskey": "A",
- "string-cancel": "Avbryt",
- "string-html-title": "Innstillinger for Gears",
- "string-allowed": "Tillatt",
- "string-local-storage": "Lokal lagring",
- "string-nosites": "Ingen steder.",
- "string-permissions-description": "Tabellen nedenfor viser tillatelsene du har gitt til hvert nettsted som har forsøkt å bruke Gears.",
- "string-location-data": "Område",
- "string-version": "Gears versjon 0.4.23.0"
- },
- "tr": {
- "string-denied": "Reddedildi",
- "string-apply-accesskey": "V",
- "string-remove": "Kaldır",
- "string-gears-settings": "Gears Ayarları",
- "string-apply": "Uygula",
- "string-cancel-accesskey": "a",
- "string-cancel": "İptal",
- "string-html-title": "Gears Ayarları",
- "string-allowed": "İzin verildi",
- "string-local-storage": "Yerel depolama",
- "string-nosites": "Site yok.",
- "string-permissions-description": "Aşağıdaki tablo Gears kullanan her site için sağladığınız izinleri gösterir.",
- "string-location-data": "Konum",
- "string-version": "Gears sürüm 0.4.23.0"
- },
- "lv": {
- "string-denied": "Neatļauts",
- "string-apply-accesskey": "A",
- "string-remove": "Noņemt",
- "string-gears-settings": "Gears iestatījumi",
- "string-apply": "Lietot",
- "string-cancel-accesskey": "C",
- "string-cancel": "Atcelt",
- "string-html-title": "Gears iestatījumi",
- "string-allowed": "Atļauts",
- "string-local-storage": "Vietējā atmiņa",
- "string-nosites": "Nav vietņu.",
- "string-permissions-description": "Tālāk minētā tabula rāda atļaujas, kuras esat piešķīris katrai vietnei, kas mēģināja lietot Gears.",
- "string-location-data": "Atrašanās vieta",
- "string-version": "Gears versija 0.4.23.0"
- },
- "lt": {
- "string-denied": "Neleidžiama",
- "string-apply-accesskey": "A",
- "string-remove": "Pašalinti",
- "string-gears-settings": "„Gears“ nuostatos",
- "string-apply": "Taikyti",
- "string-cancel-accesskey": "C",
- "string-cancel": "Atšaukti",
- "string-html-title": "„Gears“ nuostatos",
- "string-allowed": "Leidžiama",
- "string-local-storage": "Vietinė saugykla",
- "string-nosites": "Nėra svetainių.",
- "string-permissions-description": "Žemiau pateikta lentelėje rodomi leidimai, kuriuos suteikėte kiekvienai svetainei, bandžiusiai naudoti „Gears“.",
- "string-location-data": "Vietovė",
- "string-version": "„Gears“ versija 0.4.23.0"
- },
- "th": {
- "string-denied": "ปฏิเสธ",
- "string-apply-accesskey": "อ",
- "string-remove": "ลบ",
- "string-gears-settings": "การตั้งค่า Gears",
- "string-apply": "ใช้",
- "string-cancel-accesskey": "ย",
- "string-cancel": "ยกเลิก",
- "string-html-title": "การตั้งค่า Gears",
- "string-allowed": "อนุญาต",
- "string-local-storage": "พื้นที่เก็บข้อมูลในเครื่อง",
- "string-nosites": "ไม่มีไซต์",
- "string-permissions-description": "ตารางต่อไปนี้แสดงสิทธิ์ที่คุณให้แก่แต่ละไซต์ที่พยายามใช้ Gears",
- "string-location-data": "ตำแหน่ง",
- "string-version": "Gears เวอร์ชัน 0.4.23.0"
- },
- "ro": {
- "string-denied": "Refuzat",
- "string-apply-accesskey": "P",
- "string-remove": "Eliminaţi",
- "string-gears-settings": "Setări Gears",
- "string-apply": "Aplicaţi",
- "string-cancel-accesskey": "A",
- "string-cancel": "Anulaţi",
- "string-html-title": "Setări Gears",
- "string-allowed": "Permis",
- "string-local-storage": "Stocare locală",
- "string-nosites": "Niciun site.",
- "string-permissions-description": "Tabelul de mai jos afişează permisiunile pe care le-aţi acordat fiecărui site care a încercat să utilizeze Gears.",
- "string-location-data": "Locaţie",
- "string-version": "Versiune Gears 0.4.23.0"
- },
- "is": {
- "string-denied": "Hafnað",
- "string-apply-accesskey": "L",
- "string-remove": "Fjarlægja",
- "string-gears-settings": "Stillingar Gears",
- "string-apply": "Nota",
- "string-cancel-accesskey": "H",
- "string-cancel": "Hætta við",
- "string-html-title": "Stillingar Gears",
- "string-allowed": "Leyft",
- "string-local-storage": "Staðbundin geymsla",
- "string-nosites": "Engin vefsvæði.",
- "string-permissions-description": "Taflan hér fyrir neðan sýnir þær heimildir sem þú hefur veitt hverju svæði sem hefur reynt að nota Gears.",
- "string-location-data": "Staðsetning",
- "string-version": "Gears útgáfa 0.4.23.0"
- },
- "fil": {
- "string-denied": "Tinganggihan",
- "string-apply-accesskey": "P",
- "string-remove": "Alisin",
- "string-gears-settings": "Mga Setting ng Gear",
- "string-apply": "Ilapat",
- "string-cancel-accesskey": "I",
- "string-cancel": "Ikansela",
- "string-html-title": "Mga Setting ng Gear",
- "string-allowed": "Pinahintulutan",
- "string-local-storage": "Lokal na imbakan",
- "string-nosites": "Walang mga site.",
- "string-permissions-description": "Ang talahanayan sa ibaba ay nagpapakita ng mga pahintulot na naibigay mo sa bawat site na sinubukang gumamit ng Mga Gear.",
- "string-location-data": "Lokasyon",
- "string-version": "bersyon ng Mga Gear 0.4.23.0"
- },
- "ta": {
- "string-denied": "அனுமதி மறுத்தது",
- "string-apply-accesskey": "A",
- "string-remove": "அகற்று",
- "string-gears-settings": "Gears அமைப்புகள்",
- "string-apply": "பயன்படுத்து",
- "string-cancel-accesskey": "C",
- "string-cancel": "ரத்துசெய்",
- "string-html-title": "Gears அமைப்புகள்",
- "string-allowed": "அனுமதிக்கப்பட்டது",
- "string-local-storage": "உள்ளக சேமிப்பிடம்",
- "string-nosites": "தளங்கள் இல்லை.",
- "string-permissions-description": "கீழே உள்ள அட்டவணை Gears ஐப் பயன்படுத்த ஒவ்வொரு தளங்களுக்கும் நீங்கள் அளித்த அனுமதிகளை காட்டுகிறது.",
- "string-location-data": "இருப்பிடம்",
- "string-version": "Gears பதிப்பு 0.4.23.0"
- },
- "fr": {
- "string-denied": "Refusé",
- "string-apply-accesskey": "A",
- "string-remove": "Supprimer",
- "string-gears-settings": "Paramètres de Google Gears",
- "string-apply": "Appliquer",
- "string-cancel-accesskey": "U",
- "string-cancel": "Annuler",
- "string-html-title": "Paramètres de Google Gears",
- "string-allowed": "Autorisé",
- "string-local-storage": "Stockage local",
- "string-nosites": "Aucun site.",
- "string-permissions-description": "Le tableau ci-dessous montre les autorisations que vous avez accordées à chaque site ayant tenté d'utiliser Google Gears.",
- "string-location-data": "Emplacement",
- "string-version": "Version 0.4.23.0 de Google Gears"
- },
- "bg": {
- "string-denied": "Отказан",
- "string-apply-accesskey": "A",
- "string-remove": "Премахване",
- "string-gears-settings": "Настройки на Gears",
- "string-apply": "Прилагане",
- "string-cancel-accesskey": "С",
- "string-cancel": "Отказ",
- "string-html-title": "Настройки на Gears",
- "string-allowed": "Разрешен",
- "string-local-storage": "Локално хранилище",
- "string-nosites": "Няма сайтове.",
- "string-permissions-description": "В таблицата по-долу са показани дадените от вас разрешения на всеки сайт, който се е опитал да използва Gears.",
- "string-location-data": "Местоположение",
- "string-version": "Версия 0.4.23.0 на Gears"
- },
- "uk": {
- "string-denied": "Відхилено",
- "string-apply-accesskey": "A",
- "string-remove": "Видалити",
- "string-gears-settings": "Налаштування Gears",
- "string-apply": "Застосувати",
- "string-cancel-accesskey": "C",
- "string-cancel": "Скасувати",
- "string-html-title": "Налаштування Gears",
- "string-allowed": "Дозволено",
- "string-local-storage": "Збереження на локальному диску",
- "string-nosites": "Сайти відсутні.",
- "string-permissions-description": "У нижченаведеній таблиці наведено дозволи, надані кожному сайту, який намагається використовувати Gears.",
- "string-location-data": "Розташування",
- "string-version": "Gears версії 0.4.23.0"
- },
- "hr": {
- "string-denied": "Odbijeno",
- "string-apply-accesskey": "A",
- "string-remove": "Ukloni",
- "string-gears-settings": "Postavke Gearsa",
- "string-apply": "Primijeni",
- "string-cancel-accesskey": "C",
- "string-cancel": "Odustani",
- "string-html-title": "Postavke Gearsa",
- "string-allowed": "Dopušteno",
- "string-local-storage": "Lokalna pohrana",
- "string-nosites": "Nema web-lokacija.",
- "string-permissions-description": "U dolje navedenoj tablici navedene su dozvole koje ste dali svakoj web-lokaciji koja je pokušala koristiti Gears.",
- "string-location-data": "Lokacija",
- "string-version": "Verzija Gearsa 0.4.23.0"
- },
- "bn": {
- "string-denied": "অস্বীকৃত",
- "string-apply-accesskey": "A",
- "string-remove": "সরান",
- "string-gears-settings": "Gears সেটিংস",
- "string-apply": "প্রয়োগ",
- "string-cancel-accesskey": "C",
- "string-cancel": "বাতিল",
- "string-html-title": "Gears সেটিংস",
- "string-allowed": "অনুমতিপ্রাপ্ত",
- "string-local-storage": "স্থানিয় স্টোরেজ",
- "string-nosites": "কোন সাইটগুলি ׀",
- "string-permissions-description": "নিচের সারণিটির অনুসারে আপনি প্রত্যেকটি সাইটটিকে অনুমতি দিয়েছেন যা Gears ব্যবহার করতে চেয়েছে ׀",
- "string-location-data": "অবস্থান",
- "string-version": "Gears সংস্করণ 0.4.23.0"
- },
- "en-US": {
- "string-denied": "Denied",
- "string-apply-accesskey": "A",
- "string-remove": "Remove",
- "string-gears-settings": "Gears Settings",
- "string-apply": "Apply",
- "string-cancel-accesskey": "C",
- "string-cancel": "Cancel",
- "string-html-title": "Gears Settings",
- "string-allowed": "Allowed",
- "string-local-storage": "Local storage",
- "string-nosites": "No sites.",
- "string-permissions-description": "The table below shows the permissions you have granted to each site that has attempted to use Gears.",
- "string-location-data": "Location",
- "string-version": "Gears version 0.4.23.0"
- },
- "da": {
- "string-denied": "Afvist",
- "string-apply-accesskey": "I",
- "string-remove": "Fjern",
- "string-gears-settings": "Indstillinger til Gears",
- "string-apply": "Anvend",
- "string-cancel-accesskey": "A",
- "string-cancel": "Annuller",
- "string-html-title": "Indstillinger til Gears",
- "string-allowed": "Tilladt",
- "string-local-storage": "Lokalt lager",
- "string-nosites": "Ingen websteder.",
- "string-permissions-description": "Nedenstående tabel indeholder en oversigt over de tilladelser, du har givet til de websteder, der har forsøgt at få adgang til at bruge Gears.",
- "string-location-data": "Placering",
- "string-version": "Gears-version PRODUKT_VERSION"
- },
- "fa": {
- "string-denied": "مردود",
- "string-apply-accesskey": "مجاز",
- "string-remove": "حذف",
- "string-gears-settings": "تنظیمات Gears",
- "string-apply": "اعمال",
- "string-cancel-accesskey": "C",
- "string-cancel": "لغو",
- "string-html-title": "تنظیمات Gears",
- "string-allowed": "مجاز",
- "string-local-storage": "مکان ذخیره",
- "string-nosites": "سایتی وجود ندارد.",
- "string-permissions-description": "جدول زیر مجوزهای شما برای دستیابی به سایتهایی که از Gears استفاده می کند را نشان می دهد.",
- "string-location-data": "موقعیت",
- "string-version": "Gears نسخه 0.4.23.0"
- },
- "hi": {
- "string-denied": "अस्वीकृत",
- "string-apply-accesskey": "अनुमति दें",
- "string-remove": "निकालें",
- "string-gears-settings": "Gears सेटिंग्स",
- "string-apply": "लागू करें",
- "string-cancel-accesskey": "रद्द करें",
- "string-cancel": "रद्द करें",
- "string-html-title": "Gears सेटिंग्स",
- "string-allowed": "स्वीकार्य",
- "string-local-storage": "स्थानीय संग्रहण",
- "string-nosites": "कोई साइट नहीं.",
- "string-permissions-description": "नीचे दी गई टेबल वे अनुमतियाँ दिखाती है जो आपने उन साइटों को दी है जिन्होंने Gears का उपयोग करने का प्रयास किया है.",
- "string-location-data": "स्थिति",
- "string-version": "Gears संस्करण 0.4.23.0"
- },
- "pt-BR": {
- "string-denied": "Negado",
- "string-apply-accesskey": "P",
- "string-remove": "Remover",
- "string-gears-settings": "Configurações do Gears",
- "string-apply": "Aplicar",
- "string-cancel-accesskey": "C",
- "string-cancel": "Cancelar",
- "string-html-title": "Configurações do Gears",
- "string-allowed": "Permitido",
- "string-local-storage": "Armazenamento local",
- "string-nosites": "Nenhum site.",
- "string-permissions-description": "A tabela abaixo mostra as permissões concedidas por você a cada site que tentou usar o Gears.",
- "string-location-data": "Local",
- "string-version": "Gears versão 0.4.23.0"
- },
- "fi": {
- "string-denied": "Estetty",
- "string-apply-accesskey": "A",
- "string-remove": "Poista",
- "string-gears-settings": "Gearsin asetukset",
- "string-apply": "Ota käyttöön",
- "string-cancel-accesskey": "P",
- "string-cancel": "Peruuta",
- "string-html-title": "Gearsin asetukset",
- "string-allowed": "Sallittu",
- "string-local-storage": "Paikallinen tallennus",
- "string-nosites": "Ei sivustoja.",
- "string-permissions-description": "Oheisesta taulukosta näet luvat, jotka olet myöntänyt jokaiselle sivustolle, joka on yrittänyt käyttää Gearsia.",
- "string-location-data": "Sijainti",
- "string-version": "Gearsin versio 0.4.23.0"
- },
- "hu": {
- "string-denied": "Megtagadva",
- "string-apply-accesskey": "E",
- "string-remove": "Eltávolítás",
- "string-gears-settings": "A Szinkron beállításai",
- "string-apply": "OK",
- "string-cancel-accesskey": "M",
- "string-cancel": "Mégse",
- "string-html-title": "A Szinkron beállításai",
- "string-allowed": "Engedélyezve",
- "string-local-storage": "Helyi tárolás",
- "string-nosites": "Nincsenek webhelyek.",
- "string-permissions-description": "Az alábbi táblázat azt mutatja, hogy a Szinkron használatát megkísérlő webhelyeknek milyen engedélyeket adott.",
- "string-location-data": "Hely",
- "string-version": "A Szinkron verziószáma: 0.4.23.0"
- },
- "ja": {
- "string-denied": "拒否",
- "string-apply-accesskey": "A",
- "string-remove": "削除",
- "string-gears-settings": "Gears の設定",
- "string-apply": "適用",
- "string-cancel-accesskey": "C",
- "string-cancel": "キャンセル",
- "string-html-title": "Gears の設定",
- "string-allowed": "許可",
- "string-local-storage": "ローカル保存",
- "string-nosites": "サイトがありません。",
- "string-permissions-description": "下記の表は、Gears を使用しようとした各サイトに与えた権限を示しています。",
- "string-location-data": "場所",
- "string-version": "Gears バージョン 0.4.23.0"
- },
- "he": {
- "string-denied": "נדחה",
- "string-apply-accesskey": "א",
- "string-remove": "הסר",
- "string-gears-settings": "הגדרות Gears",
- "string-apply": "החל",
- "string-cancel-accesskey": "ביטול",
- "string-cancel": "ביטול",
- "string-html-title": "הגדרות Gears",
- "string-allowed": "מותר",
- "string-local-storage": "אחסון מקומי",
- "string-nosites": "ללא אתרים.",
- "string-permissions-description": "הטבלה שלהלן מראה את ההרשאות שהענקת לכל אתר שניסה להשתמש ב-Gears.",
- "string-location-data": "מיקום",
- "string-version": "Gears בגרסה 0.4.23.0"
- },
- "te": {
- "string-denied": "అనుమతి లేని",
- "string-apply-accesskey": "A",
- "string-remove": "తొలగించు",
- "string-gears-settings": "Gears సెట్టింగులు",
- "string-apply": "వర్తించు",
- "string-cancel-accesskey": "C",
- "string-cancel": "రద్దు చెయ్యి",
- "string-html-title": "Gears సెట్టింగులు",
- "string-allowed": "అనుమతించబడిన",
- "string-local-storage": "స్థానిక నిల్వ",
- "string-nosites": "సైట్లు లేవు.",
- "string-permissions-description": "ఈ క్రింది పట్టిక, మీరు ఏ సైట్లకి Gears ఉపయోగించడానికి అనుమతి ఇచ్చారో, చూపిస్తుంది.",
- "string-location-data": "స్థానం",
- "string-version": "0.4.23.0 Gears వర్షన్"
- },
- "pt-PT": {
- "string-denied": "Negado",
- "string-apply-accesskey": "P",
- "string-remove": "Remover",
- "string-gears-settings": "Definições do Gears",
- "string-apply": "Aplicar",
- "string-cancel-accesskey": "C",
- "string-cancel": "Cancelar",
- "string-html-title": "Definições do Gears",
- "string-allowed": "Permitido",
- "string-local-storage": "Armazenamento local",
- "string-nosites": "Não existem sites.",
- "string-permissions-description": "A tabela abaixo mostra as autorizações que concedeu a cada site que tentou utilizar o Gears.",
- "string-location-data": "Localização",
- "string-version": "Versão 0.4.23.0 do Gears"
- },
- "sr": {
- "string-denied": "Забрањен приступ",
- "string-apply-accesskey": "M",
- "string-remove": "Уклони",
- "string-gears-settings": "Gears подешавања",
- "string-apply": "Примени",
- "string-cancel-accesskey": "О",
- "string-cancel": "Откажи",
- "string-html-title": "Gears подешавања",
- "string-allowed": "Дозвољен приступ",
- "string-local-storage": "Локални простор за складиштење",
- "string-nosites": "Ниједан сајт.",
- "string-permissions-description": "Табела испод приказује дозволе које сте одобрили сваком сајту који је покушао да користи Gears.",
- "string-location-data": "Локација",
- "string-version": "Gears верзија 0.4.23.0"
- },
- "ko": {
- "string-denied": "거부됨",
- "string-apply-accesskey": "A",
- "string-remove": "삭제",
- "string-gears-settings": "Gears 설정",
- "string-apply": "적용",
- "string-cancel-accesskey": "C",
- "string-cancel": "취소",
- "string-html-title": "Gears 설정",
- "string-allowed": "허용",
- "string-local-storage": "로컬 저장소",
- "string-nosites": "사이트가 없습니다.",
- "string-permissions-description": "다음 표는 Gears를 사용하려 시도했던 각 사이트에 대해 승인받은 사용권한을 보여줍니다.",
- "string-location-data": "위치",
- "string-version": "Gears 버전 0.4.23.0"
- },
- "sv": {
- "string-denied": "Nekad",
- "string-apply-accesskey": "T",
- "string-remove": "Ta bort",
- "string-gears-settings": "Inställningar i Gears",
- "string-apply": "Tillämpa",
- "string-cancel-accesskey": "A",
- "string-cancel": "Avbryt",
- "string-html-title": "Inställningar i Gears",
- "string-allowed": "Tillåten",
- "string-local-storage": "Lokal lagring",
- "string-nosites": "Inga webbplatser",
- "string-permissions-description": "Tabellen nedan visar beviljade tillstånd för varje webbplats som har försökt att använda Gears.",
- "string-location-data": "Plats",
- "string-version": "Gears version 0.4.23.0"
- },
- "ur": {
- "string-denied": "مسترد",
- "string-apply-accesskey": "A",
- "string-remove": "حذف کریں",
- "string-gears-settings": "گیئرز کی ترتیبات",
- "string-apply": "اطلاق کریں",
- "string-cancel-accesskey": "C",
- "string-cancel": "منسوخ",
- "string-html-title": "گیئرز کی ترتیبات",
- "string-allowed": "اجازت ہے",
- "string-local-storage": "ذخیرہ کرنے کی مقامی جگہ",
- "string-nosites": "کوئی سائٹ نہیں۔",
- "string-permissions-description": "ذیل کا جدول ان اجازتوں کو دکھاتا ہے جو آپ نے ان سائٹوں کیلئے دی ہیں جنہوں نے گیئرز کے استعمال کی کوشش کی تھی۔",
- "string-location-data": "جائے وقوع",
- "string-version": "گیئرز ورژن0.4.23.0"
- },
- "sk": {
- "string-denied": "Odmietnuté",
- "string-apply-accesskey": "P",
- "string-remove": "Odstrániť",
- "string-gears-settings": "Nastavenia rozšírenia Gears",
- "string-apply": "Použiť",
- "string-cancel-accesskey": "R",
- "string-cancel": "Zrušiť",
- "string-html-title": "Nastavenia rozšírenia Gears",
- "string-allowed": "Povolené",
- "string-local-storage": "Lokálny ukladací priestor",
- "string-nosites": "Žiadne lokality.",
- "string-permissions-description": "V nižšie uvedenej tabuľke sú uvedené povolenia, ktoré máte udelené pre všetky lokality, ktoré sa pokúsili použiť rozšírenie Gears.",
- "string-location-data": "Umiestnenie",
- "string-version": "Gears, verzia 0.4.23.0"
- },
- "zh-CN": {
- "string-denied": "已拒绝",
- "string-apply-accesskey": "A",
- "string-remove": "删除",
- "string-gears-settings": "Gears 设置",
- "string-apply": "应用",
- "string-cancel-accesskey": "C",
- "string-cancel": "取消",
- "string-html-title": "Gears 设置",
- "string-allowed": "允许",
- "string-local-storage": "本地存储",
- "string-nosites": "没有网站。",
- "string-permissions-description": "下表显示了您向试图使用 Gears 的每个网站授予了哪些权限。",
- "string-location-data": "位置",
- "string-version": "Gears 版本 0.4.23.0"
- },
- "de": {
- "string-denied": "Verweigert",
- "string-apply-accesskey": "Z",
- "string-remove": "Entfernen",
- "string-gears-settings": "Gears-Einstellungen",
- "string-apply": "Anwenden",
- "string-cancel-accesskey": "A",
- "string-cancel": "Abbrechen",
- "string-html-title": "Gears-Einstellungen",
- "string-allowed": "Zulässig",
- "string-local-storage": "Lokaler Speicherplatz",
- "string-nosites": "Keine Sites.",
- "string-permissions-description": "Die untenstehende Tabelle zeigt die Berechtigungen an, die Sie jeder Site gewährt haben, die versucht hat, Gears zu verwenden.",
- "string-location-data": "Speicherort",
- "string-version": "Gears-Version PRODUKT_VERSION"
- },
- "pl": {
- "string-denied": "Zabroniono",
- "string-apply-accesskey": "Z",
- "string-remove": "Usuń",
- "string-gears-settings": "Ustawienia wtyczki Gears",
- "string-apply": "Zastosuj",
- "string-cancel-accesskey": "A",
- "string-cancel": "Anuluj",
- "string-html-title": "Ustawienia wtyczki Gears",
- "string-allowed": "Zezwolono",
- "string-local-storage": "Przechowywanie danych lokalnie",
- "string-nosites": "Brak witryn.",
- "string-permissions-description": "Poniższa tabela zawiera uprawnienia, jakie przyznano każdej z witryn próbujących użyć wtyczki Gears.",
- "string-location-data": "Lokalizacja",
- "string-version": "Gears 0.4.23.0"
- },
- "ms": {
- "string-denied": "Ditolak",
- "string-apply-accesskey": "N",
- "string-remove": "Keluarkan",
- "string-gears-settings": "Tetapan Gear",
- "string-apply": "Gunakan",
- "string-cancel-accesskey": "B",
- "string-cancel": "Batal",
- "string-html-title": "Tetapan Gear",
- "string-allowed": "Dibenarkan",
- "string-local-storage": "Penyimpanan setempat",
- "string-nosites": "Tiada tapak.",
- "string-permissions-description": "Jadual di bawah menunjukkan kebenaran yang telah anda berikan kepada setiap tapak yang telah cuba menggunakan Gear.",
- "string-location-data": "Lokasi",
- "string-version": "Versi Gear 0.4.23.0"
- },
- "sl": {
- "string-denied": "Zavrnjeno",
- "string-apply-accesskey": "A",
- "string-remove": "Odstrani",
- "string-gears-settings": "Nastavitve programa Gears",
- "string-apply": "Uporabi",
- "string-cancel-accesskey": "C",
- "string-cancel": "Prekliči",
- "string-html-title": "Nastavitve programa Gears",
- "string-allowed": "Dovoljeno",
- "string-local-storage": "Lokalna shramba",
- "string-nosites": "Ni spletnih mest.",
- "string-permissions-description": "V spodnji tabeli so prikazana dovoljenja, ki ste jih podelili vsem spletnim mestom, ki so poskusila uporabljati program Gears.",
- "string-location-data": "Lokacija",
- "string-version": "Različica programa Gears 0.4.23.0"
- },
- "mr": {
- "string-denied": "अननुमत",
- "string-apply-accesskey": "A",
- "string-remove": "काढा",
- "string-gears-settings": "Gears सेटिंग्ज",
- "string-apply": "लागू करा",
- "string-cancel-accesskey": "C",
- "string-cancel": "रद्द करा",
- "string-html-title": "Gears सेटिंग्ज",
- "string-allowed": "अनुमत",
- "string-local-storage": "स्थानिक संचय",
- "string-nosites": "साइट नाहीत.",
- "string-permissions-description": "निम्न सारणी Gears वापरण्याचा प्रयत्न केलेल्या प्रत्येक साइटकरिता आपल्याकडे किती परवानग्या आहेत हे दर्शविते.",
- "string-location-data": "स्थान",
- "string-version": "Gears आवृत्ती 0.4.23.0"
- },
- "or": {
- "string-denied": "ମନାକରନ୍ତୁ",
- "string-apply-accesskey": "A",
- "string-remove": "ଅପସାରଣ",
- "string-gears-settings": "Gears ସେଟିଂସମୂହ",
- "string-apply": "ଲାଗୁ କରନ୍ତୁ",
- "string-cancel-accesskey": "C",
- "string-cancel": "ବାତିଲ୍",
- "string-html-title": "Gears ସେଟିଂସମୂହ",
- "string-allowed": "ଅନୁମତି ପ୍ରାପ୍ତ କରନ୍ତୁ",
- "string-local-storage": "ସ୍ଥାନୀୟ ସଂଞ୍ଚୟ",
- "string-nosites": "କୌଣସି ସାଇଟମାନ ନାହିଁ |",
- "string-permissions-description": "ନିମ୍ନ ସାରଣୀ ଆପଣ ପ୍ରତ୍ୟେକ ସାଇଟକୁ ପ୍ରଦାନ କରିଥିବା ସ୍ବୀକୃତି ଦର୍ଶାଉଛି,ଯାହା Gears ବ୍ୟବହାର କରିବାକୁ ପଦକ୍ଷେପ ନେଇଛି |",
- "string-location-data": "ସ୍ଥାନ",
- "string-version": "Gears ସଂସ୍କରଣ 0.4.23.0"
- }
-};
-
-// Insert all localized strings for the specified locale into the div or span
-// matching the id.
-function loadI18nStrings(locale) {
- var rtl_languages = ['he', 'ar', 'fa', 'ur'];
-
- if (!locale) {
- locale = 'en-US';
- } else {
- if (!localized_strings[locale]) {
- // For xx-YY locales, determine what the base locale is.
- var base_locale = locale.split('-')[0];
-
- if (localized_strings[base_locale]) {
- locale = base_locale;
- } else {
- locale = 'en-US';
- }
- }
- }
-
- var strings = localized_strings[locale];
-
- // If the specified locale is an right to left language, change the direction
- // of the page.
- for (index in rtl_languages) {
- if (locale == rtl_languages[index]) {
- document.body.dir = "rtl";
- break;
- }
- }
-
- // Copy each string to the proper UI element, if it exists.
- for (name in strings) {
- if (name == 'string-html-title') {
- if (!browser.ie_mobile) {
- // IE Mobile dialogs don't have a title bar.
- // Furthermore, document.title is undefined in IE Mobile on WinMo 5.
- // It's also impossible to add properties to the window object.
- // (see http://code.google.com/apis/gears/mobile.html)
- document.title = strings[name];
- }
- } else {
- var element = dom.getElementById(name);
- if (element) {
- element.innerHTML = strings[name];
- }
- }
- }
-}
-
-
-</script>
-<script>
- var debug = false;
- var permissions;
- var originalPermissions;
-
- // Must match values in permission_db.h
- var PERMISSION_NOT_SET = 0;
- var PERMISSION_ALLOWED = 1;
- var PERMISSION_DENIED = 2;
-
- if (debug && browser.ie_mobile) {
- // Handy for debugging layout.
- // Remember to remove the pie_dialog object tag above when debugging on
- // WinMo 5, otherwise the assignement below will fail with "the object does
- // not support this property or method".
- pie_dialog = new Object();
- pie_dialog.IsSmartPhone = function() { return false; };
- pie_dialog.SetCancelButton = function() {};
- pie_dialog.SetButton = function() {};
- pie_dialog.SetButtonEnabled = function() {};
- pie_dialog.SetScriptContext = function() {};
- pie_dialog.ResizeDialog = function() {};
- }
-
- initDialog();
-
- initSettings();
-
- setButtonLabel("string-cancel", "cancel-button", "string-cancel-accesskey");
- setButtonLabel("string-apply", "confirm-button", "string-apply-accesskey");
-
- if (!browser.ie_mobile) {
- CustomButton.initializeAll();
- if (!browser.android) {
- initCustomLayout(layoutSettings);
- }
- } else {
- var applyText = dom.getElementById("string-apply");
- if (applyText) {
- window.pie_dialog.SetButton(applyText.innerText,
- "saveAndClose(calculateDiff());");
- }
- var cancelText = dom.getElementById("string-cancel");
- if (cancelText) {
- window.pie_dialog.SetCancelButton(cancelText.innerText);
- }
- window.pie_dialog.SetButtonEnabled(true);
- }
-
- // Start out with only cancel enabled, just for clarity.
- disableButton(dom.getElementById("confirm-button"));
-
- function initSettings() {
- var args;
-
- if (debug) {
- // Handy for debugging layout:
- var args = {
- locale: "en-US",
- permissions: [
- {
- name: "http://www.google.com",
- localStorage: { permissionState: 1 },
- locationData: { permissionState: 0 }
- },
- {
- name: "http://www.aaronboodman.com",
- localStorage: { permissionState: 1 },
- locationData: { permissionState: 1 }
- },
- {
- name: "http://www.evil.org",
- localStorage: { permissionState: 2 },
- locationData: { permissionState: 2 }
- }
- ]
- };
- } else {
- args = getArguments();
- }
- loadI18nStrings(args.locale);
- permissions = args.permissions;
- originalPermissions = cloneObject(permissions);
-
- updatePermissionsList();
- }
-
- function updatePermissionsList() {
- var table = dom.getElementById('div-permissions');
-
- var content = "";
- var isFirstOrigin = true;
- for (var index = 0; index < permissions.length; index++) {
- content += renderOrigin(index, permissions[index], isFirstOrigin);
- isFirstOrigin = false;
- }
- if (content == "") {
- content = "<table style=\"border-style: solid;\"><tbody>";
- content += "<tr><td class=\"left\"><em>";
- var noSitesText = dom.getElementById("string-nosites");
- if (noSitesText) {
- if (isDefined(typeof noSitesText.innerText)) {
- content += noSitesText.innerText;
- } else {
- content += noSitesText.textContent;
- }
- }
- content += "</em></td><td></td></tr></tbody></table>";
- }
- table.innerHTML = content;
- }
-
- function renderOrigin(index, originData, isFirstOrigin) {
- var localStorageContent =
- renderLocalStorage(index, originData.localStorage);
- var locationDataContent =
- renderLocationData(index, originData.locationData);
-
- // Defend against an origin having no data for any permission class.
- if (localStorageContent == "" && locationDataContent == "") {
- return "";
- }
- var content = "<table";
- if (isFirstOrigin) {
- content += " style=\"border-top-style: solid;\"";
- }
- content += "><tbody>";
- content += "<tr><td class=\"origin-name\">";
- content += wrapDomain(originData.name);
- content += "</td><td><a href='#' onclick='handleRemoveClick(";
- content += index;
- content += ");'>";
- content += getString("string-remove");
- content += "</a></td>";
- content += "</td></tr></tbody></table>";
-
- content += "<table class=\"permissions\"><tbody>";
- if (localStorageContent != "") {
- content += "<tr>";
- content += localStorageContent;
- content += "</tr>";
- }
- if (locationDataContent != "") {
- content += "<tr>";
- content += locationDataContent;
- content += "</tr>";
- }
- content += "</td></tr></tbody></table>";
- return content;
- }
-
- function renderLocalStorage(index, data) {
- if (data == null || data.permissionState == PERMISSION_NOT_SET) {
- return "";
- }
- var content = "";
- content += "<td class=\"left\">";
- content += getString("string-local-storage");
- content += "</td><td class=\"right\">";
- content += renderRadioButtons(index, "localStorage",
- data.permissionState);
- content += "</td>";
- // Permission class-specific content goes here;
- return content;
- }
-
- function renderLocationData(index, data) {
- if (data == null || data.permissionState == PERMISSION_NOT_SET) {
- return "";
- }
- var content = "";
- content += "<td class=\"left\">";
- content += getString("string-location-data");
- content += "</td><td class=\"right\">";
- content += renderRadioButtons(index, "locationData",
- data.permissionState);
- content += "</td>";
- // Permission class-specific content goes here;
- return content;
- }
-
- function getString(stringId) {
- var textElement = dom.getElementById(stringId);
- if (!isDefined(typeof textElement)) {
- return "";
- }
- return dom.getTextContent(textElement);
- }
-
- function renderRadioButtons(index, permissionClass, permissionState) {
- var radioButtonName = getRadioButtonName(index, permissionClass);
- var content = "<div class=\"radio-buttons\">";
- content += "<input type=\"radio\" name=\"" + radioButtonName + "\"";
- content += " id=\"" + radioButtonName + "-allow\"";
-
- if (permissionState == PERMISSION_ALLOWED) {
- content += "checked=\"true\"";
- }
- content += " onclick='handleRadioClick(" + index + ", \"" +
- permissionClass + "\", " + PERMISSION_ALLOWED + ");'>";
- content += "</input>";
- content += "<label for=\"" + radioButtonName + "-allow\">";
- content += getString("string-allowed");
- content += "</label>";
-
- content += "<input type=\"radio\" name=\"" + radioButtonName + "\"";
- content += " id=\"" + radioButtonName + "-deny\"";
-
- if (permissionState == PERMISSION_DENIED) {
- content += "checked=\"true\"";
- }
- content += " onclick='handleRadioClick(" + index + ", \"" +
- permissionClass + "\", " + PERMISSION_DENIED + ");'>";
- content += "</input>";
- content += "<label for=\"" + radioButtonName + "-deny\">";
- content += getString("string-denied");
- content += "</label>";
- content += "</div>";
- return content;
- }
-
- function getRadioButtonName(index, permissionClass) {
- return index + "-" + permissionClass + "-radio";
- }
-
- function handleRadioClick(index, permissionClass, permissionState) {
- updatePermission(index, permissionClass, permissionState);
-
- // Return false to prevent the default link action (scrolling up to top of
- // page in this case).
- return false;
- }
-
- function handleRemoveClick(index) {
- updatePermission(index, "localStorage", PERMISSION_NOT_SET);
- updatePermission(index, "locationData", PERMISSION_NOT_SET);
- updatePermissionsList();
-
- // Return false to prevent the default link action (scrolling up to top of
- // page in this case).
- return false;
- }
-
- function updatePermission(index, permissionClass, permissionState) {
- if (permissions[index][permissionClass]) {
- if (permissions[index][permissionClass].permissionState !=
- permissionState) {
- permissions[index][permissionClass].permissionState =
- permissionState;
- enableButton(dom.getElementById("confirm-button"));
- }
- }
- }
-
- function layoutSettings(contentHeight) {
- var content = dom.getElementById("content");
-
- content.style.height = Math.max(contentHeight, 0) + "px";
-
- // If a scrollbar is going to be visible, then add some padding between it
- // and the inner right edge of the content. We don't want to have this in
- // all the time or else there will be double-padding when the scrollbar
- // isn't visible.
- if (content.scrollHeight > contentHeight) {
- content.style.paddingRight = "1em";
- } else {
- content.style.paddingRight = "";
- }
- }
-
- function calculateDiff() {
- var permissionClasses = ["localStorage", "locationData"];
- var result = { "modifiedOrigins": [] };
- for (var index = 0; index < originalPermissions.length; index++) {
- var originalOriginData = originalPermissions[index];
- var originData = permissions[index];
- // Defend against a mis-match between the origins in each list.
- if (isDefined(typeof originData) &&
- originData.name == originalOriginData.name) {
- var modifiedOriginData = new Object();
- var modified = false;
- for (var i = 0; i < permissionClasses.length; i++) {
- var permissionClass = permissionClasses[i];
- // The data may not include entries for all permission classes.
- if (isDefined(typeof originalOriginData[permissionClass])) {
- var originalState =
- originalOriginData[permissionClass]["permissionState"];
- var state = originData[permissionClass]["permissionState"];
- if (originalState != state) {
- modified = true;
- modifiedOriginData[permissionClass] = new Object();
- modifiedOriginData[permissionClass]["permissionState"] = state;
- }
- }
- }
- if (modified) {
- modifiedOriginData.name = originData.name;
- result.modifiedOrigins.push(modifiedOriginData);
- }
- }
- }
- return result;
- }
-
-</script>
-</html>