First commit
diff --git a/_locales/ca/messages.json b/_locales/ca/messages.json
new file mode 100644
index 0000000..a825ecd
--- /dev/null
+++ b/_locales/ca/messages.json
@@ -0,0 +1,58 @@
+{
+	"appName": {
+		"message": "Traduïr Text Seleccionat",
+		"description": "The app name"
+	},
+	"appBetaName": {
+		"message": "Traduïr Text Seleccionat (Beta)",
+		"description": "The beta app name"
+	},
+	"appDescription" : {
+		"message": "Tradueix el text que seleccionis amb el Traductor de Google",
+		"description": "The app description"
+	},
+	"contextmenu_title" : {
+		"message": "Tradueix la selecció al...",
+		"description": "Title of the context menu that appears when a right click is done. Inside this prent menu there are the menus"
+	},
+	"contextmenu_edit" : {
+		"message": "Edita idiomes...",
+		"description": "Title of the option inside the 'Translate section into...' context menu."
+	},
+	"options_welcome" : {
+		"message": "Benvingut!",
+		"description": "Title of the options page"
+	},
+	"options_introduction" : {
+		"message": "Si us plau, selecciona els idiomes que vols que surtin al menú \"traduïr\".",
+		"description": "Introduction paragraph to the options pages"
+	},
+	"options_languageselectheader" : {
+		"message": "Idiomes:",
+		"description": "Header of the language select option."
+	},
+	"options_otheroptionsheader" : {
+		"message": "Altres opcions:",
+		"description": "Header of the options page."
+	},
+	"options_tabsoption_1" : {
+		"message": "Obre Google Traductor en una nova pestanya per a cada traducció.",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_tabsoption_2" : {
+		"message": "Obre Google Traductor en una única pestanya i reemplaça l'última traducció en comptes d'obrir varies pestanyes.",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_tabsoption_3" : {
+		"message": "Obre Google Traductor en un panel i reemplaça l'última traducció (fa falta activar la bandera <a href='chrome://flags/#enable-panels' id='panelsflag'>--enable-panels</a>). <sup style='color:red; font-weight: bold;'>EXPERIMENTAL</sup>",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_savebutton" : {
+		"message": "Desar",
+		"description": "Save button in the settings app"
+	},
+	"notification_install_title": { "message": "Gràcies per instal·lar 'Traduïr Text Seleccionat'" },
+	"notification_install_message": { "message": "Fes clic en aquesta notificació per a configurar l'extensión." },
+	"notification_upgradedtostorage_title": { "message": "'Traduïr Text Seleccionat' s'ha actualizat a v0.6!" },
+	"notification_upgradedtostorage_message": { "message": "Ara la configuració es sincronitzarà en tots els teus dispositius! La part dolenta és que has de configurar l'extensión una altra vegada :-( Fes clic en aquesta notificación per a configurar-la." }
+}
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
new file mode 100644
index 0000000..66ae9cd
--- /dev/null
+++ b/_locales/en/messages.json
@@ -0,0 +1,58 @@
+{
+	"appName": {
+		"message": "Translate Selected Text",
+		"description": "The app name"
+	},
+	"appBetaName": {
+		"message": "Translate Selected Text (Beta)",
+		"description": "The beta app name"
+	},
+	"appDescription": {
+		"message": "Translate selected text with Google Translator",
+		"description": "The app description"
+	},
+	"contextmenu_title": {
+		"message": "Translate selection into...",
+		"description": "Title of the context menu that appears when a right click is done. Inside this parent menu there are the menus"
+	},
+	"contextmenu_edit": {
+		"message": "Edit languages...",
+		"description": "Title of the option inside the 'Translate section into...' context menu."
+	},
+	"options_welcome": {
+		"message": "Welcome!",
+		"description": "Title of the options page"
+	},
+	"options_introduction": {
+		"message": "Please, select the languages you want to show up in the \"translate\" menu.",
+		"description": "Introduction paragraph to the options pages"
+	},
+	"options_languageselectheader": {
+		"message": "Languages:",
+		"description": "Header of the language select option."
+	},
+	"options_otheroptionsheader": {
+		"message": "Other options:",
+		"description": "Header of the options page."
+	},
+	"options_tabsoption_1": {
+		"message": "Open Google Translator in a new tab for each translation.",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_tabsoption_2": {
+		"message": "Open Google Translator in a unique tab and override the last translation instead of opening several tabs.",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_tabsoption_3": {
+		"message": "Open Google Translator in a panel and override the last translation (need to activate <a href='chrome://flags/#enable-panels' id='panelsflag'>--enable-panels</a> flag). <sup style='color:red; font-weight: bold;'>EXPERIMENTAL</sup>",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_savebutton": {
+		"message": "Save",
+		"description": "Save button in the settings page"
+	},
+	"notification_install_title": { "message": "Thanks for installing 'Translate Selected Text'" },
+	"notification_install_message": { "message": "Click this notification to set it up." },
+	"notification_upgradedtostorage_title": { "message": "'Translate Selected Text' was updated to v0.6!" },
+	"notification_upgradedtostorage_message": { "message": "Now your options will be synced across all your devices! The bad side is that you have to set up the extension again :-( Click this notification to set it up." }
+}
diff --git a/_locales/es/messages.json b/_locales/es/messages.json
new file mode 100644
index 0000000..a33c70f
--- /dev/null
+++ b/_locales/es/messages.json
@@ -0,0 +1,58 @@
+{
+	"appName": {
+		"message": "Traducir Texto Seleccionado",
+		"description": "The app name"
+	},
+	"appBetaName": {
+		"message": "Traducir Texto Seleccionado (Beta)",
+		"description": "The beta app name"
+	},
+	"appDescription" : {
+		"message": "Traduce el texto que selecciones con el Traductor de Google.",
+		"description": "The app description"
+	},
+	"contextmenu_title" : {
+		"message": "Traducir selección al...",
+		"description": "Title of the context menu that appears when a right click is done. Inside this prent menu there are the menus"
+	},
+	"contextmenu_edit" : {
+		"message": "Modifica idiomas...",
+		"description": "Title of the option inside the 'Translate section into...' context menu."
+	},
+	"options_welcome" : {
+		"message": "¡Bienvenido!",
+		"description": "Title of the options page"
+	},
+	"options_introduction" : {
+		"message": "Por favor, selecciona los idiomas que quieres que se muestren en el menú \"traducir\".",
+		"description": "Introduction paragraph to the options pages"
+	},
+	"options_languageselectheader" : {
+		"message": "Idiomas:",
+		"description": "Header of the language select option."
+	},
+	"options_otheroptionsheader" : {
+		"message": "Otras opciones:",
+		"description": "Header of the options page."
+	},
+	"options_tabsoption_1" : {
+		"message": "Abre Google Traductor en una nueva pestaña para cada traducción.",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_tabsoption_2" : {
+		"message": "Abre Google Traductor en una única pestaña y reemplaza la última traducción en vez de abrir varias pestañas.",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_tabsoption_3" : {
+		"message": "Abre Google Traductor en un panel y remplaza la última traducción (hace falta activar la bandera <a href='chrome://flags/#enable-panels' id='panelsflag'>--enable-panels</a>). <sup style='color:red; font-weight: bold;'>EXPERIMENTAL</sup>",
+		"description": "Option which defines how should the app behave in relation to tabs."
+	},
+	"options_savebutton" : {
+		"message": "Guardar",
+		"description": "Save button in the settings app"
+	},
+	"notification_install_title": { "message": "Gracias por instalar 'Traducir Texto Seleccionado'" },
+	"notification_install_message": { "message": "Haz clic en esta notificación para configurar la extensión." },
+	"notification_upgradedtostorage_title": { "message": "'Traducir Texto Seleccionado' se ha actualizado a v0.6!" },
+	"notification_upgradedtostorage_message": { "message": "¡Ahora la configuración se sincronizará en todos tus dispositivos! La parte mala es que tienes que configurar la extensión otra vez :-( Haz clic en esta notificación para configurarla." }
+}
diff --git a/background.js b/background.js
new file mode 100644
index 0000000..ec92764
--- /dev/null
+++ b/background.js
@@ -0,0 +1,144 @@
+var isoLangs = {"af":{"name":"Afrikaans","nativeName":"Afrikaans"},"sq":{"name":"Albanian","nativeName":"Shqip"},"ar":{"name":"Arabic","nativeName":"\u0639\u0631\u0628\u064a"},"hy":{"name":"Armenian","nativeName":"\u0540\u0561\u0575\u0565\u0580\u0567\u0576"},"az":{"name":"Azerbaijani","nativeName":"\u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 \u062f\u06cc\u0644\u06cc"},"eu":{"name":"Basque","nativeName":"Euskara"},"be":{"name":"Belarusian","nativeName":"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"},"bg":{"name":"Bulgarian","nativeName":"\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"},"ca":{"name":"Catalan","nativeName":"Catal\u00e0"},"zh-CN":{"name":"Chinese (Simplified)","nativeName":"\u4e2d\u6587\u7b80\u4f53"},"zh-TW":{"name":"Chinese (Traditional)","nativeName":"\u4e2d\u6587\u7e41\u9ad4"},"hr":{"name":"Croatian","nativeName":"Hrvatski"},"cs":{"name":"Czech","nativeName":"\u010ce\u0161tina"},"da":{"name":"Danish","nativeName":"Dansk"},"nl":{"name":"Dutch","nativeName":"Nederlands"},"en":{"name":"English","nativeName":"English"},"et":{"name":"Estonian","nativeName":"Eesti keel"},"tl":{"name":"Filipino","nativeName":"Filipino"},"fi":{"name":"Finnish","nativeName":"Suomi"},"fr":{"name":"French","nativeName":"Fran\u00e7ais"},"gl":{"name":"Galician","nativeName":"Galego"},"ka":{"name":"Georgian","nativeName":"\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"},"de":{"name":"German","nativeName":"Deutsch"},"el":{"name":"Greek","nativeName":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},"ht":{"name":"Haitian Creole","nativeName":"Krey\u00f2l ayisyen"},"iw":{"name":"Hebrew","nativeName":"\u05e2\u05d1\u05e8\u05d9\u05ea"},"hi":{"name":"Hindi","nativeName":"\u0939\u093f\u0928\u094d\u0926\u0940"},"hu":{"name":"Hungarian","nativeName":"Magyar"},"is":{"name":"Icelandic","nativeName":"\u00cdslenska"},"id":{"name":"Indonesian","nativeName":"Bahasa Indonesia"},"ga":{"name":"Irish","nativeName":"Gaeilge"},"it":{"name":"Italian","nativeName":"Italiano"},"ja":{"name":"Japanese","nativeName":"\u65e5\u672c\u8a9e"},"ko":{"name":"Korean","nativeName":"\ud55c\uad6d\uc5b4"},"lv":{"name":"Latvian","nativeName":"Latvie\u0161u"},"lt":{"name":"Lithuanian","nativeName":"Lietuvi\u0173 kalba"},"mk":{"name":"Macedonian","nativeName":"\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"},"ms":{"name":"Malay","nativeName":"Malay"},"mt":{"name":"Maltese","nativeName":"Malti"},"no":{"name":"Norwegian","nativeName":"Norsk"},"fa":{"name":"Persian","nativeName":"\u0641\u0627\u0631\u0633\u06cc"},"pl":{"name":"Polish","nativeName":"Polski"},"pt":{"name":"Portuguese","nativeName":"Portugu\u00eas"},"ro":{"name":"Romanian","nativeName":"Rom\u00e2n\u0103"},"ru":{"name":"Russian","nativeName":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},"sr":{"name":"Serbian","nativeName":"\u0421\u0440\u043f\u0441\u043a\u0438"},"sk":{"name":"Slovak","nativeName":"Sloven\u010dina"},"sl":{"name":"Slovenian","nativeName":"Slovensko"},"es":{"name":"Spanish","nativeName":"Espa\u00f1ol"},"sw":{"name":"Swahili","nativeName":"Kiswahili"},"sv":{"name":"Swedish","nativeName":"Svenska"},"th":{"name":"Thai","nativeName":"\u0e44\u0e17\u0e22"},"tr":{"name":"Turkish","nativeName":"T\u00fcrk\u00e7e"},"uk":{"name":"Ukrainian","nativeName":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},"ur":{"name":"Urdu","nativeName":"\u0627\u0631\u062f\u0648"},"vi":{"name":"Vietnamese","nativeName":"Ti\u1ebfng Vi\u1ec7t"},"cy":{"name":"Welsh","nativeName":"Cymraeg"},"yi":{"name":"Yiddish","nativeName":"\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9"}};
+
+
+var array_elements = new Array(), translator_tab = false, translator_window = false;
+
+function isEmpty(obj) {
+    return Object.keys(obj).length === 0;
+}
+
+function click(info, tab) {
+	chrome.storage.sync.get("uniquetab", function(items) {
+		var settings_tab = {'url': 'https://translate.google.com/#auto/'+array_elements[info.menuItemId]['langCode']+'/'+encodeURIComponent(info.selectionText)};
+		if (translator_tab && items.uniquetab == "yep") {
+			chrome.tabs.update(translator_tab, settings_tab, function(tab){
+				chrome.tabs.highlight({'windowId': tab.windowId, 'tabs': tab.index}, function() {
+					chrome.windows.update(tab.windowId, {focused: true}, function() {});
+				});
+			});
+		} else if (items.uniquetab == "panel") {
+			chrome.windows.create({
+				type: 'panel', url: 'https://translate.google.com/#auto/'+array_elements[info.menuItemId]['langCode']+'/'+encodeURIComponent(info.selectionText), width: 1000, height: 382}, function(tab) {
+					translator_window = tab.windowId;
+					translator_tab = tab.id;
+					chrome.windows.onRemoved.addListener(function (windowId) {
+						if (windowId == translator_window) {
+							translator_window = false;
+							translator_tab = false;
+						}
+					});
+				}
+			);
+		} else {
+			chrome.tabs.create(settings_tab, function(tab) {
+				translator_window = tab.windowId;
+				translator_tab = tab.id;
+				chrome.tabs.onRemoved.addListener(function (tabId, removeInfo) {
+					if (tabId == translator_tab) {
+						translator_window = false;
+						translator_tab = false;
+					}
+				});
+			});
+		}
+	});
+}
+
+function click2(info, tab) {
+	chrome.tabs.create({'url': 'chrome-extension://'+chrome.i18n.getMessage("@@extension_id")+'/options.html', 'active': true}, function(tab) {
+		chrome.windows.update(tab.windowId, {'focused': true}, function() {});
+	});
+
+}
+
+function createmenus() {
+	chrome.storage.sync.get("languages", function(items) {
+		chrome.contextMenus.removeAll();
+
+		var parent = chrome.contextMenus.create({"title": chrome.i18n.getMessage("contextmenu_title"), "contexts":["selection"]});
+
+		for (var language in items.languages) {
+			var languagem = isoLangs[language];
+			var title = languagem.name + " ("+languagem.nativeName+")";
+			var id = chrome.contextMenus.create({"title": title, "parentId": parent, "contexts":["selection"], "onclick": click});
+			array_elements[id] = new Array();
+			array_elements[id]["langCode"] = language;
+			array_elements[id]["langName"] = languagem.name;
+			array_elements[id]["langNativeName"] = language.nativeName;
+		}
+
+		var id = chrome.contextMenus.create({"type": "separator","parentId": parent, "contexts":["selection"], "onclick": click2});
+
+		var id = chrome.contextMenus.create({"title": chrome.i18n.getMessage("contextmenu_edit"), "parentId": parent, "contexts":["selection"], "onclick": click2});
+	});
+}
+
+chrome.runtime.onInstalled.addListener(function(details) {
+	chrome.storage.sync.get(null, function(items) {
+		if (details.reason == "install") {
+			if (isEmpty(items)) {
+				var settings = {'languages': {}, 'uniquetab': ''}, default_language = chrome.i18n.getMessage("@@ui_locale").split("_")[0];
+				if (isoLangs[default_language] != "undefined") {
+					settings.languages[default_language] = default_language;
+				}
+				chrome.storage.sync.set(settings, function() {
+					chrome.notifications.create("install", {
+						type: "basic",
+						iconUrl: "translate-128.png",
+						title: chrome.i18n.getMessage("notification_install_title"),
+						message: chrome.i18n.getMessage("notification_install_message"),
+						isClickable: true
+					}, function(id) {});
+				});
+			}
+		}
+		if (details.reason == "update") {
+			var version = details.previousVersion.split(".");
+			if (version[0] == "0" && version[1] < "6") {
+				var settings = {'languages': {}, 'uniquetab': ''}, default_language = chrome.i18n.getMessage("@@ui_locale").split("_")[0];
+				if (isoLangs[default_language] != "undefined") {
+					settings.languages[default_language] = default_language;
+				}
+				chrome.storage.sync.set(settings, function() {
+					chrome.notifications.create("upgradedtostorage", {
+						type: "basic",
+						iconUrl: "translate-128.png",
+						title: chrome.i18n.getMessage("notification_upgradedtostorage_title"),
+						message: chrome.i18n.getMessage("notification_upgradedtostorage_message"),
+						isClickable: true
+					}, function(id) {});
+				});
+			}
+		}
+	});
+});
+
+chrome.storage.onChanged.addListener(function(changes, areaName) {
+	if (areaName == "sync")
+		createmenus();
+});
+
+chrome.storage.sync.get(null, function(items) {
+	if (items.languages) {
+		createmenus();
+	} else {
+		chrome.contextMenus.removeAll();
+		var parent = chrome.contextMenus.create({"title": chrome.i18n.getMessage("contextmenu_title"), "contexts":["selection"]});
+		var id = chrome.contextMenus.create({"title": chrome.i18n.getMessage("contextmenu_edit"), "parentId": parent, "contexts":["selection"], "onclick": click2});
+	}
+});
+
+chrome.notifications.onClicked.addListener(function(notification_id) {
+	switch(notification_id) {
+		case "install":
+		click2();
+		break;
+
+		case "upgradedtostorage":
+		click2();
+		break;
+	}
+	chrome.notifications.clear(notification_id, function() {
+
+	});
+});
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..567ee82
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,23 @@
+{
+  "manifest_version": 2,
+  "name": "__MSG_appName__",
+  "description": "__MSG_appDescription__",
+  "version": "0.6.1.1",
+  "permissions": [
+    "contextMenus",
+    "storage",
+    "notifications"
+  ],
+  "icons": {
+    "16": "translate-16.png",
+    "32": "translate-32.png",
+    "64": "translate-64.png",
+    "128": "translate-128.png",
+    "256": "translate-256.png"
+  },
+  "background": {
+    "scripts": ["background.js"]
+  },
+  "options_page": "options.html",
+  "default_locale": "en"
+}
diff --git a/options.css b/options.css
new file mode 100644
index 0000000..b4122d1
--- /dev/null
+++ b/options.css
@@ -0,0 +1,21 @@
+body {
+	padding:10px;
+	font-family:"Roboto", "Arial", sans-serif!important;
+	background-image: url('translate-1.png');
+	background-repeat: repeat;
+	background-position: left top;
+}
+h1 {
+	text-align:center;
+	font-size:30px;
+}
+h2 {
+	font-size:20px;
+}
+#languages {
+	-webkit-column-count:4;
+}
+button#save {
+	display:block;
+	margin:18px auto;
+}
diff --git a/options.html b/options.html
new file mode 100644
index 0000000..414cfff
--- /dev/null
+++ b/options.html
@@ -0,0 +1,22 @@
+<html>
+	<head>
+		<title>Options</title>
+		<meta charset="UTF-8">
+		<script src="options.js"></script>
+		<link rel="stylesheet" type="text/css" href="options.css">
+		<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
+	</head>
+	<body>
+		<h1 id="welcome"></h1>
+		<p id="introduction"></p>
+		<h2 id="languageselectheader"></h2>
+		<div id="languages"></div>
+		<h2 id="otheroptionsheader"></h2>
+		<div id="otheroptions">
+			<input type="radio" name="uniquetab" id="varioustabs" value=""> <label id="varioustabs_label" for="varioustabs"></label><br>
+			<input type="radio" name="uniquetab" id="uniquetab" value="yep"> <label id="uniquetab_label" for="uniquetab"></label><br>
+			<input type="radio" name="uniquetab" id="panel" value="panel"> <label id="panel_label" for="panel"></label>
+		</div>
+		<button id="save"></button>
+	</body>
+</html>
diff --git a/options.js b/options.js
new file mode 100644
index 0000000..d240da1
--- /dev/null
+++ b/options.js
@@ -0,0 +1,107 @@
+var isoLangs = {"af":{"name":"Afrikaans","nativeName":"Afrikaans"},"sq":{"name":"Albanian","nativeName":"Shqip"},"ar":{"name":"Arabic","nativeName":"\u0639\u0631\u0628\u064a"},"hy":{"name":"Armenian","nativeName":"\u0540\u0561\u0575\u0565\u0580\u0567\u0576"},"az":{"name":"Azerbaijani","nativeName":"\u0622\u0630\u0631\u0628\u0627\u06cc\u062c\u0627\u0646 \u062f\u06cc\u0644\u06cc"},"eu":{"name":"Basque","nativeName":"Euskara"},"be":{"name":"Belarusian","nativeName":"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"},"bg":{"name":"Bulgarian","nativeName":"\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"},"ca":{"name":"Catalan","nativeName":"Catal\u00e0"},"zh-CN":{"name":"Chinese (Simplified)","nativeName":"\u4e2d\u6587\u7b80\u4f53"},"zh-TW":{"name":"Chinese (Traditional)","nativeName":"\u4e2d\u6587\u7e41\u9ad4"},"hr":{"name":"Croatian","nativeName":"Hrvatski"},"cs":{"name":"Czech","nativeName":"\u010ce\u0161tina"},"da":{"name":"Danish","nativeName":"Dansk"},"nl":{"name":"Dutch","nativeName":"Nederlands"},"en":{"name":"English","nativeName":"English"},"et":{"name":"Estonian","nativeName":"Eesti keel"},"tl":{"name":"Filipino","nativeName":"Filipino"},"fi":{"name":"Finnish","nativeName":"Suomi"},"fr":{"name":"French","nativeName":"Fran\u00e7ais"},"gl":{"name":"Galician","nativeName":"Galego"},"ka":{"name":"Georgian","nativeName":"\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"},"de":{"name":"German","nativeName":"Deutsch"},"el":{"name":"Greek","nativeName":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},"ht":{"name":"Haitian Creole","nativeName":"Krey\u00f2l ayisyen"},"iw":{"name":"Hebrew","nativeName":"\u05e2\u05d1\u05e8\u05d9\u05ea"},"hi":{"name":"Hindi","nativeName":"\u0939\u093f\u0928\u094d\u0926\u0940"},"hu":{"name":"Hungarian","nativeName":"Magyar"},"is":{"name":"Icelandic","nativeName":"\u00cdslenska"},"id":{"name":"Indonesian","nativeName":"Bahasa Indonesia"},"ga":{"name":"Irish","nativeName":"Gaeilge"},"it":{"name":"Italian","nativeName":"Italiano"},"ja":{"name":"Japanese","nativeName":"\u65e5\u672c\u8a9e"},"ko":{"name":"Korean","nativeName":"\ud55c\uad6d\uc5b4"},"lv":{"name":"Latvian","nativeName":"Latvie\u0161u"},"lt":{"name":"Lithuanian","nativeName":"Lietuvi\u0173 kalba"},"mk":{"name":"Macedonian","nativeName":"\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"},"ms":{"name":"Malay","nativeName":"Malay"},"mt":{"name":"Maltese","nativeName":"Malti"},"no":{"name":"Norwegian","nativeName":"Norsk"},"fa":{"name":"Persian","nativeName":"\u0641\u0627\u0631\u0633\u06cc"},"pl":{"name":"Polish","nativeName":"Polski"},"pt":{"name":"Portuguese","nativeName":"Portugu\u00eas"},"ro":{"name":"Romanian","nativeName":"Rom\u00e2n\u0103"},"ru":{"name":"Russian","nativeName":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},"sr":{"name":"Serbian","nativeName":"\u0421\u0440\u043f\u0441\u043a\u0438"},"sk":{"name":"Slovak","nativeName":"Sloven\u010dina"},"sl":{"name":"Slovenian","nativeName":"Slovensko"},"es":{"name":"Spanish","nativeName":"Espa\u00f1ol"},"sw":{"name":"Swahili","nativeName":"Kiswahili"},"sv":{"name":"Swedish","nativeName":"Svenska"},"th":{"name":"Thai","nativeName":"\u0e44\u0e17\u0e22"},"tr":{"name":"Turkish","nativeName":"T\u00fcrk\u00e7e"},"uk":{"name":"Ukrainian","nativeName":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},"ur":{"name":"Urdu","nativeName":"\u0627\u0631\u062f\u0648"},"vi":{"name":"Vietnamese","nativeName":"Ti\u1ebfng Vi\u1ec7t"},"cy":{"name":"Welsh","nativeName":"Cymraeg"},"yi":{"name":"Yiddish","nativeName":"\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9"}};
+
+function $(selector) {
+    return document.querySelector(selector);
+}
+
+function $all(selector) {
+    return document.querySelectorAll(selector);
+}
+
+function isEmpty(obj) {
+    return Object.keys(obj).length === 0;
+}
+
+function init() {
+    $("#welcome").innerHTML = chrome.i18n.getMessage("options_welcome");
+    $("#introduction").innerHTML = chrome.i18n.getMessage("options_introduction");
+    $("#languageselectheader").innerHTML = chrome.i18n.getMessage("options_languageselectheader");
+    $("#otheroptionsheader").innerHTML = chrome.i18n.getMessage("options_otheroptionsheader");
+    $("#varioustabs_label").innerHTML = chrome.i18n.getMessage("options_tabsoption_1");
+    $("#uniquetab_label").innerHTML = chrome.i18n.getMessage("options_tabsoption_2");
+    $("#panel_label").innerHTML = chrome.i18n.getMessage("options_tabsoption_3");
+    chrome.storage.sync.get(null, function(items) {
+        if (isEmpty(items)) {
+            items = {'languages': {}, 'uniquetab': ''};
+            chrome.storage.sync.set({'languages': {}, 'uniquetab': ''});
+        }
+        if (items.uniquetab === "yep")
+            $("#uniquetab").checked = true;
+        if (items.uniquetab === "")
+            $("#varioustabs").checked = true;
+        if (items.uniquetab === "panel")
+            $("#panel").checked = true;
+        $("#panelsflag").addEventListener('click', function() { event.preventDefault(); chrome.tabs.create({url: 'chrome://flags/#enable-panels'}); });
+        $("#save").innerHTML = chrome.i18n.getMessage("options_savebutton");
+        $("#save").addEventListener('click', function() {
+            save_options();
+        });
+        var languages = items.languages;
+        for (var language in isoLangs) {
+            var el = document.createElement('div');
+            el.setAttribute('class','language');
+            el.setAttribute('id', 'cont-'+language);
+            $("#languages").appendChild(el);
+            var el2 = document.createElement('input');
+            el2.setAttribute('type','checkbox');
+            el2.setAttribute('id', language);
+            el2.setAttribute('name', language);
+            el2.setAttribute('data-language', language);
+            el.appendChild(el2);
+            var el3 = document.createElement('label');
+            el3.setAttribute('for', language);
+            el3.innerHTML = isoLangs[language]["name"]+" ("+isoLangs[language]["nativeName"]+")";
+            el.appendChild(el3);
+        }
+        if (!languages) {
+            return;
+        }
+        else {
+            var options = items.languages;
+            for (var language in options) {
+                document.getElementById(language).checked = true;
+            }
+        }
+        var languages_el = document.getElementById("languages");
+    });
+}
+
+function save_options() {
+    var languages = document.getElementById("languages");
+    var options = {"uniquetab": "", "languages": {}};
+
+    options.uniquetab = radio_selected("uniquetab");
+
+    for (var language in isoLangs) {
+        if ($("input[data-language='"+language+"']").checked) {
+            options.languages[language] = language;
+        }
+    }
+
+    chrome.storage.sync.set(options, function() {
+        var background = chrome.extension.getBackgroundPage();
+
+        background.translator_tab = false;
+        background.translator_window = false;
+        window.close();
+    });
+
+    // We don't need the following code because the background.js is already listening to changes in chrome.sync ;-) Yeeey!
+    //chrome.extension.getBackgroundPage().createmenus(JSON.stringify(options));
+}
+
+function toObject(arr) {
+    var rv = {};
+    for (var i = 0; i < arr.length; ++i)
+        if (arr[i] !== undefined) rv[i] = arr[i];
+    return rv;
+}
+
+function radio_selected(a) {
+    var elements = document.getElementsByName(a);
+
+    for (var i=0; i<elements.length; i++)
+        if (elements[i].checked) return elements[i].value;
+}
+
+window.addEventListener('load', init);
diff --git a/translate-1.png b/translate-1.png
new file mode 100644
index 0000000..8bab181
--- /dev/null
+++ b/translate-1.png
Binary files differ
diff --git a/translate-128.png b/translate-128.png
new file mode 100644
index 0000000..1a33921
--- /dev/null
+++ b/translate-128.png
Binary files differ
diff --git a/translate-16.png b/translate-16.png
new file mode 100644
index 0000000..6629ac6
--- /dev/null
+++ b/translate-16.png
Binary files differ
diff --git a/translate-2.png b/translate-2.png
new file mode 100644
index 0000000..9625b12
--- /dev/null
+++ b/translate-2.png
Binary files differ
diff --git a/translate-256.png b/translate-256.png
new file mode 100644
index 0000000..0b2ead1
--- /dev/null
+++ b/translate-256.png
Binary files differ
diff --git a/translate-32.png b/translate-32.png
new file mode 100644
index 0000000..ee6fcfe
--- /dev/null
+++ b/translate-32.png
Binary files differ
diff --git a/translate-4.png b/translate-4.png
new file mode 100644
index 0000000..815085d
--- /dev/null
+++ b/translate-4.png
Binary files differ
diff --git a/translate-512.png b/translate-512.png
new file mode 100644
index 0000000..8fc23a3
--- /dev/null
+++ b/translate-512.png
Binary files differ
diff --git a/translate-64.png b/translate-64.png
new file mode 100644
index 0000000..6de6bb7
--- /dev/null
+++ b/translate-64.png
Binary files differ
diff --git a/translate-8.png b/translate-8.png
new file mode 100644
index 0000000..1e5832c
--- /dev/null
+++ b/translate-8.png
Binary files differ