~ubuntu-branches/ubuntu/lucid/flashblock/lucid-proposed

« back to all changes in this revision

Viewing changes to chrome/flashblock.jar!/content/flashblock/options.js

  • Committer: Bazaar Package Importer
  • Author(s): Alexander GQ Gerasiov
  • Date: 2009-11-30 01:21:27 UTC
  • mfrom: (1.1.5 upstream) (2.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091130012127-ngxo3jqkddn3smi1
Tags: 1.5.11-2
* Fixed typo in debian/copyright.
* Using new dpkg v3 format, it rocks.
* Package description updated (taken from extension's homepage).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
var FBlockOptions = {
 
2
 
 
3
  onLoad: function() {
 
4
    flashblockBundle = document.getElementById("bundle_flashblock");
 
5
    var isJSDisabled = !FBlockUtils.isJavascriptEnabled();
 
6
    document.getElementById("fb_enableCheckbox").checked = FBlockUtils.isEnabled();
 
7
    var pref = document.getElementById("flashblock_enableToggleBtn");
 
8
    if (pref) {
 
9
      pref.checked = FBlockUtils.isButtonEnabled();
 
10
      pref.disabled = isJSDisabled;
 
11
    }
 
12
    document.getElementById("fb_enableCheckbox").disabled = isJSDisabled;
 
13
    document.getElementById("fb_siteTextbox").disabled = isJSDisabled;
 
14
    document.getElementById("fb_sitelist").disabled = isJSDisabled;
 
15
    document.getElementById("fb_btnRemoveAll").disabled = isJSDisabled;
 
16
    this.popWhitelist();
 
17
    this.getVersion();
 
18
  },
 
19
 
 
20
  popWhitelist: function() {
 
21
    var prefStr = FBlockUtils.getWhitelist();
 
22
    var i;
 
23
    var siteList = document.getElementById("fb_sitelist");
 
24
    while(siteList.getRowCount() > 0)
 
25
        siteList.removeItemAt(0);
 
26
 
 
27
    if(prefStr) {
 
28
      var array = prefStr.split(",");
 
29
      array.sort(perDomainComparison);
 
30
      for (var i = 0; i < array.length; i++) {
 
31
        siteList.ensureElementIsVisible(siteList.appendItem(array[i]));
 
32
      }
 
33
    }
 
34
  },
 
35
 
 
36
  getVersion: function() {
 
37
    if ("@mozilla.org/extensions/manager;1" in Components.classes) {
 
38
      var flashblockID = "{3d7eb24f-2740-49df-8937-200b1cc08f8a}";
 
39
      var em = Components.classes["@mozilla.org/extensions/manager;1"]
 
40
                         .getService(Components.interfaces.nsIExtensionManager);
 
41
      if (!("getItemForID" in em))
 
42
        return;
 
43
      var version = em.getItemForID(flashblockID).version;
 
44
      var display = document.getElementById("flashblockVersion");
 
45
      if (display && version)
 
46
        display.value = version;
 
47
    }
 
48
  }
 
49
 
 
50
}
 
51
 
 
52
function checkSiteName(siteName) {
 
53
    //var regex = /^[\w\-\.\*]+(\:\d{1,5}){0,1}(\/[^ \t\v\n\r\f\\]*)*$/; 
 
54
    var regex = /^[\w\-\.\*]+(\:\d{1,5}){0,1}\/*.*/; 
 
55
    return regex.test(siteName);
 
56
}
 
57
 
 
58
function listContainsSite(site) {
 
59
    var siteList = document.getElementById("fb_sitelist");
 
60
    var numRows = siteList.getRowCount();
 
61
    var i;
 
62
    for(i = 0; i < numRows; i++) {
 
63
        if(siteList.getItemAtIndex(i).label == site)
 
64
            return true;
 
65
    }
 
66
    return false;
 
67
}
 
68
 
 
69
function listFindIndex(site) {
 
70
    var siteList = document.getElementById("fb_sitelist");
 
71
    var numRows = siteList.getRowCount();
 
72
    var i;
 
73
    for(i = 0; i < numRows; i++) {
 
74
        if(perDomainComparison(siteList.getItemAtIndex(i).label, site) > 0)
 
75
            break;
 
76
    }
 
77
    return i;
 
78
}
 
79
 
 
80
// To sort the whitelist array.
 
81
function perDomainComparison(host1, host2) {
 
82
    function min(a, b) {
 
83
        return (a < b) ? a : b;
 
84
    }
 
85
    // Split on domain boundaries and reverse.
 
86
    components1 = host1.split(".").reverse();
 
87
    components2 = host2.split(".").reverse();
 
88
    // Compare element by element until a difference is found
 
89
    for (i = 0; i < min(components1.length, components2.length); i++) {
 
90
        if (components1[i] < components2[i])
 
91
            return -1;
 
92
        if (components1[i] > components2[i])
 
93
            return 1;
 
94
    }
 
95
    // If all components so far are the same, the shorter name comes first
 
96
    if (components1.length > components2.length)
 
97
        return 1;
 
98
    if (components2.length > components1.length)
 
99
        return -1;
 
100
    return 0;
 
101
}
 
102
 
 
103
function addOnKeypress(event) {
 
104
    if(event && event.type == "keypress" && event.keyCode != KeyEvent.DOM_VK_RETURN)
 
105
      return;
 
106
    event.preventDefault();
 
107
    addSite();
 
108
}
 
109
 
 
110
function addSite() {
 
111
    var textbox = document.getElementById("fb_siteTextbox");
 
112
    var siteName = textbox.value;
 
113
 
 
114
    if(siteName.length == 0)
 
115
        return false;
 
116
 
 
117
    if(! checkSiteName(siteName)) {
 
118
        var msg = flashblockBundle.getString("invalidCharsInSiteName");
 
119
        alert(msg);
 
120
        return false;
 
121
    }
 
122
 
 
123
    var siteList = document.getElementById("fb_sitelist");
 
124
    if(! listContainsSite(siteName)) {
 
125
        var numRows = siteList.getRowCount();
 
126
        var index = listFindIndex(siteName);
 
127
 
 
128
        if(index < numRows)
 
129
            newElement = siteList.insertItemAt(index, siteName, "");
 
130
        else
 
131
            newElement = siteList.appendItem(siteName, "");
 
132
 
 
133
        //use ensureElementIsVisible due to mozilla bug id 250123
 
134
        siteList.ensureElementIsVisible(newElement);
 
135
    }
 
136
    textbox.value = "";
 
137
    siteInput(textbox);
 
138
    textbox.focus();
 
139
    return true;
 
140
}
 
141
 
 
142
function removeSite() {
 
143
    var siteList = document.getElementById("fb_sitelist");
 
144
    var index = siteList.selectedIndex;
 
145
    if(index != -1) {
 
146
        siteList.removeItemAt(index);
 
147
        document.getElementById("fb_btnRemove").disabled = true;
 
148
    }
 
149
}
 
150
 
 
151
function removeAllSites() {
 
152
    var siteList = document.getElementById("fb_sitelist");
 
153
    var msg = flashblockBundle.getString("confirmClearWhitelist");
 
154
 
 
155
    if(confirm(msg)) {
 
156
        while(siteList.getRowCount() > 0)
 
157
            siteList.removeItemAt(0);
 
158
    }
 
159
}
 
160
 
 
161
function doOK() {
 
162
    var prefStr = sitelistToString();
 
163
    FBlockUtils.setWhitelist(prefStr);
 
164
 
 
165
    FBlockUtils.setEnabled(document.getElementById("fb_enableCheckbox").checked);
 
166
 
 
167
    window.close();
 
168
}
 
169
 
 
170
function doCancel() {
 
171
    window.close();
 
172
}
 
173
 
 
174
function siteInput(siteField) {
 
175
    document.getElementById("btnAdd").disabled = !siteField.value;
 
176
}
 
177
 
 
178
function siteSelected(siteList) {
 
179
    document.getElementById("fb_btnRemove").disabled = (siteList.selectedIndex == -1);
 
180
}
 
181
 
 
182
function sitelistToString() {
 
183
    var siteList = document.getElementById("fb_sitelist");
 
184
    var numRows = siteList.getRowCount();
 
185
    var prefStr = "";
 
186
    var i;
 
187
    for(i = 0; i < numRows; i++) {
 
188
        if(i != 0) prefStr += ",";
 
189
        prefStr += siteList.getItemAtIndex(i).label;
 
190
    }
 
191
    return prefStr;
 
192
}
 
193
 
 
194
var flashblockBundle;