1
function checkSiteName(siteName) {
2
var regex = /^[A-Za-z0-9_\-\.\*]+(\:\d{1,5}){0,1}$/;
3
return regex.test(siteName);
6
function listContainsSite(site) {
7
var siteList = document.getElementById("sitelist");
8
var numRows = siteList.getRowCount();
10
for(i = 0; i < numRows; i++) {
11
if(siteList.getItemAtIndex(i).label == site)
17
function listFindIndex(site) {
18
var siteList = document.getElementById("sitelist");
19
var numRows = siteList.getRowCount();
21
for(i = 0; i < numRows; i++) {
22
if(perDomainComparison(siteList.getItemAtIndex(i).label, site) > 0)
28
// To sort the whitelist array.
29
function perDomainComparison(host1, host2) {
31
return (a < b) ? a : b;
33
// Split on domain boundaries and reverse.
34
components1 = host1.split(".").reverse();
35
components2 = host2.split(".").reverse();
36
// Compare element by element until a difference is found
37
for (i = 0; i < min(components1.length, components2.length); i++) {
38
if (components1[i] < components2[i])
40
if (components1[i] > components2[i])
43
// If all components so far are the same, the shorter name comes first
44
if (components1.length > components2.length)
46
if (components2.length > components1.length)
52
var textbox = document.getElementById("siteTextbox");
53
var siteName = textbox.value;
55
if(siteName.length == 0)
58
if(! checkSiteName(siteName)) {
59
var msg = flashblockBundle.getString("invalidCharsInSiteName");
64
var siteList = document.getElementById("sitelist");
65
if(! listContainsSite(siteName)) {
66
var numRows = siteList.getRowCount();
67
var index = listFindIndex(siteName);
70
newElement = siteList.insertItemAt(index, siteName, "");
72
newElement = siteList.appendItem(siteName, "");
74
//use ensureElementIsVisible due to mozilla bug id 250123
75
siteList.ensureElementIsVisible(newElement);
83
function removeSite() {
84
var siteList = document.getElementById("sitelist");
85
var index = siteList.selectedIndex;
87
siteList.removeItemAt(index);
88
document.getElementById("btnRemove").disabled = true;
92
function removeAllSites() {
93
var siteList = document.getElementById("sitelist");
94
var msg = flashblockBundle.getString("confirmClearWhitelist");
97
while(siteList.getRowCount() > 0)
98
siteList.removeItemAt(0);
103
var prefStr = sitelistToString();
104
setWhitelistPref(prefStr);
106
setEnabled(document.getElementById("enableCheckbox").checked);
112
flashblockBundle = document.getElementById("bundle_flashblock");
113
var isJSDisabled = !isJavascriptEnabled();
114
document.getElementById("enableCheckbox").checked = isEnabled();
115
var pref = document.getElementById("enableToggleBtn");
117
pref.checked = isButtonEnabled();
118
pref.disabled = isJSDisabled;
120
document.getElementById("enableCheckbox").disabled = isJSDisabled;
121
document.getElementById("siteTextbox").disabled = isJSDisabled;
122
document.getElementById("sitelist").disabled = isJSDisabled;
123
document.getElementById("btnRemoveAll").disabled = isJSDisabled;
128
function popWhitelist() {
129
var prefStr = getWhitelistPref();
131
var siteList = document.getElementById("sitelist");
132
while(siteList.getRowCount() > 0)
133
siteList.removeItemAt(0);
136
var array = prefStr.split(",");
137
array.sort(perDomainComparison);
138
for (i = 0; i < array.length; i++) {
139
siteList.ensureElementIsVisible(siteList.appendItem(array[i]));
144
function doCancel() {
148
function siteInput(siteField) {
149
document.getElementById("btnAdd").disabled = !siteField.value;
152
function siteSelected(siteList) {
153
document.getElementById("btnRemove").disabled = (siteList.selectedIndex == -1);
156
function sitelistToString() {
157
var siteList = document.getElementById("sitelist");
158
var numRows = siteList.getRowCount();
161
for(i = 0; i < numRows; i++) {
162
if(i != 0) prefStr += ",";
163
prefStr += siteList.getItemAtIndex(i).label;
168
function getVersion() {
169
if ("@mozilla.org/extensions/manager;1" in Components.classes) {
170
var flashblockID = "{3d7eb24f-2740-49df-8937-200b1cc08f8a}";
171
var em = Components.classes["@mozilla.org/extensions/manager;1"]
172
.getService(Components.interfaces.nsIExtensionManager);
173
if (!("getItemForID" in em))
175
var version = em.getItemForID(flashblockID).version;
176
var display = document.getElementById("flashblockVersion");
177
if (display && version)
178
display.value = version;
182
var flashblockBundle;