diff --git a/UPGRADE b/UPGRADE
index 8d8c9c4c..cd834612 100644
--- a/UPGRADE
+++ b/UPGRADE
@@ -366,6 +366,10 @@ OTHER CHANGES:
80. Added two new recording filename variable options: VENDORLEADCODE, LEADID
+81. Added the ViciDial Web Dial Firefox web browser plugin, that allows right-
+ click selection dialing of phone numbers on web pages to a logged-in
+ ViciDial Agent session. See "extras/firefox_plugin" for more info.
+
diff --git a/extras/firefox_plugin/ViciDial_web_Dial_README.txt b/extras/firefox_plugin/ViciDial_web_Dial_README.txt
new file mode 100644
index 00000000..f71e8e1c
--- /dev/null
+++ b/extras/firefox_plugin/ViciDial_web_Dial_README.txt
@@ -0,0 +1,42 @@
+ViciDial Web Dial Firefox Plugin 2010-10-08
+
+This is an XPI-type plugin for Firefox web browsers that allows you to highlight
+on a phone number on a web page and right-click to dial that phone number
+through an agent session in ViciDial.
+
+The right-click menu also allows you to login to the ViciDial agent interface.
+
+There is also an input form in the bottom right corner of your Firefox web
+browser that you can put a phone number into and click to dial.
+
+This has been tested on Firefox version 3.0 and higher only.
+
+To install this plugin, just open the vicidial_webdial_plugin.xpi file with
+Firefox and it will ask you if you want to install ViciDial Web Dial. Click OK
+and then you will be prompted to restart Firefox. The plugin will not function
+until you restart Firefox.
+
+For Configuration, you need to fill in the following fields:
+
+Web Connection Info:
+ ViciDial API URL: example- http://server/agc/api.php
+ (The agent API url)
+ ViciDial AGC URL: example- http://server/agc/vicidial.php
+ (The agent web interface)
+
+User Connection Info: (what the agent would use to login to ViciDial)
+ Campaign:
+ Phone Login:
+ Phone Password:
+ User:
+ Passwd:
+
+Your System Settings must have Agent API enabled.
+Your user must have API enabled.
+
+
+NOTE: If for any reason you want to wipe all traces of this plugin from your
+system, first uninstall the plugin, then close Firefox, then erase the
+associated preferences in the prefs.js file for that Firefox profile (This is
+in different places depending on the version of Firefox and your Operating
+System).
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome.manifest b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome.manifest
new file mode 100644
index 00000000..760cff3a
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome.manifest
@@ -0,0 +1,7 @@
+content viciwebdial chrome/content/
+skin viciwebdial classic/1.0 chrome/skin/
+locale viciwebdial en-US chrome/locale/en-US/
+
+
+overlay chrome://browser/content/browser.xul chrome://viciwebdial/content/vwd-overlay.xul
+style chrome://global/content/customizeToolbar.xul chrome://viciwebdial/skin/overlay.css
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/about.xul b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/about.xul
new file mode 100644
index 00000000..322e68cf
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/about.xul
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/options.js b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/options.js
new file mode 100644
index 00000000..f85d7061
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/options.js
@@ -0,0 +1,3 @@
+function ShowWarning() {
+ var VWDalert=window.arguments[1];
+}
\ No newline at end of file
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/options.xul b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/options.xul
new file mode 100644
index 00000000..f3651a2b
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/options.xul
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/overlay.js b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/overlay.js
new file mode 100644
index 00000000..c40c0564
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/overlay.js
@@ -0,0 +1,17 @@
+var viciwebdial = {
+ onLoad: function() {
+ this.initialized = true;
+ this.strings = document.getElementById("viciwebdial-strings");
+ },
+
+ onMenuItemCommand: function(e) {
+ var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ promptService.alert(window, this.strings.getString("helloMessageTitle"),
+ this.strings.getString("helloMessage"));
+ },
+
+ onToolbarButtonCommand: function(e) {
+ viciwebdial.onMenuItemCommand(e);
+ }
+};
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/vwd-overlay.js b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/vwd-overlay.js
new file mode 100644
index 00000000..0c12e9f6
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/vwd-overlay.js
@@ -0,0 +1,215 @@
+// Constant variables for VICIWebDial
+var PhonePattern = /(\+[0-9]{1,3})?[^+]?([0-9]+[^+]{0,2})+[0-9]+/ ;
+var gPrefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+if (gPrefs.prefHasUserValue("extensions.viciwebdial.viciwebdial_phonelogin")) {
+ var phonelogin = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_phonelogin");
+ var phonepwd = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_phonepwd");
+ var VWD_user = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_user");
+ var VWD_pwd = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_pwd");
+ var VWD_URL = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_URL");
+ var VWD_AGC = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_AGC");
+ var VWD_campaign = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_campaign");
+ var VWD_ac = gPrefs.getBoolPref("extensions.viciwebdial.viciwebdial_autoconnect");
+} else {
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_phonelogin", "");
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_phonepwd", "");
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_user", "");
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_pwd", "");
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_URL", "");
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_AGC", "");
+ gPrefs.setCharPref("extensions.viciwebdial.viciwebdial_campaign", "");
+ gPrefs.setBoolPref("extensions.viciwebdial.viciwebdial_autoconnect", false);
+ if (confirm("Thank you for installing ViciDial-Web-Dial!!\n\nBefore you begin using it, please set your connection preferences in the preferences window.")) {
+ openVWDOptionsWindow();
+ }
+}
+
+
+var highlightedPhone="";
+var AutoConnectAttempts=0;
+
+function getPropertiesValues()
+{
+ return document.getElementById('viciwebdial-strings');
+}
+
+window.addEventListener("load", function () { gBrowser.addEventListener("load",VWDAutoConnect,true); }, false);
+
+
+if( window.getBrowser ) {
+ window.getBrowser().addEventListener("load", VWDload, true);
+}
+
+function VWDload(event) {
+ if(document.getElementById("contentAreaContextMenu"))
+ {
+ document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", ParsePhone, true);
+ }
+}
+
+function ParsePhone() {
+ var highlightedPhone = getBrowserSelection().replace(/[^0-9]/g,'');
+ var phoneStr=highlightedPhone;
+ if (highlightedPhone.length>0) {
+ document.getElementById('viciwebdial-phone-textbox').value=highlightedPhone;
+
+ if (highlightedPhone.length>=6) {
+ if (highlightedPhone.length==7) {
+ var phoneStr=highlightedPhone.substr(0,3)+"-"+highlightedPhone.substr(3);
+ } else if (phoneStr.length==10) {
+ var phoneStr=highlightedPhone.substr(0,3)+"-"+highlightedPhone.substr(3,3)+"-"+highlightedPhone.substr(6);
+ }
+ }
+ }
+
+ var menuitem=document.getElementById('context-viciwebdial');
+ if (phoneStr.length==0 && document.getElementById('viciwebdial-phone-textbox').value.length==0) {
+ phoneStr="";
+ menuitem.disabled=true;
+ } else {
+ menuitem.disabled=false;
+ }
+ menuitem.label=getPropertiesValues().getString("menu_dial")+" "+document.getElementById('viciwebdial-phone-textbox').value;
+}
+
+function VICIWebDialPlaceCall()
+{
+ var highlightedPhone=document.getElementById('viciwebdial-phone-textbox').value;
+ PlaceCall(highlightedPhone, 'DIAL');
+}
+
+function PlaceCall(phone_number, VWD_action) {
+ var alert_msg="";
+ GetVWDOptionVariables();
+
+ if (!phonelogin || phonelogin.length==0) {alert_msg+=" - Phone login not set.\n";}
+ if (!phonepwd || phonepwd.length==0) {alert_msg+=" - Phone password not set.\n";}
+ if (!VWD_user || VWD_user.length==0) {alert_msg+=" - User login not set.\n";}
+ if (!VWD_pwd || VWD_pwd.length==0) {alert_msg+=" - User password not set.\n";}
+ if (!VWD_URL || VWD_URL.length==0) {alert_msg+=" - Vicidial api.php URL not set.\n";}
+ if (alert_msg.length>0) {
+ if (confirm("There are problems with your preference settings:\n\n"+alert_msg+"\nPlease open the ViciDial-web-dial preferences window and make the necessary changes.")) {
+ openVWDOptionsWindow();
+ }
+ return false;
+ }
+
+ var phone_number = document.getElementById('viciwebdial-phone-textbox').value;
+
+ var xmlhttp=false;
+ try {
+ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (E) {
+ xmlhttp = false;
+ }
+ }
+ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
+ xmlhttp = new XMLHttpRequest();
+ }
+
+ if (xmlhttp) {
+ var vicidial_query="&source=VWD&value="+phone_number+"&function=external_dial&preview=NO&search=YES&focus=YES&user="+VWD_user+"&agent_user="+VWD_user+"&pass="+VWD_pwd;
+ xmlhttp.open('POST', VWD_URL);
+ xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
+ xmlhttp.send(vicidial_query);
+ xmlhttp.onreadystatechange = function() {
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+ var VDrslt = null;
+ VDrslt = xmlhttp.responseText;
+ var VWD_errcheck=VDrslt.match(/^SUCCESS/);
+ if (!VWD_errcheck) {alert(VDrslt);}
+ }
+ }
+ delete xmlhttp;
+ }
+}
+
+function VWDSetMenuValues(menuStr) {
+ var menuitem=document.getElementById('connect-viciwebdial');
+ menuitem.label=getPropertiesValues().getString(menuStr);
+}
+
+function openVWDOptionsWindow(optionsTitle) {
+ var windows = Components.classes['@mozilla.org/appshell/window-mediator;1']
+ .getService(Components.interfaces.nsIWindowMediator)
+ .getEnumerator(null);
+ while (windows.hasMoreElements())
+ {
+ var win = windows.getNext();
+ if (win.document.documentURI == "chrome://viciwebdial/content/options.xul")
+ {
+ win.focus();
+ return;
+ }
+ }
+ window.openDialog("chrome://viciwebdial/content/options.xul",
+ "viciwebdial-preferences",
+ "chrome,titlebar,toolbar,centerscreen,modal",
+ null,
+ optionsTitle);
+}
+
+function openVWDAboutWindow() {
+ var windows = Components.classes['@mozilla.org/appshell/window-mediator;1']
+ .getService(Components.interfaces.nsIWindowMediator)
+ .getEnumerator(null);
+ while (windows.hasMoreElements())
+ {
+ var win = windows.getNext();
+ if (win.document.documentURI == "chrome://viciwebdial/content/about.xul")
+ {
+ win.focus();
+ return;
+ }
+ }
+ window.openDialog(
+ "chrome://viciwebdial/content/about.xul",
+ "viciwebdial-about",
+ "chrome,centerscreen,modal",
+ null);
+}
+
+function VWDAutoConnect() {
+ if (VWD_ac) {
+ if (AutoConnectAttempts==0) {
+ VWDConnect("Connect to Vicidial");
+ }
+ AutoConnectAttempts++;
+ }
+}
+
+function VWDConnect(VWD_action) {
+ GetVWDOptionVariables();
+
+ var alert_msg="";
+ if (!VWD_AGC || VWD_AGC.length==0) {alert_msg+=" - Vicidial AGC URL not set.\n";}
+ if (!phonelogin || phonelogin.length==0) {alert_msg+=" - Phone login not set.\n";}
+ if (!phonepwd || phonepwd.length==0) {alert_msg+=" - Phone password not set.\n";}
+ if (!VWD_user || VWD_user.length==0) {alert_msg+=" - User login not set.\n";}
+ if (!VWD_pwd || VWD_pwd.length==0) {alert_msg+=" - User password not set.\n";}
+ if (!VWD_URL || VWD_URL.length==0) {alert_msg+=" - Vicidial api.php URL not set.\n";}
+ if (alert_msg.length>0) {
+ if (confirm("There are problems with your preference settings:\n\n"+alert_msg+"\nPlease open the ViciDial-web-dial preferences window and make the necessary changes.")) {
+ openVWDOptionsWindow();
+ }
+ return false;
+ }
+ if (VWD_action=="Connect to Vicidial") {
+ var URL=VWD_AGC+"?phone_login="+phonelogin+"&phone_pass="+phonepwd+"&VD_login="+VWD_user+"&VD_pass="+VWD_pwd+"&VD_campaign="+VWD_campaign+"&SUBMIT=SUBMIT"
+ content.wrappedJSObject.location=URL;
+ }
+}
+
+function GetVWDOptionVariables() {
+ gPrefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+ phonelogin = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_phonelogin");
+ phonepwd = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_phonepwd");
+ VWD_user = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_user");
+ VWD_pwd = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_pwd");
+ VWD_URL = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_URL");
+ VWD_AGC = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_AGC");
+ VWD_campaign = gPrefs.getCharPref("extensions.viciwebdial.viciwebdial_campaign");
+}
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/vwd-overlay.xul b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/vwd-overlay.xul
new file mode 100644
index 00000000..77459530
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/content/vwd-overlay.xul
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/about.dtd b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/about.dtd
new file mode 100644
index 00000000..0a359dd3
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/about.dtd
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/options.dtd b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/options.dtd
new file mode 100644
index 00000000..7c385ba7
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/options.dtd
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/overlay.dtd b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/overlay.dtd
new file mode 100644
index 00000000..7fe05572
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/overlay.dtd
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/overlay.properties b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/overlay.properties
new file mode 100644
index 00000000..9df98969
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/locale/en-US/overlay.properties
@@ -0,0 +1,7 @@
+helloMessage=Welcome to ViciDialWebDial
+helloMessageTitle=ViciDialWebdial 1.0 beta
+prefMessage=Int Pref Value: %d
+extensions.joejohn@viciwebdial.com.description=Allows dialing phone numbers off a web page through ViciDial
+menu_dial=Dial:
+VWDConnect=Connect to ViciDial
+VWDDisconnect=Logout from ViciDial
\ No newline at end of file
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/connection_icon.jpg b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/connection_icon.jpg
new file mode 100644
index 00000000..e878f729
Binary files /dev/null and b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/connection_icon.jpg differ
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/dial_button.gif b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/dial_button.gif
new file mode 100644
index 00000000..5a6b7239
Binary files /dev/null and b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/dial_button.gif differ
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/overlay.css b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/overlay.css
new file mode 100644
index 00000000..9b7e075a
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/overlay.css
@@ -0,0 +1,22 @@
+/* This is just an example. You shouldn't do this. */
+#viciwebdial-hello
+{
+ color: red ! important;
+}
+#viciwebdial-toolbar-button
+{
+ list-style-image: url("chrome://viciwebdial/skin/toolbar-button.png");
+ -moz-image-region: rect(0px 24px 24px 0px);
+}
+#viciwebdial-toolbar-button:hover
+{
+ -moz-image-region: rect(24px 24px 48px 0px);
+}
+[iconsize="small"] #viciwebdial-toolbar-button
+{
+ -moz-image-region: rect( 0px 40px 16px 24px);
+}
+[iconsize="small"] #viciwebdial-toolbar-button:hover
+{
+ -moz-image-region: rect(24px 40px 40px 24px);
+}
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/phone_icon.jpg b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/phone_icon.jpg
new file mode 100644
index 00000000..ced417f3
Binary files /dev/null and b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/phone_icon.jpg differ
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/toolbar-button.png b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/toolbar-button.png
new file mode 100644
index 00000000..45d6044b
Binary files /dev/null and b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/toolbar-button.png differ
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/vicidial_logo.png b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/vicidial_logo.png
new file mode 100644
index 00000000..63f237c1
Binary files /dev/null and b/extras/firefox_plugin/src/vicidial_webdial_plugin/chrome/skin/vicidial_logo.png differ
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/defaults/preferences/prefs.js b/extras/firefox_plugin/src/vicidial_webdial_plugin/defaults/preferences/prefs.js
new file mode 100644
index 00000000..cb8a9328
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/defaults/preferences/prefs.js
@@ -0,0 +1,6 @@
+pref("extensions.viciwebdial.boolpref", false);
+pref("extensions.viciwebdial.intpref", 0);
+pref("extensions.viciwebdial.stringpref", "A string");
+
+// https://developer.mozilla.org/en/Localizing_extension_descriptions
+pref("extensions.joejohn@viciwebdial.com.description", "chrome://viciwebdial/locale/overlay.properties");
diff --git a/extras/firefox_plugin/src/vicidial_webdial_plugin/install.rdf b/extras/firefox_plugin/src/vicidial_webdial_plugin/install.rdf
new file mode 100644
index 00000000..9388dded
--- /dev/null
+++ b/extras/firefox_plugin/src/vicidial_webdial_plugin/install.rdf
@@ -0,0 +1,21 @@
+
+
+
+ joejohn@viciwebdial.com
+ 2
+ ViciDial-Web-Dial
+ 1.0
+ Joseph Johnson
+
+ Allows dialing phone numbers off a web page through ViciDial
+ chrome://viciwebdial/content/about.xul
+ chrome://viciwebdial/content/options.xul
+
+
+ {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+ 3.0
+ 3.9
+
+
+
+
diff --git a/extras/firefox_plugin/vicidial_webdial_plugin.xpi b/extras/firefox_plugin/vicidial_webdial_plugin.xpi
new file mode 100644
index 00000000..55a36a79
Binary files /dev/null and b/extras/firefox_plugin/vicidial_webdial_plugin.xpi differ