From c6db23f52255a09863028b0be48b8771980d2f06 Mon Sep 17 00:00:00 2001 From: gdev Date: Wed, 12 Apr 2017 07:29:37 -0500 Subject: [PATCH 01/33] Added click on open options. --- popup.html | 28 +++++++------- popup.js | 111 ++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 103 insertions(+), 36 deletions(-) diff --git a/popup.html b/popup.html index 6499b37..a3d0e29 100644 --- a/popup.html +++ b/popup.html @@ -1,25 +1,27 @@ + + Select pages to view +
- - + +
+
diff --git a/popup.js b/popup.js index ae42158..d21735d 100644 --- a/popup.js +++ b/popup.js @@ -1,38 +1,103 @@ -/** - * - * Created by gdev on 3/29/2017. - */ var urls = { - link1: 'http://www.amazon.in/books', - link2: 'http://www.amazon.in/kitchen', - link3: 'http://www.amazon.in/Grocery', - link4: 'http://www.amazon.in/mobile-phones' + }; + function clickHandler(e) { - // var link1 = document.getElementById('link1'); - var links = document.getElementsByName('link'); - links.forEach(function (link) { - if (link.checked) - chrome.tabs.create ({url : urls[link.id]}); + var urlsToOpen = document.getElementsByName("link"); + urlsToOpen.forEach(function (toOpen){ + if(toOpen.checked == true) { + chrome.tabs.create({url: toOpen.value, active : false }); + } }); - - chrome.tabs.executeScript({code : "var selectedPages = 'krish';"}, - function (result) { - chrome.tabs.executeScript({file : "openSelectedPages.js"}, function(result){}); - }); - window.close(); } document.addEventListener('DOMContentLoaded', function () { document.getElementById('openbtn').addEventListener('click', clickHandler); - var links = document.getElementsByName('link'); + var content = document.getElementById('content'); + + getCurrentTabUrl(function(currentUrl) { + var domain = getDomain(currentUrl); + var name = domain.split('.')[0]; + var allurls = Object.keys(urls); - links.forEach(function (link) { - link.addEventListener('click', function (e) { - document.getElementById('openbtn').disabled = false; + allurls.forEach(function(url, index) { + if (url === name) { + console.log(index); + var pages = Object.values(urls)[index]; + var list = document.createElement("UL"); + var i=1; + var value=""; + pages.forEach(function(page) { + console.log(Object.keys(page)[0]); + console.log(Object.values(page)[0]); + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + var linkObj = Object.values(page)[0]; + input.setAttribute("name", "link"); + + if (typeof linkObj === 'object') { + input.setAttribute("value", linkObj.url); + input.setAttribute("Alt", linkObj.alt); + if (currentUrl !== linkObj && linkObj.selected !== false) { + input.setAttribute("checked", true); + } + } else { + input.setAttribute("value", linkObj); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj) { + input.setAttribute("checked", true); + } + } + var id = Object.keys(page)[0]; + input.setAttribute("id", id); + + var label = document.createElement('label'); + label.htmlFor = id; + label.appendChild(document.createTextNode(id)); + list.appendChild(input); + list.appendChild(label); + var line = document.createElement('br'); + list.appendChild(line); + }); + content.appendChild(list); + } }); }); + }); + +function getDomain(url, subdomain) { + subdomain = subdomain || false; + + url = url.replace(/(https?:\/\/)?(www.)?/i, ''); + + if (!subdomain) { + url = url.split('.'); + + url = url.slice(url.length - 2).join('.'); + } + + if (url.indexOf('/') !== -1) { + return url.split('/')[0]; + } + + return url; +} + +function getCurrentTabUrl(callback) { + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function (tabs) { + + var tab = tabs[0]; + var url = tab.url; + callback(url); + }); + +} \ No newline at end of file From 4e802351dcb767a36e5e99b24859a774a9a29b9d Mon Sep 17 00:00:00 2001 From: gdev Date: Wed, 12 Apr 2017 14:32:01 -0500 Subject: [PATCH 02/33] Added click on open options. --- manifest.json | 2 +- popup.js | 151 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 105 insertions(+), 48 deletions(-) diff --git a/manifest.json b/manifest.json index 34461ab..c89f0fa 100644 --- a/manifest.json +++ b/manifest.json @@ -13,7 +13,7 @@ "chrome_style": true }, "background": { - "scripts": ["taborola.js", "background.js"], + "scripts": ["popup.js", "taborola.js", "background.js"], "persistent": false }, "commands": { diff --git a/popup.js b/popup.js index d21735d..196a9c0 100644 --- a/popup.js +++ b/popup.js @@ -5,66 +5,124 @@ var urls = { function clickHandler(e) { - var urlsToOpen = document.getElementsByName("link"); - urlsToOpen.forEach(function (toOpen){ - if(toOpen.checked == true) { - chrome.tabs.create({url: toOpen.value, active : false }); + var allUrls = document.getElementsByName("link"); + var urlsToOpen = []; + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); } }); + // alert("kkk" + urlsToOpen); + var firstUrl = urlsToOpen.shift(); + + urlsToOpen.forEach(function (url) { + chrome.tabs.create({url: url, active : false}); + }); + + // chrome.tabs.create({url: firstUrl, active : false}, function (tab) { + // alert(firstUrl); + + // urlsToOpen.forEach(function (url) { + // chrome.tabs.create({url: url, active : false}); + // }); + + // chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { + // alert("in update"); + // alert(tab.url + "kkk" + firstUrl); + + /*if (tab.url === firstUrl && changeInfo.status == 'complete') {*/ + // alert('done'); + // urlsToOpen.forEach(function (toOpen){ + // chrome.tabs.create({url: toOpen, active : false}); + // }); + //return; + //} + // }); + // }); + // alert(" first" + firstUrl); + window.close(); } +function openTab(urlToOpen) { + chrome.tabs.create({url: urlToOpen, active : false}); + chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { + // alert("in update"); + // alert(tab.url + "kkk" + urlToOpen); + + if (tab.url === urlToOpen && changeInfo.status == 'complete') { + alert('done'); + return; + } + }); + +} document.addEventListener('DOMContentLoaded', function () { document.getElementById('openbtn').addEventListener('click', clickHandler); var content = document.getElementById('content'); + chrome.tabs.getCurrent(function (callback) { + console.log(callback); + }); + + chrome.tabs.getSelected(null, function(tab){ + console.log(tab); + }); getCurrentTabUrl(function(currentUrl) { var domain = getDomain(currentUrl); var name = domain.split('.')[0]; - var allurls = Object.keys(urls); - - allurls.forEach(function(url, index) { - if (url === name) { - console.log(index); - var pages = Object.values(urls)[index]; - var list = document.createElement("UL"); - var i=1; - var value=""; - pages.forEach(function(page) { - console.log(Object.keys(page)[0]); - console.log(Object.values(page)[0]); - var input = document.createElement("INPUT"); - input.setAttribute("type", "checkbox"); - var linkObj = Object.values(page)[0]; - input.setAttribute("name", "link"); - - if (typeof linkObj === 'object') { - input.setAttribute("value", linkObj.url); - input.setAttribute("Alt", linkObj.alt); - if (currentUrl !== linkObj && linkObj.selected !== false) { - input.setAttribute("checked", true); - } - } else { - input.setAttribute("value", linkObj); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj) { - input.setAttribute("checked", true); - } - } - var id = Object.keys(page)[0]; - input.setAttribute("id", id); - - var label = document.createElement('label'); - label.htmlFor = id; - label.appendChild(document.createTextNode(id)); - list.appendChild(input); - list.appendChild(label); - var line = document.createElement('br'); - list.appendChild(line); - }); - content.appendChild(list); + //console.log("fff" + JSON.stringify()); + //var allurls = Object.keys(urls); + //console.log(allurls); + //allurls.forEach(function(url, index) { + //if (url === name) { + var allurls = urls[name]; + //console.log(index); + //var pages = Object.values(urls)[index]; + var list = document.createElement("UL"); + var i=1; + var value=""; + allurls.forEach(function(page) { + console.log(Object.keys(page)[0]); + console.log(Object.values(page)[0]); + var input = document.createElement("INPUT"); + var linkObj = Object.values(page)[0]; + + input.setAttribute("type", "checkbox"); + input.setAttribute("value", Object.values(page)[0]); + input.setAttribute("name", "link"); + var id = Object.keys(page)[0]; + input.setAttribute("id", id); + + if (typeof linkObj === 'object') { + input.setAttribute("value", linkObj.url); + input.setAttribute("Alt", linkObj.alt); + if (currentUrl !== linkObj && linkObj.selected !== false) { + input.setAttribute("checked", true); + } + } else { + input.setAttribute("value", linkObj); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj[0]) { + input.setAttribute("checked", true); + } } + + + var label = document.createElement('label'); + label.htmlFor = id; + label.appendChild(document.createTextNode(id)); + list.appendChild(input); + list.appendChild(label); + var line = document.createElement('br'); + list.appendChild(line); + + }); + content.appendChild(list); + //} + //}); }); }); @@ -99,5 +157,4 @@ function getCurrentTabUrl(callback) { var url = tab.url; callback(url); }); - } \ No newline at end of file From 65852e1c838b420003208619ad29dda7c5b72f00 Mon Sep 17 00:00:00 2001 From: gdev Date: Wed, 12 Apr 2017 15:28:51 -0500 Subject: [PATCH 03/33] Added click on open options. --- popup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/popup.js b/popup.js index 196a9c0..ad77983 100644 --- a/popup.js +++ b/popup.js @@ -14,7 +14,7 @@ function clickHandler(e) { } }); // alert("kkk" + urlsToOpen); - var firstUrl = urlsToOpen.shift(); + // var firstUrl = urlsToOpen.shift(); urlsToOpen.forEach(function (url) { chrome.tabs.create({url: url, active : false}); From 6adb12216bf18e7df2f7696a57b3f41f5aac1e8c Mon Sep 17 00:00:00 2001 From: gdev Date: Tue, 18 Apr 2017 15:33:01 -0500 Subject: [PATCH 04/33] Added cancel and other changes. --- pages.json | 2 ++ popup.html | 1 + popup.js | 21 ++++++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 pages.json diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/pages.json @@ -0,0 +1,2 @@ +{ +} diff --git a/popup.html b/popup.html index a3d0e29..56ad5c2 100644 --- a/popup.html +++ b/popup.html @@ -22,6 +22,7 @@
+ diff --git a/popup.js b/popup.js index ad77983..5ba3c74 100644 --- a/popup.js +++ b/popup.js @@ -1,10 +1,23 @@ -var urls = { - +var jsonData; + +var xhr = new XMLHttpRequest(); +xhr.open('GET', chrome.extension.getURL('pages.json'), true); +xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + console.log(xhr.responseText); + jsonData = JSON.parse(xhr.responseText); + } }; +xhr.send(); +function closeWindow (e) { + window.close(); +} function clickHandler(e) { + var allUrls = document.getElementsByName("link"); var urlsToOpen = []; allUrls.forEach (function (url) { @@ -59,7 +72,9 @@ function openTab(urlToOpen) { } document.addEventListener('DOMContentLoaded', function () { + document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); + var content = document.getElementById('content'); chrome.tabs.getCurrent(function (callback) { console.log(callback); @@ -77,7 +92,7 @@ document.addEventListener('DOMContentLoaded', function () { //console.log(allurls); //allurls.forEach(function(url, index) { //if (url === name) { - var allurls = urls[name]; + var allurls = jsonData[name]; //console.log(index); //var pages = Object.values(urls)[index]; var list = document.createElement("UL"); From 7209d479712614497a91a787b0dba6afc717df27 Mon Sep 17 00:00:00 2001 From: gdev Date: Tue, 18 Apr 2017 16:52:13 -0500 Subject: [PATCH 05/33] Modified popup.js --- popup.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/popup.js b/popup.js index 5ba3c74..c66fe50 100644 --- a/popup.js +++ b/popup.js @@ -29,8 +29,11 @@ function clickHandler(e) { // alert("kkk" + urlsToOpen); // var firstUrl = urlsToOpen.shift(); - urlsToOpen.forEach(function (url) { - chrome.tabs.create({url: url, active : false}); + getCurrentTabUrl(function (tab) { + var pos = tab.index + 1; + urlsToOpen.forEach(function (url) { + chrome.tabs.create({url: url, active : false, index: pos++}); + }); }); // chrome.tabs.create({url: firstUrl, active : false}, function (tab) { @@ -84,7 +87,8 @@ document.addEventListener('DOMContentLoaded', function () { console.log(tab); }); - getCurrentTabUrl(function(currentUrl) { + getCurrentTabUrl(function(tab) { + var currentUrl = tab.url; var domain = getDomain(currentUrl); var name = domain.split('.')[0]; //console.log("fff" + JSON.stringify()); @@ -169,7 +173,7 @@ function getCurrentTabUrl(callback) { chrome.tabs.query(queryInfo, function (tabs) { var tab = tabs[0]; - var url = tab.url; - callback(url); + // var url = tab.url; + callback(tab); }); } \ No newline at end of file From 55c0d278c907cafa4e78411dec4bb339909c326d Mon Sep 17 00:00:00 2001 From: gdev Date: Tue, 18 Apr 2017 18:33:56 -0500 Subject: [PATCH 06/33] Modified popup.js --- popup.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/popup.js b/popup.js index c66fe50..532ff96 100644 --- a/popup.js +++ b/popup.js @@ -1,4 +1,5 @@ var jsonData; +var currentTab; var xhr = new XMLHttpRequest(); xhr.open('GET', chrome.extension.getURL('pages.json'), true); @@ -11,6 +12,8 @@ xhr.onreadystatechange = function() { }; xhr.send(); + + function closeWindow (e) { window.close(); } @@ -29,12 +32,10 @@ function clickHandler(e) { // alert("kkk" + urlsToOpen); // var firstUrl = urlsToOpen.shift(); - getCurrentTabUrl(function (tab) { - var pos = tab.index + 1; + var pos = currentTab.index + 1; urlsToOpen.forEach(function (url) { chrome.tabs.create({url: url, active : false, index: pos++}); }); - }); // chrome.tabs.create({url: firstUrl, active : false}, function (tab) { // alert(firstUrl); @@ -174,6 +175,7 @@ function getCurrentTabUrl(callback) { var tab = tabs[0]; // var url = tab.url; + currentTab = tab; callback(tab); }); } \ No newline at end of file From 99551aafc208420c94c3b07e08d160a6c394f241 Mon Sep 17 00:00:00 2001 From: gdev Date: Wed, 3 May 2017 17:03:49 -0500 Subject: [PATCH 07/33] Modified popup.js, background.js --- background.js | 73 +++++++++++++---- options.html | 42 +++++++--- options.js | 214 +++++++++++++++++++++++++++++++++++++++++++++++--- pages.json | 51 ++++++++++++ popup.js | 200 ++++++++++++++++++++-------------------------- popup_new.js | 181 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 612 insertions(+), 149 deletions(-) create mode 100644 popup_new.js diff --git a/background.js b/background.js index 9b30d80..7cf7d0d 100644 --- a/background.js +++ b/background.js @@ -1,26 +1,69 @@ /** * Created by gdev on 3/19/2017. */ -chrome.commands.onCommand.addListener(function(command) { - console.log('onCommand event received for message: ', command); +var highlightTabs; +var tabsBackground; - chrome.tabs.getCurrent( function(tab) { - var url = tab.url; +var options = ['tabsBackground', 'highlightTabs'] - var start = url.indexOf('http://'); - if (start < 0) { - start = url.indexOf('https://'); - } - chrome.storage.sync.get('tabsBackground', function(items) { +chrome.storage.sync.get( options, function(items) { + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; +}); - var ind = url.indexOf('/', start + 10); - if (ind !== -1) { - var baseurl = url.substring(start, ind); - if (baseurl !== url) { - chrome.tabs.create({url: baseurl, selected: !items.tabsBackground, index: (tab.index + 1)}); +chrome.storage.onChanged.addListener(function(changes, area) { + console.log("in bkgd page" + JSON.stringify(changes)); + if (area == "sync" && "urlsToOpen" in changes) { + var currTab; + var tabToHilite = [changes.currTab.newValue.index]; + var openAt = changes.currTab.newValue.index + 1; + var urls = changes.urlsToOpen.newValue; + chrome.tabs.create({url: urls[0], active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + //console.log(JSON.stringify(tab)); + var firstPage = tab.id; + chrome.tabs.onUpdated.addListener(function(tabId , info) { + //console.log(tabId + "" + JSON.stringify(info)); + if (info.status == "complete" && tabId === tab.id) { + //console.log("length" + urls.length); + chrome.tabs.update(firstPage, {active: true}); + if (urls.length > 1) { + urls.shift(); + //console.log("after shift" + urls); + urls.forEach(function(page){ + //console.log(page); + chrome.tabs.create({url: page, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + }); + }); } + //console.log("i m complete"); } }); + }); + /*urls.forEach(function (url) { + console.log(url); + + + + + + });*/ + if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); } - ); + + chrome.storage.sync.set({"urlsToOpen": [], currTab : ""}, function() { + }); + + } + +}); + +chrome.commands.onCommand.addListener(function(command) { + console.log('onCommand event received for message: ', command); + + }); diff --git a/options.html b/options.html index 7bd0c48..ad65858 100644 --- a/options.html +++ b/options.html @@ -1,23 +1,24 @@ - Taborola Extension Options + My Preferences Options - + + + +
+
+ + - + \ No newline at end of file diff --git a/options.js b/options.js index de6a9ac..4c262d5 100644 --- a/options.js +++ b/options.js @@ -1,26 +1,54 @@ /** * Created by gdev on 3/18/2017. */ + function save_options() { + var jsonData = document.getElementById('jsonData').value; var tabsBackground = document.getElementById('tabsBackground').checked; var highlightTabs = document.getElementById('highlightTabs').checked; + if (jsonData.trim() === '') { + return; + } + var jsonObj = {}; + document.getElementById("error").innerHTML = ""; + try { + jsonObj = JSON.parse(jsonData); + } catch(err) { + document.getElementById("error").innerHTML = err.message; + return; + } + chrome.storage.sync.set({ - tabsBackground: tabsBackground, - highlightTabs: highlightTabs - }, function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); + jsonData: jsonObj, + tabsBackground: tabsBackground, + highlightTabs: highlightTabs}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + } // Restores tabsBackground state using the preferences // stored in chrome.storage. function restore_options() { + chrome.storage.sync.get( "jsonData", function(items) { + var content = document.getElementById('jsonData'); + //var textArea = document.createElement("TEXTAREA"); + //textArea.rows = "10"; + //textArea.cols = "50"; + var text = document.createTextNode(JSON.stringify(items.jsonData, null, "\t")); + //textArea.appendChild(text); + //var data = items.preferedPages; + + content.appendChild(text); + + }); chrome.storage.sync.get({ tabsBackground: true, highlightTabs: true @@ -29,5 +57,171 @@ function restore_options() { document.getElementById('highlightTabs').checked = items.highlightTabs; }); } + +function cancel_options () { + window.close(); +} + + document.addEventListener('DOMContentLoaded', restore_options); document.getElementById('save').addEventListener('click', save_options); +document.getElementById('cancel').addEventListener('click', cancel_options); + +/* + function save_options() { + var prefDomain = document.getElementById('prefDomain').value; + var prefUrl = document.getElementById('prefUrl').value; + //var highlightTabs = document.getElementById('highlightTabs').checked; + alert(prefDomain); + var urls={}; + + urls[prefDomain] = [prefUrl]; + + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + var origObj = items.preferedPages; + alert("before" + JSON.stringify(origObj)); + + if (origObj[prefDomain]) { + origObj[prefDomain].push(prefUrl); + } else { + origObj[prefDomain] = [prefUrl]; + } + + urls = origObj; + alert("final--" + JSON.stringify(urls)); + chrome.storage.sync.set({preferedPages: origObj}, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + //items.preferedPages.prefDomain.push(prefUrl); + //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); + }); + } + + // Restores tabsBackground state using the preferences + // stored in chrome.storage. + function restore_options() { + chrome.storage.sync.get( "preferedPages", function(items) { + var content = document.getElementById('content'); + var text = document.createTextNode(JSON.stringify(items)); + var data = items.preferedPages; + var table = document.createElement("TABLE"); + table.setAttribute("id", "table"); + content.appendChild(table); + var tr = document.createElement("TR"); + tr.setAttribute("id", "heading"); + table.appendChild(tr); + + var col1 = document.createElement("TD"); + var cell1 = document.createTextNode("Domain"); + col1.appendChild(cell1); + tr.appendChild(col1); + + var col2 = document.createElement("TD"); + var cell2 = document.createTextNode("Preferred URL"); + col2.appendChild(cell2); + tr.appendChild(col2); + + var col3 = document.createElement("TD"); + var cell3 = document.createTextNode("Delete"); + col3.appendChild(cell3); + tr.appendChild(col3); + + table.style.border = "thin solid #000000"; + //tr.style.border = "thin solid #000000"; + col1.style.border = "thin solid #000000"; + col2.style.border = "thin solid #000000"; + col3.style.border = "thin solid #000000"; + var rowIndex = 0; + Object.keys(data).forEach(function(domain, index){ + var rowSpan = (data[domain]).length; + data[domain].forEach(function(url, url_index) { + var dataRow = document.createElement("TR"); + dataRow.id = rowIndex; + table.appendChild(dataRow); + if (url_index === 0) { + var col1 = document.createElement("TD"); + col1.rowSpan = rowSpan; + var cell1 = document.createTextNode(domain); + col1.appendChild(cell1); + col1.style.border = "thin solid #000000"; + dataRow.appendChild(col1); + } + var col2 = document.createElement("TD"); + var cell2 = document.createTextNode(url); + col2.appendChild(cell2); + col2.style.border = "thin solid #000000"; + dataRow.appendChild(col2); + var col3 = document.createElement("TD"); + var cell3 = document.createElement("INPUT"); + cell3.type = "checkbox"; + cell3.id = domain; + cell3.name = "delete_chkbx"; + col3.appendChild(cell3); + col3.align = "center"; + col3.style.border = "thin solid #000000"; + dataRow.appendChild(col3); + rowIndex++; + }); + + }); + //content.appendChild(text); + + }); + } + + function delete_selected_options() { + alert("in delete"); + var allChBx = document.getElementsByName("delete_chkbx"); + + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + var origObj = items.preferedPages; + allChBx.forEach (function (chkbx) { + //alert(chkbx); + if (chkbx.checked) { + //alert("chked"); + var rowObj = chkbx.parentElement.parentElement; + var rowId = chkbx.parentElement.parentElement.id; + var domain; + var url; + //alert(rowObj.childNodes.length); + if (rowObj.childNodes.length === 2) { + domain = chkbx.id; + url = rowObj.childNodes[0].innerHTML; + } else { + domain = rowObj.childNodes[0].innerHTML; + url = rowObj.childNodes[1].innerHTML; + } + alert(rowId + "--" + domain + "--" + url); + alert("orig obj" + JSON.stringify(origObj)); + var urlIndex = origObj[domain].indexOf(url); + alert("index in obj-" + urlIndex); + origObj[domain].splice(urlIndex, 1); + alert("obj after delete" + JSON.stringify(origObj)); + } + }); + alert("obj after delete" + JSON.stringify(origObj)); + chrome.storage.sync.set({preferedPages: origObj}, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + //items.preferedPages.prefDomain.push(prefUrl); + //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); + }); + + + } + document.addEventListener('DOMContentLoaded', restore_options); + document.getElementById('save').addEventListener('click', save_options); + document.getElementById('delete').addEventListener('click', delete_selected_options); + */ \ No newline at end of file diff --git a/pages.json b/pages.json index 2c63c08..9fa108d 100644 --- a/pages.json +++ b/pages.json @@ -1,2 +1,53 @@ { +"amazon": [ + {"Books": "http://www.amazon.in/books"}, + {"Kitchen": "http://www.amazon.in/kitchen"}, + {"Grocery": "http://www.amazon.in/Gourmet-Specialty-Foods"}, + {"Mobile-Phones": "http://www.amazon.in/mobile-phones"} +], +"cnn" : [ + {"Regions": "http://edition.cnn.com/regions"}, + {"Politics": "http://edition.cnn.com/politics"}, + {"International": "http://money.cnn.com/INTERNATIONAL/"}, + {"Entertainment": "http://edition.cnn.com/entertainment"}, + {"Technology": "http://money.cnn.com/technology/"} +], +"yahoo" : [ + {"NASDAQ" : {"url": "https://finance.yahoo.com/chart/^IXIC", "selected": false}}, + {"NFLX" : "https://finance.yahoo.com/chart/NFLX"}, + {"GOOGL" : "https://finance.yahoo.com/chart/GOOGL"}, + {"AAPL" : "https://finance.yahoo.com/chart/AAPL"}, + {"PCLN" : "https://finance.yahoo.com/chart/PCLN"}, + {"FB" : "https://finance.yahoo.com/chart/FB"}, + {"SIRI" : "https://finance.yahoo.com/chart/SIRI"}, + {"AAOI" : "https://finance.yahoo.com/chart/AAOI"}, + {"PLCE" : "https://finance.yahoo.com/chart/PLCE"}, + {"MYSZ" : "https://finance.yahoo.com/chart/MYSZ"}, + {"HTGM" : "https://finance.yahoo.com/chart/HTGM"}, + {"FIZZ" : "https://finance.yahoo.com/chart/FIZZ"}, + {"SNPS" : "https://finance.yahoo.com/chart/SNPS"}, + {"COOL" : "https://finance.yahoo.com/chart/COOL"}, + {"AUPH" : "https://finance.yahoo.com/chart/AUPH"}, + {"TECL" : "https://finance.yahoo.com/chart/TECL"}, + {"AKTX" : "https://finance.yahoo.com/chart/AKTX"}, + {"SLCA" : "https://finance.yahoo.com/chart/SLCA"}, + {"WIX" : "https://finance.yahoo.com/chart/WIX"} +], +"f-apimlb810lv":[ + {"subscription": "https://f-apimlb810lv/m/subscription/ui/"}, + {"remote": "https://f-apimlb810lv/m/remote/ui/"}, + {"telemetry": "https://f-apimlb810lv/m/telemetry/ui/"}, + {"location": "https://f-apimlb810lv/m/location/ui/"}, + {"notification": "https://f-apimlb810lv/m/notification/ui/"}, + {"monitor": "https://f-apimlb810lv/m/monitor/ui/"} +], + "f-loggui801lv:9000": [ + {"APILogs": "https://f-loggui801lv:9000/streams/564f49c3e4b0eaab4985f6e2/messages?rangetype=relative&q=*+AND+facility%3Aapim&relative=0&fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource#fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource"}, + { + "AOTALogs": { + "url": "https://f-loggui801lv:9000/streams/5899e8c6e4b057ec305d93d0/messages?rangetype=relative&q=*+AND+facility%3Aapim&relative=0&fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource#fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource", + "selected": false + } + } + ] } diff --git a/popup.js b/popup.js index 532ff96..b064dcd 100644 --- a/popup.js +++ b/popup.js @@ -1,148 +1,122 @@ var jsonData; var currentTab; - -var xhr = new XMLHttpRequest(); -xhr.open('GET', chrome.extension.getURL('pages.json'), true); -xhr.onreadystatechange = function() { - console.log("here"); - if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { - console.log(xhr.responseText); - jsonData = JSON.parse(xhr.responseText); - } -}; -xhr.send(); - - +var highlightTabs; +var tabsBackground; + +var options = ['tabsBackground', 'highlightTabs', 'jsonData'] + +/* + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('pages.json'), true); + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + console.log(xhr.responseText); + jsonData = JSON.parse(xhr.responseText); + } + }; + xhr.send(); + */ +chrome.storage.sync.get( options, function(items) { + jsonData = items.jsonData; + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; +}); function closeWindow (e) { window.close(); } -function clickHandler(e) { +function clickHandler(e) { var allUrls = document.getElementsByName("link"); var urlsToOpen = []; + var tabToHilite = [currentTab.index]; + var openAt = currentTab.index + 1; allUrls.forEach (function (url) { console.log(url); if (url.checked) { urlsToOpen.push(url.value); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + + } }); - // alert("kkk" + urlsToOpen); - // var firstUrl = urlsToOpen.shift(); - - var pos = currentTab.index + 1; - urlsToOpen.forEach(function (url) { - chrome.tabs.create({url: url, active : false, index: pos++}); - }); - - // chrome.tabs.create({url: firstUrl, active : false}, function (tab) { - // alert(firstUrl); - - // urlsToOpen.forEach(function (url) { - // chrome.tabs.create({url: url, active : false}); - // }); - - // chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { - // alert("in update"); - // alert(tab.url + "kkk" + firstUrl); - - /*if (tab.url === firstUrl && changeInfo.status == 'complete') {*/ - // alert('done'); - // urlsToOpen.forEach(function (toOpen){ - // chrome.tabs.create({url: toOpen, active : false}); - // }); - //return; - //} - // }); - // }); - // alert(" first" + firstUrl); - window.close(); -} -function openTab(urlToOpen) { - chrome.tabs.create({url: urlToOpen, active : false}); - chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { - // alert("in update"); - // alert(tab.url + "kkk" + urlToOpen); - - if (tab.url === urlToOpen && changeInfo.status == 'complete') { - alert('done'); - return; - } + /*if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); + }*/ + chrome.storage.sync.set({"urlsToOpen": urlsToOpen, currTab : currentTab}, function() { }); + + + + window.close(); } document.addEventListener('DOMContentLoaded', function () { document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); - var content = document.getElementById('content'); - chrome.tabs.getCurrent(function (callback) { - console.log(callback); - }); - - chrome.tabs.getSelected(null, function(tab){ - console.log(tab); - }); getCurrentTabUrl(function(tab) { var currentUrl = tab.url; + var url = new URL(tab.url) + var domain1 = url.hostname; + console.log("dom-" + domain1); + var hostNameArray = domain1.split("."); + + console.log(hostNameArray.length); var domain = getDomain(currentUrl); var name = domain.split('.')[0]; - //console.log("fff" + JSON.stringify()); - //var allurls = Object.keys(urls); - //console.log(allurls); - //allurls.forEach(function(url, index) { - //if (url === name) { var allurls = jsonData[name]; - //console.log(index); - //var pages = Object.values(urls)[index]; - var list = document.createElement("UL"); - var i=1; - var value=""; - allurls.forEach(function(page) { - console.log(Object.keys(page)[0]); - console.log(Object.values(page)[0]); - var input = document.createElement("INPUT"); - var linkObj = Object.values(page)[0]; - - input.setAttribute("type", "checkbox"); - input.setAttribute("value", Object.values(page)[0]); - input.setAttribute("name", "link"); - var id = Object.keys(page)[0]; - input.setAttribute("id", id); - - if (typeof linkObj === 'object') { - input.setAttribute("value", linkObj.url); - input.setAttribute("Alt", linkObj.alt); - if (currentUrl !== linkObj && linkObj.selected !== false) { - input.setAttribute("checked", true); + console.log(jsonData); + if(jsonData[name]){ + var list = document.createElement("UL"); + var i=1; + var value=""; + allurls.forEach(function(page) { + console.log(Object.keys(page)[0]); + console.log(Object.values(page)[0]); + var input = document.createElement("INPUT"); + var linkObj = Object.values(page)[0]; + input.setAttribute("type", "checkbox"); + input.setAttribute("value", Object.values(page)[0]); + input.setAttribute("name", "link"); + var id = Object.keys(page)[0]; + input.setAttribute("id", id); + + if (typeof linkObj === 'object') { + input.setAttribute("value", linkObj.url); + input.setAttribute("Alt", linkObj.alt); + if (currentUrl !== linkObj && linkObj.selected !== false) { + input.setAttribute("checked", true); + } + } else { + input.setAttribute("value", linkObj); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj[0]) { + input.setAttribute("checked", true); + } } - } else { - input.setAttribute("value", linkObj); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj[0]) { - input.setAttribute("checked", true); - } - } - - - var label = document.createElement('label'); - label.htmlFor = id; - label.appendChild(document.createTextNode(id)); - list.appendChild(input); - list.appendChild(label); - var line = document.createElement('br'); - list.appendChild(line); - - - }); - content.appendChild(list); - //} - //}); + var label = document.createElement('label'); + label.htmlFor = id; + label.appendChild(document.createTextNode(id)); + list.appendChild(input); + list.appendChild(label); + var line = document.createElement('br'); + list.appendChild(line); + }); + content.appendChild(list); + } else { + var text = document.createTextNode("Domain not set in preference."); + content.appendChild(text); + } }); }); @@ -174,7 +148,7 @@ function getCurrentTabUrl(callback) { chrome.tabs.query(queryInfo, function (tabs) { var tab = tabs[0]; - // var url = tab.url; + //var url = tab.url; currentTab = tab; callback(tab); }); diff --git a/popup_new.js b/popup_new.js new file mode 100644 index 0000000..84cf6e1 --- /dev/null +++ b/popup_new.js @@ -0,0 +1,181 @@ +var jsonData; +var currentTab; + +var xhr = new XMLHttpRequest(); +xhr.open('GET', chrome.extension.getURL('pages.json'), true); +xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + console.log(xhr.responseText); + jsonData = JSON.parse(xhr.responseText); + } +}; +xhr.send(); + + + +function closeWindow (e) { + window.close(); +} + +function clickHandler(e) { + + + var allUrls = document.getElementsByName("link"); + var urlsToOpen = []; + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + } + }); + // alert("kkk" + urlsToOpen); + // var firstUrl = urlsToOpen.shift(); + + var pos = currentTab.index + 1; + urlsToOpen.forEach(function (url) { + chrome.tabs.create({url: url, active : false, index: pos++}); + }); + + // chrome.tabs.create({url: firstUrl, active : false}, function (tab) { + // alert(firstUrl); + + // urlsToOpen.forEach(function (url) { + // chrome.tabs.create({url: url, active : false}); + // }); + + // chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { + // alert("in update"); + // alert(tab.url + "kkk" + firstUrl); + + /*if (tab.url === firstUrl && changeInfo.status == 'complete') {*/ + // alert('done'); + // urlsToOpen.forEach(function (toOpen){ + // chrome.tabs.create({url: toOpen, active : false}); + // }); + //return; + //} + // }); + // }); + // alert(" first" + firstUrl); + + window.close(); +} +function openTab(urlToOpen) { + chrome.tabs.create({url: urlToOpen, active : false}); + chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { + // alert("in update"); + // alert(tab.url + "kkk" + urlToOpen); + + if (tab.url === urlToOpen && changeInfo.status == 'complete') { + alert('done'); + return; + } + }); + +} + +document.addEventListener('DOMContentLoaded', function () { + document.getElementById('cancelbtn').addEventListener('click', closeWindow); + document.getElementById('openbtn').addEventListener('click', clickHandler); + + var content = document.getElementById('content'); + chrome.tabs.getCurrent(function (callback) { + console.log(callback); + }); + + chrome.tabs.getSelected(null, function(tab){ + console.log(tab); + }); + + getCurrentTabUrl(function(tab) { + var currentUrl = tab.url; + var domain = getDomain(currentUrl); + var name = domain.split('.')[0]; + //console.log("fff" + JSON.stringify()); + //var allurls = Object.keys(urls); + //console.log(allurls); + //allurls.forEach(function(url, index) { + //if (url === name) { + var allurls = jsonData[name]; + //console.log(index); + //var pages = Object.values(urls)[index]; + var list = document.createElement("UL"); + var i=1; + var value=""; + allurls.forEach(function(page) { + console.log(Object.keys(page)[0]); + console.log(Object.values(page)[0]); + var input = document.createElement("INPUT"); + var linkObj = Object.values(page)[0]; + + input.setAttribute("type", "checkbox"); + input.setAttribute("value", Object.values(page)[0]); + input.setAttribute("name", "link"); + var id = Object.keys(page)[0]; + input.setAttribute("id", id); + + if (typeof linkObj === 'object') { + input.setAttribute("value", linkObj.url); + input.setAttribute("Alt", linkObj.alt); + if (currentUrl !== linkObj && linkObj.selected !== false) { + input.setAttribute("checked", true); + } + } else { + input.setAttribute("value", linkObj); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj[0]) { + input.setAttribute("checked", true); + } + } + + + var label = document.createElement('label'); + label.htmlFor = id; + label.appendChild(document.createTextNode(id)); + list.appendChild(input); + list.appendChild(label); + var line = document.createElement('br'); + list.appendChild(line); + + + }); + content.appendChild(list); + //} + //}); + }); + +}); + +function getDomain(url, subdomain) { + subdomain = subdomain || false; + + url = url.replace(/(https?:\/\/)?(www.)?/i, ''); + + if (!subdomain) { + url = url.split('.'); + + url = url.slice(url.length - 2).join('.'); + } + + if (url.indexOf('/') !== -1) { + return url.split('/')[0]; + } + + return url; +} + +function getCurrentTabUrl(callback) { + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function (tabs) { + + var tab = tabs[0]; + // var url = tab.url; + currentTab = tab; + callback(tab); + }); +} \ No newline at end of file From 6e2c188cbccfd2d7e6326fe5eec584de84ad4d3d Mon Sep 17 00:00:00 2001 From: gdev Date: Fri, 5 May 2017 09:35:12 -0500 Subject: [PATCH 08/33] Modified background.js, put logic for lastTab. --- background.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/background.js b/background.js index 7cf7d0d..512f199 100644 --- a/background.js +++ b/background.js @@ -23,22 +23,26 @@ chrome.storage.onChanged.addListener(function(changes, area) { openAt ++; //console.log(JSON.stringify(tab)); var firstPage = tab.id; + var lastTab = tab.id; chrome.tabs.onUpdated.addListener(function(tabId , info) { //console.log(tabId + "" + JSON.stringify(info)); - if (info.status == "complete" && tabId === tab.id) { + if (info.status == "complete" && tabId === lastTab && urls.length > 1) { //console.log("length" + urls.length); chrome.tabs.update(firstPage, {active: true}); - if (urls.length > 1) { urls.shift(); - //console.log("after shift" + urls); - urls.forEach(function(page){ - //console.log(page); - chrome.tabs.create({url: page, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - }); + chrome.tabs.create({url: urls[0], active : false, index: openAt}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + openAt ++; }); - } + //console.log("after shift" + urls); + // urls.forEach(function(page) { + // //console.log(page); + // chrome.tabs.create({url: page, active : !tabsBackground, index: openAt}, function(tab){ + // tabToHilite.push(tab.index); + // openAt ++; + // }); + // }); //console.log("i m complete"); } }); From 41280500c122e72707ff8106c74f576e451b4b51 Mon Sep 17 00:00:00 2001 From: gdev Date: Mon, 8 May 2017 17:45:21 -0500 Subject: [PATCH 09/33] Modified popup.js, added image from favicon. --- manifest.json | 21 +++++++++++---------- popup.html | 11 +++++++---- popup.js | 50 ++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 58 insertions(+), 24 deletions(-) diff --git a/manifest.json b/manifest.json index c89f0fa..77e01ee 100644 --- a/manifest.json +++ b/manifest.json @@ -6,15 +6,16 @@ "tabs", "activeTab", "commands", - "storage" + "storage", + "background", + "chrome://favicon/" ], "options_ui": { "page": "options.html", "chrome_style": true }, - "background": { - "scripts": ["popup.js", "taborola.js", "background.js"], - "persistent": false + "background": { + "scripts": ["background.js"] }, "commands": { "toggle-feature": { @@ -25,15 +26,15 @@ }, "_execute_browser_action": { "suggested_key": { - "default": "Ctrl+Shift+F", - "mac": "MacCtrl+Shift+F" + "default": "Ctrl+Shift+S", + "mac": "MacCtrl+Shift+S" } } }, "browser_action": { - "default_title": "Set this page's color.", - "default_icon": "icon.png", - "default_popup": "popup.html" + "default_title": "Open my pages.", + "default_icon": "icon.png", + "default_popup": "popup.html" }, "manifest_version": 2 -} +} \ No newline at end of file diff --git a/popup.html b/popup.html index 56ad5c2..c93093b 100644 --- a/popup.html +++ b/popup.html @@ -19,10 +19,13 @@
- -
- - +
+
+ All + + +
+
diff --git a/popup.js b/popup.js index b064dcd..62f1f36 100644 --- a/popup.js +++ b/popup.js @@ -7,16 +7,18 @@ var options = ['tabsBackground', 'highlightTabs', 'jsonData'] /* var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('pages.json'), true); + xhr.open('GET', chrome.extension.getURL('chrome://favicon/http://www.amazon.in')); + xhr.responseType = "blob"; + xhr.onreadystatechange = function() { console.log("here"); if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { console.log(xhr.responseText); - jsonData = JSON.parse(xhr.responseText); + //var ico = JSON.parse(xhr.responseText); } }; - xhr.send(); - */ + xhr.send();*/ + chrome.storage.sync.get( options, function(items) { jsonData = items.jsonData; highlightTabs = items.highlightTabs; @@ -59,9 +61,27 @@ function clickHandler(e) { window.close(); } +function selectall () { + var allUrls = document.getElementsByName("link"); + if (document.getElementById('selectall').checked) { + allUrls.forEach (function (url) { + url.checked = true; + }); + } else { + allUrls.forEach (function (url) { + url.checked = false; + }); + } + + +} + + + document.addEventListener('DOMContentLoaded', function () { document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); + document.getElementById('selectall').addEventListener('click', selectall); var content = document.getElementById('content'); getCurrentTabUrl(function(tab) { @@ -77,7 +97,9 @@ document.addEventListener('DOMContentLoaded', function () { var allurls = jsonData[name]; console.log(jsonData); if(jsonData[name]){ - var list = document.createElement("UL"); + var list = document.createElement("OL"); + // list.setAttribute("style", "list-style-type:1"); + list.setAttribute("type", "1"); var i=1; var value=""; allurls.forEach(function(page) { @@ -107,10 +129,18 @@ document.addEventListener('DOMContentLoaded', function () { var label = document.createElement('label'); label.htmlFor = id; label.appendChild(document.createTextNode(id)); - list.appendChild(input); - list.appendChild(label); - var line = document.createElement('br'); - list.appendChild(line); + var li = document.createElement("LI"); + + list.appendChild(li); + li.appendChild(input); + li.appendChild(label); + var x = document.createElement("IMG"); + x.setAttribute("src", 'chrome://favicon/http://'+ domain1); + x.setAttribute("width", "20"); + x.setAttribute("height", "12"); + li.appendChild(x); + // var line = document.createElement('br'); + // list.appendChild(line); }); content.appendChild(list); } else { @@ -145,7 +175,7 @@ function getCurrentTabUrl(callback) { currentWindow: true }; - chrome.tabs.query(queryInfo, function (tabs) { + chrome.tabs.query(queryInfo, function(tabs) { var tab = tabs[0]; //var url = tab.url; From 430126cc71f3c0bfdb0583d0323486b3937917d9 Mon Sep 17 00:00:00 2001 From: gdev Date: Wed, 24 May 2017 18:23:49 -0500 Subject: [PATCH 10/33] Modified popup.js, background.js added same tab logic. --- background.js | 85 ++++++++--------- popup.html | 7 +- popup.js | 255 ++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 250 insertions(+), 97 deletions(-) diff --git a/background.js b/background.js index 512f199..def873a 100644 --- a/background.js +++ b/background.js @@ -4,7 +4,7 @@ var highlightTabs; var tabsBackground; -var options = ['tabsBackground', 'highlightTabs'] +var options = ['tabsBackground', 'highlightTabs']; chrome.storage.sync.get( options, function(items) { highlightTabs = items.highlightTabs; @@ -14,53 +14,50 @@ chrome.storage.sync.get( options, function(items) { chrome.storage.onChanged.addListener(function(changes, area) { console.log("in bkgd page" + JSON.stringify(changes)); if (area == "sync" && "urlsToOpen" in changes) { - var currTab; - var tabToHilite = [changes.currTab.newValue.index]; - var openAt = changes.currTab.newValue.index + 1; var urls = changes.urlsToOpen.newValue; - chrome.tabs.create({url: urls[0], active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - //console.log(JSON.stringify(tab)); - var firstPage = tab.id; - var lastTab = tab.id; - chrome.tabs.onUpdated.addListener(function(tabId , info) { - //console.log(tabId + "" + JSON.stringify(info)); - if (info.status == "complete" && tabId === lastTab && urls.length > 1) { - //console.log("length" + urls.length); - chrome.tabs.update(firstPage, {active: true}); - urls.shift(); - chrome.tabs.create({url: urls[0], active : false, index: openAt}, function(tab) { - lastTab = tab.id; - tabToHilite.push(tab.index); - openAt ++; - }); - //console.log("after shift" + urls); - // urls.forEach(function(page) { - // //console.log(page); - // chrome.tabs.create({url: page, active : !tabsBackground, index: openAt}, function(tab){ - // tabToHilite.push(tab.index); - // openAt ++; - // }); - // }); - //console.log("i m complete"); - } - }); - }); - /*urls.forEach(function (url) { - console.log(url); + console.log(typeof urls != "undefined"); + console.log(urls != null); + console.log(urls.length); + if(typeof urls != "undefined" && urls != null && urls.length > 0){ + var currTab; + var tabToHilite = [changes.currTab.newValue.index]; + var openAt = changes.currTab.newValue.index; + if (!changes.opnSmeWin.newValue) { + openAt ++; + chrome.tabs.create({url: urls[0], active : !tabsBackground, index: parseInt(openAt)}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + //console.log(JSON.stringify(tab)); + var firstPage = tab.id; + var lastTab = tab.id; + chrome.tabs.onUpdated.addListener(function(tabId , info) { + //console.log(tabId + "" + JSON.stringify(info)); + if (info.status === "complete" && tabId === lastTab && urls.length > 1) { + //console.log("length" + urls.length); + chrome.tabs.update(firstPage, {active: true}); + urls.shift(); + chrome.tabs.create({url: urls[0], active : false, index: parseInt(openAt)}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + openAt ++; + }); + } + }); + }); + } else { + chrome.tabs.update(changes.currTab.newValue.id, {url: urls[0]}); + } + if (highlightTabs) { + chrome.tabs.highlight({"tabs": tabToHilite}, function(){ + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + } - - - - });*/ - if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite}, function(){}); } - - chrome.storage.sync.set({"urlsToOpen": [], currTab : ""}, function() { - }); + chrome.storage.sync.set({"urlsToOpen": [], "currTab" : "", "opnSmeWin" : ""}, function() {}); } diff --git a/popup.html b/popup.html index c93093b..57fc331 100644 --- a/popup.html +++ b/popup.html @@ -20,9 +20,10 @@
-
- All - + All +
+ +
diff --git a/popup.js b/popup.js index 62f1f36..18f5166 100644 --- a/popup.js +++ b/popup.js @@ -2,6 +2,7 @@ var jsonData; var currentTab; var highlightTabs; var tabsBackground; +var currentUrl; var options = ['tabsBackground', 'highlightTabs', 'jsonData'] @@ -40,19 +41,26 @@ function clickHandler(e) { console.log(url); if (url.checked) { urlsToOpen.push(url.value); + console.log("came till here"); /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ tabToHilite.push(tab.index); openAt ++; });*/ + } else { + console.log("came till here in else"); } }); /*if (highlightTabs) { chrome.tabs.highlight({tabs: tabToHilite}, function(){}); }*/ - chrome.storage.sync.set({"urlsToOpen": urlsToOpen, currTab : currentTab}, function() { + var opnSmeWindw = document.getElementById("samewindowChkbx").checked; + chrome.storage.sync.set({"urlsToOpen": urlsToOpen, "currTab": currentTab, "opnSmeWin": opnSmeWindw}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } }); @@ -66,18 +74,87 @@ function selectall () { if (document.getElementById('selectall').checked) { allUrls.forEach (function (url) { url.checked = true; + url.nextSibling.nextSibling.style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + document.getElementById("samewindow").hidden = true; + document.getElementById("samewindowChkbx").checked = false; }); } else { allUrls.forEach (function (url) { url.checked = false; + console.log(url.parentNode); + url.nextSibling.nextSibling.style.fontWeight = "normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("samewindow").hidden = true; + document.getElementById("samewindowChkbx").checked = false; }); } } +function chkBoxClick (ele) { + console.log(this.labels[0].innerHTML); + var currNode = this; + var none = true; + if (this.checked) { + this.labels[0].style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + //var liList = this.parentNode.parentNode.childNodes; + //console.log(liList.length); + + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + none = false; + return; + } + + }); + if (none) { + console.log("only one"); + document.getElementById("samewindow").hidden = false; + document.getElementById("samewindowChkbx").checked = true; + } else { + document.getElementById("samewindow").hidden = true; + document.getElementById("samewindowChkbx").checked = false; + } + } else { + this.labels[0].style.fontWeight="normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("samewindow").hidden = true; + document.getElementById("samewindowChkbx").checked = false; + if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { + document.getElementById("openbtn").disabled = false; + } + if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { + console.log("more than one checked"); + document.getElementById("samewindow").hidden = true; + document.getElementById("samewindowChkbx").checked = false; + } else { + document.getElementById("samewindow").hidden = false; + document.getElementById("samewindowChkbx").checked = true; + } + } +} +function atleastOneChecked(chkBoxNodes) { + console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked); +} +function moreThanOneChecked(liNodes) { + var n = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + n ++; + } + }); + if (n === 0 || n > 1 ) { + return true; + } else { + return false; + } +} document.addEventListener('DOMContentLoaded', function () { document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); @@ -85,7 +162,7 @@ document.addEventListener('DOMContentLoaded', function () { var content = document.getElementById('content'); getCurrentTabUrl(function(tab) { - var currentUrl = tab.url; + currentUrl = tab.url; var url = new URL(tab.url) var domain1 = url.hostname; console.log("dom-" + domain1); @@ -94,63 +171,141 @@ document.addEventListener('DOMContentLoaded', function () { console.log(hostNameArray.length); var domain = getDomain(currentUrl); var name = domain.split('.')[0]; - var allurls = jsonData[name]; + var prefForDom = jsonData[name]; console.log(jsonData); + console.log(prefForDom); if(jsonData[name]){ - var list = document.createElement("OL"); - // list.setAttribute("style", "list-style-type:1"); - list.setAttribute("type", "1"); - var i=1; - var value=""; - allurls.forEach(function(page) { - console.log(Object.keys(page)[0]); - console.log(Object.values(page)[0]); - var input = document.createElement("INPUT"); - var linkObj = Object.values(page)[0]; - input.setAttribute("type", "checkbox"); - input.setAttribute("value", Object.values(page)[0]); - input.setAttribute("name", "link"); - var id = Object.keys(page)[0]; - input.setAttribute("id", id); - - if (typeof linkObj === 'object') { - input.setAttribute("value", linkObj.url); - input.setAttribute("Alt", linkObj.alt); - if (currentUrl !== linkObj && linkObj.selected !== false) { - input.setAttribute("checked", true); - } - } else { - input.setAttribute("value", linkObj); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj[0]) { - input.setAttribute("checked", true); - } - } - var label = document.createElement('label'); - label.htmlFor = id; - label.appendChild(document.createTextNode(id)); - var li = document.createElement("LI"); - - list.appendChild(li); - li.appendChild(input); - li.appendChild(label); - var x = document.createElement("IMG"); - x.setAttribute("src", 'chrome://favicon/http://'+ domain1); - x.setAttribute("width", "20"); - x.setAttribute("height", "12"); - li.appendChild(x); - // var line = document.createElement('br'); - // list.appendChild(line); - }); - content.appendChild(list); + //console.log(typeof allurls); + if (Array.isArray(prefForDom)) { + content.appendChild(createList(prefForDom)); + } else { + content.appendChild(createDropDown(prefForDom, name)); + var type = document.getElementById("typeSelect"); + type.style.marginLeft = "25px"; + var selectedType = type.options[type.selectedIndex].value; + content.appendChild(createList(prefForDom[selectedType])); + } + //document.getElementsByName("link").addEventListener('click', chkBoxClick); + } else { var text = document.createTextNode("Domain not set in preference."); content.appendChild(text); + //document.getElementById('typeSelect').addEventListener('changed', selectOption); } + }); + console.log("margin" + document.getElementById("selectall").style.margin); + }); +function createList(allurls) { + + var list = document.createElement("OL"); + list.setAttribute("type", "1"); + list.setAttribute("id", "orderedList"); + //list.setAttribute("") + list.style.align = "right"; + var i=1; + var value=""; + var bgColor = "#F4F6F7"; + allurls.forEach(function(page) { + console.log(Object.keys(page)[0]); + console.log(Object.values(page)[0]); + var input = document.createElement("INPUT"); + var linkObj = Object.values(page)[0]; + input.setAttribute("type", "checkbox"); + input.setAttribute("value", Object.values(page)[0]); + input.setAttribute("name", "link"); + var id = Object.keys(page)[0]; + input.setAttribute("id", id); + input.onclick = chkBoxClick; + + if (typeof linkObj === 'object') { + input.setAttribute("value", linkObj.url); + input.setAttribute("Alt", linkObj.alt); + if (currentUrl !== linkObj && linkObj.selected !== false) { + input.setAttribute("checked", true); + } + } else { + input.setAttribute("value", linkObj); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj[0]) { + input.setAttribute("checked", true); + } + } + var li = document.createElement("LI"); + li.style.backgroundColor = bgColor; + //li.setAttribute("background-color" , "#FFFEEC"); + var logo = document.createElement("IMG"); + console.log("link " + Object.values(page)[0]); + logo.setAttribute("src", 'chrome://favicon/'+ Object.values(page)[0]); + logo.setAttribute("width", "20"); + logo.setAttribute("height", "12"); + var label = document.createElement('label'); + label.htmlFor = id; + label.style.fontWeight = "bold"; + label.appendChild(document.createTextNode(id)); + + + list.appendChild(li); + li.appendChild(input); + li.appendChild(logo); + li.appendChild(label); + //list.appendChild(input); + //list.appendChild(logo); + //list.appendChild(label); + //var line = document.createElement('br'); + //list.appendChild(line); + if (bgColor === "#F4F6F7") {//ECF0F1 + bgColor = "#FFFFFF"; + } else { + bgColor = "#F4F6F7"; + } + }); + return list; + + +} + +function selectOption() { + var content = document.getElementById('content'); + var orderedList = document.getElementById('orderedList'); + if (orderedList) { + content.removeChild(orderedList); + } + + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = jsonData[type.name]; + if (Array.isArray(allTypes[selectedType])){ + content.appendChild(createList(allTypes[selectedType])); + } +} + + +function createDropDown (data, hierarchy) { + var dropDown = document.createElement("SELECT"); + dropDown.setAttribute("id", "typeSelect"); + dropDown.setAttribute("name", hierarchy); + var keys = Object.keys(data); + keys.forEach(function (optn) { + var options = document.createElement("option"); + options.setAttribute("value", optn); + options.setAttribute("id", optn); + var txt = document.createTextNode(optn); + options.appendChild(txt); + if (optn.indexOf("default") > -1) { + options.selected = true; + } + dropDown.appendChild(options); + }); + dropDown.onchange = selectOption; + return dropDown; + +} + function getDomain(url, subdomain) { subdomain = subdomain || false; @@ -182,4 +337,4 @@ function getCurrentTabUrl(callback) { currentTab = tab; callback(tab); }); -} \ No newline at end of file +} From e5c4cfb7e7411bd37ddb33c30391877c2b30ac66 Mon Sep 17 00:00:00 2001 From: gdev Date: Mon, 12 Jun 2017 18:06:50 -0500 Subject: [PATCH 11/33] Modified popup.js, background.js. --- Gruntfile.js | 24 ++++++ README.md | 99 ++++++++++++++++++++++- background.js | 71 ++++++++++------- options.html | 2 +- options.js | 6 ++ package.json | 28 +++++++ popup.html | 12 +-- popup.js | 215 +++++++++++++++++++++++++++++++++++++++----------- 8 files changed, 375 insertions(+), 82 deletions(-) create mode 100644 Gruntfile.js create mode 100644 package.json diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..ffe564a --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,24 @@ +module.exports = function(grunt) { + + grunt.initConfig({ + jshint: { + files: ['Gruntfile.js', '*.js', 'test/**/*.js'], + options: { + esversion: 6, + globals: { + jQuery: true + } + } + }, + watch: { + files: ['<%= jshint.files %>'], + tasks: ['jshint'] + } + }); + + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + grunt.registerTask('default', ['jshint']); + +}; \ No newline at end of file diff --git a/README.md b/README.md index 1bc73bd..667edd1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,97 @@ -# taborola -This is a chrome extensions that will open tabs based on the current tab +# mypages +This is a chrome extensions that will open users favourite pages, that are already configured, +based on the current tab. + +User has to configure ones favourite web pages in json format. +For example: + + + { + "cnn": [ + {"Regions": "http://edition.cnn.com/regions"}, + {"Politics": "http://edition.cnn.com/politics"}, + {"selected": false, + "International": "http://money.cnn.com/INTERNATIONAL/"}, + {"Entertainment": "http://edition.cnn.com/entertainment"}, + {"Technology": "http://money.cnn.com/technology/"}] + } + + or + { + "cnn": [ + "http://edition.cnn.com/regions", + "http://edition.cnn.com/politics", + "http://money.cnn.com/INTERNATIONAL/", + "http://edition.cnn.com/entertainment", + "http://money.cnn.com/technology/"] + } + + "finance.yahoo.com": [ + { + "NASDAQ": { + "selected": false, + "url": "https://finance.yahoo.com/chart/^IXIC" + } + }, + { + "NFLX": "https://finance.yahoo.com/chart/NFLX" + } + ] + + or +"yahoo": [ + + { + "GOOGL": "https://finance.yahoo.com/chart/GOOGL" + }, + { + "AAPL": "https://finance.yahoo.com/chart/AAPL" + }, + { + "PCLN": "https://finance.yahoo.com/chart/PCLN" + }, + { + "FB": "https://finance.yahoo.com/chart/FB" + }, + { + "SIRI": "https://finance.yahoo.com/chart/SIRI" + }] + +The name of the website from which the popup is invoked, is matched with the names on the +first level(ex: amazon, cnn etc). + +If a match is found and is an array, the url names(keys) are lsited. +All the url names are selected by default, unless it is mantioned as "selected": false. + +If the match is an object, the first level of keys will be displayed as a dropdown. +The item metioned as default will be selected and the sub items will be displayed as a list of checkboxes. +The on which "default" is specified will be selected on load of the popup page. + +If the plugin is invoked from https://in.finance.yahoo.com/ +"in.finance.yahoo.com" will be matched first, if not found, items under "yahoo" will be displayed. + +If you want to add the current page to the configuration, click on the add button. +When there is some option selected, the url gets added to that option. + +when multiple urls are seleted for opening, all the urls start loading only after the 1st url +is completely loaded. One can work in this page untill the rest of the urls are opened. + +If only one of the urls is to be opened, one can straight away click on the url itself. +If this page needs to be opened in the same tab, one can select only this url, and select the "open in same tab". + +All the tabs with same base url, will be highlighted. This is configurable in the options page. +Option to open tabs in the background can also be configured here. + + + + + + + + + + + + + + diff --git a/background.js b/background.js index def873a..b529b51 100644 --- a/background.js +++ b/background.js @@ -3,6 +3,7 @@ */ var highlightTabs; var tabsBackground; +var currWindow; var options = ['tabsBackground', 'highlightTabs']; @@ -10,46 +11,59 @@ chrome.storage.sync.get( options, function(items) { highlightTabs = items.highlightTabs; tabsBackground = items.tabsBackground; }); +chrome.windows.getCurrent(function(win){ + currWindow = win.id; +}); +chrome.storage.sync.get(function(data) { + console.log("data sync " + JSON.stringify(data)); +}); chrome.storage.onChanged.addListener(function(changes, area) { console.log("in bkgd page" + JSON.stringify(changes)); + //console.log("currWindow from bkg" + currWindow); + if (area == "sync" && "urlsToOpen" in changes) { var urls = changes.urlsToOpen.newValue; - console.log(typeof urls != "undefined"); - console.log(urls != null); - console.log(urls.length); - if(typeof urls != "undefined" && urls != null && urls.length > 0){ - var currTab; + if (typeof urls != "undefined" && urls !== null && urls.length > 0) { var tabToHilite = [changes.currTab.newValue.index]; var openAt = changes.currTab.newValue.index; - if (!changes.opnSmeWin.newValue) { - openAt ++; - chrome.tabs.create({url: urls[0], active : !tabsBackground, index: parseInt(openAt)}, function(tab){ - tabToHilite.push(tab.index); + var invokedWind = changes.invokedWindow.newValue; + console.log("invoked from" + invokedWind + "\n urls-" + urls.length); + if (!changes.opnSmeTb.newValue) { + if (Array.isArray(urls)) { openAt ++; - //console.log(JSON.stringify(tab)); - var firstPage = tab.id; - var lastTab = tab.id; - chrome.tabs.onUpdated.addListener(function(tabId , info) { - //console.log(tabId + "" + JSON.stringify(info)); - if (info.status === "complete" && tabId === lastTab && urls.length > 1) { - //console.log("length" + urls.length); - chrome.tabs.update(firstPage, {active: true}); - urls.shift(); - chrome.tabs.create({url: urls[0], active : false, index: parseInt(openAt)}, function(tab) { - lastTab = tab.id; - tabToHilite.push(tab.index); - openAt ++; - }); - } + chrome.tabs.create({url: urls[0], active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + //console.log(JSON.stringify(tab)); + var firstPage = tab.id; + var lastTab = tab.id; + chrome.tabs.onUpdated.addListener(function(tabId , info) { + //console.log(tabId + "" + JSON.stringify(info)); + if (info.status === "complete" && tabId === lastTab && urls.length > 1) { + //console.log("length" + urls.length); + chrome.tabs.update(firstPage, {active: true}); + urls.shift(); + chrome.tabs.create({url: urls[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + openAt ++; + }); + } + }); }); - }); + } else { + openAt ++; + chrome.tabs.create({url: urls, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ + tabToHilite.push(tab.index); + }); + } } else { chrome.tabs.update(changes.currTab.newValue.id, {url: urls[0]}); } if (highlightTabs) { - chrome.tabs.highlight({"tabs": tabToHilite}, function(){ + chrome.tabs.highlight({tabs: tabToHilite, windowId: invokedWind}, function(){ if (chrome.runtime.error) { console.log("Runtime error."); } @@ -57,9 +71,12 @@ chrome.storage.onChanged.addListener(function(changes, area) { } } - chrome.storage.sync.set({"urlsToOpen": [], "currTab" : "", "opnSmeWin" : ""}, function() {}); + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); } + if (chrome.runtime.error) { + console.log("ddd Runtime error."); + } }); diff --git a/options.html b/options.html index ad65858..4c90b9f 100644 --- a/options.html +++ b/options.html @@ -7,7 +7,7 @@ - + + +
diff --git a/popup.js b/popup.js index 18f5166..0d91108 100644 --- a/popup.js +++ b/popup.js @@ -3,8 +3,9 @@ var currentTab; var highlightTabs; var tabsBackground; var currentUrl; +var invokedWindow; -var options = ['tabsBackground', 'highlightTabs', 'jsonData'] +var options = ['tabsBackground', 'highlightTabs', 'jsonData']; /* var xhr = new XMLHttpRequest(); @@ -33,10 +34,10 @@ function closeWindow (e) { function clickHandler(e) { - var allUrls = document.getElementsByName("link"); - var urlsToOpen = []; - var tabToHilite = [currentTab.index]; - var openAt = currentTab.index + 1; + const allUrls = document.getElementsByName("link"); + const urlsToOpen = []; + const tabToHilite = [currentTab.index]; + const openAt = currentTab.index + 1; allUrls.forEach (function (url) { console.log(url); if (url.checked) { @@ -46,8 +47,6 @@ function clickHandler(e) { tabToHilite.push(tab.index); openAt ++; });*/ - - } else { console.log("came till here in else"); } @@ -56,28 +55,25 @@ function clickHandler(e) { /*if (highlightTabs) { chrome.tabs.highlight({tabs: tabToHilite}, function(){}); }*/ - var opnSmeWindw = document.getElementById("samewindowChkbx").checked; - chrome.storage.sync.set({"urlsToOpen": urlsToOpen, "currTab": currentTab, "opnSmeWin": opnSmeWindw}, function() { + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); + var opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab}, function() { if (chrome.runtime.error) { console.log("Runtime error."); } }); - - - - window.close(); } function selectall () { - var allUrls = document.getElementsByName("link"); + const allUrls = document.getElementsByName("link"); if (document.getElementById('selectall').checked) { allUrls.forEach (function (url) { url.checked = true; url.nextSibling.nextSibling.style.fontWeight = "bold"; document.getElementById("openbtn").disabled = false; - document.getElementById("samewindow").hidden = true; - document.getElementById("samewindowChkbx").checked = false; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; }); } else { allUrls.forEach (function (url) { @@ -85,14 +81,25 @@ function selectall () { console.log(url.parentNode); url.nextSibling.nextSibling.style.fontWeight = "normal"; document.getElementById("openbtn").disabled = true; - document.getElementById("samewindow").hidden = true; - document.getElementById("samewindowChkbx").checked = false; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; }); } } +function linkClick () { + console.log(this.href); + const opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); + chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); +} + function chkBoxClick (ele) { console.log(this.labels[0].innerHTML); var currNode = this; @@ -112,34 +119,43 @@ function chkBoxClick (ele) { }); if (none) { console.log("only one"); - document.getElementById("samewindow").hidden = false; - document.getElementById("samewindowChkbx").checked = true; + document.getElementById("sametab").hidden = false; + document.getElementById("sametabChkbx").checked = true; } else { - document.getElementById("samewindow").hidden = true; - document.getElementById("samewindowChkbx").checked = false; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; } } else { this.labels[0].style.fontWeight="normal"; document.getElementById("openbtn").disabled = true; - document.getElementById("samewindow").hidden = true; - document.getElementById("samewindowChkbx").checked = false; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { document.getElementById("openbtn").disabled = false; } if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { console.log("more than one checked"); - document.getElementById("samewindow").hidden = true; - document.getElementById("samewindowChkbx").checked = false; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; } else { - document.getElementById("samewindow").hidden = false; - document.getElementById("samewindowChkbx").checked = true; + document.getElementById("sametab").hidden = false; + document.getElementById("sametabChkbx").checked = true; } } } -function atleastOneChecked(chkBoxNodes) { - console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); - return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked); +function atleastOneChecked(liNodes) { + var chked = false; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked = true; + } + }); + + return chked; + + /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ } function moreThanOneChecked(liNodes) { @@ -155,33 +171,105 @@ function moreThanOneChecked(liNodes) { return false; } } + +function addUrl() { + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + var domain = getDomain(currentUrl); + var name = domain.split('.')[0]; + //var jsonObj = {}; + + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + //alert("before" + JSON.stringify(origObj)); + var prefForDom = origObj[fullDomain]; + if (prefForDom === undefined) { + prefForDom = origObj[name]; + } + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + prefForDom.push(currentUrl); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + options[selectedType].push(currentUrl); + } + } + + + } else { + origObj[name] = [currentUrl]; + } + //origObj[name] = [currentUrl]; + console.log(JSON.stringify(origObj)); + //jsonObj = items; + //console.log(JSON.stringify(jsonObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); +//console.log("outside -- " + JSON.stringify(jsonObj)); + + }); +} + + document.addEventListener('DOMContentLoaded', function () { document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); document.getElementById('selectall').addEventListener('click', selectall); + document.getElementById('addbtn').addEventListener('click', addUrl); + var content = document.getElementById('content'); getCurrentTabUrl(function(tab) { currentUrl = tab.url; - var url = new URL(tab.url) - var domain1 = url.hostname; - console.log("dom-" + domain1); - var hostNameArray = domain1.split("."); + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var hostNameArray = fullDomain.split("."); console.log(hostNameArray.length); var domain = getDomain(currentUrl); var name = domain.split('.')[0]; - var prefForDom = jsonData[name]; + console.log("name --" + name); + var prefForDom = jsonData[url.hostname] || jsonData[name]; + console.log(jsonData); console.log(prefForDom); - if(jsonData[name]){ + if(prefForDom){ //console.log(typeof allurls); if (Array.isArray(prefForDom)) { content.appendChild(createList(prefForDom)); } else { content.appendChild(createDropDown(prefForDom, name)); + var label = document.createElement('label'); + var txt = document.createTextNode("Options "); + label.setAttribute("for", "typeSelect"); + label.appendChild(txt); + label.style.marginLeft = "25px"; + content.insertBefore(label,document.getElementById("typeSelect")); var type = document.getElementById("typeSelect"); - type.style.marginLeft = "25px"; + //type.style.marginLeft = "25px"; var selectedType = type.options[type.selectedIndex].value; content.appendChild(createList(prefForDom[selectedType])); } @@ -189,13 +277,18 @@ document.addEventListener('DOMContentLoaded', function () { } else { var text = document.createTextNode("Domain not set in preference."); + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + + //document.getElementById('addbtn').hidden = ""; content.appendChild(text); //document.getElementById('typeSelect').addEventListener('changed', selectOption); } }); - console.log("margin" + document.getElementById("selectall").style.margin); + //console.log("margin" + document.getElementById("selectall").style.margin); }); @@ -209,15 +302,30 @@ function createList(allurls) { var i=1; var value=""; var bgColor = "#F4F6F7"; + allurls.forEach(function(page) { - console.log(Object.keys(page)[0]); - console.log(Object.values(page)[0]); + console.log("in createList " + JSON.stringify(page)); + //console.log(Object.keys(page)); + //console.log(Object.values(page)); + var linkObj, key; + if (typeof page === 'object') { + console.log("has key value"); + linkObj = Object.values(page)[0]; + key = Object.keys(page)[0]; + } else { + var pageParts = page.split('/'); + console.log(pageParts.length); + console.log(pageParts[pageParts.length - 1] ); + console.log(); + linkObj = page; + key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; + } var input = document.createElement("INPUT"); - var linkObj = Object.values(page)[0]; + //var linkObj = Object.values(page)[0]; input.setAttribute("type", "checkbox"); - input.setAttribute("value", Object.values(page)[0]); + input.setAttribute("value", linkObj); input.setAttribute("name", "link"); - var id = Object.keys(page)[0]; + var id = key; //Object.keys(page)[0]; input.setAttribute("id", id); input.onclick = chkBoxClick; @@ -239,13 +347,18 @@ function createList(allurls) { //li.setAttribute("background-color" , "#FFFEEC"); var logo = document.createElement("IMG"); console.log("link " + Object.values(page)[0]); - logo.setAttribute("src", 'chrome://favicon/'+ Object.values(page)[0]); + logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); logo.setAttribute("width", "20"); logo.setAttribute("height", "12"); var label = document.createElement('label'); label.htmlFor = id; label.style.fontWeight = "bold"; - label.appendChild(document.createTextNode(id)); + + var link = document.createElement('a'); + link.textContent = id; + link.href = linkObj; //Object.values(page)[0]; + link.onclick = linkClick; + label.appendChild(link); list.appendChild(li); @@ -278,7 +391,10 @@ function selectOption() { var type = document.getElementById("typeSelect"); var selectedType = type.options[type.selectedIndex].value; - var allTypes = jsonData[type.name]; + var url = new URL(currentUrl); + + var allTypes = jsonData[url.hostname] || jsonData[type.name]; + if (Array.isArray(allTypes[selectedType])){ content.appendChild(createList(allTypes[selectedType])); } @@ -337,4 +453,9 @@ function getCurrentTabUrl(callback) { currentTab = tab; callback(tab); }); + + chrome.windows.getCurrent(function(currentWindow) { + invokedWindow = currentWindow.id; + }); + } From 379f4c076a4f1c86b1076255ee0937b5fb19cb8f Mon Sep 17 00:00:00 2001 From: gdev Date: Thu, 15 Jun 2017 18:19:10 -0500 Subject: [PATCH 12/33] Modified popup.js, background.js. Added loading icons. --- background.js | 18 ++++++------ icons/ic_loop_black_24dp_1x.png | Bin 0 -> 250 bytes icons/ic_loop_black_24dp_2x.png | Bin 0 -> 467 bytes icons/ic_title_black_24dp_1x.png | Bin 0 -> 87 bytes icons/ic_title_black_24dp_2x.png | Bin 0 -> 103 bytes manifest.json | 4 +-- options.html | 3 ++ options.js | 8 ++++-- popup.html | 2 +- popup.js | 48 ++++++++++++++++++++----------- 10 files changed, 52 insertions(+), 31 deletions(-) create mode 100644 icons/ic_loop_black_24dp_1x.png create mode 100644 icons/ic_loop_black_24dp_2x.png create mode 100644 icons/ic_title_black_24dp_1x.png create mode 100644 icons/ic_title_black_24dp_2x.png diff --git a/background.js b/background.js index b529b51..4bc2d8a 100644 --- a/background.js +++ b/background.js @@ -16,10 +16,10 @@ chrome.windows.getCurrent(function(win){ }); chrome.storage.sync.get(function(data) { - console.log("data sync " + JSON.stringify(data)); + //console.log("data sync " + JSON.stringify(data)); }); chrome.storage.onChanged.addListener(function(changes, area) { - console.log("in bkgd page" + JSON.stringify(changes)); + //console.log("in bkgd page" + JSON.stringify(changes)); //console.log("currWindow from bkg" + currWindow); if (area == "sync" && "urlsToOpen" in changes) { @@ -38,8 +38,11 @@ chrome.storage.onChanged.addListener(function(changes, area) { //console.log(JSON.stringify(tab)); var firstPage = tab.id; var lastTab = tab.id; + console.log("reset"); + chrome.browserAction.setIcon({path:"icons/ic_loop_black_24dp_1x.png"}); chrome.tabs.onUpdated.addListener(function(tabId , info) { - //console.log(tabId + "" + JSON.stringify(info)); + console.log(tabId + "" + JSON.stringify(info)); + console.log("urls ln" + urls.length); if (info.status === "complete" && tabId === lastTab && urls.length > 1) { //console.log("length" + urls.length); chrome.tabs.update(firstPage, {active: true}); @@ -50,6 +53,9 @@ chrome.storage.onChanged.addListener(function(changes, area) { openAt ++; }); } + if (info.status === "complete" && tabId === lastTab && urls.length == 1) { + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + } }); }); } else { @@ -72,7 +78,6 @@ chrome.storage.onChanged.addListener(function(changes, area) { } chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); - } if (chrome.runtime.error) { console.log("ddd Runtime error."); @@ -80,8 +85,3 @@ chrome.storage.onChanged.addListener(function(changes, area) { }); -chrome.commands.onCommand.addListener(function(command) { - console.log('onCommand event received for message: ', command); - - -}); diff --git a/icons/ic_loop_black_24dp_1x.png b/icons/ic_loop_black_24dp_1x.png new file mode 100644 index 0000000000000000000000000000000000000000..9685e8e16561136ae1abf674d2d1019fea78ca1b GIT binary patch literal 250 zcmVjCCUMHOLgs0@uOIM+hc=c_OeCtYY$lmfH>|_qY(a5Lp zBC`?BMt+0`nYqvz>4i$B5_%&SVO?^iM%c@|3GYT~gU&Mf*o80860LBx0>q!>QEKKS zbPhJ=;$MP1X$|6brX|#l&bsLVpmeTu&enbW0-8ozYX{n?_5c6?07*qoM6N<$f=D}Y AIRF3v literal 0 HcmV?d00001 diff --git a/icons/ic_loop_black_24dp_2x.png b/icons/ic_loop_black_24dp_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..860a5db38b393009a7407ced8d9fec8da0b460e1 GIT binary patch literal 467 zcmV;^0WAKBP)Y8m235b4thfjq5s2xGL-&my=8Y}rO#iqNL_sAt7# zbGQi8aPN&dD}Q(UKmQ-YoO`)AM%MLWT`$)4VqGuR^3-I(3JalY4Vwc%W0i@p9B?ix{5h)DbUhjrRWQ zC$I66YjjKu6StQJ zPo5IU6w&jpC@59DAecvdaf&5rK~PjglW}m0Jwp-{q$)-COd;&Jrcaw1Qk^1WgA`Ad ziaHZcwhG9|xiJ$cDFbG#IB*wVAB%B4*7aD|V_lDRJ&d?8{sN$?X^Ds6w;2Ec002ov JPDHLkV1g1j%<2FD literal 0 HcmV?d00001 diff --git a/icons/ic_title_black_24dp_1x.png b/icons/ic_title_black_24dp_1x.png new file mode 100644 index 0000000000000000000000000000000000000000..ecabb62adefdd735b92f167886c5cce664d759c6 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1IZqeIkP60RiL?jyc^>(^GZrwe kS;4q}Q6TSPDK|!j6`j8O`!Do|0#!12y85}Sb4q9e067vC_y7O^ literal 0 HcmV?d00001 diff --git a/icons/ic_title_black_24dp_2x.png b/icons/ic_title_black_24dp_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bde46473000d22e877e1782cf504a5d92f7d5f8b GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tJx>?MkP61PX9F1-1Vj!v{PhlI w_`v*r8^d%J(^IpV8MNP60964&gLXrJrxw>bvm3@yS==BIPgg&ebxsLQ0CjK~3IG5A literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 77e01ee..3b1fb07 100644 --- a/manifest.json +++ b/manifest.json @@ -1,5 +1,5 @@ { - "name": "taborola", + "name": "mypages", "description": "Change the current tabs", "version": "1.0", "permissions": [ @@ -33,7 +33,7 @@ }, "browser_action": { "default_title": "Open my pages.", - "default_icon": "icon.png", + "default_icon": "icons/ic_title_black_24dp_1x.png", "default_popup": "popup.html" }, "manifest_version": 2 diff --git a/options.html b/options.html index 4c90b9f..b21a97d 100644 --- a/options.html +++ b/options.html @@ -25,6 +25,9 @@
Highlight tabs with same base url. +
+ + Select all pages. + + + diff --git a/popup.js b/popup.js index 59375a2..dcb3d92 100644 --- a/popup.js +++ b/popup.js @@ -391,6 +391,10 @@ function createList(allurls) { input.setAttribute("type", "checkbox"); input.setAttribute("value", linkObj); input.setAttribute("name", "link"); + if (currentUrl === linkObj) { + key = key + "(Current Tab)"; + console.log("kkk"+key); + } var id = key; //Object.keys(page)[0]; input.setAttribute("id", id); input.onclick = chkBoxClick; @@ -414,6 +418,8 @@ function createList(allurls) { if (currentUrl !== linkObj && linkObj.selected !== false && selectAll) { input.setAttribute("checked", true); label.style.fontWeight = "bold"; + } else { + console.log("llll" + label.getText); } } else { console.log("in else"); @@ -422,6 +428,8 @@ function createList(allurls) { if (currentUrl !== linkObj && selectAll) { input.setAttribute("checked", true); label.style.fontWeight = "bold"; + } else { + console.log("llll" + label.getText); } } @@ -449,8 +457,6 @@ function createList(allurls) { } }); return list; - - } function selectOption() { @@ -467,7 +473,7 @@ function selectOption() { var url = new URL(currentUrl); var allTypes = jsonData[url.hostname] || jsonData[type.name]; - if (Array.isArray(allTypes[selectedType])){ + if (Array.isArray(allTypes[selectedType])) { content.appendChild(createList(allTypes[selectedType])); } } @@ -531,4 +537,3 @@ function getCurrentTabUrl(callback) { }); } - \ No newline at end of file From 3ea7f0fd17a12c1b85da4ace6158ac52eb542400 Mon Sep 17 00:00:00 2001 From: gdev Date: Mon, 26 Jun 2017 18:24:39 -0500 Subject: [PATCH 15/33] Modified popup.js, background.js. Added loading icons. --- background.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/background.js b/background.js index 0c8df52..72e7bdf 100644 --- a/background.js +++ b/background.js @@ -20,13 +20,12 @@ var keep_switching_icon; function rotateIcon(rotate) { keep_switching_icon = rotate === undefined ? keep_switching_icon : rotate; + chrome.browserAction.setIcon({path: keep_switching_icon ? "icons/" + loading_images[image_index] : "icons/ic_title_black_24dp_1x.png"}); + if ( keep_switching_icon ) { - chrome.browserAction.setIcon({path: "icons/" + loading_images[image_index] }); image_index = (image_index + 1) % loading_images.length; window.setTimeout(rotateIcon, 300); - } else { - chrome.browserAction.setIcon({path: "icons/ic_title_black_24dp_1x.png"}); } } From 52dcf90f3d1d0699a227fe4e7c26b137dd34de25 Mon Sep 17 00:00:00 2001 From: gdev Date: Mon, 26 Jun 2017 18:29:52 -0500 Subject: [PATCH 16/33] Modified popup.js, background.js. Added loading icons. --- background.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/background.js b/background.js index 72e7bdf..b1be55c 100644 --- a/background.js +++ b/background.js @@ -20,11 +20,12 @@ var keep_switching_icon; function rotateIcon(rotate) { keep_switching_icon = rotate === undefined ? keep_switching_icon : rotate; - chrome.browserAction.setIcon({path: keep_switching_icon ? "icons/" + loading_images[image_index] : "icons/ic_title_black_24dp_1x.png"}); + const image = keep_switching_icon ? "icons/" + loading_images[image_index] : "icons/ic_title_black_24dp_1x.png"; + chrome.browserAction.setIcon({path: image}); + image_index = (image_index + 1) % loading_images.length; if ( keep_switching_icon ) { - image_index = (image_index + 1) % loading_images.length; window.setTimeout(rotateIcon, 300); } } From 293311583e53c2e61d59f3dcb87dea996e500af2 Mon Sep 17 00:00:00 2001 From: gdev Date: Fri, 30 Jun 2017 17:59:36 -0500 Subject: [PATCH 17/33] Modified popup.js, background.js added logic for onRemoved. --- background.js | 7 +++++++ popup.html | 4 +++- popup.js | 58 +++++++++++++++++++++++++++++++++++++-------------- 3 files changed, 52 insertions(+), 17 deletions(-) diff --git a/background.js b/background.js index b1be55c..c001d99 100644 --- a/background.js +++ b/background.js @@ -64,6 +64,13 @@ chrome.storage.onChanged.addListener(function(changes, area) { var lastTab = tab.id; console.log("reset"); rotateIcon(true); + chrome.tabs.onRemoved.addListener(function (tabId , info) { + if (tabId === lastTab) { + chrome.storage.sync.set({loading: false}, function() {}); + rotateIcon(false); + } + }); + chrome.tabs.onUpdated.addListener(function(tabId , info) { //console.log(tabId + "" + JSON.stringify(info)); //console.log("urls ln" + urls.length); diff --git a/popup.html b/popup.html index e4642e0..ab1b298 100644 --- a/popup.html +++ b/popup.html @@ -13,7 +13,9 @@ font-size: 100%; } + + @@ -26,7 +28,7 @@ - + Open
diff --git a/popup.js b/popup.js index dcb3d92..7782ab6 100644 --- a/popup.js +++ b/popup.js @@ -334,26 +334,51 @@ function getPreferences(url_hostname, name, dataObj) { if (dataObj === undefined) { dataObj = jsonData; } - var pref = dataObj[url_hostname] || dataObj[name]; - if (pref) { - return pref; - } else { - var hostNameKeys = Object.keys(dataObj); - hostNameKeys.forEach(function(key) { - if (key.indexOf(',') !== -1) { - var hostnameArr = key.split(','); - hostnameArr.forEach(function(hostname){ + /*var pref = dataObj[url_hostname] || dataObj[name]; + if (pref) { + return pref; + } else { + var hostNameKeys = Object.keys(dataObj); + hostNameKeys.forEach(function(key) { + if (key.indexOf(',') !== -1) { + var hostnameArr = key.split(','); + hostnameArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[key]; + //return pref; + } + }); + } + + }); + return pref; + }*/ + //console.log(JSON.stringify(dataObj)); + for(var item in dataObj) { + var domain,pref; + domain = dataObj[item]['current']; + if (domain === url_hostname || domain === name) { + pref = dataObj[item]['sites']; + } + + if (pref) { + return pref; + } else { + if (domain.indexOf(',') !== -1) { + var domArr = domain.split(','); + domArr.forEach(function(hostname){ if (url_hostname === hostname || name === hostname) { - pref = dataObj[key]; + pref = dataObj[item]['sites']; //return pref; } }); } - }); - return pref; - } + } + //console.log(dataObj[item]['current']); + } + return pref; } @@ -457,6 +482,8 @@ function createList(allurls) { } }); return list; + + } function selectOption() { @@ -473,7 +500,7 @@ function selectOption() { var url = new URL(currentUrl); var allTypes = jsonData[url.hostname] || jsonData[type.name]; - if (Array.isArray(allTypes[selectedType])) { + if (Array.isArray(allTypes[selectedType])){ content.appendChild(createList(allTypes[selectedType])); } } @@ -535,5 +562,4 @@ function getCurrentTabUrl(callback) { chrome.windows.getCurrent(function(currentWindow) { invokedWindow = currentWindow.id; }); - -} +} \ No newline at end of file From 0ab35cceb5f5143d4acacb49efc493aa0a84aa8e Mon Sep 17 00:00:00 2001 From: gdev Date: Tue, 11 Jul 2017 14:29:57 -0500 Subject: [PATCH 18/33] Modified popup.js. --- popup.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/popup.js b/popup.js index 7782ab6..e97c1c7 100644 --- a/popup.js +++ b/popup.js @@ -373,7 +373,6 @@ function getPreferences(url_hostname, name, dataObj) { } }); } - } //console.log(dataObj[item]['current']); @@ -499,7 +498,8 @@ function selectOption() { //var allTypes = jsonData[type.name]; var url = new URL(currentUrl); - var allTypes = jsonData[url.hostname] || jsonData[type.name]; + // var allTypes = jsonData[url.hostname] || jsonData[type.name]; + var allTypes = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; if (Array.isArray(allTypes[selectedType])){ content.appendChild(createList(allTypes[selectedType])); } From 17cb34e50e92f1bac9d281c790c0518c6697357c Mon Sep 17 00:00:00 2001 From: gdev Date: Thu, 3 Aug 2017 13:50:17 -0500 Subject: [PATCH 19/33] Modified with google search. --- background.js | 134 +++++++++++++++--- content_script.js | 43 ++++++ jquery-1.8.0.min.js | 2 + manifest.json | 9 +- options.html | 5 + options.js | 322 +++++++++++++++++++++--------------------- popup.html | 56 ++++---- popup.js | 333 ++++++++++++++++++++++++++++++++++++-------- 8 files changed, 643 insertions(+), 261 deletions(-) create mode 100644 content_script.js create mode 100644 jquery-1.8.0.min.js diff --git a/background.js b/background.js index c001d99..7e75914 100644 --- a/background.js +++ b/background.js @@ -4,8 +4,18 @@ var highlightTabs; var tabsBackground; var currWindow; +var timeOut; +var lastTab; +var urls = []; +var tabToHilite; +var openAt; +var firstTab; +var invokedWind; +var startTime; +var pagesToOpen = []; +var myWork = false; -var options = ['tabsBackground', 'highlightTabs']; +var options = ['tabsBackground', 'highlightTabs', 'timeOut']; var loading_images = ['ajax-loader_LB.gif', @@ -14,9 +24,9 @@ var loading_images = ['ajax-loader_LB.gif', 'ajax-loader_RB.gif']; var image_index = 0; +var tabLoadTimeout = 60; var keep_switching_icon; - function rotateIcon(rotate) { keep_switching_icon = rotate === undefined ? keep_switching_icon : rotate; @@ -29,40 +39,46 @@ function rotateIcon(rotate) window.setTimeout(rotateIcon, 300); } } - chrome.storage.sync.get( options, function(items) { highlightTabs = items.highlightTabs; tabsBackground = items.tabsBackground; + timeOut = items.timeOut * 1000; + console.log("time out--" + timeOut); }); - chrome.windows.getCurrent(function(win){ currWindow = win.id; }); chrome.storage.sync.get(function(data) { - //console.log("data sync " + JSON.stringify(data)); + console.log("data sync " + JSON.stringify(data)); }); chrome.storage.onChanged.addListener(function(changes, area) { - //console.log("in bkgd page" + JSON.stringify(changes)); + console.log("in bkgd page" + JSON.stringify(changes)); //console.log("currWindow from bkg" + currWindow); if (area == "sync" && "urlsToOpen" in changes) { - var urls = changes.urlsToOpen.newValue; + urls = changes.urlsToOpen.newValue; if (typeof urls != "undefined" && urls !== null && urls.length > 0) { - var tabToHilite = [changes.currTab.newValue.index]; - var openAt = changes.currTab.newValue.index; - var invokedWind = changes.invokedWindow.newValue; - console.log("invoked from" + invokedWind + "\n urls-" + urls.length); + pagesToOpen = urls; + tabToHilite = [changes.currTab.newValue.index]; + openAt = changes.currTab.newValue.index; + invokedWind = changes.invokedWindow.newValue; + console.log("invoked from " + invokedWind + "\n urls-" + urls.length); if (!changes.opnSmeTb.newValue) { if (Array.isArray(urls)) { + myWork = true; openAt ++; + startTime = new Date().getTime(); chrome.tabs.create({url: urls[0], active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ tabToHilite.push(tab.index); openAt ++; //console.log(JSON.stringify(tab)); - var firstPage = tab.id; - var lastTab = tab.id; - console.log("reset"); + firstPage = tab.id; + lastTab = tab.id; + console.log("reset" + openAt); + // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); + //keep_switching_icon = true; + //console.log(keep_switching_icon); rotateIcon(true); chrome.tabs.onRemoved.addListener(function (tabId , info) { if (tabId === lastTab) { @@ -70,10 +86,20 @@ chrome.storage.onChanged.addListener(function(changes, area) { rotateIcon(false); } }); - - chrome.tabs.onUpdated.addListener(function(tabId , info) { - //console.log(tabId + "" + JSON.stringify(info)); + /*chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { + console.log("Test " + tabId + "--" + JSON.stringify(info) + "--" + JSON.stringify(changeInfo)); //console.log("urls ln" + urls.length); + if (info.status === "loading" && tabId === lastTab) { + var now = new Date().getTime(); + console.log(now - startTime); + console.log(timeOut); + if (now - startTime > timeOut) { + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + chrome.storage.sync.set({loading: false}, function() {}); + rotateIcon(false); + return; + } + } if (info.status === "complete" && tabId === lastTab && urls.length > 1) { //console.log("length" + urls.length); chrome.tabs.update(firstPage, {active: true}); @@ -85,10 +111,14 @@ chrome.storage.onChanged.addListener(function(changes, area) { }); } if (info.status === "complete" && tabId === lastTab && urls.length == 1) { + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + //chrome.runtime.sendMessage({msg: "completed"}, function(response) {}); chrome.storage.sync.set({loading: false}, function() {}); + //keep_switching_icon = false; rotateIcon(false); } - }); + + });*/ }); } else { openAt ++; @@ -119,3 +149,71 @@ chrome.storage.onChanged.addListener(function(changes, area) { }); +var parentUrl = ""; +var parentTitle = ""; +/*chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { + console.log(tabId + "==" + JSON.stringify(info) + "==" + JSON.stringify(changeInfo)); + if (parentUrl === "") { + parentUrl = info.url; + parentTitle = info.title; + } + console.log("malargal -- " + parentUrl + " keetten--" + parentTitle); +});*/ + +chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { + console.log("Test " + tabId + "--" + JSON.stringify(info) + "--" + JSON.stringify(changeInfo)); + if (parentUrl === "") { + parentUrl = info.url; + parentTitle = info.title; + //chrome.storage.sync.set({parentUrl: parentUrl}, function() {}); + } + + console.log("urls ln" + pagesToOpen.length); + if (info.status === "loading" && tabId === lastTab) { + var now = new Date().getTime(); + console.log(now - startTime); + console.log(timeOut); + if (now - startTime > timeOut) { + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + chrome.storage.sync.set({loading: false}, function() {}); + rotateIcon(false); + myWork = false; + } + } + console.log(lastTab + "--tt--" + openAt); + if (myWork) { + if (info.status === "complete" && tabId === lastTab && pagesToOpen.length > 1) { + //console.log("length" + urls.length); + chrome.tabs.update(firstPage, {active: true}); + pagesToOpen.shift(); + chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + openAt ++; + }); + } + if (info.status === "complete" && tabId === lastTab && pagesToOpen.length == 1) { + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + //chrome.runtime.sendMessage({msg: "completed"}, function(response) {}); + chrome.storage.sync.set({loading: false}, function() {}); + //keep_switching_icon = false; + rotateIcon(false); + myWork = false; + } + } + +}); + +/* +chrome.browserAction.onClicked.addListener(function(tab) { + console.log("call adi"); + //chrome.tabs.executeScript(null, {file: "content_script.js"}); +}); + +chrome.runtime.onMessage.addListener(function(req, sender, sendres){ + if (req.todo === "show_text") { + console.log("in lsner"); + + } + +});*/ \ No newline at end of file diff --git a/content_script.js b/content_script.js new file mode 100644 index 0000000..79d5507 --- /dev/null +++ b/content_script.js @@ -0,0 +1,43 @@ +var jsonObj = {}; +//jsonObj["current"] = "search"; +//jsonObj["description"] = "google search"; +var sites = []; + +$("div.srg").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + +}); +jsonObj['sites'] = sites; + +var queryString = document.getElementsByName("q")[0].value; +console.log("jjjjj" + queryString); +console.log(location.pathname); +console.log(location.href); +console.log("Final object...\n" + JSON.stringify(jsonObj)); +chrome.storage.sync.set({'googleSearch': sites, 'queryString' : location.href}, function() { + console.log('Settings saved'); +}); + +var fromGS = {}; +$("div.srg").find("h3 > a").click(function () { + fromGS = $(this).attr('href'); + console.log("from: " + JSON.stringify(fromGS)); + +}); +$('a').click(function(){ + //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); +}); + +var urlArr = []; +$('a').each(function(){ + urlArr.push($(this).attr('href')); + //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); +}); +console.log("showing..\n" + urlArr); + +//chrome.runtime.sendMessage({todo: "show_text"}); \ No newline at end of file diff --git a/jquery-1.8.0.min.js b/jquery-1.8.0.min.js new file mode 100644 index 0000000..6334d0d --- /dev/null +++ b/jquery-1.8.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/manifest.json b/manifest.json index 33f59b6..eb31b7c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,5 +1,5 @@ { - "name": "taborola", + "name": "mypages", "description": "Change the current tabs", "version": "1.0", "permissions": [ @@ -8,7 +8,8 @@ "commands", "storage", "background", - "chrome://favicon/" + "chrome://favicon/", + "https://www.google.co.in/*" ], "options_ui": { "page": "options.html", @@ -31,6 +32,10 @@ } } }, + "content_scripts": [{ + "matches": ["https://www.google.com/*"], + "js": ["jquery-1.8.0.min.js", "content_script.js"] + }], "browser_action": { "default_title": "Open my pages.", "default_icon": "icons/ic_title_black_24dp_1x.png", diff --git a/options.html b/options.html index b21a97d..6113688 100644 --- a/options.html +++ b/options.html @@ -28,8 +28,13 @@
Select all pages. +
+ Page loading time out + + seconds. + - + Select pages to view - + - -
-
- All -
- - - - - Open -
-
-
- - - - -
- + +
+ Advertisement
+
+
+
+ +
+
+ + + + +
+ + + + + +
+
+ + diff --git a/popup.js b/popup.js index e97c1c7..5ecc490 100644 --- a/popup.js +++ b/popup.js @@ -6,22 +6,16 @@ var currentUrl; var invokedWindow; var selectAll; var loading; +var googleSearch; +var parentUrl; +var utubeData; +var searchPage; +var queryString; + +var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString']; +var google = ['www.google.co.in', 'www.google.com']; -var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading']; -/* - var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('chrome://favicon/http://www.amazon.in')); - xhr.responseType = "blob"; - - xhr.onreadystatechange = function() { - console.log("here"); - if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { - console.log(xhr.responseText); - //var ico = JSON.parse(xhr.responseText); - } - }; - xhr.send();*/ chrome.storage.sync.get( options, function(items) { jsonData = items.jsonData; @@ -30,6 +24,9 @@ chrome.storage.sync.get( options, function(items) { selectAll = items.selectAll; loading = items.loading; console.log("in sync get" + loading); + googleSearch = items.googleSearch; + parentUrl = items.parentUrl; + queryString = items.queryString; }); function closeWindow (e) { @@ -49,9 +46,9 @@ function clickHandler(e) { urlsToOpen.push(url.value); console.log("came till here"); /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ + tabToHilite.push(tab.index); + openAt ++; + });*/ } else { @@ -60,8 +57,8 @@ function clickHandler(e) { }); /*if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite}, function(){}); - }*/ + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); + }*/ chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); var opnSmeTab = document.getElementById("sametabChkbx").checked; chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true}, function() { @@ -74,6 +71,7 @@ function clickHandler(e) { function selectall () { const allUrls = document.getElementsByName("link"); + var parentNode; if (document.getElementById('selectall').checked) { allUrls.forEach (function (url) { if (currentUrl !== url.value) { @@ -83,7 +81,11 @@ function selectall () { document.getElementById("sametab").hidden = true; document.getElementById("sametabChkbx").checked = false; } + parentNode = url.parentNode.parentNode.childNodes; }); + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(parentNode); + howmany.textContent = selNums + " selected."; } else { allUrls.forEach (function (url) { url.checked = false; @@ -93,6 +95,8 @@ function selectall () { document.getElementById("sametab").hidden = true; document.getElementById("sametabChkbx").checked = false; }); + var howmany = document.getElementById("howmany"); + howmany.textContent = ""; } @@ -107,6 +111,7 @@ function linkClick () { console.log("Runtime error."); } }); + window.close; } function chkBoxClick (ele) { @@ -151,6 +156,19 @@ function chkBoxClick (ele) { document.getElementById("sametabChkbx").checked = true; } } + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(this.parentNode.parentNode.childNodes); + howmany.textContent = selNums + " selected."; +} + +function howManyChecked(liNodes) { + var chked = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked ++; + } + }); + return chked; } function atleastOneChecked(liNodes) { @@ -164,7 +182,7 @@ function atleastOneChecked(liNodes) { return chked; /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); - return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ } function moreThanOneChecked(liNodes) { @@ -199,9 +217,9 @@ function addUrl() { var origObj = items.jsonData; //alert("before" + JSON.stringify(origObj)); /*var prefForDom = origObj[fullDomain]; - if (prefForDom === undefined) { - prefForDom = origObj[name]; - }*/ + if (prefForDom === undefined) { + prefForDom = origObj[name]; + }*/ //var prefForDom = origObj[fullDomain] || origObj[name]; var prefForDom = getPreferences(fullDomain, name, origObj); @@ -221,7 +239,12 @@ function addUrl() { } else { - origObj[name] = [currentUrl]; + //origObj[name] = [currentUrl]; + var newObj = {}; + newObj["current"] = name; + newObj["description"] = name; + newObj["sites"] = [currentUrl]; + origObj[name] = newObj; } //origObj[name] = [currentUrl]; console.log(JSON.stringify(origObj)); @@ -245,24 +268,107 @@ function addUrl() { //chrome.runtime.onMessage.addListener(messageReceived); /* - function messageReceived(msg) { - console.log(msg); - if (msg === "completed") { - loading = false; - } - }*/ +function messageReceived(msg) { + console.log(msg); + if (msg === "completed") { + loading = false; + } +}*/ + +function searchAgain () { + //queryString + chrome.tabs.update(currentTab.id, {url: queryString}); + window.close; +} + +function sortListDir() { + var list, i, switching, b, shouldSwitch, dir, switchcount = 0; + list = document.getElementById("orderedList"); + switching = true; + //Set the sorting direction to ascending: + dir = "asc"; + //Make a loop that will continue until no switching has been done: + while (switching) { + //start by saying: no switching is done: + switching = false; + b = list.getElementsByTagName("LI"); + //Loop through all list-items: + for (i = 0; i < (b.length - 1); i++) { + //start by saying there should be no switching: + shouldSwitch = false; + /*check if the next item should switch place with the current item, + based on the sorting direction (asc or desc):*/ + if (dir == "asc") { + if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically lower than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; + } + } else if (dir == "desc") { + if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically higher than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; + } + } + } + if (shouldSwitch) { + /*If a switch has been marked, make the switch + and mark that a switch has been done:*/ + b[i].parentNode.insertBefore(b[i + 1], b[i]); + switching = true; + //Each time a switch is done, increase switchcount by 1: + switchcount ++; + } else { + /*If no switching has been done AND the direction is "asc", + set the direction to "desc" and run the while loop again.*/ + if (switchcount == 0 && dir == "asc") { + dir = "desc"; + switching = true; + + } + } + } + chngSortBtnValue(); +} + + +function chngSortBtnValue() { + var sortBtn = document.getElementById('sortListDir'); + if (sortBtn.value === "Sort A to Z") { + sortBtn.value = "Sort Z to A"; + } else if (sortBtn.value === "Sort Z to A") { + sortBtn.value = "Sort A to Z"; + } +} document.addEventListener('DOMContentLoaded', function () { + /* var bgPage = chrome.extension.getBackgroundPage(); + console.log("before"); + var bk = bgPage.test("abc"); // Here paste() is a function that returns value. + console.log("beforeAAA--" + bk);*/ document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); document.getElementById('selectall').addEventListener('click', selectall); document.getElementById('addbtn').addEventListener('click', addUrl); + document.getElementById('searchAgain').addEventListener('click', searchAgain); + document.getElementById('sortListDir').addEventListener('click', sortListDir); + onclick="()" console.log("lod--" + loading); console.log("jsondata--" + jsonData); var content = document.getElementById('content'); //chrome.storage.sync.set({loading: false}, function() {}); + //chrome.storage.sync.set({parentUrl: ""}, function() {}); getCurrentTabUrl(function(tab) { currentUrl = tab.url; + if (currentUrl === "chrome://newtab/") { + window.close(); + return; + } var url = new URL(tab.url); var fullDomain = url.hostname; @@ -279,14 +385,46 @@ document.addEventListener('DOMContentLoaded', function () { window.close(); return; } + var prefForDom; + console.log("test--" + isFromSearch(currentUrl)); + if (google.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { + if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { + //console.log("google seach list is empty"); + //window.close(); + //return; + var text = document.createTextNode("No previous search results found. Please try a fresh search."); + document.getElementById('openbtn').hidden = "hidden"; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + console.log(document.getElementById('selectall').nextSibling.nodeValue + "fff"); + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('addbtn').hidden = ""; + content.appendChild(text); + + } + console.log("Check1 " + JSON.stringify(googleSearch)); + prefForDom = googleSearch; + console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "600px"; + searchPage = true; + if (googleSearch === "") { + console.log("google seach list is empty"); + } + } + + if (prefForDom === undefined) { + prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //content.style.width = "200px"; + document.getElementById('searchAgain').hidden = "hidden"; + searchPage = false; + } - var prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; - /*var prefForDom = jsonData[fullDomain]; - if (prefForDom === undefined) { - prefForDom = jsonData[name]; - }*/ console.log(jsonData); console.log(prefForDom); @@ -316,6 +454,9 @@ document.addEventListener('DOMContentLoaded', function () { document.getElementById('openbtn').hidden = "hidden"; document.getElementById('cancelbtn').hidden = "hidden"; document.getElementById('selectall').hidden = "hidden"; + console.log(document.getElementById('selectall').nextSibling.nodeValue + "fff"); + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; //document.getElementById('addbtn').hidden = ""; content.appendChild(text); @@ -323,36 +464,82 @@ document.addEventListener('DOMContentLoaded', function () { } + + }); + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('utube.json')); + xhr.responseType = "text"; + + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + //console.log(xhr.responseText); + //utubeData = xhr.responseText; + utubeData = JSON.parse(xhr.responseText); + console.log(utubeData); + if (utubeData !== undefined) { + var adStuff = document.getElementById('adStuff'); + //var utubeData = chrome.runtime.getURL("utube.json"); + console.log(utubeData); + var keys = Object.keys(utubeData); + var ranNum = randomIntFromInterval(0, 9); + console.log("Me random" + ranNum); + var utube = document.createElement('a'); + utube.textContent = keys[ranNum]; + utube.href = utubeData[keys[ranNum]]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + /*keys.forEach(function (key) { + //console.log(data); + var utube = document.createElement('a'); + utube.textContent = key; + utube.href = utubeData[key]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + });*/ + + } + } + }; + xhr.send(); + // //console.log("margin" + document.getElementById("selectall").style.margin); }); +function randomIntFromInterval(min,max) +{ + return Math.floor(Math.random()*(max-min+1)+min); +} + function getPreferences(url_hostname, name, dataObj) { if (dataObj === undefined) { dataObj = jsonData; } /*var pref = dataObj[url_hostname] || dataObj[name]; - if (pref) { - return pref; - } else { - var hostNameKeys = Object.keys(dataObj); - hostNameKeys.forEach(function(key) { - if (key.indexOf(',') !== -1) { - var hostnameArr = key.split(','); - hostnameArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[key]; - //return pref; - } - }); - } - - }); - return pref; - }*/ + if (pref) { + return pref; + } else { + var hostNameKeys = Object.keys(dataObj); + hostNameKeys.forEach(function(key) { + if (key.indexOf(',') !== -1) { + var hostnameArr = key.split(','); + hostnameArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[key]; + //return pref; + } + }); + } + + }); + return pref; + }*/ //console.log(JSON.stringify(dataObj)); for(var item in dataObj) { var domain,pref; @@ -373,10 +560,12 @@ function getPreferences(url_hostname, name, dataObj) { } }); } + } //console.log(dataObj[item]['current']); } + console.log(pref); return pref; } @@ -388,6 +577,7 @@ function createList(allurls) { list.setAttribute("id", "orderedList"); //list.setAttribute("") list.style.align = "right"; + var i=1; var value=""; var bgColor = "#F4F6F7"; @@ -426,6 +616,9 @@ function createList(allurls) { var li = document.createElement("LI"); li.style.backgroundColor = bgColor; + if (searchPage) + li.style.margin = "10px 0"; + //li.setAttribute("background-color" , "#FFFEEC"); var logo = document.createElement("IMG"); console.log("link " + Object.values(page)[0]); @@ -498,8 +691,8 @@ function selectOption() { //var allTypes = jsonData[type.name]; var url = new URL(currentUrl); - // var allTypes = jsonData[url.hostname] || jsonData[type.name]; - var allTypes = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //var allTypes = jsonData[url.hostname] || jsonData[type.name]; + var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; if (Array.isArray(allTypes[selectedType])){ content.appendChild(createList(allTypes[selectedType])); } @@ -562,4 +755,34 @@ function getCurrentTabUrl(callback) { chrome.windows.getCurrent(function(currentWindow) { invokedWindow = currentWindow.id; }); + +} + +function utubeClick() { + var idx = currentTab.index + 1; + chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { + + }); +} +function isParentGoogle(parentUrl) { + // var url = new URL(parentUrl); + // console.log("azhagiye...." + url.hostname); + //return google.indexOf(url.hostname) > -1; +} + +function isFromSearch(currentURL) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + if (googleSearch) { + googleSearch.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + } + return urlFound; } \ No newline at end of file From 338cfe2e5bf7091da0ef6eacba9d1502dd44a787 Mon Sep 17 00:00:00 2001 From: Gautam Dev Date: Mon, 4 Sep 2017 23:03:52 -0500 Subject: [PATCH 20/33] Update README.md --- README.md | 191 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 132 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 667edd1..bb49262 100644 --- a/README.md +++ b/README.md @@ -6,64 +6,134 @@ User has to configure ones favourite web pages in json format. For example: - { - "cnn": [ - {"Regions": "http://edition.cnn.com/regions"}, - {"Politics": "http://edition.cnn.com/politics"}, - {"selected": false, - "International": "http://money.cnn.com/INTERNATIONAL/"}, - {"Entertainment": "http://edition.cnn.com/entertainment"}, - {"Technology": "http://money.cnn.com/technology/"}] - } - - or - { - "cnn": [ - "http://edition.cnn.com/regions", - "http://edition.cnn.com/politics", - "http://money.cnn.com/INTERNATIONAL/", - "http://edition.cnn.com/entertainment", - "http://money.cnn.com/technology/"] - } - - "finance.yahoo.com": [ { - "NASDAQ": { - "selected": false, - "url": "https://finance.yahoo.com/chart/^IXIC" - } - }, - { - "NFLX": "https://finance.yahoo.com/chart/NFLX" + "amazon": { + "current": "amazon", + "description": "news sites", + "sites": { + "Electronics": [ + { + "Laptop": "http://www.amazon.in/laptop" + }, + { + "Mobile-Phones": "http://www.amazon.in/mobiles" + }, + { + "Television": "http://www.amazon.in/TV" + } + ], + "Home-default": [ + { + "Kitchen": "http://www.amazon.in/kitchen" + }, + { + "Grocery": "http://www.amazon.in/Gourmet-Specialty-Foods" + }, + { + "Furniture": "http://www.amazon.in/furniture" + } + ] } + }, + "news": { + "current": "cnn,nyt", + "description": "news sites", + "sites": [ + { + "Regions": "http://edition.cnn.com/regions" + }, + { + "Politics": "http://edition.cnn.com/politics" + }, + { + "International": "http://money.cnn.com/INTERNATIONAL/" + }, + { + "Entertainment": "http://edition.cnn.com/entertainment" + }, + { + "Technology": "http://money.cnn.com/technology/" + }, + "http://edition.cnn.com/style", + "http://edition.cnn.com/travel", + "http://edition.cnn.com/videos" ] + }, + "yahoo": { + "current": "yahoo,finance.yahoo.com", + "description": "news sites", + "sites": [ + { + "NASDAQ": { + "selected": false, + "url": "https://finance.yahoo.com/chart/^IXIC" + } + }, + { + "NFLX": "https://finance.yahoo.com/chart/NFLX" + }, + { + "GOOGL": "https://finance.yahoo.com/chart/GOOGL" + }, + { + "AAPL": "https://finance.yahoo.com/chart/AAPL" + }, + { + "PCLN": "https://finance.yahoo.com/chart/PCLN" + }, + { + "FB": "https://finance.yahoo.com/chart/FB" + }, + { + "SIRI": "https://finance.yahoo.com/chart/SIRI" + }, + { + "AAOI": "https://finance.yahoo.com/chart/AAOI" + }, + { + "PLCE": "https://finance.yahoo.com/chart/PLCE" + }, + { + "MYSZ": "https://finance.yahoo.com/chart/MYSZ" + }, + { + "HTGM": "https://finance.yahoo.com/chart/HTGM" + }, + { + "SNPS": "https://finance.yahoo.com/chart/SNPS" + }, + { + "COOL": "https://finance.yahoo.com/chart/COOL" + }, + { + "AUPH": "https://finance.yahoo.com/chart/AUPH" + }, + { + "TECL": "https://finance.yahoo.com/chart/TECL" + }, + { + "AKTX": "https://finance.yahoo.com/chart/AKTX" + }, + { + "SLCA": "https://finance.yahoo.com/chart/SLCA" + }, + { + "WIX": "https://finance.yahoo.com/chart/WIX" + } + ] + } +} + + - or -"yahoo": [ - - { - "GOOGL": "https://finance.yahoo.com/chart/GOOGL" - }, - { - "AAPL": "https://finance.yahoo.com/chart/AAPL" - }, - { - "PCLN": "https://finance.yahoo.com/chart/PCLN" - }, - { - "FB": "https://finance.yahoo.com/chart/FB" - }, - { - "SIRI": "https://finance.yahoo.com/chart/SIRI" - }] - -The name of the website from which the popup is invoked, is matched with the names on the -first level(ex: amazon, cnn etc). +The name of the website from which the popup is invoked, is matched with the value of "current. -If a match is found and is an array, the url names(keys) are lsited. +If a match is found, then the site are displayed as a list of items. + +If "sites" is an array, the url names(keys) are lsited. All the url names are selected by default, unless it is mantioned as "selected": false. -If the match is an object, the first level of keys will be displayed as a dropdown. +If the "sites" is an object, the first level of keys will be displayed as a dropdown. The item metioned as default will be selected and the sub items will be displayed as a list of checkboxes. The on which "default" is specified will be selected on load of the popup page. @@ -79,19 +149,22 @@ is completely loaded. One can work in this page untill the rest of the urls are If only one of the urls is to be opened, one can straight away click on the url itself. If this page needs to be opened in the same tab, one can select only this url, and select the "open in same tab". +In case there is some trouble and pages are not loading within 60secs, work of the extention is aborted. +The time limit can be configured in the options page. Default is 60secs. + All the tabs with same base url, will be highlighted. This is configurable in the options page. Option to open tabs in the background can also be configured here. +To do a google/yahoo/bing search in the current website alone, one can enter the text and select a search engine, +and click on search button. +When doing a search on google, the search result will be available when the extension is invoked. +One can get the list of search result, from any of the search pages. +It is available from google or from any of the search result page. +The same is available for yahoo and bing search. - - - - - - - - +After search with any one of the engines, one can do the same search again with the other engine, +just by selecting the engine and clicking on the "Search Again" button. From a382f7b886f4c86fd93bafa9a065d182252c8e35 Mon Sep 17 00:00:00 2001 From: Gautam Dev Date: Tue, 5 Sep 2017 01:59:48 -0500 Subject: [PATCH 21/33] Update README.md --- README.md | 179 ++++++++++++------------------------------------------ 1 file changed, 38 insertions(+), 141 deletions(-) diff --git a/README.md b/README.md index bb49262..9456f3c 100644 --- a/README.md +++ b/README.md @@ -1,170 +1,67 @@ # mypages This is a chrome extensions that will open users favourite pages, that are already configured, -based on the current tab. +based on the web site that is open int he current tab. + User has to configure ones favourite web pages in json format. For example: +[sample config json](./config.json) - { - "amazon": { - "current": "amazon", - "description": "news sites", - "sites": { - "Electronics": [ - { - "Laptop": "http://www.amazon.in/laptop" - }, - { - "Mobile-Phones": "http://www.amazon.in/mobiles" - }, - { - "Television": "http://www.amazon.in/TV" - } - ], - "Home-default": [ - { - "Kitchen": "http://www.amazon.in/kitchen" - }, - { - "Grocery": "http://www.amazon.in/Gourmet-Specialty-Foods" - }, - { - "Furniture": "http://www.amazon.in/furniture" - } - ] - } - }, - "news": { - "current": "cnn,nyt", - "description": "news sites", - "sites": [ - { - "Regions": "http://edition.cnn.com/regions" - }, - { - "Politics": "http://edition.cnn.com/politics" - }, - { - "International": "http://money.cnn.com/INTERNATIONAL/" - }, - { - "Entertainment": "http://edition.cnn.com/entertainment" - }, - { - "Technology": "http://money.cnn.com/technology/" - }, - "http://edition.cnn.com/style", - "http://edition.cnn.com/travel", - "http://edition.cnn.com/videos" - ] - }, - "yahoo": { - "current": "yahoo,finance.yahoo.com", - "description": "news sites", - "sites": [ - { - "NASDAQ": { - "selected": false, - "url": "https://finance.yahoo.com/chart/^IXIC" - } - }, - { - "NFLX": "https://finance.yahoo.com/chart/NFLX" - }, - { - "GOOGL": "https://finance.yahoo.com/chart/GOOGL" - }, - { - "AAPL": "https://finance.yahoo.com/chart/AAPL" - }, - { - "PCLN": "https://finance.yahoo.com/chart/PCLN" - }, - { - "FB": "https://finance.yahoo.com/chart/FB" - }, - { - "SIRI": "https://finance.yahoo.com/chart/SIRI" - }, - { - "AAOI": "https://finance.yahoo.com/chart/AAOI" - }, - { - "PLCE": "https://finance.yahoo.com/chart/PLCE" - }, - { - "MYSZ": "https://finance.yahoo.com/chart/MYSZ" - }, - { - "HTGM": "https://finance.yahoo.com/chart/HTGM" - }, - { - "SNPS": "https://finance.yahoo.com/chart/SNPS" - }, - { - "COOL": "https://finance.yahoo.com/chart/COOL" - }, - { - "AUPH": "https://finance.yahoo.com/chart/AUPH" - }, - { - "TECL": "https://finance.yahoo.com/chart/TECL" - }, - { - "AKTX": "https://finance.yahoo.com/chart/AKTX" - }, - { - "SLCA": "https://finance.yahoo.com/chart/SLCA" - }, - { - "WIX": "https://finance.yahoo.com/chart/WIX" - } - ] - } -} - - +##Favourite Pages -The name of the website from which the popup is invoked, is matched with the value of "current. - + The name of the website from which the popup is invoked, is matched with the value of `"current"`. If a match is found, then the site are displayed as a list of items. -If "sites" is an array, the url names(keys) are lsited. -All the url names are selected by default, unless it is mantioned as "selected": false. +[Sample page](./main.png) -If the "sites" is an object, the first level of keys will be displayed as a dropdown. + If `"sites"` is an array, the url names(keys) are listed. +All the url names are selected by default, unless it is mantioned as `"selected": false`. + + If the `"sites"` is an object, the first level of keys will be displayed as a dropdown. The item metioned as default will be selected and the sub items will be displayed as a list of checkboxes. The on which "default" is specified will be selected on load of the popup page. -If the plugin is invoked from https://in.finance.yahoo.com/ +[Options](./options.png) + + If the plugin is invoked from https://in.finance.yahoo.com/ "in.finance.yahoo.com" will be matched first, if not found, items under "yahoo" will be displayed. -If you want to add the current page to the configuration, click on the add button. + If you want to add any new page to the configuration, invoke the popup from that website and click on "add" button. +If the website is already configured, this page will be added under that. Else a new entry is created for this website. When there is some option selected, the url gets added to that option. -when multiple urls are seleted for opening, all the urls start loading only after the 1st url -is completely loaded. One can work in this page untill the rest of the urls are opened. - -If only one of the urls is to be opened, one can straight away click on the url itself. -If this page needs to be opened in the same tab, one can select only this url, and select the "open in same tab". + If only one of the urls is to be opened, one can straight away click on the url itself. +If this page needs to be opened in the same tab, one can select only this url, and select the `"open in same tab"` checkbox. -In case there is some trouble and pages are not loading within 60secs, work of the extention is aborted. + This list can be sorted A-Z or Z-A, by clicking the sort icon. + + In case there is some trouble and pages are not loading within 60secs, work of the extention is aborted. The time limit can be configured in the options page. Default is 60secs. -All the tabs with same base url, will be highlighted. This is configurable in the options page. + When multiple urls are seleted for opening, all the urls start loading only after the 1st url +is completely loaded. One can work in this page untill the rest of the urls are opened. + + All the tabs with same base url, will be highlighted. This is configurable in the options page. Option to open tabs in the background can also be configured here. -To do a google/yahoo/bing search in the current website alone, one can enter the text and select a search engine, -and click on search button. +[Options Page] (./options_page.png) + +##Search In Specific website -When doing a search on google, the search result will be available when the extension is invoked. -One can get the list of search result, from any of the search pages. -It is available from google or from any of the search result page. + One can search for something in the current website, through google/yahoo/bing. +Enter the search text in the text box provided, select the engine and click "search" button. -The same is available for yahoo and bing search. +[Search in Site] (./search_in_site.png) -After search with any one of the engines, one can do the same search again with the other engine, +##Search + + When doing a search on google, the search result will be available when the extension is invoked. +One can get the list of search result, from any of the search pages. The same feature is available for yahoo and bing search. + + After search with any one of the engines, one can do the same search again with the other engine, just by selecting the engine and clicking on the "Search Again" button. +[Search Again] (./search_again.png) + From 9075fd914ddec03f2fcf29bb9c6cf0c12277cfef Mon Sep 17 00:00:00 2001 From: Gautam Date: Mon, 18 Sep 2017 06:19:36 -0500 Subject: [PATCH 22/33] Modified popup.js, background.js etc for fixes. --- background.js | 21 +- content_script.js | 125 +++++++++++- icons/Small_A_Z.jpg | Bin 0 -> 21544 bytes icons/Small_Z_A.jpg | Bin 0 -> 21907 bytes options.html | 60 ++++-- options.js | 49 ++++- popup.html | 40 ++-- popup.js | 452 ++++++++++++++++++++++++++++++++++++++++---- youtube.json | 13 ++ 9 files changed, 670 insertions(+), 90 deletions(-) create mode 100644 icons/Small_A_Z.jpg create mode 100644 icons/Small_Z_A.jpg create mode 100644 youtube.json diff --git a/background.js b/background.js index 7e75914..029080e 100644 --- a/background.js +++ b/background.js @@ -13,7 +13,7 @@ var firstTab; var invokedWind; var startTime; var pagesToOpen = []; -var myWork = false; +var currentTask = false; var options = ['tabsBackground', 'highlightTabs', 'timeOut']; @@ -66,7 +66,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { console.log("invoked from " + invokedWind + "\n urls-" + urls.length); if (!changes.opnSmeTb.newValue) { if (Array.isArray(urls)) { - myWork = true; + currentTask = true; openAt ++; startTime = new Date().getTime(); chrome.tabs.create({url: urls[0], active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ @@ -144,7 +144,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); } if (chrome.runtime.error) { - console.log("ddd Runtime error."); + console.log("Runtime error."); } }); @@ -177,11 +177,11 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); chrome.storage.sync.set({loading: false}, function() {}); rotateIcon(false); - myWork = false; + currentTask = false; } } console.log(lastTab + "--tt--" + openAt); - if (myWork) { + if (currentTask) { if (info.status === "complete" && tabId === lastTab && pagesToOpen.length > 1) { //console.log("length" + urls.length); chrome.tabs.update(firstPage, {active: true}); @@ -198,7 +198,7 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { chrome.storage.sync.set({loading: false}, function() {}); //keep_switching_icon = false; rotateIcon(false); - myWork = false; + currentTask = false; } } @@ -208,12 +208,11 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { chrome.browserAction.onClicked.addListener(function(tab) { console.log("call adi"); //chrome.tabs.executeScript(null, {file: "content_script.js"}); -}); +});*/ +/* chrome.runtime.onMessage.addListener(function(req, sender, sendres){ - if (req.todo === "show_text") { - console.log("in lsner"); + console.log("in lstnr"); - } -});*/ \ No newline at end of file +});*/ diff --git a/content_script.js b/content_script.js index 79d5507..d7e1e6b 100644 --- a/content_script.js +++ b/content_script.js @@ -2,7 +2,9 @@ var jsonObj = {}; //jsonObj["current"] = "search"; //jsonObj["description"] = "google search"; var sites = []; +var queryString; +//google $("div.srg").find("h3 > a").each(function (index) { console.log("Title: " + this.text); //$(this).append("
My new line text"); @@ -12,14 +14,43 @@ $("div.srg").find("h3 > a").each(function (index) { sites.push(obj); }); +//bing //ol.b_results +$("ol#b_results > li.b_algo").find("h2 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); +}); +//yahoo +$("div#web").find("h3 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); +}); jsonObj['sites'] = sites; -var queryString = document.getElementsByName("q")[0].value; -console.log("jjjjj" + queryString); +if (location.origin.indexOf('yahoo') > -1) { + queryString = document.getElementsByName("p")[0].value; +} else { + queryString = document.getElementsByName("q")[0].value; +} +//var queryString = document.getElementsByName("q")[0].value; //"p" for yahoo +/*console.log("jjjjj" + queryString); console.log(location.pathname); console.log(location.href); +console.log(location.host); +console.log(location.hostname); +console.log(location.pathname); +console.log(location.origin);*/ +//var urlquery = ''; +//urlquery = location.origin + location.pathname + '?q=' + queryString; console.log("Final object...\n" + JSON.stringify(jsonObj)); -chrome.storage.sync.set({'googleSearch': sites, 'queryString' : location.href}, function() { +chrome.storage.sync.set({'googleSearch': sites, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { console.log('Settings saved'); }); @@ -29,6 +60,7 @@ $("div.srg").find("h3 > a").click(function () { console.log("from: " + JSON.stringify(fromGS)); }); + $('a').click(function(){ //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); }); @@ -40,4 +72,89 @@ $('a').each(function(){ }); console.log("showing..\n" + urlArr); -//chrome.runtime.sendMessage({todo: "show_text"}); \ No newline at end of file +//chrome.runtime.sendMessage({todo: "show_text"}); + +chrome.runtime.onMessage.addListener(function(req, sender, sendres){ + console.log("in lsner lll"); + /*if (request.greeting == "hello")*/ + var url = new URL(location.origin); + var name = url.hostname.split('.')[1]; + //if (req.highlight) { + //alert(req.selectedItems); + console.log("in lsner" + req.selectedItems); + + if (name === 'google') { + highlightTextG(req.selectedItems, req.highlight); + } else if (name === 'yahoo') { + highlightTextY(req.selectedItems, req.highlight); + } else if (name === 'bing') { + highlightTextB(req.selectedItems, req.highlight); + } + /*} else { + if (name === 'google') { + removeHighlightG(req.selectedItems); + } else if (name === 'yahoo') { + removeHighlightY(req.selectedItems); + } else if (name === 'bing') { + removeHighlightB(req.selectedItems); + } + + }*/ + //sendResponse({farewell: "goodbye"}); +}); + +function highlightTextG(selectedItems, highlight) { + + console.log("in highlight"); + + $("div.srg").find("h3 > a").each(function (index) { + if(selectedItems === $(this).attr('href')) { + if (highlight) { + $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); + } else { + $(this.parentNode.nextSibling).css("background-color",""); + } + + console.log($(this)); + console.log($(this.parentNode.nextSibling)); + } + }); +} + + +function highlightTextY(selectedItems, highlight) { + + console.log("in highlight"); + $("div#web").find("h3 > a").each(function () { + if(selectedItems === $(this).attr('href')) { + if (highlight) { + $(this.parentNode.parentNode.nextSibling.nextSibling).css("background-color","#E2DDDD"); + } else { + $(this.parentNode.parentNode.nextSibling.nextSibling).css("background-color",""); + } + console.log($(this)); + console.log($(this.parentNode.parentNode.nextSibling.nextSibling)); + } + + }); + +} + +function highlightTextB(selectedItems, highlight) { + + console.log("in highlight"); + $("ol#b_results > li.b_algo").find("h2 > a").each(function () { + if(selectedItems === $(this).attr('href')) { + console.log($(this)); + console.log($(this.parentNode.nextSibling)); + if (highlight) { + $(this.parentNode.parentNode).find("div.b_caption").css("background-color","#E2DDDD"); + } else { + $(this.parentNode.parentNode).find("div.b_caption").css("background-color",""); + } + + } + + }); + +} \ No newline at end of file diff --git a/icons/Small_A_Z.jpg b/icons/Small_A_Z.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7fd8986e8aa161af1a2346b5062f0853a1bcb70 GIT binary patch literal 21544 zcmdVCc_38%+dqC75@NDN3!^9`Ns+P*mA$f5lx-@NElFjGF(WFGD5N{Z$P%S!v1G}R ztx{RD%NnxI$TFDa_dYX7-F=?#_j!KLKi}^An3?xEbLPEV%jZ<`*uZ}fgAS?hHP_WSY+|k^>2ONH`TS`INl&G%+azT@E;^lakTf*Xmozff)tB_# zwM}k|q`Sw7vrd;TOKM8)-p0ddh4w-Sc6RuG@Q(xh&$*nFlY@hkhl^|3@)bNQR`Bxh z^78QuuH@qv;OFICxoV|=kg$k|$O@#W*eYQ$L17VL_$F)!@Es0LZca{aVLo0y;s5qO zMiC^ioc#j(1q9m$h+TjUA;88cg-~FSoNUa0(EL9(cF@OVT+6w6c)y>nt37MVX+Tbp{{mPw3%cb_bEEX}ZAxZBzc_DzCXO*bf>NOiT z$;irWR#w@mx@))E-hH}y`UZwZhYlaHusnLq%Kp^pGY*bU&KECvczStX_6fXt?RwCS z;E;&OsJqek{<$BMkeHPGI3@MT(^s!Ev$AvEm#JZC(A>hQ_Ammague z-tT?=13w1I<3A@Rr=}@0v+%gsAOvez;4f=ne~e22jEkLv1Hr)skBg1n3mgam4$k#T z%LH}IxK6kWZP>);0keqCSKbx_kE+m{8Wy)S_ z#(KkS+3V-$_V}2Moo$tP*7E|_Ep z^U&=bw%!+}X+lTq{)v56REiy{;=j6#Yf!zKYvPdZNpGogACpoOZYR5q)#WUxLhZm-(*>G5R&3iEo8X*>r{B8PoTHWWlsr8Oeefoj;-@LLfQE zqluCM zYcj%3uG~Y5EfjW%+u7KAh%;1wcq;$h+xq?+-8R!_q%_ZOcQ3db~t3 z04W(lw_ua(T_@0HIowYb?4RmDufn2TNg3s$l9U{yY;;02jq6d=ZC#$bj(gT6CsQ8*Jqj36NUi>t($G`}#c1&a0;1k3kZqtg5h z7jDd^s~`+Tfg5v!6YR`I5e8ZVuN!mCU_Dw~yu&IZz9yu?TfS+|jklYevfY&%MR&Y8 zd<*K0aHhMA@1XO%oICfSTfq(=7{^y60AbKel}i zi)->CWa*d5l|Rrd)#9xA?tSTj{>fFQ+?dQ)o(}6mL;bZg?g2gKSvZv67$1itCbvc)jt2yfkkCdkc4&bU_Go%oBUGe7gx@aO*SDKObAm2;gz+LWs`GE z@E44pw~9&0;8cig8B^he&Fs|Y4%2IWM2Fv!QcTHq&&>PgmMN$o_{sjZtv@0B#KXuY zQ?3Afu`$}!#myguOfL}a^4o{JVbyDAo|S)V)-~U6#(M5qCc#8OkFlGDyBjpDyRA!n(+2M$-FHkJ*<#p|_$tiblRcMZ zOBO5!{3<`9NZHgel7b!{A+KtES141TWD?}l`^|>#q#!|1Um-n2``VtVwX0YJ^5{=WMRYe-#nOR&I}kn=3xwUGb+=R-MmH@ z+Nc2Z$PBb>6b3ExZ=zV&>8{ulUUXZ{H>L%=u#Yp+F2_V!jviyS5AB# z2@^=)Nlo~E*b~QHRCH30ON7E{cZG!Nu_Ml*v8L5jm#$`m{JIp&h_;v97ex&>ob^1t z1-%BM-yg_Oqaer?B^{aQ5(W8k+`6a-)>*A8nO84I*M`4c+c}APA2MMDJWMFd2!5M) zLWsBUGKr@qX0c?PKWfR!i4QE8i?ZJbXu4oSWZ@HktPJ>pjS8&0Evz8Cl)yY*XBi*r z6d3*^dYe?2VoxJT1bVdr<-VpQ&$Pi|~y|e2Yg*Y$xN=dd5VY3#A&j_7;AfR1eC{eRI1v z|K$g&I`V|JSZQy~ueJHxnz2nuu$xS2VT3zHAyDzk<#AXLB|u{p`k zJNRD?OWzr+U|2o0MmCYPATT~)DH;!e9igy&Qx!Hvqym#52Mi;W5FO#qBj*^;kq`nF zp9$yWz@0%0dx#u-8X&#i!p&4O0F;U|*qrH#WR>n_r!{94ltWEE_3{gFdD<6=)Z4Zf zpKwz7{OJj2f$XV>V{4rgu0$9PbK*q7w+tAN>uv_*NW9@CAwp^&A_TPv_w8D7>S@Q9 z0_9#Wo8GOykZ(2DReC)tGw24jIV!=!}`wXruBlqyrhPc8V>kMMP3C zC5DXdI__vHcbCB9Hd5TO36YPC+Nr5ChH-BE$wkWOK9fuGt(aB4Nmakpke7a6?ekiM ze-Gu(Tb?3h%o{&qNT!Od5*1T+loRew$#(nbS`8;0FXfy4)O;fuc%dYow^h?%>@$RIWk8&k zv^VIN&yp$XoxWXDKfZX-_Hgw{iz`Hh^^R9$SF6WRqlYXe{p_agzHZGD*Bi8M9eT3n z*r?2fF{#K1LygEIzaTB#*Z=AOrqdqTQgMtHRVddoNGiBzC-(Nv`i4u@-ZASs^TNKw zM*d324fjWgZ&1zMaTll*CW4(ExWJ9(**^AEYK6f_f9Y%C7 zsiIu;I~Mh zJJDCyxMlfSjEkf9zq~Sf?p*r1E$7SqU+)mAhPdPT*Y+@=3KM?%7Y4Lq5-mmvJDxpN znaz9pxOCn>f!Qk4yQq)~m4x-7w09$0gu26WdfWsI>Gx9iTgjg~X`gk&eVt+4$9N>x z;jORY$lTnC4tjlu&?hUu`j?co`!27qea^NyBI11Ai_y=S_L@-7ld8(!ZS|r{{Vxn) z>WENUqKL=t75vM!vgULc5JxU8N3^@@YB$BcN4|yuabFL6aA_!)@LD7@S%Q}JbfzuToM}}U8OVULqM4*j`o3w8G}B16 zeSI#i_s?zJczJZ=Md^r-W%rvNMoW(yYV=lfTv{*z|IJrlauplvX)~J zzAL}!rKAM4>gY3O`$I`wNzS<J`u$bp@ z?+wI%tmZ7~+&Ob+56tbNv=_*AyVNlt9tLC+yT8zB=ImB}(J$sca?mnyEmKFtv{A_E z0gjNJaCoJF*<&ux$zSmU({;fBAsKcrOUwf7a~4m+s<;Rc zz>=H{u`>GCvdUL5Am@yhy?bf*a01RarLRFP=@qkD4^p0#*tWe;7i!kuQt|4^;CW;c zg;>_2?@!(F#5>TA7_`4;f@0O(H|W`NCw{eb4BeLjo$Y9;u%SJr%e4AGW=!HF-3JMB%7q2>n!A_N*Ih7g6aszUA14OmRKeB{Na&KEOl*F~gqcZq63>v(zx z7Ld>X>=kWI?7WN5S>ZEsEvT5V#%|YFg&w(hXQ4N(%0{_!N-~L@TyCjiL!tDC052rC zc+uB3Y{|0SI%q7e_wjVxw?3ikK!dhXU8XDP+ze>$q!s-udWDtd!J{Y0h1Uhe&6^Dl zZND>avw3#s@?D(*qnwZ*P;(e!F^@$80Okn*Wdj@r>_QgL!jZ5sOd~KuV%XonHgY3C z*|p|1AZ(py44B^rm$26z3y?dr{_u(j6C*3?EC6pwxK^1i)HP|!>CVrFQsnC|CEE4+ zR(*=`dr~YZFm0z(p(*_EVgRIN4_`}fMUk?p)-ol?EO9_*zk;fgvk?T*tLKJhO{|FhA|w(Q}_^kCf~=5s~Yki9;Yt5 z8g=crcv5v4xq2$2nh<~@>Aqc4uI{(DJN)L>thKj`zeGN|c3pCtmgU{RRsHBoiVgl~ zIjVY>pMBYElG?eTWIGqppWBX(JUi}`bn+nA$M~4p*TpE3aYks%bfAixh%3_~` z1gDM7K}QIxhc<8R$=+3B?~j|YqNPxd&1q59De@=8Qv#?PQyfEX2z?3B{P{xSRqj^2 zT0Z$T-C+6_ahT7G0VTxvqyPE1L?4#whE_1`9|m+%aW(xbU65?|yt9(FRlS|vQOZ|b z&+dgy*fL}EaDiDPS{+LPv!T5&zrTUzEtFwNTMUQH}!5{tD#GkOPKy_{(c6$xgsq4wK z6=u(Km1kEkXGhxiU)M$lAJp?%cgo!^2;+}=Av$s=m0n2@dOqT@`V$?|aQdi+wL|~= zDqb~-GDD6jDX9#p={n=D3My}Rwwk_t6E^y>PbGSF*YWoQfJRaakY)cYY+lX2)It8j z)8K@u<5KGetlEMGv4t=Jv=P(h0VMFtMgaQnyVhpx!D<{oh4(1gE7(o2!l3TN_V=Ub zk4_xMSe(>GeDl}HnEFh6rtH?dx9ikw{hT7!&}R*w)B&0M$rT-L`|P;U{u%u_Wrgxz zu@}2-jWLai8|zhE^}KR(bMFT`NuM+p#65m1Kb1mD!s^VKVvp8ik3BcC&qNK(x&{bJ zWo4Utrb?u23?4l?XBj?kwl_cVWYdwJV1HZD88mE3zBuLYm`oyGOIc%ooBs)Z?&gUv zTI3-L4@7EdCS?RnG9Yp17eC^}YuqN=_gE~CZt;8lr8n}*yFkn{JO{e-<~Px5>aD%q zZXu&o9na-%!*AEGYH7m18ZEwGQFq#Jgw)uXaitLX!_0}!Pb!anWL^GfhwJj6V#u-G zm8jBcuAauCDvGpz8R3STNdGOq4F5~fYqM>QUbnxQ3fo@nOB+XK;cj60f$ean3Q?5! zo|hJ`yID5dyMNuF)i^i(M3}{T!}(;BPTLRR<#9aq6F0W+`L?{Y;d8iQ;ugYnmrD8BxO(N*16E&0GF%@O zjbvjKYn%-1oj7^OtzGo9e%)#-P}jF9OVT4;=(juYiTCESfi7Jrl< z!H3~VhGRDYq#Nn0S4O_}o-+)W&W;YfXQa7b2AwEzmt2?=KWMkM{>+Q7XU{3mHCdm% zZBuSmKfBVA{Tl2ha1TMyCr5N0z^Yszauv9zX8L$kBD&^&w90Wj9LqV08_ePKWncT) z<>#8@%>0;lgYplYtaxwyqj6zVgBg8+&HO-oKn_(iV6A7C@OD&p6oF~gF@6CwLypa>Xr zrgj?}GEpNF^2?8B(0Sc^My!@m+&i1%3@#lj`;ww|{aw}ev$wXRn}OI(f5knu`~veo z!cA5j+V%|xJ*ifbSy&{LIB>nLk6P7LZbndle%1~7b z?dHC@?YU;D;(MpJJ1Yn`ckwqaGaKLhdz z-ZHB7Ko&8sUyMf+KF`K(n^s8Z$CTz9T3=^rov3TLl@#mb^w=&m|BqSDcp$T)tIz;ZFPq333kYN;=S)L#A9mS1&;&i`EmgaSb_8 zS5DJ)6+=2EXHpo@fKcO)cHBvPF%sWvPI=CNFfn-g6-`_$Y{1}nm&M()H^x#eXmPl; z)N@(mShvo0nNohylQwOw87)#0H@B5!bn5zu3$xAmk{jvEi7B@F9;w*PWU1x@w`vAv zD@8+petcFC7puzD$M7kAN)Ab)t0GiG=t)zvoVtgYl<3Y-F1*@?_gYs2M=-UzI({jw z&e5-|?X1f@+$1-X_h0!M^oT1^8}*SUGS^S;pmRr(9D0uB76cmKE6(dBs)Ld2@8Dy|@XxUGu@H}t0CYG>^_j=>B^*@FZZZGW4lh@|_OUaWaw) z;U|a4%R(SpAp;63!>(XJadzt&P!W>;7Db|DTp|3dEJah;7*JzI=^9zYtT_$%2qzOR zT)hN$E?G5DCU*F_+nRFkb9I$5yF~opX+x zs`Tx&n!^t9JPgS7y9^b&mmEvHYSe zXed2?0G4OpoMB^FU>XG$-?K>!!*t0HaU&$iKmZ=u`k!8sGKX50pQYv zdYJ)Tdp!rp{&(v5OQ#z(q}-=guiAUh#lem6*e36ew zQKT{HZkk`b)G3wT(j9@}qY3*ogPm#aly>r-l1}0~H(^Sn`5p5P{g)A4d-0Wq?l%%= zUq@lei7`ZR@4~qX`u2tb!zV^{80UKzY(I`PZYk{{{h*jG6Nd+Y%fT0~!trjs-<7e7 zYEp26mS}n+>F7(FlN*o!yx6hjB~FhhtDza+;hkbvm+88_J$+JPPq(_YqtLU6e9j{% zbM1^D4xOlXX^H_DE~3#D$KEsixu+=E8A zxv9<0*64+`b$M;2{6kLD?S@oN2WIcAg6o(y^qt`8+BAit72 zNCKEUcZUdBUged97DP|S&4LpfOCy_XzI|Br@RgF5ZH&^g6!_I7s5&C~i?rd3aGuO(%)@yvjD=Ot+y zRe%;v)wq}K;+o;@pZywVbkgJ-1A1aHR=P(ExyR(KA1ug7e6cy5Jv@+*d9Clc{n;0e zcJg}l&jVI$uDrd;tm*h|_c2U?2)T+Xg6=fNo}}GRpVZWLMM4Ty}N zYALRwT@YrYXu=T%OmyiH!xKvgD<{LR<%O174GlELoOkH7*>^2gds^3iQe-CA*5RGo zjhLW!nBX`ua&+|Yy}V72_y#$5eG|BHO6yauxq5&jV%9eycPt2}T8G={joL@nyQ9|T z)bjkPP1%N(dSVxLjq>YEi&R&$O01ac0wkgqrbHKO;6QhPun5nGC@^z+Ci*s0hTwST zcP4iJ4vV)_a7X`!JF@@(KuAqooMj)18C9VcqAJ*}u`(e`t!WmypDH5M(?b=dJ;=zc z5Tz|**;lBj}NRr(}X5`rwuVvbOhBE&i6{GPN7#VEKw45;oAmoYEuFLi)qDa zldbgSWK!!M60(E=2~hVoOlt0|vTSTWd$zW3P&r!O@xz&2GLq`T=&4VpTt8g1GA%r- zTZ;l@Pio%?*>wZ~A>SoEQ>2(+cQBy6t0I9Ltih8HW-YJ|k|wPd6= z?S1Mrz0*=wI_FLBqdQ1F3o)s2mAe4&j9teMoUFx@)D-EP!~eV!8+8!Z(7`#1W5ZS3 zZ6jen9>{vz{N`2Uxtfgy@rJ7rGV!j&BPzWjv#&u)HJsuQPf5`wHI|Mb&FjWg)}xs{x0)bR9YTG~j8c%zXo{3qMPd)?THbVt>mHj9%9+D?ucXJPUY`;{ z(1J{;H{>TQh_NP3EU)!HmFluoIJ!o9rFJ9I#iVc|G@)V*FH?Qx z?b0vaKdRlg+roVNa;ek}{wP>0V0g5^*@N1g0p@Qr;~p!y9b@z7U>Tf`rk4ifYz^~C zYZlG{5E-P@6d;i@>{$jBq1od$hp+`<`s4K4HyO7GvHbBJL^vD4P2lL0RqbP_EwOjb3hNNmi5#BmL9SN6 z;^E@bdu-Ert8NPc{cxKd*QII>;CHRbPH}%ecrWH!+jZ--+_=j&52HP$BWGf0N&vA` zVZB{VN+s3;6KR`feboL)eNXT>wmbQxC8Fk77&2As?o2QXd>#urT#yqgZF#XYFd-=v zqV7178qZ5;wF;*)pmuym9|Ky0&dx&3FrYjJMEp!wIT!-v(y~$+P!+9_Mt378&bgQ| zAi`Y69JQn8@IXB8jzO<`N>MSRmrWTE?|TDk@Y8x0$mMxv7AUv=%6qAo83PEAnj?2< zsnS15tQ9@P)rj3KIFK`Fy#@OyTLwL*w~~Nu{7J)H1P)`PmKM51v4u@zt)IvDfjC9> zYN;OQcK`j-UX|-)sLM^cMmZIPqre0%1Q*OVAn6IGLE&kI1>^U)=;VCJo1FC5)dNTj zps;_TZ0G+z$+KvV{sYMaVq9h~K^(;F;c4&JrL*{e0;Q)zvzgtk`|A{v@^hmAz3Q0! z4}DKoS|^$!KUR@J0kii{_POL#7dy+QS*Au;#yOkAvf~KADY`*MfZ~gg5*LMW~08t z|9%5U&<~gHu~`uhB31MN11fEtn5Nx#U_e^8@f}$pdy9U(g#q=~BIl;i??7(Jgkn*+ zl>t4nv<7l=se^g|MS6|}%DN{#2k5{LA|-|%2eK}|z7sxNiJqAVq|-7efT9EWMV`j8 zj)~1fc*@oX3@A9&O@p)BRjtAJ0g->OA)6dpPjl}whHzG7`26W~a5c(w4^a%dl zivkbQ^gc2J3iQa}clKO0-ZU5;VfFE`QcYB7=q1U{z(HBW3@#yGF_ggXh7-V=lhJ`$ z97^qu)3w$sebX-lknvdre(~IhTYmFPkN_OcSHuVW-ve+tSMw^kll~Q%GQq- zAMLTVHw@G3_8hZK-ApArGf>AeKaUzXTAAl3NxYmtf&NdGZ3r%meyefFN<9B zJpBdJ(lDX*r`Pt(Dx>~xH37B1ecryZ|M7}!sA6Un&<9a59=b2O^AUbsT~Fi4-fmZmFZMfcCXLiw z>WK^#mL5GZT$}lP!kGr>r2v2IC5%7*wPJ9V_a=d%HSufo9;zO{f11l3HCp~kwVsE5 zx$pky#>=Npj;pT%iCDwlNNqlNh#7SR%7%`jx+mU=Wkg{QUVNJqc~j(L^-E5tDi4;l zAF)SG)e?7XIh#_S;X0y_=#+j=`e?$fWybmIAk7aOh)Kw1na-@7BDBAqFeyqYDnF$8 zoMPd?yBv%%Ng3Q()86_~P5IoTDEdCj@fu7nie!ihbLjROZbw}k z8^w+|yc0#9-0RnuWnZ{z7WzckC(JfQ12G+w-(Uu~u(JdF6qM$RAVg#;74n(;baB#J%!t-#&vXl z>Nc`s=;Xn(6V|KGHSY*qe`KSn@5>^pBVt^g&dW`n)bJw*8d3Znw_VP|Tod>ESL%m$8q)?>NSENNkfts?gfb z!-UmnC)%>v!Mc$($ZKsbqM<`k9jI-J8iJ?CDHF?xSg0uD2C*{|!*1CXH2mGIJFO|i zMPeI1C$`RJ-uJ~j`UURzhd8E`Nq z?1~tX%I=TmaRl-tKZvJn>aQSB%!rwdLG(uVUPs)9yUM=9w3@ybN88`B=d+u{tBjYa zt&aP4I9kTBS8qjn3a7z` zet&B0PqfZU+GzpnxyTG~G@SoXfMvVcrODf+_rSB#*(%oFYF@DKZq3E- zrTn&4@rbv0y$(`pfdKHCVSoKMybLIpyZqQE-IS}4PSK*y%a4sb7gU8NixJ9f z_!1oIC5aG}`BrHE71zx6oelEpj;6=;g&hTi{UG*CM)S6Mor@3%I)%SN(dG`Ae^fr zv)~ALA$M0}xI`oqLX-gVUVxxLZ$L%!qUmQv&hYn`!t$p#O>g*14Dy%w1CB}l9)qyB z-lZ{!2__|qNj3w^%wnCHWX${@&}0U0-+>7sX5=+L}7 zGGqdA*g1hz1+QTYpwX;=wVbEV=Iy5-@GGpGS~A!$vyg&=b90<9&BmDk+gLC>_&TP~ z34{X?P?XCKS2{DpROVQhzGrQj`U}bXKd?tjYM_>oyi4s7oR69J$?zN=wzM=mW^L@Q ze&bOvZ+?z0VA`Izh?X;;@l7to$sSd@zayf8*i`@k0!YnmE?fsVjj|*Lbp0m{lv)iu zrFbzQ#42K}5lDamti9L_qBq29FP zTSd~>R!!kSU0GUJ6?KIb-2)J;1FwH?H2Lk$E;IG;&k=t$;z>$Ne~#HjR?p>^^n%%Z z@Ao^?FAeXE*^SXcz z{=<5FZT&OI{Vxjk(AFR)O$0eDP#1j83Opur+E5?aLQpV zV4NSxmtrWJfu!At=QsL);-Z&X9Xu|$RS~k2&m|a;!DSt#=d`pU8~&taz=htMNBL}+ zTCd@I3}{mcDT7{?kEE@`oD{ztSK-EhG(c{)kW;Z~1W*H4@zX_5 z97nVT{6aeD-ues(%VYA=8iei38PM33LuT45X^ST?FI)e9V(B*;^h2nYNfcB`%=NeF z9eW@DP{S%{ey$(6c8lw$CWMGEVE5mR4+V(6K!zmMHTt9nDO|~y{=k0q@hg^}V#(v> zf%!s3BGgG-Ejn{6an1;PpkBi|UD_g8{%&U7NV!y25PCE6kpFhym`P-7h2Sgs-P z*!$4CDejbkS?r!&J(z-ub+09cePae$$d8GpBS@*ZrB0)$%TVijROSek6M%LbQxyow+0x=#bT4pfB93E{Qj%h1e8@Z_Q_CJ z&e3&$qvlv%nYr0$o=H{^W|oa-Lgw@L-g!(=ti@1lgXES^6%f+gh3rD-IWc#cSpL?| zgL8S^H6J!}}6S$itm#r^0eYW;QmkmbZq~ALM}&b!oxfOtLb>Kk4`qJ=IX1Ze=Le z328lkU9-mWu^Jf^jNnP{1AnA($vF?>OxNb^}(v>sVqgB{1#LVf8Dv zYJ$7(2YKygvuum-hGsKH9?V%e;$MZA@WxtsT^}l)epz6p_0Q)|b@psc9!*IBe(oW3 zT;Y1GP9t58QUXZ6;7PejR~OT$O3hCr5hlmgAvI{1Fx#ysgI+!ji5_^o`^NT>`di9% zA6w(}?W0fnMjWt!BY=d$4}gB~q?f7^GBd&+kx@5>`+~Z@-Pt;K-`40kHLaFIv)nyj z9Flq>%r*il^$AT{Cc+&pR9o`*8@6j2_7B9^embUlkZZ>abP+%M>}?-=LgR6zGK;!P zt+s1TvR}T;4ypapq9nX+&m(hX1O$4u`SX&A0dvBlpIG>xHDloM0K)$OWn}{OzrP}2 zR|fAJ-nRW*-wrKj{L3Vt#FQsY_1F3@LVq|>^_A-AHFEj^=LVrwmyv&+@8)M{kd z$}{}2wdU8apFWA$-_kSuFgBq6kcY}idjq!C*t$%mQ$kN2OUfjji5ioLe2lmT5n>$Z zKeM@H;@8>BNJ@Ck8Q`kpq-n{8vV(Ek$ScbBjaqyuKKjpa=Q?SZ3Fy?cbll|kOjw&N zFO$%nRW}N?sK&J#qFpyF-qgGG&h+vaS(omW>(w23 zmbrHOE9boYCrYh)COWi!$#sf-x_BKTQiJUgRe@x8rwhY>Y~%ItD2* zG>N2X>6mWx8FX`H3H~+mT_tKc1t&S~FtX;_90Pim|3-3|rhLUVsWtl7=BK4GE={sd|O)@I+l+6w!?K|%Q-kgh$a!!4{U7%as=bbeKdbyR? zFo8r_Tf;dPreY8^m_wp|j73JSmK2QdiR(q!p#d(eq6I#psCMO>1WTyC>ge$^)Tor- z9kk{w2Q~%uvnEJ-ii1B_WtzrRYgnB@xXyaQ$FI1ZrQ}Sqfq9lYMD{bw<^C!}GSlW_ zrnP@_#=t3GTJ+v94gVJc_PLyGN7+54)u&}CJs@Pnz|ObTab8iB*x*tCO; zw7gmA5JVVm^+YL$wkJt;>6<+yU%>=TTWR_U&BYs+}*F zxWME#|NXTNbS-gT+2R(Y`NbxOGJNO5ju)SRjlXGGhLbgvBrUsj{_)Ww$-(VUsv?l5 zditauu3I7DGOcJ*H*)EL*p}h=u!dR=fwC1wA_Ce)5PyLGmIZ*cuwwI`c|M$H))c}N zJA4`Z0e02Q93zu%XC)f}tcGniCpgmr$CY7BvjnTklHxN<(LZY3jk@Xots3{G80$Y3 z8M25croUn4r9^J_VAeQxAT<=8c;75lB|F7v#qyfCU)*uRO#8zu!5QiS+wC#oabmOw zbg@C)cCv1D$hUTEzRTg6PmNxCy>)W8LSA=dtILPF%G^w}mhj6viM5wrH49W!8_?5BB7Z!z z{8G=HP4Gm9m-ylP&*@(~gga{`!>lnYj=H{SP|+rCQF6G-m0!3V(G>T!AA>05^}g9N zT^frjE?g7%=`HcTS^w#e))j;}%c&zDsPeO7w1-583|{(YG~YAq#;#Pasd}K^p!JjwT)T5;NDn+zhCO7vrXy{hI%isG*kR6BurvKT%cukJ4xXbh zZ#@5G4_KdpO$V~2GY<#;kO)hsKdn4Ow}&$Wf8!-+AWs+oqT~0!GA=$e^^8v@l=Z+g zEbcS{IYChOZUneBnDqdUfQVw_o184X@1WV3bTArqb+fV0r4r4@qqQZ1+uaUfI91m!j~9RF)(}8gQv=7pef%k zzZGWtfg;s1AWp29zl9==5SxeS!ILR8sv9{T z+5a(w9*FO1#lNni2@RRdQ963`sp@W1mw|BlIWZvoT9D108BYKYHlTQR41+Y&zS%lD zU6oS9fcRT!al`?F6}|)T!(c}nHZ@~Fl`ft$r-`r80=ATRi>~}%bqf7ob_xx5s`0l@ z`TW+YpZ}Ykq5=LVz!3l8z9VW%fXIMqucuf1J`|M^BCnPZ1=E>xRgzQ@I8j=wY;fwb zeO73MNbF6e{`yF5aSu?m#dNUDO&KgN3l|;1DQ+e&5eEWhSVY;J_+U`x15l#)fH3gP z2jD;O(}%6EbCC8T;a|S z{he%Ah-+U`8hgNfnb9un>K6{oetMA>s+Out?%$LB^-}ABgU#uQpHy#ed4GB0IJk&w zLe$kwB)Q;xvEben&LUE`_B_2(4XN?K8LXs9V6&|N)LK~!Ix8GI06^Dm&=Cd6AF!Ij rZQv8Lotc$i;HGZ_j0kBu0c^1n1{kYAJ4Z5TlGB|3#12}JjOPCjTx4RP literal 0 HcmV?d00001 diff --git a/icons/Small_Z_A.jpg b/icons/Small_Z_A.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a1f1ac75cab6381c042ff7d38973f3b8541f002 GIT binary patch literal 21907 zcmd6P2|QG7`~R_JC;JvtB(kI|Dcfj4@<=E$uff&X8Ye~2KDql&-=c=|Nr-X-oNKL%~|d_=iK*oU)S}$zSngR{R6!pTDjZQ z+!SJAfgl#}A4I1?`a5h)w(YmF(Od0$T;1c8i|cCtO&d0@R`&CCKk2&Ke7D)^-Fr>U zR{L++xL$4bX}_ah?q|=fHe9`RBM-d?+5xe#vcms^KX&jx2NwqiJ39vtC+7+-J{~?k zULIavegWZ?`~pG(yu2&LR|<)UiiwHw2}($ci%JTMiiyHEVPON`VdvoH;NTYJ=j9ju zAOF#-AR#W+GpuLWSmYsAAr>|v7J4m&0G;GuVf;ahe=Mxv9anI2ar5wk21P3&Ru(ok zR(3Y{twHNha2;Y7;t*c5Y1;}B>!Y0Vr$sf-$3Ngw*q&D{X467gt99&5I5&^DgrtE^B5cT&^RGahDUWk1Rjm_baf95 z4t@Ueb$I04C~<0f=Ev+DX?_9j7YoG3>=yW!*|FdHB?S7#%FfQl&I$L6g*5c zrST|co8de#Je5)&2?wfO6r4OAKjz$s|FZ8=__|e*>|)M+?0m6S!vW!Foxr|<;i!GJ zj+|HgWcVFigbRu9s$QDS&Cg%zc-ARD_@4j5*sZ-^kuSSfUcv^4f9RCfqw{u#bz&nJ!f^@}PDK(2O*EwbL z^_{I&&n6?=-mUY4r}QpL$)#;w)j4BM&>gbBNJCP#v{GCKuErb23<_$>`zn?{lSw_@ zbIJr4#^DkMd~1hNZ|{Hx@K(;+$T1;Y~e|9B^tG}d_@&yj%z%iy+(2QA;dkr zu8&&LVlv#j<|m#wO+;h-&Ydud3ce;d-9*$K++0HRYzS(&8nWZ;+@0cVeJiazB`E{t z8R!&eQBd6YC9>^zd=aWnwZi{La%atKzJa6Z?Pud95yb^2z?_0@r zvG&aghN?f37l$p0Iezc}{W6Zsxy_@$BnHvHlFO3hOhgNz#3f-Zos3$%;nIzH*1M&! zr$#wKyBVTb5>V87Wu|~&k-?G@HWyd!`WP-B?r^Ig(!Y+1!V>mt^c=0!B)vjiq^-oO z_g4tml-yj2e4TYDe8;M|3hA?QnWtxP5Aprk*y4VY>%i?wG13N-py+6JiEa6Lnx~9& zxHCIOW@h%_oDQku&AYl=NypBZZ(ZBWx;!&YL|GIo-V_H2HL>H^iBHcaY*u+yb8XwI z2vjMSut%fE1JP|&&Gv$(SdJnca8%5{O{tkiRXsx)1U*#@2!3i*M6x=Bd0`b5G*|6& zSq~X)pnJCC&XcsKB`^m<62 z3vF^gm2z@NTg0_(6I^q+Ln$1v76Dt6!kPr8J7Wi)z3>K~fE58gU^HVKES+VjhjMCk zGs7Ig3iitm5B!aBppJz$uH8#oniM7+wcZU_yWQY9>)lwCGk_41qLf+IyD_H(53G9N zmU~%H`m`QIQSo*1`Ve)j&9wSNxkHx1j&%1Y{RNE?~lg6lkx^8!%>1o z7|Fooac}JkBl+R@QhNh6H~j)R2sa!zd!L%BLx;LO2j685$(}Ubm2PAbnKYJ>k$*i8 zqL>?vxv{+~w;qhKuTNf$@6;*#R;2DoI|01ZGw&vayvDUuOP3a=fq;#~(iSR67DIPR zcaA+EZZ_P#bzLdpNou2bUPg|Ki*aDQ*<8Cw#AFmLyj*FpLaD(>rmcv|L*uvF)qce3 zu2WfnK!Rz_>TuQhlep$4l48SnIa-XA+&AD8jgt(tvcLA^?m1OTv4qmKOhci0xmui8 zGw0Yxb)5rx7j2|=y;OJry98J$dM(BrqSnj}4F9tA+xxpd{2RyOQM-R}LrGvFz)F+> zrp9hZWuQ&q%x;ESF?QUQp{$9M5AutX1_$?tb6sm(oB!0-gl%m?ASCcZ5q%I-ZA*tv ziaw1Z_v6EHw|ZZmH`o!%cIr_TqCl0cQN?ufiM}*6pGo7f$)b^F7dVGozWgB5p8Aapw&s@A}G zHyUXN9-wR`K6zLW*k%^DS=U~G{Z3>S#6oMod`4iaYDq5^pEG}kfQl}{T%xUS3)%7D zu=&v(_i44+Iibx`lB=R<7m&`V?vkC<93#=L@BVe(24=3(+a7;QkFMJy>54k=A$0=n zsEb00OFP!)7RN zjXJRzLZ6#CqcPRnFn@XYulLu}#A7@GCHYAv!c{~;> zCh(6wjylG?xp{N$OkrE^?lZ0WtCEy@?~I|hgt!nn8}L{3N}|gx&a{n6G)+B3A8?lH zk&b<()%r|t(Iqb_{hvQoyYMcEZs%HL{$$;K-8$)=lk0B1Tl4RCt0-ae-tr+rkcd^EWgk~Z@_ zNk6_(Axq(2Gkf8(W}A8ZeEYOq*%2r;wjG$Yy-QMIegaz<+YW|ZHVe|WHf5rNCD+fR z49i&(#sDXkQ#fI}Z)4L6PN^#{3KY07rW|d+oq=RIfXCx7bUu(zpxp?__R!tr@WF9s zo7HKp$XzX_=4%NYXja-MZ1K8G@;-|7bEmDA`16HV9Qozn22P8fa`pXq?{l27@%Z%_ z6h+Kw_T$z1pz9&>1f%rUkz%hsWx*#;-PB^6s(NfRrLlH)ZR|7L+kY+~CZ39dSXPG% za80QG=%aBvkWX0*jvLkV56AelTH3ursBWvg|8)Ar)%cUO*xNU@@dOPR59gwH+I|#t ztR#FYaL#eRsp;UcSu5jhQLUQoV7#Q}Q-ufYY{rQ8_hM6%V^kiH9E1Q);>d_ z!pej1ANNkLR^UCA{HS)-f?S0uI(1PC{ygqX&0wBm(_RwVUbo*HFRC1{jhxf4I(~)K zOdT8oZBhhK5Ecbc9&QUDoWw#HZ!mU%I)&_@LmV2^!p_-H5=J*7M8j7kaJW`{QsS1R zmiz43#@3;NYr784C>ab^^vvR@4?_&e8$whoh#T_sDl;_8_3ZAIHwK)Jg%BU5IPRvr z{2@k}qF9h(o=_Z#9R-7Z!iO6%k3CBGPiyCI@;XkqI`U{^iU0%&B(l8g?R|aj^xEl{ zt#1`10(=u{f2>PmAlpBy&ysY0|D3^h4G;BQ!MF-u>Gp{Z(enM$#4RmLx(<+eS?>l5j(BCd|B=4T@fq9ueqTeCzaD%h=JX*slIL+}FdEPeE7_ zO6$@^<`37t^!jo2%4dRjk>-xY94FCEVX-$Xv6Z?uONhQq`Y2v$7{`4z!NObnW8A@7g@nfrFTlam) zUNs>}J%alZ^lCO#Z;Cg^;V|#5gXXL9?rCn^$}ZQSL(Zf_>>sIx>U7Ah=^`P}xz@gl zvc37})Wpu*X_T>mu-}g@RVU}!lM7j9{os)lwP|MEtM|(&GaQh$@$cFMj`^9s?H3Ts z02_rius{IvfOmM!ff5xaF6~&G!JHtR-BHP9#j z5u)B^a46+f-fMXk)B*7o7W&a4#FDIcr-Gw?c+djr(9y~6*ZZkAj5auVc&nAjiL~c= zKK|DK<*=ryqBV8KAmZDz0NjYg3pw@HkaGhuTD5wzpB*p8XB(G@cWx}UZKgxk&9SvY z#?mu?5*E|({Kg$HgPxy}5I}0M?k#O^MS;RtTbMwKUuE?X1DlClRD5j6jodcn&Y z<2_UxfuyRqK_!j~sKFPto7P8%iVtDO3JBd!mMU%!i4z5EW*I%YZ)Z=P!MmLv$=t#j zZvP#1zVu;sK(2?b#N3?br^CI^lia@^Yf=zNFgLV>?3Shn^K%Au0a?&ls}Wn8l1H$* zsNwgJzu0^*`tq^40ASk;MjyK`cz??EPb%JAaQNWMQ`dUxkNX?FT49OCQuu-AQ0x7) zR{Bz%m4so!wZ~^eS@t)M?$|SMshAa!i#{JBO--PQQdZ<&L~xNzUv+$u;M`k^GWybV z=6FaycJ`EE78?=Q-$xPQ9g3^FAaOH@?=W90>!j}CHHlSYo9?NpNdG~H%2R?nUw>NP zjD0~9J+g%ca9McJ=LusGF zw(9*Nu4O%$?d!6i-A@!8cOS$E1qRpXC1Eo?g6tCgv}vub2fo(kH58o5S&2D!Z)lbM z75kAmijWp<4{rlvR<(q7qokhU|EVD5+)k?z6&k6xm#h=}^4!HPZ}y z_mzlshKU*-VMx{yTp4-`rdr-eHALTC!$8&$A9wcYfeXc`b>qe(e8;afjCc-O2?e^^ z5n^*sXMA_`dv`OdC(qpbWZI^e(fTXh*f#&-a``7&NPP!L-b1nqwF?|WA3UWGz3A<+ zlB%|ot-Nqts8Aw(MHZZU?*2ZeXW!U+1X;G7ARv% z^trU5ZX)JUPi|d#+7m%rg#xx~X2*r71BANE#muqy>h#h9l+ zg_apTKq~-Cw);0IK8@)X94fhlbhV0H$c!#GKa;o3tMX7$B|13!rK0?{-g_crEQUFy zojR`t`Q19Zi?jV?WAD50_8vU=rpHFPUHFYv3e?$;8lNUR_tD;Cgu@R=6cS9M-iqIJ zPcUe^r#;0t4+9E>d)@)3I1dU#a$>lWX{l1S4JgWEo+gc-iG z3YuPEU>>%0VLYnu(fsJwcoDSG;aee615R&ui|QXQ_nR6Y{5E%w*lRz6sG>t8`Eq%E zOS8euXcvvC@;kbhhHRmJ+1%5sy{4;Qgz`gZhi`hDAK?1TTpk|i9o0=Zl{6c#ov+)n zU)b|I?tCA?0uh4}r!|J=xbGz)w%_%n<~Sy*y_Kp~JbLJzfF7qUuFL8Is=%to>inG$ z|4M$s{fkMX=cUIQz8*B6Xx+TWs+c3l8wxo@(4ui$5_|{DODa0Y`Wo)kdgz+xWNof4 zO;|(Dq;cFK%j{}-Y=F$%mif(p^Mc<6-h5T3T}jGmC=*+VWhN()LAtL5Er};CfqOl6|;Yr_uy$|aC`vnC6e}HYc9!_kaMvc><4F4GxvIfiw7u8YzAZ_Z$L;V3!egSf zM>oX*Qma^q=*AmXYNP8Ak~FrrT7h?~1KvJ-pzmj?FX8{LBH(0naSM&K57m;Z=_ddD zO4=Rmq|K7bqg=@IDS}_T!nxUxM5!)tlD>hr93rU`+uoHvZ~jcEFIcTawlH=%-$;kt zr5w1LQX?i&$@o*d1Wx6(9)OC{wO>T9MS?`FiYi~J!svz)y_tf%jgE>3F|iYRYE8nim)5g zbJ9x6J&&@Qn9(14qA|cNpmoznUoM0;KX&loak>7XlGTWe_9Z}Q)A|cCWa#e_LG@Fi z7ZrQ?g3SpK>ntM@1`!wqk@nGe`G-PLFYpCo$@d>x=~Psf$wt4XvKOkDvO=i8^IG*mdY5sHswd4NOfuI4-j!GKInvA3vkrW@Q z-;6L&KbrdRW3IOK#0@(1$v5F#ieLlcJeFWihoUi}=%(O73*~Z-v|T&S-O0&*e)h-8 zY_-g;7o8()6s9q!I=pb{7ChzGO{pT1=oF0dz>N0Q0Qx75*0XDt5}Y+#R6P zoIa}D532qlI@IvEZ$ftp_f=_dm~z8M8uP(pjt-esKxfYW33)O(E3v;&xgYZ%|3Nv8 z5&7+mq!oh(feC!D!>L3R9MFg`Qg>IfB;Jgi!3lTuk6Z3;S+@zh{{;JkIUD{EC1M+m ztE(R)s`wW0K!;9XxJUUMu3J_5C%?Jg%(~4_YJu2|H&sp%9CjW;jVTZ_`^}Sv4ij9) zzh28^+uv$j9q%7rinMcD)1{@^9#*0$+*Z}{qDxc%M0 zy6`~BoV18)_Om(*Y{aWHt_C7o%|3Hq0v)O?4Y;aialg3arPqXYaDX4WW-BTKMZFEQ z`dX!KIk6}ymuNHCU`n7yH>$dKB+SoA1a9rQ#+pj(ybf?^P9LAaHow8Xi@U1fv?aB~n#!{If!Q#cdd0+b3cDI8ZUIbLwE9-L)W#gl&ArPkAIDYcY? zbSNQr$coH=m=2B1;l6cG(hN_~q0{&qm`z9t86e!*~r?fRe5CNns}wIE3H zu9SNcvB)udAF65z?%gO=2tcECn8xbBAzB?6{?@V}h?>Me)!-J4tlKhxgFzkhO_}#w ze8zG{jtLt8WcU+8|FspIvtt5_U*aWZgRRR^5=T12KrxaS%B(VY(#$^_fOY@V0r2_v z24FG42^x&MCK*}IuC==o3!a+De(2xJ_Duyp8-t@zYUmJ#Lj&HW0)7j_0a=;Y z(^`t?5H<@l*`G!>?WCcP(jk0!m|CkXW?TjZ(!4a9ATfj10@6p=TcA-2_sAmvZ#Ltn ze+W`3q8PVsI@I(AIY-#b5%mvGVLlK#ke-Ds^u`Q-MUY9#%;zz0_06N?=X)XGn@+>9n)K_ixvki109@&2PGo{8+4*6w%Y;r!E z;544xZ5Puy7m>DpMP(-LIxr!+BVL_If{QL45f5nBMF9Q*aAV2q)pQb~{$}ry!RiFd@ zB2FDE0_-2s<00a zn83wILfUV~z?rN3*KYTzshhXIVXTC_g|Y=t42Uw4AUUWH*c8vkf6J44lF{&5n$OQD z^ZX|~Ur4~9Cq|Nlx9w2Z4pwJvof!CX>5sNlp=z%S30W!77D=gwEh&7`45k710O^eA zl0Z>&Dixi+br8)x2b`pAES+svUx-rsoSHnfv7cp>yXtG0;awVcFj;OCB}r2{K-t+L z9IU}fIx%o^&26K7=lnC*OD71}TD|!&yXpkq$5W)*h^GZDOR~2l3|}fFovo1B6M3Y# z=)C_UWkge7h4&&O&PX~jvQHq>v6Mwjv^I5vX{Mjf5oV&839Mxw&vc_1fS$StT=`#m zvhNH2WppUc0pIKM1@*?Nu4!K7lQtcC`hJoY7X*DC`HTF8>WmqU3*aCnj-fcRSPvcA zJ^p>V6u%SGe+4^r>hKmily?X}^W;+)(gprHT)+WW*esJ`iw=A7co~#{ofpK;m_iIF z+jt*hImlc4v}NWcf8CpjKwDYP_5?__QLNzfX|Z%+D}yV1o3aBEOnDxq0qzUJ)l8C< z>CkwW(zw{5F2VkS##*aOrMA`1DlRKBH9vDpp7Iyi9Wg4PWh`e4sO%4VbK@xD2B(Jj zvGO$!udj&DP>_9edn@Qsg+hQ~*j~<6lrId-?H#C9T?#lfF?X~KVHUeNJJ%zC+uPF} zdcAAxlwsHpC5SJT0M8jqZWQAlaOE0LS-zAe&PYjbx~|hc14v zmwuFfr!pl>co(Oa%18h8N~2b-mDhhkIExJABDRC!6QEES1SJ4^tV=ac@PJd?{v^o= zrt<~)7Zx!Px4-?1xV>{`{BI+T8J5PDU&4|lJNggCs&m-yFRU7behuSWMzt3+*{}p- z)j>XpVT>6V01iLlOp!^5EHG*tsHF-dv4L|2Ed6h{VFnD|JJ;3Km3=Af@x51U_A$Ox zpkFvtnXQiDR7(Kl@oYy61g@BS6)9RX$Zsbxe>=|UxIzk>Ox(VEr=zj2r4zn>^?ZH% zVc zjVdv$+qO2i^D1bljz98E+`#E+;jYC;o$wAm1s7HlNqz}6T2B=R2sD=?;FGtjjkpO2Ifq+y-y7sd7`pYOB z9$2Bjj{^UrZV3iK%UPtQIl&NT;v!GLaC`PQ(XEI=#6|oG+(qe2SIf-;L`_(t>fhcK zK74TH?%IfK1L06en`IbVf*8M)K?AG`|MAj@mv~}qdW`suO#LDLaD!o4|Mla2k}q*p zNQuBQdt%=ejUVGdG;b?A{EdgtO7E9w<$;18Tr3@uDYqbRqgcEzcO49F+~DJb5ZZ1v zG5%oHT5FuiUPHZm*AvWfM$Fit6674ieb6r?FbIQvu0wqiPCED+s!AyF#rKFue^dyC zD)5Il-0RQ!9{(AihZqaZMRy>DIc}N5W<;|wXEf@P2W#LJnFsMb-IK7@0Pr^HHHJ4fk&^DM?7282sQ zVY~q%ZYFOAy8!D?%rr7wzr~Sy-Dqa<8qg3E#`VQ7EdmwUC52~3kA?qTMF+@)F{5Fy z4|E!&uNJW~$o|4Je!s-rZ1c zR+lHQ?`bJ43wZwQev^syJ(iDg#`+1W^CW6MPiJ zNPhdF?8tGlJqUfOO+iJIDz00jLE^A5sP-Bfco)CMlmP3O^^+BysM2W*l39!o$)=wL4&R&EQ? zA0TrVsiXGZK2lPA-a@NjmB0-uE4r>PZ}vP{DP-%#deK;NT_;i1Q@U95`1R}352Oi$<2UFfyoQw0e?^%1{Lwk(*70CA>&LbQ_mWw4rpy~n4 zh@T}XFggIFj14S%Ml}jtCIL^3r47`wFv9Hh?i|bYZ;UCnI9p8q*3|!pNu?z|iSg>z z7K^XFIG+K|6@@N@X$FeTD*+E+PAyj;icVA35ID%iST-Tt=&3DTrvRmM@`9i3=e&_U z&3g95K+2Z*lecL6q!ZHvxbPw|xh?GjQqYh_* zD0^gA$7eoM%`Lu-#|(|fQKuJ&UKB1~VF(KDHACg$9p=C=<$9Y@y0=J={6u{J$d|xi ziix)VOT-QgH8S8zYB-Mr@4&MTrfZn>)s+XSWq5CXnc00L^pWDz!9(|ttrxL)x?M{` zQmb(!B|dg6=J^a{8ZGjwi)V&;MWmzD+Qi4sRcup7(=`a zS}XASP+#pK`+6hgQeElDu?vqqu^YIir|QG5N3w=(^$`w?vnFCL>&W`pmnD$*w{MUe z{rc5Tt##L!!!7I?%M&d?U93?Sv={ii*#~5MicM_C$U%od4U4*ZT-MI=@ut^2BK5-x za#foeL|MM02$rZ1mNbLFSR^8_%?e34?|vOU`042R?04z1&n6`&g5*rl-6qmIq#L9! zn6PZms$y%+H<0NcM+|_-d!|odM0}Hbx9NSJYH#nAFH+;anl~yvU)%APp^%KYa#>x0 zg@l&}FiygS?u+G4iF;XF7)QTeHxUh3rnXpr$q>T(9B^H5)Zfu~|F_s5Fb;o#{qetH z|Exv8$t*rzOa(A<1J5y6u)-95!li0QY*hKatcHhf9YVJiZ%>&IMcS?^kgKwrz~ywg zNgw)@k=5JademLS(y%tSNWnzvgimapk#iVs@w z8p!nhR>e~hrc?o)Lycp|wx0MR*E&`FO4PZeAlWi)J=iIH;=5mV$@24=+JJTC8^DYO zvz86iDY~M%rt1)e*xCyH7e-P=uI}mk&IQ%X*`0D7zR`4K#U8zTM_2=KBR>6?s*$`j zz$OUH^l_4G8ojm2J7vC9O>bD+@K)^->DEGLKW^*`*^4wi>(qjq0htDO8e#`VSLIz84G#v4J{0_eI+HIxwAa3qG{01TX5ieRsYBLxIde?FZ?LkJS5$;o2CwjIY( zg2Irezo`<2e>)pT3PCnBO$6ElOPPQnjzZM>3|!6cXORPd+eRRt51=UGAbHV{#Wp9G zfEU30e){)!fM4z3d1ga8uI44C|0x!+_Kwc_0WU2GGw7g%qx$2zF|3}ta`FV^r6Q*a ztVd;A?nK5^y+m;B;}5bI%~SYa{bJ4-Hg4H$FgzE0_18_0p}epH|J)dA!f<8R{|osM zSYbsI7rpQjbh9u~+6|GEXuOI;p*|o1cH&CrH@yoTn@c}c$lhOgQTGSovF0mOu`^udgO0H=jD)^)dEGDzeFWczAv03S<#`j1=aZ3 z6$OCH;YPjD!BIkLXe62+)qnyfS%O1 zAG`@fi^qN`VoY0t70ge@_t@?KmhWQbhW{$Y{D003t21E_6E^^xxwHd1!g(J3fez)n zTpADVKO|A(c(KekrS9SA4r_<;G<#Qhr8sx~p1Io;)z3bpGfEdRBWa_3Bwh)U{kIB5 z2z?x&ig*JpI%I+XUcc%9{zcqxt%}q^E6l%W^l#oulx6-puqHbRO;piPCpyG(jKRLW zOqQZUsc|`&el^qp>S6m{&aYOKtr9iJ8S5WD6ppKu^~iyjm49k8!)zn+vkf3dF3AVF z(xQxV=}=f6CK7$u+8A*gN%(BV2PTNwdptp018{h&t_)xolov{9taUW81#eIn`me_T z?w$*XxY^AJZ_X$HzPaIjY^xw82)@IPfl&Sst%3UrX6Ag2nO!w*`5UWGOS7|6PdkD- zk;RH#fO8lk`-yx2#l>)Z;0)90Evff0ct*w+{(@;4ldq74|G&Xsz)`IY;QIkntPc7B zf*ClxDNKa36L4q)6B&iKL7oYC;H0p{B{A^I9C*bHaEyyiQ5h_sVV3VP7UD2ht$|e= zu--A+!EKebLG%o&Zz1L1^zJ9T7iA7Z(|?-A!Td^20~+V=f_!EjDI+n$s3qO(V8@kg zb|fpx;npl$E)?Pde3UG;SSPN_YA4|nc0jD)W}RMH;TsL-X<=2DA^+ak$6OTt5E(io zc$qX#Z4$)v>GcXBBkx3eDiZMmlpH1+#%H$=V* zyT%?eytJ|!Lx)_v@WBf1&lF= zY*t#)KMG~J|G@e%f^hI+K=q}WOHRK31u4qV5x{%=x9T=tBwg=-7wtJJLyT2|Zt!|N zuqY5VE$iKY^+`$q3t?a~ag|boPm~>&11(4@tM82DaVtIBX>GP<&>;)biDh*38^XXb>X!x|Am>KIg zZlwBA>5md=%R=8LpA#Gs3(L>W?{lTjst%&M*#>kbt0toluP4}!YTj3w-F4I-)RsS; zFgh5~b#q0S!7PY<1Rbb1&{~H=*h$0zD@mu9uQ`fZ>jEQaj!w^eR~w=^n+U z6E|G454#qza)9?W|u(-YfBmG4qWw;A?+RxWNftsQY3+TI z!=xX?x%y^YpQnaqm+V8RczVXH)fQ^BnaCo z4QOr2!p&ccboET4@!h4jXksN7F3wlnegg`iSW^VMkR&C1^-%(H_8_Pa)OOLa+`Bms zbEEr@0+y0Ew~jR=`&uNy5gE>%5g7LZE2?(1M=s;OsE;ixW zCTt>oAx2asOA-{mZWvjY~PI|!7GimS*UwsP1FNB z$F2~IJBNUmL-3ID*VmTdP8N5EPjIA_ny{K|nQW#?+UGN?BSe>6FI+mgNU_2R7l84Z zE_($tn9^_g89e>&f7F2o`RQTvftvVOk9doqhTcG z4N`po&jyP3{L$()m|qfOy7BS@v!MoUmNFm|&i)dLm`MM=kX6*oA`9}a z;*sR_mp#SbWJj7y-FAr^mEsLuW&ctKHb@*cBrdcD`klSrcw}a`P7}A*=qAY_^))3` z(}~W>QJFMWPr@CBaFG_s{%DkJedG{Mgrd>@u!{wzp%+a;@;l`wVg;%BxXw~g ztSdk9^wYG?H&m7dqhXpK$2S=OM1B19V6Q zqC5b|@-?~{(Nnpx#Yoh>AgQorc2w_{U4O40dVJTcS=0N9oaybQbO?k4_K8re zhtzFMgDX7u-XY{*Uh4!X?hRJCmiB??Gh>+8W^gpFM#36U;3Y%4IvD%FE6zC$H+wR9 zYJ>T6KYj%b$@#rFL>GD1hr}{~<1i1%!MIo9e6wE5-BsY;aQw_0 z-`G=|Q;aUFb|VKSQ4n&N41&z+gV+IMgjWkn1XJ^=62dgif@+cQ=SUFg26t8o&eJ-; zUG0@fdpWzMlkfXHb}zBhJ$)tjjrhyo)JM|e`A*c6}oskb51<8EHTSnE?$U+jcy0O)Irjwq`ntDYRlk^jb%GLIeM zn2Y)Q20w!@IPUs&gX6W>LSP?&jrgx6TH(jTIpM#6n?>{Aft9#SnhoJ4Ts0#FWWKSt zA?}Y;?`V7FxO4wXOrPrz?RgRUg1Nkj%&svZQQJs zjp85TXYK9?UD?L|$GKH=XNDD?m_Q)_-~JM`{CS^q1~3uq6C@HIgk2}zt{5G4-cXh* z|IIOWviw~XYhyd13Vo!r&5slZnq47H0m8!w*&C=r`~2|A;CE*p)7k+aXZ=(kFWenG zVa+#G2|!Drf4^qA8PWDSKpNd*_sj8_fpiZK=lU3H!aa)@Es0`m>pCnVnMBUfTp~kr3 zdUI)eSAVrJbG4xBs9>N!hbuw&SwkA~>_22QVv!zb$@53{oFft6;rbChIgDZhmQ-{v z$6E>0a-w*ibB24fPRD~_JtwCsY>>HZ_@lTpyToQoG1YRF270Opl38N>Jz2AOIu!ff zhos0^wU6jDdnKYy;;Gh1r66~fme{=Gu+mGZAADt%;doy+Ho_cj6_GeZ{sgKrs(~<_ z%_v)kh8pI|LHr$opw;6~Wu*w#G?9E88sbnOvDpvIQyw6g{`4Kxv$LSuaq`dKjAMLf zG7uyqS0Je|=mEe~g&}1y{dX}EG`0{!JTV#XlW}llRt@h?<`}-c)&mp$gcBMHoRK0Ki={**XSt1TW1{y@Sa5$tb;m>bOX`b;RUMl{)YAF7s0?>^Dzk z9)t7}K8W?&f90fzV}?3sPsR z(Ms=sP;E{;YcH~R?sM{?bHdciFTFIy7{(8}uv|aim|AgZ)|8~B+korlePJZLGd_1+ zse}X$vA-nlt8Y`YV0{?!7{31|h7B`dg??SCLme-Pe?rRWu`la2Iw~XkR4_9!tB;_C zI&2%NyQid8`@56Ot_$Kxd23hJRtSkgDWQic3OhzHki3(Wk?F|s zw4=pKhg;zfmNQqU#2e<~gObzj$HW2y#xn@Jk#T(mnCNn~_?zu@X(;z}K5Wqr^2>Hi zxxH&k420P#y1%nH;oIEx?spfr4*173|KJng%5sBn7Sy|yn+{PpNbd(wGEQ0-+I)nb zr0vP?Nnp*BaCF=i=M?>OgT z(13HSwyo3`ynrn*oVet?`E5X5!Na>NI%>?IHN%((`@86nx9TF?=AnWpG+ZNu+gocV z5mjfoyUD9$;Ou=BhkbnVc76IAf&tfo_^30#Z@`DYkJM0Gx+fyz#Yr7?n+a7_w@bv= z3KzD`KgE6X>BrRYA|jC75^BZC%my9E2txtrru(u(B-^iJbke z6w#jktt2J#AEP(Llj>!8Yrj!*kH3P9>n`6|p`Qa``kgx}EpWYkBo#U|M(dNnxV8+2 z>IrHcB%F;4DzjIceFEJ!8;mcZurG8D++d7gC}0`bUy?@g92gIEarNzEJ#I#8ugrM9 zoxJ=$U8VVXWBtyo2*U`3BXx#TK_Pw|_3Fos&)t5XCG4gopRA5|iRpZle=i&Ehzj%@J$1#8x2#$d#63mgnD?}G_e@zvC1^~=j zCMNh=-UqIKSwZE?{+SXIOF(<&_-{7Cqf|)r=I+#GQG_X)g4&!bWi*hH-g-`ex zD5g1GwbZlLQ%+1iew}^J&@ktV2FV{g4wQT60w4oeoWcV+yUPBH!aETp;#{!i~s-CtU+if_ZEM^lFmAY*<_QQKCkT(yrDSc3ppW z?JSyK2Um0$H*!tQ@Ou;VGnh;O$(Y3wF5rt6f3m~cShVP^bX%>X&g@MLPp`w_?F37a z=!>T8D=}=SNTe`u{kM=ZXEB!#D-;l#A|Ads(C4ST&OEGGd&I)KeBLbSo&Wf|;Lb@| zbqHhBM;J$TE77j}XrQr!`t>?%fDhZKshAP$K}`Qn6vY;^O?xlr^!V?mL+8OHEg)$T zug?aR69XbC=LQ^RaC{!Y8sn}B$6cbnm^Mh-pclaE$x06NMK~M5s6hks4DQ9!&yawf zZ=hpvhFSbt3-HcLu&4b5JKjRrFIT|uQgAoSm#8aci0*~l!6b!Sue5IjVUmp?pIbM+ z>dGXp@GkfThI89%d{28Nn6F&@S#{+u3TTF8{VI9Kc#BNj^h4Og|F#9$kIiQ~dSHdm zj%auvEjxej#QGtD%;bI|s@49Y_FY-tn(okxcU^rlKUA}>wd=@Jvo?J;@+bu|O0+hX zK3lk`5AZ89K*UAxb8JvL`0XmFFdVKB=LA@j6+Q<;2*!B^uwHtJ2+$vv?-rnWcm(_% Va2~GFV=;%>Z1@O%T@1bJ{{Zc_EqVX| literal 0 HcmV?d00001 diff --git a/options.html b/options.html index 6113688..e33d68a 100644 --- a/options.html +++ b/options.html @@ -1,10 +1,26 @@ - My Preferences Options - + My Preferences Options + @@ -13,25 +29,29 @@

--> @@ -59,4 +79,4 @@ - \ No newline at end of file + diff --git a/options.js b/options.js index e86fd40..760c3f0 100644 --- a/options.js +++ b/options.js @@ -8,6 +8,7 @@ function save_options() { var highlightTabs = document.getElementById('highlightTabs').checked; var selectAll = document.getElementById('selectAll').checked; var timeOut = document.getElementById('timeOut').value; + //var searchSites = document.getElementById('searchSites').value; if (jsonData.trim() === '') { return; @@ -16,7 +17,18 @@ function save_options() { document.getElementById("error").innerHTML = ""; try { jsonObj = JSON.parse(jsonData); + var domValues = Object.values(jsonObj); + domValues.forEach(function(val){ + alert(val); + var keys = Object.keys(val); + alert(keys); + if (keys.indexOf('sites') === -1 || keys.indexOf('current') === -1) { + alert ("in if"); + throw new Error("The given json seems to have different schema..Please check and try again"); + } + }); } catch(err) { + alert (err); document.getElementById("error").innerHTML = err.message; return; } @@ -43,12 +55,10 @@ function save_options() { function restore_options() { chrome.storage.sync.get( "jsonData", function(items) { var content = document.getElementById('jsonData'); - //var textArea = document.createElement("TEXTAREA"); - //textArea.rows = "10"; - //textArea.cols = "50"; var text = document.createTextNode(JSON.stringify(items.jsonData, null, "\t")); - //textArea.appendChild(text); - //var data = items.preferedPages; + //alert(library.json.prettyPrint(JSON.stringify(items.jsonData, null, "\t"))); + //var text = document.createTextNode(library.json.prettyPrint(JSON.stringify(items.jsonData, null, "\t"))); + //var text = document.createTextNode(library.json.prettyPrint(account)); content.appendChild(text); @@ -63,6 +73,9 @@ function restore_options() { document.getElementById('highlightTabs').checked = items.highlightTabs; document.getElementById('selectAll').checked = items.selectAll; document.getElementById('timeOut').value = items.timeOut; + //document.getElementById('searchSites').value = items.searchSites; + + }); } @@ -72,6 +85,32 @@ function replacer(key, value) { return "" + value + ""; } +var account = { active: true, codes: [48348, 28923, 39080], city: "London" }; + +if (!library) + var library = {}; + +library.json = { + replacer: function(match, pIndent, pKey, pVal, pEnd) { + var key = ''; + var val = ''; + var str = ''; + var r = pIndent || ''; + if (pKey) + r = r + key + pKey.replace(/[": ]/g, '') + ': '; + if (pVal) + r = r + (pVal[0] == '"' ? str : val) + pVal + ''; + return r + (pEnd || ''); + }, + prettyPrint: function(obj) { + var jsonLine = /^( *)("[\w]+": )?("[^"]*"|[\w.+-]*)?([,[{])?$/mg; + return JSON.stringify(obj, null, 3) + .replace(/&/g, '&').replace(/\\"/g, '"') + .replace(//g, '>') + .replace(jsonLine, library.json.replacer); + } +}; + function cancel_options () { window.close(); } diff --git a/popup.html b/popup.html index f96b263..479eee8 100644 --- a/popup.html +++ b/popup.html @@ -19,30 +19,34 @@ - +
Advertisement

- -
-
- - - - +
+ + +
+ +
+
+ + + + + +
+

- - - - - -
+
diff --git a/popup.js b/popup.js index 5ecc490..1659c59 100644 --- a/popup.js +++ b/popup.js @@ -11,9 +11,11 @@ var parentUrl; var utubeData; var searchPage; var queryString; +var searchSites; +var searchEngine; -var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString']; -var google = ['www.google.co.in', 'www.google.com']; +var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine']; +var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com']; @@ -27,9 +29,12 @@ chrome.storage.sync.get( options, function(items) { googleSearch = items.googleSearch; parentUrl = items.parentUrl; queryString = items.queryString; + //searchSites = items.searchSites; + searchEngine = items.searchEngine; }); function closeWindow (e) { + window.close(); } @@ -49,7 +54,12 @@ function clickHandler(e) { tabToHilite.push(tab.index); openAt ++; });*/ - + var itemValue = url.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); } else { console.log("came till here in else"); @@ -82,10 +92,33 @@ function selectall () { document.getElementById("sametabChkbx").checked = false; } parentNode = url.parentNode.parentNode.childNodes; + console.log("kkkkkk-" + url.value); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + }); var howmany = document.getElementById("howmany"); var selNums = howManyChecked(parentNode); howmany.textContent = selNums + " selected."; + if (selNums > 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + } } else { allUrls.forEach (function (url) { url.checked = false; @@ -94,9 +127,30 @@ function selectall () { document.getElementById("openbtn").disabled = true; document.getElementById("sametab").hidden = true; document.getElementById("sametabChkbx").checked = false; + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + }); var howmany = document.getElementById("howmany"); - howmany.textContent = ""; + howmany.textContent = "0 selected."; + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; } @@ -111,13 +165,14 @@ function linkClick () { console.log("Runtime error."); } }); - window.close; + window.close(); } function chkBoxClick (ele) { console.log(this.labels[0].innerHTML); var currNode = this; var none = true; + var selectedArray = []; if (this.checked) { this.labels[0].style.fontWeight = "bold"; document.getElementById("openbtn").disabled = false; @@ -139,6 +194,35 @@ function chkBoxClick (ele) { document.getElementById("sametab").hidden = true; document.getElementById("sametabChkbx").checked = false; } + + console.log("li value-" + this.value); + /*selectedArray.push(this.value); + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + selectedArray.push(li.childNodes[0].value); + } + });*/ + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; } else { this.labels[0].style.fontWeight="normal"; document.getElementById("openbtn").disabled = true; @@ -155,10 +239,54 @@ function chkBoxClick (ele) { document.getElementById("sametab").hidden = false; document.getElementById("sametabChkbx").checked = true; } + + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } var howmany = document.getElementById("howmany"); var selNums = howManyChecked(this.parentNode.parentNode.childNodes); howmany.textContent = selNums + " selected."; + if (selNums === 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; + } else { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } + if (selNums < this.parentNode.parentNode.childNodes.length) { + document.getElementById('selectall').checked = false; + } + if (selNums === this.parentNode.parentNode.childNodes.length) { + document.getElementById('selectall').checked = true; + } + //console.log("len--" + this.parentNode.parentNode.childNodes.length); } function howManyChecked(liNodes) { @@ -205,12 +333,13 @@ function addUrl() { var url = new URL(tab.url); var fullDomain = url.hostname; console.log("dom-" + fullDomain); - var hostNameArray = fullDomain.split("."); + /*var hostNameArray = fullDomain.split("."); - console.log(hostNameArray.length); - var domain = getDomain(currentUrl); - var name = domain.split('.')[0]; - //var jsonObj = {}; + console.log(hostNameArray.length); + var domain = getDomain(currentUrl); + var name = hostNameArray[1];//domain.split('.')[0]; + //var jsonObj = {};*/ + var name = getDomainName(tab.url); chrome.storage.sync.get( "jsonData", function(items) { console.log(JSON.stringify(items)); @@ -276,9 +405,60 @@ function messageReceived(msg) { }*/ function searchAgain () { - //queryString - chrome.tabs.update(currentTab.id, {url: queryString}); - window.close; + var urlSite = ''; + //var url = new URL(currentUrl); + //var fullDomain = url.hostname; + //console.log(queryString); + //console.log(url.hostname); + //urlSite = queryString + '%20site:' + url.hostname; + //console.log(urlSite); + + var selectedSite = getSearchSite(); + var selSiteArr; + var idx = currentTab.index + 1; + //window.close; + if (selectedSite.indexOf(',') > -1) { + selSiteArr = selectedSite.split(','); + selSiteArr.forEach(function(selSite){ + if (selSite.indexOf('yahoo') > -1) { + urlSite = selSite + 'search;?p=' + queryString; + } else { + urlSite = selSite + 'search?q=' + queryString; + } + + chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { + idx ++; + }); + }); + } else { + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + queryString; + } else { + urlSite = selectedSite + 'search?q=' + queryString; + } + chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { + + }); + //chrome.tabs.update(currentTab.id, {url: urlSite}); + } + + window.close(); +} + +function getSearchSite() { + var selectedSite; + var site = document.getElementsByName("site"); + for(var i = 0; i < site.length; i++) { + if(site[i].checked) { + selectedSite = site[i].value; + + if (!selectedSite.endsWith('/')) { + selectedSite = selectedSite + '/'; + } + } + } + + return selectedSite; } function sortListDir() { @@ -338,14 +518,55 @@ function sortListDir() { function chngSortBtnValue() { - var sortBtn = document.getElementById('sortListDir'); - if (sortBtn.value === "Sort A to Z") { - sortBtn.value = "Sort Z to A"; - } else if (sortBtn.value === "Sort Z to A") { - sortBtn.value = "Sort A to Z"; + var sortImg = document.getElementById('sortListDir'); + console.log(sortImg.getAttribute('src')); + if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { + //sortImg.nextSibling.textContent = "Sort Z to A"; + sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); + } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { + //sortImg.nextSibling.textContent = "Sort A to Z"; + sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); } } +function searchInSite (queryString) { + var urlSite = ''; + var searchText = document.getElementById('searchTextBox').value; + console.log(searchText); + if (searchText) { + var url = new URL(currentUrl); + + var selectedSite = getSearchSite(); + + /*var site = document.getElementsByName("site"); + for(var i = 0; i < site.length; i++) { + if(site[i].checked) { + selectedSite = site[i].value; + if (!selectedSite.endsWith('/')) { + selectedSite = selectedSite + '/'; + } + } + + + } */ + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; + } else { + urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; + } + + chrome.tabs.update(currentTab.id, {url: urlSite}); + + } + //var url = new URL(currentUrl); + //var fullDomain = url.hostname; + //console.log(queryString); + //console.log(url.hostname); + //urlSite = queryString + '%20site:' + url.hostname; + //console.log(urlSite); + window.close(); +} + document.addEventListener('DOMContentLoaded', function () { /* var bgPage = chrome.extension.getBackgroundPage(); console.log("before"); @@ -355,8 +576,9 @@ document.addEventListener('DOMContentLoaded', function () { document.getElementById('openbtn').addEventListener('click', clickHandler); document.getElementById('selectall').addEventListener('click', selectall); document.getElementById('addbtn').addEventListener('click', addUrl); - document.getElementById('searchAgain').addEventListener('click', searchAgain); + //document.getElementById('searchAgain').addEventListener('click', searchAgain); document.getElementById('sortListDir').addEventListener('click', sortListDir); + //document.getElementById('searchbtn').addEventListener('click', searchInSite); onclick="()" console.log("lod--" + loading); console.log("jsondata--" + jsonData); @@ -377,7 +599,8 @@ document.addEventListener('DOMContentLoaded', function () { console.log(hostNameArray.length); var domain = getDomain(currentUrl); - var name = domain.split('.')[0]; + var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; + console.log("currentUrl --" + currentUrl); console.log("name --" + name); console.log("lod--" + loading); console.log("jsondata--" + jsonData); @@ -396,30 +619,47 @@ document.addEventListener('DOMContentLoaded', function () { document.getElementById('openbtn').hidden = "hidden"; //document.getElementById('cancelbtn').hidden = "hidden"; document.getElementById('selectall').hidden = "hidden"; - console.log(document.getElementById('selectall').nextSibling.nodeValue + "fff"); document.getElementById('selectall').nextSibling.nodeValue = ""; document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('searchAgain').hidden = "hidden"; + console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); + + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('searchAgain').hidden = "hidden"; //document.getElementById('addbtn').hidden = ""; content.appendChild(text); + return; } console.log("Check1 " + JSON.stringify(googleSearch)); prefForDom = googleSearch; console.log("check2-" + prefForDom + "-"); document.getElementById('addbtn').hidden = "hidden"; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; content.style.width = "600px"; - document.getElementById('body').style.width = "600px"; + document.getElementById('body').style.width = "603px"; searchPage = true; if (googleSearch === "") { - console.log("google seach list is empty"); + console.log("Search list is empty"); } + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + var domain = getDomain(searchEngine); + var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); } if (prefForDom === undefined) { prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; //content.style.width = "200px"; - document.getElementById('searchAgain').hidden = "hidden"; + //ocument.getElementById('searchAgain').hidden = "hidden"; searchPage = false; } @@ -449,15 +689,15 @@ document.addEventListener('DOMContentLoaded', function () { if (selectAll) { document.getElementById('selectall').checked = true; } + createRadio(content); } else { var text = document.createTextNode("Domain not set in preference."); document.getElementById('openbtn').hidden = "hidden"; - document.getElementById('cancelbtn').hidden = "hidden"; + //document.getElementById('cancelbtn').hidden = "hidden"; document.getElementById('selectall').hidden = "hidden"; - console.log(document.getElementById('selectall').nextSibling.nodeValue + "fff"); document.getElementById('selectall').nextSibling.nodeValue = ""; document.getElementById('sortListDir').hidden = "hidden"; - + document.getElementById('sortListDir').nextSibling.nodeValue = ""; //document.getElementById('addbtn').hidden = ""; content.appendChild(text); //document.getElementById('typeSelect').addEventListener('changed', selectOption); @@ -469,7 +709,7 @@ document.addEventListener('DOMContentLoaded', function () { }); var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('utube.json')); + xhr.open('GET', chrome.extension.getURL('youtube.json')); xhr.responseType = "text"; xhr.onreadystatechange = function() { @@ -512,6 +752,123 @@ document.addEventListener('DOMContentLoaded', function () { }); +function createRadio(content) { + var engDom = getDomain(searchEngine); + //var engine = engDom.split('.')[0]; + var engineUrl = new URL(searchEngine); + console.log("url hostname eng-" + engineUrl.hostname); + var engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'http://www.bing.com/']; //searchSites.split(','); + + var searchContent = document.getElementById('searchContent'); + + var searchDiv = document.createElement('searchDiv'); + searchDiv.id = "searchDiv"; + searchDiv.style.margin = "0px 0px 0px 25px"; + searchDiv.style.width = '300px'; + + var searchLbl = document.createElement('label'); + searchLbl.innerHTML = "search in"; + searchLbl.style.marginLeft = "25px"; + searchContent.appendChild(searchLbl); + var br = document.createElement('br'); + searchContent.appendChild(br); + /*var margin = true;*/ + + var both; + + sitesArr.forEach(function (site) { + var url = new URL(site); + console.log("url hostname-" + url.hostname); + var name = getDomainName(site);//url.hostname.split('.')[1]; + //var domain = getDomain(site); + //var name = domain.split('.')[0]; + console.log("name " + name); + console.log("engg " + engine); + if (searchPage && name === engine) { + return; + } + + both = both ? both + "," + site : site; + console.log("both " + both); + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", site); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + //radio.setAttribute("id", "site"); + //radio.style.marginLeft = "10px"; + console.log("site " + site); + console.log("eng " + searchEngine); + /*var url = new URL(site); + var fullDomain = url.hostname;*/ + var label = document.createElement("label"); + label.innerHTML = name; + //content.appendChild(radio); + //content.appendChild(label); + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchContent.appendChild(searchDiv); + + + }); + + + var searchAgainBtn = document.createElement('input'); + searchAgainBtn.setAttribute("type", "button"); + selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; + if (searchPage) { + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", both); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + //radio.setAttribute("id", "site"); + var label = document.createElement("label"); + label.innerHTML = "Both"; + //content.appendChild(radio); + //content.appendChild(label); + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchAgainBtn.setAttribute("id", "searchAgain"); + searchAgainBtn.setAttribute("value", "Search Again"); + searchAgainBtn.onclick = searchAgain; + } else { + var searchAgainTxt = document.createElement('input'); + searchAgainTxt.setAttribute("type", "text"); + searchAgainTxt.setAttribute("id", "searchTextBox"); + selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; + searchAgainTxt.style.marginLeft = "25px"; + searchDiv.appendChild(searchAgainTxt); + searchAgainBtn.setAttribute("id", "searchbtn"); + searchAgainBtn.setAttribute("value", "Search"); + searchAgainBtn.onclick = searchInSite; + } + searchAgainBtn.style.marginLeft = '2px'; + searchDiv.appendChild(searchAgainBtn); + + searchContent.appendChild(searchDiv); + + /*if (selectAll) { + const allUrls = document.getElementsByName("link"); + if (allUrls.length > -1) { + if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { + //radio.disabled = true; + searchAgainBtn.disabled = true; + document.getElementsByName('site')[0].style.disabled = true; + document.getElementsByName('site')[1].style.disabled = true; + document.getElementsByName('site')[2].style.disabled = true; + if (!searchPage) { + document.getElementById('searchTextBox').style.disabled = true; + } + } + + } + }*/ + + +} + function randomIntFromInterval(min,max) { return Math.floor(Math.random()*(max-min+1)+min); @@ -580,7 +937,7 @@ function createList(allurls) { var i=1; var value=""; - var bgColor = "#F4F6F7"; + var bgColor = "#EDEEED"; //"#F4F6F7"; allurls.forEach(function(page) { console.log("in createList " + JSON.stringify(page)); //console.log(Object.keys(page)); @@ -635,6 +992,12 @@ function createList(allurls) { if (currentUrl !== linkObj && linkObj.selected !== false && selectAll) { input.setAttribute("checked", true); label.style.fontWeight = "bold"; + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); } else { console.log("llll" + label.getText); } @@ -645,6 +1008,12 @@ function createList(allurls) { if (currentUrl !== linkObj && selectAll) { input.setAttribute("checked", true); label.style.fontWeight = "bold"; + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); } else { console.log("llll" + label.getText); } @@ -667,12 +1036,18 @@ function createList(allurls) { //list.appendChild(label); //var line = document.createElement('br'); //list.appendChild(line); - if (bgColor === "#F4F6F7") {//ECF0F1 + if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" bgColor = "#FFFFFF"; } else { - bgColor = "#F4F6F7"; + bgColor = "#EDEEED"; //"#F4F6F7"; } }); + var howmany = document.getElementById("howmany"); + if (selectAll) { + howmany.textContent = allurls.length + " selected."; + } else { + howmany.textContent = "0 selected."; + } return list; @@ -720,7 +1095,9 @@ function createDropDown (data, hierarchy) { } + function getDomain(url, subdomain) { + //var isSubdom = isSubdomain(url); subdomain = subdomain || false; url = url.replace(/(https?:\/\/)?(www.)?/i, ''); @@ -729,6 +1106,7 @@ function getDomain(url, subdomain) { url = url.split('.'); url = url.slice(url.length - 2).join('.'); + } if (url.indexOf('/') !== -1) { @@ -785,4 +1163,14 @@ function isFromSearch(currentURL) { }); } return urlFound; +} + +function getDomainName(url) { + var hostname = new URL(url).hostname; + var hostArr = hostname.split('.'); + if (hostArr.length === 2) { + return hostArr[0]; + } else { + return hostArr[1]; + } } \ No newline at end of file diff --git a/youtube.json b/youtube.json new file mode 100644 index 0000000..6205c49 --- /dev/null +++ b/youtube.json @@ -0,0 +1,13 @@ +{ + "url1" : "https://www.youtube.com/watch?v=XCUh3EiPEv8", + "url2" : "https://www.youtube.com/watch?v=tlhH_Z9tMow", + "url3" : "https://www.youtube.com/watch?v=sQdLBkWcbK4&t=25s", + "url4" : "https://www.youtube.com/watch?v=DWT-MXvOgDc&t=463s", + "url5" : "https://www.youtube.com/watch?v=fTdGoSRuxIE", + "url6" : "https://www.youtube.com/watch?v=WZitZsT2k5Q&t=2s", + "url7" : "https://www.youtube.com/watch?v=WT7oZmGz1p8", + + "url8" : "https://www.youtube.com/watch?v=EA_fbT6oN2k", + "url9" : "https://www.youtube.com/watch?v=EA_fbT6oN2k", + "url10" : "https://www.youtube.com/watch?v=EA_fbT6oN2k" +} \ No newline at end of file From 515741ab15f774288ae80fe647d117d0c12b4753 Mon Sep 17 00:00:00 2001 From: Gautam Date: Wed, 25 Oct 2017 23:45:54 -0500 Subject: [PATCH 23/33] Modified popup.js, background.js etc for fixes. --- background.js | 79 +-- content_script.js | 122 +++- options.html | 7 +- options.js | 1621 ++++++++++++++++++++++++++++++++++++++------- popup.html | 17 +- popup.js | 565 +++++++++++----- 6 files changed, 1935 insertions(+), 476 deletions(-) diff --git a/background.js b/background.js index 029080e..1102663 100644 --- a/background.js +++ b/background.js @@ -9,13 +9,14 @@ var lastTab; var urls = []; var tabToHilite; var openAt; -var firstTab; +var firstPage; var invokedWind; var startTime; var pagesToOpen = []; var currentTask = false; - -var options = ['tabsBackground', 'highlightTabs', 'timeOut']; +var tabToLoad; +let k = 0; +var options = ['tabsBackground', 'highlightTabs', 'timeOut', 'tabToLoad']; var loading_images = ['ajax-loader_LB.gif', @@ -43,7 +44,8 @@ chrome.storage.sync.get( options, function(items) { highlightTabs = items.highlightTabs; tabsBackground = items.tabsBackground; timeOut = items.timeOut * 1000; - console.log("time out--" + timeOut); + tabToLoad = items.tabToLoad; + console.log("time out--" + tabToLoad); }); chrome.windows.getCurrent(function(win){ currWindow = win.id; @@ -64,6 +66,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { openAt = changes.currTab.newValue.index; invokedWind = changes.invokedWindow.newValue; console.log("invoked from " + invokedWind + "\n urls-" + urls.length); + console.log("list of urls to open--" + urls); if (!changes.opnSmeTb.newValue) { if (Array.isArray(urls)) { currentTask = true; @@ -75,7 +78,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { //console.log(JSON.stringify(tab)); firstPage = tab.id; lastTab = tab.id; - console.log("reset" + openAt); + console.log("reset" + openAt + urls[0]); // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); //keep_switching_icon = true; //console.log(keep_switching_icon); @@ -86,39 +89,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { rotateIcon(false); } }); - /*chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { - console.log("Test " + tabId + "--" + JSON.stringify(info) + "--" + JSON.stringify(changeInfo)); - //console.log("urls ln" + urls.length); - if (info.status === "loading" && tabId === lastTab) { - var now = new Date().getTime(); - console.log(now - startTime); - console.log(timeOut); - if (now - startTime > timeOut) { - chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); - chrome.storage.sync.set({loading: false}, function() {}); - rotateIcon(false); - return; - } - } - if (info.status === "complete" && tabId === lastTab && urls.length > 1) { - //console.log("length" + urls.length); - chrome.tabs.update(firstPage, {active: true}); - urls.shift(); - chrome.tabs.create({url: urls[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { - lastTab = tab.id; - tabToHilite.push(tab.index); - openAt ++; - }); - } - if (info.status === "complete" && tabId === lastTab && urls.length == 1) { - chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); - //chrome.runtime.sendMessage({msg: "completed"}, function(response) {}); - chrome.storage.sync.set({loading: false}, function() {}); - //keep_switching_icon = false; - rotateIcon(false); - } - });*/ }); } else { openAt ++; @@ -144,7 +115,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); } if (chrome.runtime.error) { - console.log("Runtime error."); + console.log("ddd Runtime error."); } }); @@ -181,16 +152,32 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { } } console.log(lastTab + "--tt--" + openAt); + if (currentTask) { if (info.status === "complete" && tabId === lastTab && pagesToOpen.length > 1) { - //console.log("length" + urls.length); - chrome.tabs.update(firstPage, {active: true}); - pagesToOpen.shift(); - chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { - lastTab = tab.id; - tabToHilite.push(tab.index); - openAt ++; - }); + console.log("firstPage--" + firstPage); + if (firstPage !== "") { + chrome.tabs.update(firstPage, {active: true}); + firstPage = ""; + } + console.log("k is-" + k); + if (k === parseInt(tabToLoad)) { + console.log("k is 2" + new Date().getTime()); + k = 0; + } + for ( ;k < parseInt(tabToLoad); k++) { + console.log("k inside for--" + k + "---" + new Date().getTime()); + pagesToOpen.shift(); + chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + openAt ++; + }); + if (pagesToOpen.length == 1) { + return; + } + } + } if (info.status === "complete" && tabId === lastTab && pagesToOpen.length == 1) { chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); diff --git a/content_script.js b/content_script.js index d7e1e6b..1f9b822 100644 --- a/content_script.js +++ b/content_script.js @@ -3,15 +3,46 @@ var jsonObj = {}; //jsonObj["description"] = "google search"; var sites = []; var queryString; - +var hrefAdded = []; //google -$("div.srg").find("h3 > a").each(function (index) { +$("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { console.log("Title: " + this.text); + console.log($(this)); //$(this).append("
My new line text"); console.log('me done'); var obj = {}; + obj[this.text] = $(this).attr('href'); sites.push(obj); + hrefAdded.push($(this).attr('href')); + + +}); + +$("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + +}); + +$("div.srg").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } }); //bing //ol.b_results @@ -32,10 +63,26 @@ $("div#web").find("h3 > a").each(function () { obj[this.text] = $(this).attr('href'); sites.push(obj); }); -jsonObj['sites'] = sites; +//youtube //find("ytd-video-renderer") +$("div#contents").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + //div#title-wrapper +}); +jsonObj['sites'] = sites; if (location.origin.indexOf('yahoo') > -1) { queryString = document.getElementsByName("p")[0].value; +} else if (location.origin.indexOf('youtube') > -1) { + queryString = document.getElementsByName("search_query")[0].value; } else { queryString = document.getElementsByName("q")[0].value; } @@ -75,7 +122,7 @@ console.log("showing..\n" + urlArr); //chrome.runtime.sendMessage({todo: "show_text"}); chrome.runtime.onMessage.addListener(function(req, sender, sendres){ - console.log("in lsner lll"); + console.log("in lsner lll" + location.origin); /*if (request.greeting == "hello")*/ var url = new URL(location.origin); var name = url.hostname.split('.')[1]; @@ -89,25 +136,51 @@ chrome.runtime.onMessage.addListener(function(req, sender, sendres){ highlightTextY(req.selectedItems, req.highlight); } else if (name === 'bing') { highlightTextB(req.selectedItems, req.highlight); + } else if (name === 'youtube') { + highlightTextYT(req.selectedItems, req.highlight); } - /*} else { - if (name === 'google') { - removeHighlightG(req.selectedItems); - } else if (name === 'yahoo') { - removeHighlightY(req.selectedItems); - } else if (name === 'bing') { - removeHighlightB(req.selectedItems); - } - }*/ - //sendResponse({farewell: "goodbye"}); }); function highlightTextG(selectedItems, highlight) { console.log("in highlight"); + //$("div.srg").find("h3 > a").each(function (index) { + $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { + //console.log("in first search.." + selectedItems); + //console.log("in first search.." + $(this).attr('href')); + if(selectedItems === $(this).attr('href')) { + if (highlight) { + //console.log("going to highlight,,,"); + $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); + } else { + //console.log("going to de highlight,,,"); + $(this.parentNode.nextSibling).css("background-color",""); + } + console.log($(this)); + console.log($(this.parentNode.nextSibling)); + } + }); + + $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { + console.log("in 2nd search.."); + if(selectedItems === $(this).attr('href')) { + if (highlight) { + $("div#rso").find("div > g-section-with-header").css("background-color","#E2DDDD"); + + //$(this.parentNode.nextSibling).css("background-color","#E2DDDD"); + } else { + $("div#rso").find("div > g-section-with-header").css("background-color",""); + } + + console.log($(this)); + console.log($("div#rso").find("div > g-section-with-header > g-scrolling-carousel")); + } + + }); $("div.srg").find("h3 > a").each(function (index) { + console.log("in 3rd search.."); if(selectedItems === $(this).attr('href')) { if (highlight) { $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); @@ -157,4 +230,25 @@ function highlightTextB(selectedItems, highlight) { }); +} + +function highlightTextYT(selectedItems, highlight) { + + console.log("in highlight" + selectedItems); + $("div#contents").find("ytd-video-renderer").find("h3 > a").each(function (index) { + console.log($(this).attr('href')); + if(selectedItems.indexOf($(this).attr('href')) > -1) { + console.log($(this)); + console.log($(this.parentNode.nextSibling)); + console.log($(this.parentNode.parentNode)); + if (highlight) { + $(this.parentNode.parentNode).css("background-color","#E2DDDD"); + } else { + $(this.parentNode.parentNode).css("background-color",""); + } + + } + + }); + } \ No newline at end of file diff --git a/options.html b/options.html index e33d68a..9d1cf1c 100644 --- a/options.html +++ b/options.html @@ -23,7 +23,7 @@ - + @@ -79,4 +82,4 @@ - + \ No newline at end of file diff --git a/options.js b/options.js index 760c3f0..04509b5 100644 --- a/options.js +++ b/options.js @@ -1,280 +1,1413 @@ -/** - * Created by gdev on 3/18/2017. - */ - -function save_options() { - var jsonData = document.getElementById('jsonData').value; - var tabsBackground = document.getElementById('tabsBackground').checked; - var highlightTabs = document.getElementById('highlightTabs').checked; - var selectAll = document.getElementById('selectAll').checked; - var timeOut = document.getElementById('timeOut').value; - //var searchSites = document.getElementById('searchSites').value; - - if (jsonData.trim() === '') { - return; +var jsonData; +var currentTab; +var highlightTabs; +var tabsBackground; +var currentUrl; +var invokedWindow; +var selectAll; +var loading; +var googleSearch; +var parentUrl; +var utubeData; +var searchPage; +var queryString; +var searchSites; +var searchEngine; +let baseUrl; +let anonymus; +var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus']; +var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com']; + + + +chrome.storage.sync.get( options, function(items) { + jsonData = items.jsonData; + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; + selectAll = items.selectAll; + loading = items.loading; + console.log("in sync get" + loading); + googleSearch = items.googleSearch; + parentUrl = items.parentUrl; + queryString = items.queryString; + //searchSites = items.searchSites; + searchEngine = items.searchEngine; + anonymus = items.anonymus; +}); + +function closeWindow (e) { + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); +} + + +function clickHandler(e) { + //loading = true; + console.log("in on clik opn"); + const allUrls = document.getElementsByName("link"); + console.log(allUrls); + + const urlsToOpen = []; + const tabToHilite = [currentTab.index]; + const openAt = currentTab.index + 1; + let anonymus; + if (allUrls.length === 0) { + console.log("link undefined " + allUrls); + anonymus = document.getElementById("anonymus").value; + const urls = anonymus.split('\n'); + urls.forEach(function (url) { + urlsToOpen.push(url); + }); + } else { + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + console.log("came till here"); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("came till here in else"); + } + }); } - var jsonObj = {}; - document.getElementById("error").innerHTML = ""; - try { - jsonObj = JSON.parse(jsonData); - var domValues = Object.values(jsonObj); - domValues.forEach(function(val){ - alert(val); - var keys = Object.keys(val); - alert(keys); - if (keys.indexOf('sites') === -1 || keys.indexOf('current') === -1) { - alert ("in if"); - throw new Error("The given json seems to have different schema..Please check and try again"); + + console.log(urlsToOpen); + /*if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); + }*/ + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + var opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymus}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); +} + +function selectall () { + const allUrls = document.getElementsByName("link"); + var parentNode; + if (document.getElementById('selectall').checked) { + allUrls.forEach (function (url) { + if (currentUrl !== url.value) { + url.checked = true; + url.nextSibling.nextSibling.style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; } + parentNode = url.parentNode.parentNode.childNodes; + console.log("kkkkkk-" + url.value); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + }); - } catch(err) { - alert (err); - document.getElementById("error").innerHTML = err.message; - return; + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(parentNode); + howmany.textContent = selNums + " selected."; + if (selNums > 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + } + } else { + allUrls.forEach (function (url) { + url.checked = false; + console.log(url.parentNode); + url.nextSibling.nextSibling.style.fontWeight = "normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + var howmany = document.getElementById("howmany"); + howmany.textContent = "0 selected."; + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; } - chrome.storage.sync.set({ - jsonData: jsonObj, - tabsBackground: tabsBackground, - highlightTabs: highlightTabs, - selectAll: selectAll, - timeOut : timeOut}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); + +} + +function linkClick () { + console.log(this.href); + const opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); +} + +function chkBoxClick (ele) { + console.log(this.labels[0].innerHTML); + var currNode = this; + var none = true; + var selectedArray = []; + if (this.checked) { + this.labels[0].style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + //var liList = this.parentNode.parentNode.childNodes; + //console.log(liList.length); + + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + none = false; + return; + } + }); + if (none) { + console.log("only one"); + document.getElementById("sametab").hidden = false; + document.getElementById("sametabChkbx").checked = true; + } else { + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("li value-" + this.value); + /*selectedArray.push(this.value); + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + selectedArray.push(li.childNodes[0].value); + } + });*/ + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } else { + this.labels[0].style.fontWeight="normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; + if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { + document.getElementById("openbtn").disabled = false; + } + if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { + console.log("more than one checked"); + document.getElementById("sametab").hidden = true; + document.getElementById("sametabChkbx").checked = false; + } else { + document.getElementById("sametab").hidden = false; + document.getElementById("sametabChkbx").checked = true; + } + + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(this.parentNode.parentNode.childNodes); + howmany.textContent = selNums + " selected."; + if (selNums === 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; + } else { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } + if (selNums < this.parentNode.parentNode.childNodes.length) { + document.getElementById('selectall').checked = false; + } + if (selNums === this.parentNode.parentNode.childNodes.length) { + document.getElementById('selectall').checked = true; + } + //console.log("len--" + this.parentNode.parentNode.childNodes.length); } -// Restores tabsBackground state using the preferences -// stored in chrome.storage. -function restore_options() { - chrome.storage.sync.get( "jsonData", function(items) { - var content = document.getElementById('jsonData'); - var text = document.createTextNode(JSON.stringify(items.jsonData, null, "\t")); - //alert(library.json.prettyPrint(JSON.stringify(items.jsonData, null, "\t"))); - //var text = document.createTextNode(library.json.prettyPrint(JSON.stringify(items.jsonData, null, "\t"))); - //var text = document.createTextNode(library.json.prettyPrint(account)); +function howManyChecked(liNodes) { + var chked = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked ++; + } + }); + return chked; +} - content.appendChild(text); +function atleastOneChecked(liNodes) { + var chked = false; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked = true; + } + }); + + return chked; + + /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ +} +function moreThanOneChecked(liNodes) { + var n = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + n ++; + } }); - chrome.storage.sync.get({ - tabsBackground: true, - highlightTabs: true, - selectAll: true, - timeOut: 30 - }, function(items) { - document.getElementById('tabsBackground').checked = items.tabsBackground; - document.getElementById('highlightTabs').checked = items.highlightTabs; - document.getElementById('selectAll').checked = items.selectAll; - document.getElementById('timeOut').value = items.timeOut; - //document.getElementById('searchSites').value = items.searchSites; + if (n === 0 || n > 1 ) { + return true; + } else { + return false; + } +} + +function addUrl() { + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + /*var hostNameArray = fullDomain.split("."); + console.log(hostNameArray.length); + var domain = getDomain(currentUrl); + var name = hostNameArray[1];//domain.split('.')[0]; + //var jsonObj = {};*/ + var name = getDomainName(tab.url); + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + //alert("before" + JSON.stringify(origObj)); + /*var prefForDom = origObj[fullDomain]; + if (prefForDom === undefined) { + prefForDom = origObj[name]; + }*/ + //var prefForDom = origObj[fullDomain] || origObj[name]; + var prefForDom = getPreferences(fullDomain, name, origObj); + console.log(prefForDom + " --- llllllll"); + var newEntryObj = {}; + var path = url.pathname.split('/'); + if (path.length === 0) { + newEntryObj[name] = currentUrl; + } else { + if (path[path.length-1].indexOf('=') === -1) { + newEntryObj[path[path.length-1]] = currentUrl; + } else { + newEntryObj[path[1]] = currentUrl; + } + } + + //path[path.length]; + //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; + + console.log(path.length); + console.log("dom-" + path + "--" + path[path.length-1]); + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + prefForDom.push(newEntryObj); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + options[selectedType].push(newEntryObj); + } + } + + + } else { + //origObj[name] = [currentUrl]; + var newObj = {}; + newObj["current"] = name; + newObj["description"] = name; + newObj["sites"] = [newEntryObj]; + origObj[name] = newObj; + } + //origObj[name] = [currentUrl]; + console.log(JSON.stringify(origObj)); + //jsonObj = items; + //console.log(JSON.stringify(jsonObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); }); } -function replacer(key, value) { - alert(JSON.stringify(key)); - alert(JSON.stringify(value)); - return "" + value + ""; + +function searchAgain () { + var urlSite = ''; + var selectedSite = getSearchSite(); + var selSiteArr; + var idx = currentTab.index + 1; + if (selectedSite.indexOf(',') > -1) { + selSiteArr = selectedSite.split(','); + selSiteArr.forEach(function(selSite){ + if (selSite.indexOf('yahoo') > -1) { + urlSite = selSite + 'search;?p=' + queryString; + } else { + urlSite = selSite + 'search?q=' + queryString; + } + + chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { + idx ++; + }); + }); + } else { + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + queryString; + } else { + urlSite = selectedSite + 'search?q=' + queryString; + } + chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { + + }); + //chrome.tabs.update(currentTab.id, {url: urlSite}); + } + + window.close(); +} + +function getSearchSite() { + var selectedSite; + var site = document.getElementsByName("site"); + for(var i = 0; i < site.length; i++) { + if(site[i].checked) { + selectedSite = site[i].value; + + if (!selectedSite.endsWith('/')) { + selectedSite = selectedSite + '/'; + } + } + } + + return selectedSite; +} + +function sortListDir() { + var list, i, switching, b, shouldSwitch, dir, switchcount = 0; + list = document.getElementById("orderedList"); + switching = true; + //Set the sorting direction to ascending: + dir = "asc"; + //Make a loop that will continue until no switching has been done: + while (switching) { + //start by saying: no switching is done: + switching = false; + b = list.getElementsByTagName("LI"); + //Loop through all list-items: + for (i = 0; i < (b.length - 1); i++) { + //start by saying there should be no switching: + shouldSwitch = false; + /*check if the next item should switch place with the current item, + based on the sorting direction (asc or desc):*/ + if (dir == "asc") { + if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically lower than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; + } + } else if (dir == "desc") { + if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically higher than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; + } + } + } + if (shouldSwitch) { + /*If a switch has been marked, make the switch + and mark that a switch has been done:*/ + b[i].parentNode.insertBefore(b[i + 1], b[i]); + switching = true; + //Each time a switch is done, increase switchcount by 1: + switchcount ++; + } else { + /*If no switching has been done AND the direction is "asc", + set the direction to "desc" and run the while loop again.*/ + if (switchcount == 0 && dir == "asc") { + dir = "desc"; + switching = true; + + } + } + } + chngSortBtnValue(); +} + + +function chngSortBtnValue() { + var sortImg = document.getElementById('sortListDir'); + console.log(sortImg.getAttribute('src')); + if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { + //sortImg.nextSibling.textContent = "Sort Z to A"; + sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); + } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { + //sortImg.nextSibling.textContent = "Sort A to Z"; + sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); + } } -var account = { active: true, codes: [48348, 28923, 39080], city: "London" }; - -if (!library) - var library = {}; - -library.json = { - replacer: function(match, pIndent, pKey, pVal, pEnd) { - var key = ''; - var val = ''; - var str = ''; - var r = pIndent || ''; - if (pKey) - r = r + key + pKey.replace(/[": ]/g, '') + ': '; - if (pVal) - r = r + (pVal[0] == '"' ? str : val) + pVal + ''; - return r + (pEnd || ''); - }, - prettyPrint: function(obj) { - var jsonLine = /^( *)("[\w]+": )?("[^"]*"|[\w.+-]*)?([,[{])?$/mg; - return JSON.stringify(obj, null, 3) - .replace(/&/g, '&').replace(/\\"/g, '"') - .replace(//g, '>') - .replace(jsonLine, library.json.replacer); +function searchInSite (queryString) { + var urlSite = ''; + var searchText = document.getElementById('searchTextBox').value; + console.log(searchText); + if (searchText) { + var url = new URL(currentUrl); + + var selectedSite = getSearchSite(); + + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; + } else { + urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; + } + + chrome.tabs.update(currentTab.id, {url: urlSite}); + } -}; + window.close(); +} +document.addEventListener('beforeunload', function (event) { + console.log("unload.."); + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + -function cancel_options () { window.close(); +}, true); + +function saveSelection() { + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var name = getDomainName(tab.url); + + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + var prefForDom = getPreferences(fullDomain, name, origObj); + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + const allUrls = document.getElementsByName("link"); + allUrls.forEach (function (url) { + console.log("chkd--" + url.checked); + console.log("val--" + url.value); + console.log(url.labels[0].innerText); + console.log(JSON.stringify(prefForDom)); + console.log(prefForDom.length + "---long"); + var label = url.labels[0].innerText; + //if (label) //need to remove (currentTab from label) + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < prefForDom.length; i++) { + if (typeof prefForDom[i] === 'object') { + console.log(prefForDom[i]) ; + if (Object.keys(prefForDom[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[i][label]['selected'] = url.checked; + } else { + prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; + } + + } + } else { + if (prefForDom[i] === url.value) { + prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + const allUrls = document.getElementsByName("link"); + + allUrls.forEach (function (url) { + var label = url.labels[0].innerText; + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < allTypes.length; i++) { + console.log("vaan" + allTypes[i]); + if (typeof allTypes[i] === 'object') { + if (Object.keys(allTypes[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[selectedType][i][label]['selected'] = url.checked; + } else { + prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; + } + + } + } else { + if (allTypes[i] === url.value) { + prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } + } + } + console.log(JSON.stringify(origObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); +} + +function editTextArea () { + let txtAreaContent = this.value; + console.log("in txt are" + txtAreaContent); + if (txtAreaContent !== '') { + document.getElementById('openbtn').hidden = ""; + } +} +document.addEventListener('DOMContentLoaded', function () { + /* var bgPage = chrome.extension.getBackgroundPage(); + console.log("before"); + var bk = bgPage.test("abc"); // Here paste() is a function that returns value. + console.log("beforeAAA--" + bk);*/ + document.getElementById('mainStuff').hidden = true; + document.getElementById('cancelbtn').addEventListener('click', closeWindow); + document.getElementById('openbtn').addEventListener('click', clickHandler); + document.getElementById('selectall').addEventListener('click', selectall); + document.getElementById('addbtn').addEventListener('click', addUrl); + document.getElementById('savebtn').addEventListener('click', saveSelection); + //document.getElementById('searchAgain').addEventListener('click', searchAgain); + document.getElementById('sortListDir').addEventListener('click', sortListDir); + //document.getElementById('searchbtn').addEventListener('click', searchInSite); + onclick="()" + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + var content = document.getElementById('content'); + //chrome.storage.sync.set({loading: false}, function() {}); + //chrome.storage.sync.set({parentUrl: ""}, function() {}); + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + if (currentUrl === "chrome://newtab/") { + window.close(); + return; + } + + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + //var domain = getDomain(currentUrl); + var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; + console.log("currentUrl --" + currentUrl); + console.log("name --" + name); + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + if (loading) { + window.close(); + return; + } + var prefForDom; + console.log("test--" + isFromSearch(currentUrl)); + if (google.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { + console.log("inside google"); + if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { + //console.log("google seach list is empty"); + //window.close(); + //return; + var text = document.createTextNode("No previous search results found. Please try a fresh search."); + document.getElementById('openbtn').hidden = "hidden"; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); + + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('addbtn').hidden = ""; + content.appendChild(text); + return; + + } + console.log("Check1 " + JSON.stringify(googleSearch)); + prefForDom = googleSearch; + console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').hidden = "hidden"; + document.getElementById('savebtn').hidden = "hidden"; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + searchEngine); + engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + } + + if (prefForDom === undefined) { + prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //content.style.width = "200px"; + //ocument.getElementById('searchAgain').hidden = "hidden"; + searchPage = false; + } + + + + + console.log(jsonData); + console.log(prefForDom); + if(prefForDom){ + //console.log(typeof allurls); + if (Array.isArray(prefForDom)) { + console.log("pref dom is an array") + if (prefForDom.length > 0) { + content.appendChild(createList(prefForDom)); + } else { + noConfigFound(content); + } + } else { + content.appendChild(createDropDown(prefForDom, name)); + var label = document.createElement('label'); + var txt = document.createTextNode("Options "); + label.setAttribute("for", "typeSelect"); + label.appendChild(txt); + label.style.marginLeft = "25px"; + content.insertBefore(label,document.getElementById("typeSelect")); + var type = document.getElementById("typeSelect"); + //type.style.marginLeft = "25px"; + var selectedType = type.options[type.selectedIndex].value; + content.appendChild(createList(prefForDom[selectedType])); + } + //document.getElementsByName("link").addEventListener('click', chkBoxClick); + if (selectAll) { + document.getElementById('selectall').checked = true; + } + createRadio(content); + //document.getElementById('addbtn').hidden = "hidden"; + } else { + console.log("domain not set..."); + noConfigFound(content); + /*var text = document.createTextNode("Domain not set in preference."); + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + document.getElementById('anonymus').hidden = ""; + content.appendChild(text);*/ + + } + + + + + }); + + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('utube.json')); + xhr.responseType = "text"; + + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + //console.log(xhr.responseText); + //utubeData = xhr.responseText; + utubeData = JSON.parse(xhr.responseText); + console.log(utubeData); + if (utubeData !== undefined) { + var adStuff = document.getElementById('adStuff'); + //var utubeData = chrome.runtime.getURL("utube.json"); + console.log(utubeData); + var keys = Object.keys(utubeData); + var ranNum = randomIntFromInterval(0, 9); + console.log("Me random" + ranNum); + var utube = document.createElement('a'); + utube.textContent = keys[ranNum]; + utube.href = utubeData[keys[ranNum]]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + /*keys.forEach(function (key) { + //console.log(data); + var utube = document.createElement('a'); + utube.textContent = key; + utube.href = utubeData[key]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + });*/ + + } + } + }; + xhr.send(); + // + + //console.log("margin" + document.getElementById("selectall").style.margin); + /*var delayMillis = 10000; //1 second + + setTimeout(function() { + //your code to be executed after 1 second + + }, delayMillis);*/ + document.getElementById('mainStuff').hidden = false; + document.getElementById('progress').hidden = true; +}); + +function noConfigFound(content) { + console.log("domain not set..."); + const divTxt = document.createElement("div"); + var text = document.createTextNode("Domain not set in preference." + "\n" + "You may enter the URL's to open one below the other in the space given below and open them."); + divTxt.style.marginLeft = "25px"; + document.getElementById('openbtn').hidden = "hidden"; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('addbtn').hidden = ""; + document.getElementById('anonymus').hidden = ""; + if (anonymus) { + document.getElementById('anonymus').value = anonymus; + document.getElementById('openbtn').hidden = ""; + } + document.getElementById('anonymus').onkeyup = editTextArea; + + + divTxt.appendChild(text); + content.appendChild(divTxt); + } +function createRadio(content) { + //var engDom = getDomain(searchEngine); + //var engine = engDom.split('.')[0]; + var engineUrl = new URL(searchEngine); + console.log("url hostname eng-" + engineUrl.hostname); + var engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/', 'https://www.youtube.com/']; //searchSites.split(','); + + var searchContent = document.getElementById('searchContent'); + + var searchDiv = document.createElement('searchDiv'); + searchDiv.id = "searchDiv"; + searchDiv.style.margin = "0px 0px 0px 25px"; + searchDiv.style.width = '300px'; + + var searchLbl = document.createElement('label'); + searchLbl.innerHTML = "search in"; + searchLbl.style.marginLeft = "25px"; + searchContent.appendChild(searchLbl); + var br = document.createElement('br'); + searchContent.appendChild(br); + /*var margin = true;*/ + + var both; + + sitesArr.forEach(function (site) { + var url = new URL(site); + console.log("url hostname-" + url.hostname); + var name = getDomainName(site);//url.hostname.split('.')[1]; + //var domain = getDomain(site); + //var name = domain.split('.')[0]; + console.log("name " + name); + console.log("engg " + engine); + if (searchPage && name === engine) { + return; + } + + both = both ? both + "," + site : site; + console.log("both " + both); + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", site); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + //radio.setAttribute("id", "site"); + //radio.style.marginLeft = "10px"; + console.log("site " + site); + console.log("eng " + searchEngine); + /*var url = new URL(site); + var fullDomain = url.hostname;*/ + var label = document.createElement("label"); + label.innerHTML = name; + //content.appendChild(radio); + //content.appendChild(label); + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchContent.appendChild(searchDiv); + -document.addEventListener('DOMContentLoaded', restore_options); -document.getElementById('save').addEventListener('click', save_options); -document.getElementById('cancel').addEventListener('click', cancel_options); - -/* -function save_options() { - var prefDomain = document.getElementById('prefDomain').value; - var prefUrl = document.getElementById('prefUrl').value; - //var highlightTabs = document.getElementById('highlightTabs').checked; - alert(prefDomain); - var urls={}; - - urls[prefDomain] = [prefUrl]; - - chrome.storage.sync.get( "preferedPages", function(items) { - alert("items" + JSON.stringify(items)); - var origObj = items.preferedPages; - alert("before" + JSON.stringify(origObj)); - - if (origObj[prefDomain]) { - origObj[prefDomain].push(prefUrl); - } else { - origObj[prefDomain] = [prefUrl]; - } - - urls = origObj; - alert("final--" + JSON.stringify(urls)); - chrome.storage.sync.set({preferedPages: origObj}, function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - //items.preferedPages.prefDomain.push(prefUrl); - //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); }); + + + var searchAgainBtn = document.createElement('input'); + searchAgainBtn.setAttribute("type", "button"); + selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; + if (searchPage) { + /*var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", both); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + var label = document.createElement("label"); + label.innerHTML = "Both"; + searchDiv.appendChild(radio); + searchDiv.appendChild(label);*/ + searchAgainBtn.setAttribute("id", "searchAgain"); + searchAgainBtn.setAttribute("value", "Search Again"); + searchAgainBtn.onclick = searchAgain; + } else { + var searchAgainTxt = document.createElement('input'); + searchAgainTxt.setAttribute("type", "text"); + searchAgainTxt.setAttribute("id", "searchTextBox"); + selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; + searchAgainTxt.style.marginLeft = "25px"; + searchDiv.appendChild(searchAgainTxt); + searchAgainBtn.setAttribute("id", "searchbtn"); + searchAgainBtn.setAttribute("value", "Search"); + searchAgainBtn.onclick = searchInSite; + } + searchAgainBtn.style.marginLeft = '2px'; + searchDiv.appendChild(searchAgainBtn); + + searchContent.appendChild(searchDiv); + + /*if (selectAll) { + const allUrls = document.getElementsByName("link"); + if (allUrls.length > -1) { + if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { + //radio.disabled = true; + searchAgainBtn.disabled = true; + document.getElementsByName('site')[0].style.disabled = true; + document.getElementsByName('site')[1].style.disabled = true; + document.getElementsByName('site')[2].style.disabled = true; + if (!searchPage) { + document.getElementById('searchTextBox').style.disabled = true; + } + } + + } + }*/ + + +} + +function randomIntFromInterval(min,max) +{ + return Math.floor(Math.random()*(max-min+1)+min); } -// Restores tabsBackground state using the preferences -// stored in chrome.storage. -function restore_options() { - chrome.storage.sync.get( "preferedPages", function(items) { - var content = document.getElementById('content'); - var text = document.createTextNode(JSON.stringify(items)); - var data = items.preferedPages; - var table = document.createElement("TABLE"); - table.setAttribute("id", "table"); - content.appendChild(table); - var tr = document.createElement("TR"); - tr.setAttribute("id", "heading"); - table.appendChild(tr); - - var col1 = document.createElement("TD"); - var cell1 = document.createTextNode("Domain"); - col1.appendChild(cell1); - tr.appendChild(col1); - - var col2 = document.createElement("TD"); - var cell2 = document.createTextNode("Preferred URL"); - col2.appendChild(cell2); - tr.appendChild(col2); - - var col3 = document.createElement("TD"); - var cell3 = document.createTextNode("Delete"); - col3.appendChild(cell3); - tr.appendChild(col3); - - table.style.border = "thin solid #000000"; - //tr.style.border = "thin solid #000000"; - col1.style.border = "thin solid #000000"; - col2.style.border = "thin solid #000000"; - col3.style.border = "thin solid #000000"; - var rowIndex = 0; - Object.keys(data).forEach(function(domain, index){ - var rowSpan = (data[domain]).length; - data[domain].forEach(function(url, url_index) { - var dataRow = document.createElement("TR"); - dataRow.id = rowIndex; - table.appendChild(dataRow); - if (url_index === 0) { - var col1 = document.createElement("TD"); - col1.rowSpan = rowSpan; - var cell1 = document.createTextNode(domain); - col1.appendChild(cell1); - col1.style.border = "thin solid #000000"; - dataRow.appendChild(col1); - } - var col2 = document.createElement("TD"); - var cell2 = document.createTextNode(url); - col2.appendChild(cell2); - col2.style.border = "thin solid #000000"; - dataRow.appendChild(col2); - var col3 = document.createElement("TD"); - var cell3 = document.createElement("INPUT"); - cell3.type = "checkbox"; - cell3.id = domain; - cell3.name = "delete_chkbx"; - col3.appendChild(cell3); - col3.align = "center"; - col3.style.border = "thin solid #000000"; - dataRow.appendChild(col3); - rowIndex++; - }); - - }); - //content.appendChild(text); +function getPreferences(url_hostname, name, dataObj) { + if (dataObj === undefined) { + dataObj = jsonData; + } + console.log(url_hostname + " -- " + name ); + let pref = []; + for (var item in dataObj) { + let domain; + domain = dataObj[item]['current']; + console.log("DOMAIN--" + domain); + if (domain.indexOf(',') === -1) { + console.log("in no comma"); + //pref = []; + //if (domain === url_hostname || domain === name) { + if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { + console.log("name matched....") + if (domain.indexOf('http://') !== -1) { + baseUrl = domain; + } else { + baseUrl = 'http://' + domain; + } + var sites = dataObj[item]['sites']; + pref = sites; + console.log("sites--" + sites); + } + console.log("in get pref " + JSON.stringify(pref)); + } else { + var domArr = domain.split(','); + domArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[item]['sites']; + } + }); + console.log("in get pref " + pref); + } + } + console.log(pref); + return pref; + +} +function createList(allurls) { + + var list = document.createElement("OL"); + list.setAttribute("type", "1"); + list.setAttribute("id", "orderedList"); + //list.setAttribute("") + if (!searchPage) { + list.style.width = "100%"; + } + list.style.align = "right"; + + var i=1; + var value=""; + var bgColor = "#EDEEED"; //"#F4F6F7"; + allurls.forEach(function(page) { + console.log("in createList " + JSON.stringify(page)); + //console.log(Object.keys(page)); + //console.log(Object.values(page)); + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + var label = document.createElement('label'); + + var linkObj, key, url; + if (typeof page === 'object') { + console.log("has key value"); + + if (typeof Object.values(page)[0] === 'object') { + url = Object.values(page)[0]; + linkObj = url.url; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + input.setAttribute("Alt", url.alt); + if (currentUrl !== linkObj && url.selected !== false && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("llll" + label.getText); + } + } else { + linkObj = Object.values(page)[0]; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + console.log("in else"); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + } + + key = Object.keys(page)[0]; + } else { + var pageParts = page.split('/'); + console.log(pageParts.length); + console.log(pageParts[pageParts.length - 1] ); + linkObj = page; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; + input.setAttribute("value", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + + } + input.setAttribute("name", "link"); + if (currentUrl === linkObj) { + key = key + "(Current Tab)"; + console.log("kkk"+key); + document.getElementById('addbtn').hidden = "hidden"; + } + var id = key; //Object.keys(page)[0]; + input.setAttribute("id", id); + input.onclick = chkBoxClick; + label.htmlFor = id; + + console.log("linkObj--" + linkObj); + console.log("currentUrl--" + currentUrl); + + + //var linkObj = Object.values(page)[0]; + + + + var li = document.createElement("LI"); + li.style.backgroundColor = bgColor; + if (searchPage) + li.style.margin = "10px 0"; + + //li.setAttribute("background-color" , "#FFFEEC"); + var logo = document.createElement("IMG"); + console.log("link " + Object.values(page)[0]); + logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); + logo.setAttribute("width", "20"); + logo.setAttribute("height", "12"); + + var link = document.createElement('a'); + link.textContent = id; + link.href = linkObj; //Object.values(page)[0]; + link.title = linkObj; + link.onclick = linkClick; + label.appendChild(link); + + + list.appendChild(li); + li.appendChild(input); + li.appendChild(logo); + li.appendChild(label); + //list.appendChild(input); + //list.appendChild(logo); + //list.appendChild(label); + //var line = document.createElement('br'); + //list.appendChild(line); + if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" + bgColor = "#FFFFFF"; + } else { + bgColor = "#EDEEED"; //"#F4F6F7"; + } + }); + var howmany = document.getElementById("howmany"); + if (selectAll) { + howmany.textContent = allurls.length + " selected."; + } else { + howmany.textContent = "0 selected."; + } + return list; + + +} + +function selectOption() { + var content = document.getElementById('content'); + var orderedList = document.getElementById('orderedList'); + if (orderedList) { + content.removeChild(orderedList); + } + + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + //var allTypes = jsonData[type.name]; + var url = new URL(currentUrl); + + //var allTypes = jsonData[url.hostname] || jsonData[type.name]; + var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; + if (Array.isArray(allTypes[selectedType])){ + content.appendChild(createList(allTypes[selectedType])); + } +} + + +function createDropDown (data, hierarchy) { + var dropDown = document.createElement("SELECT"); + dropDown.setAttribute("id", "typeSelect"); + dropDown.setAttribute("name", hierarchy); + var keys = Object.keys(data); + keys.forEach(function (optn) { + var options = document.createElement("option"); + options.setAttribute("value", optn); + options.setAttribute("id", optn); + var txt = document.createTextNode(optn); + options.appendChild(txt); + if (optn.indexOf("default") > -1) { + options.selected = true; + } + dropDown.appendChild(options); + }); + dropDown.onchange = selectOption; + return dropDown; + +} + + +function getDomain(url, subdomain) { + //var isSubdom = isSubdomain(url); + subdomain = subdomain || false; + + url = url.replace(/(https?:\/\/)?(www.)?/i, ''); + + if (!subdomain) { + url = url.split('.'); + + url = url.slice(url.length - 2).join('.'); + + } + + if (url.indexOf('/') !== -1) { + return url.split('/')[0]; + } + + return url; +} + +function getCurrentTabUrl(callback) { + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function(tabs) { + + var tab = tabs[0]; + //var url = tab.url; + currentTab = tab; + callback(tab); }); + + chrome.windows.getCurrent(function(currentWindow) { + invokedWindow = currentWindow.id; + }); + } -function delete_selected_options() { - alert("in delete"); - var allChBx = document.getElementsByName("delete_chkbx"); - - chrome.storage.sync.get( "preferedPages", function(items) { - alert("items" + JSON.stringify(items)); - var origObj = items.preferedPages; - allChBx.forEach (function (chkbx) { - //alert(chkbx); - if (chkbx.checked) { - //alert("chked"); - var rowObj = chkbx.parentElement.parentElement; - var rowId = chkbx.parentElement.parentElement.id; - var domain; - var url; - //alert(rowObj.childNodes.length); - if (rowObj.childNodes.length === 2) { - domain = chkbx.id; - url = rowObj.childNodes[0].innerHTML; - } else { - domain = rowObj.childNodes[0].innerHTML; - url = rowObj.childNodes[1].innerHTML; - } - alert(rowId + "--" + domain + "--" + url); - alert("orig obj" + JSON.stringify(origObj)); - var urlIndex = origObj[domain].indexOf(url); - alert("index in obj-" + urlIndex); - origObj[domain].splice(urlIndex, 1); - alert("obj after delete" + JSON.stringify(origObj)); - } - }); - alert("obj after delete" + JSON.stringify(origObj)); - chrome.storage.sync.set({preferedPages: origObj}, function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - //items.preferedPages.prefDomain.push(prefUrl); - //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); +function utubeClick() { + var idx = currentTab.index + 1; + chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { + }); +} +function isParentGoogle(parentUrl) { + // var url = new URL(parentUrl); + // console.log("azhagiye...." + url.hostname); + //return google.indexOf(url.hostname) > -1; +} +function isFromSearch(currentURL) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + if (googleSearch) { + googleSearch.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + } + return urlFound; +} +function getDomainName(url) { + var hostname = new URL(url).hostname; + var hostArr = hostname.split('.'); + console.log(hostArr.length + "---yyy"); + console.log(hostArr); + if (hostArr.length === 2) { + return hostArr[0]; + } else if (hostArr.length === 4) { + if (hostArr[0] === 'www') { + return hostArr[1]; + } else { + return hostArr[2]; + } + } else { + return hostArr[1]; + } } -document.addEventListener('DOMContentLoaded', restore_options); -document.getElementById('save').addEventListener('click', save_options); -document.getElementById('delete').addEventListener('click', delete_selected_options); -*/ \ No newline at end of file + +function isUrlInList(currentURL, urlList) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + + urlList.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + + return urlFound; +} \ No newline at end of file diff --git a/popup.html b/popup.html index 479eee8..381834e 100644 --- a/popup.html +++ b/popup.html @@ -13,20 +13,21 @@ font-size: 100%; } - + #openbtn:first-letter {text-decoration:underline} + #addbtn:first-letter {text-decoration:underline} + #savebtn:first-letter {text-decoration:underline} - +
Advertisement

-
diff --git a/popup.js b/popup.js index 1659c59..04509b5 100644 --- a/popup.js +++ b/popup.js @@ -13,9 +13,10 @@ var searchPage; var queryString; var searchSites; var searchEngine; - -var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine']; -var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com']; +let baseUrl; +let anonymus; +var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus']; +var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com']; @@ -31,9 +32,25 @@ chrome.storage.sync.get( options, function(items) { queryString = items.queryString; //searchSites = items.searchSites; searchEngine = items.searchEngine; + anonymus = items.anonymus; }); function closeWindow (e) { + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + window.close(); } @@ -41,37 +58,53 @@ function closeWindow (e) { function clickHandler(e) { //loading = true; + console.log("in on clik opn"); const allUrls = document.getElementsByName("link"); + console.log(allUrls); + const urlsToOpen = []; const tabToHilite = [currentTab.index]; const openAt = currentTab.index + 1; - allUrls.forEach (function (url) { - console.log(url); - if (url.checked) { - urlsToOpen.push(url.value); - console.log("came till here"); - /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ - var itemValue = url.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); + let anonymus; + if (allUrls.length === 0) { + console.log("link undefined " + allUrls); + anonymus = document.getElementById("anonymus").value; + const urls = anonymus.split('\n'); + urls.forEach(function (url) { + urlsToOpen.push(url); + }); + } else { + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + console.log("came till here"); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } - } else { - console.log("came till here in else"); - } - }); + } else { + console.log("came till here in else"); + } + }); + } + console.log(urlsToOpen); /*if (highlightTabs) { chrome.tabs.highlight({tabs: tabToHilite}, function(){}); }*/ chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); var opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true}, function() { + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymus}, function() { if (chrome.runtime.error) { console.log("Runtime error."); } @@ -351,10 +384,28 @@ function addUrl() { }*/ //var prefForDom = origObj[fullDomain] || origObj[name]; var prefForDom = getPreferences(fullDomain, name, origObj); + console.log(prefForDom + " --- llllllll"); + var newEntryObj = {}; + var path = url.pathname.split('/'); + if (path.length === 0) { + newEntryObj[name] = currentUrl; + } else { + if (path[path.length-1].indexOf('=') === -1) { + newEntryObj[path[path.length-1]] = currentUrl; + } else { + newEntryObj[path[1]] = currentUrl; + } + } + + //path[path.length]; + //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; + + console.log(path.length); + console.log("dom-" + path + "--" + path[path.length-1]); if (prefForDom) { if (Array.isArray(prefForDom)) { - prefForDom.push(currentUrl); + prefForDom.push(newEntryObj); } else { var options = prefForDom; var type = document.getElementById("typeSelect"); @@ -362,7 +413,7 @@ function addUrl() { var allTypes = options[selectedType]; if (Array.isArray(options[selectedType])){ - options[selectedType].push(currentUrl); + options[selectedType].push(newEntryObj); } } @@ -372,7 +423,7 @@ function addUrl() { var newObj = {}; newObj["current"] = name; newObj["description"] = name; - newObj["sites"] = [currentUrl]; + newObj["sites"] = [newEntryObj]; origObj[name] = newObj; } //origObj[name] = [currentUrl]; @@ -390,33 +441,15 @@ function addUrl() { }, 750); }); }); -//console.log("outside -- " + JSON.stringify(jsonObj)); - }); } -//chrome.runtime.onMessage.addListener(messageReceived); -/* -function messageReceived(msg) { - console.log(msg); - if (msg === "completed") { - loading = false; - } -}*/ function searchAgain () { var urlSite = ''; - //var url = new URL(currentUrl); - //var fullDomain = url.hostname; - //console.log(queryString); - //console.log(url.hostname); - //urlSite = queryString + '%20site:' + url.hostname; - //console.log(urlSite); - var selectedSite = getSearchSite(); var selSiteArr; var idx = currentTab.index + 1; - //window.close; if (selectedSite.indexOf(',') > -1) { selSiteArr = selectedSite.split(','); selSiteArr.forEach(function(selSite){ @@ -538,17 +571,6 @@ function searchInSite (queryString) { var selectedSite = getSearchSite(); - /*var site = document.getElementsByName("site"); - for(var i = 0; i < site.length; i++) { - if(site[i].checked) { - selectedSite = site[i].value; - if (!selectedSite.endsWith('/')) { - selectedSite = selectedSite + '/'; - } - } - - - } */ if (selectedSite.indexOf('yahoo') > -1) { urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; } else { @@ -558,24 +580,146 @@ function searchInSite (queryString) { chrome.tabs.update(currentTab.id, {url: urlSite}); } - //var url = new URL(currentUrl); - //var fullDomain = url.hostname; - //console.log(queryString); - //console.log(url.hostname); - //urlSite = queryString + '%20site:' + url.hostname; - //console.log(urlSite); window.close(); } +document.addEventListener('beforeunload', function (event) { + console.log("unload.."); + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + }); + + + window.close(); +}, true); + +function saveSelection() { + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var name = getDomainName(tab.url); + + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + var prefForDom = getPreferences(fullDomain, name, origObj); + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + const allUrls = document.getElementsByName("link"); + allUrls.forEach (function (url) { + console.log("chkd--" + url.checked); + console.log("val--" + url.value); + console.log(url.labels[0].innerText); + console.log(JSON.stringify(prefForDom)); + console.log(prefForDom.length + "---long"); + var label = url.labels[0].innerText; + //if (label) //need to remove (currentTab from label) + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < prefForDom.length; i++) { + if (typeof prefForDom[i] === 'object') { + console.log(prefForDom[i]) ; + if (Object.keys(prefForDom[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[i][label]['selected'] = url.checked; + } else { + prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; + } + + } + } else { + if (prefForDom[i] === url.value) { + prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + const allUrls = document.getElementsByName("link"); + + allUrls.forEach (function (url) { + var label = url.labels[0].innerText; + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < allTypes.length; i++) { + console.log("vaan" + allTypes[i]); + if (typeof allTypes[i] === 'object') { + if (Object.keys(allTypes[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[selectedType][i][label]['selected'] = url.checked; + } else { + prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; + } + + } + } else { + if (allTypes[i] === url.value) { + prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } + } + } + console.log(JSON.stringify(origObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); +} + +function editTextArea () { + let txtAreaContent = this.value; + console.log("in txt are" + txtAreaContent); + if (txtAreaContent !== '') { + document.getElementById('openbtn').hidden = ""; + } +} document.addEventListener('DOMContentLoaded', function () { /* var bgPage = chrome.extension.getBackgroundPage(); console.log("before"); var bk = bgPage.test("abc"); // Here paste() is a function that returns value. console.log("beforeAAA--" + bk);*/ + document.getElementById('mainStuff').hidden = true; document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); document.getElementById('selectall').addEventListener('click', selectall); document.getElementById('addbtn').addEventListener('click', addUrl); + document.getElementById('savebtn').addEventListener('click', saveSelection); //document.getElementById('searchAgain').addEventListener('click', searchAgain); document.getElementById('sortListDir').addEventListener('click', sortListDir); //document.getElementById('searchbtn').addEventListener('click', searchInSite); @@ -598,7 +742,7 @@ document.addEventListener('DOMContentLoaded', function () { var hostNameArray = fullDomain.split("."); console.log(hostNameArray.length); - var domain = getDomain(currentUrl); + //var domain = getDomain(currentUrl); var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; console.log("currentUrl --" + currentUrl); console.log("name --" + name); @@ -611,6 +755,7 @@ document.addEventListener('DOMContentLoaded', function () { var prefForDom; console.log("test--" + isFromSearch(currentUrl)); if (google.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { + console.log("inside google"); if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { //console.log("google seach list is empty"); //window.close(); @@ -634,6 +779,7 @@ document.addEventListener('DOMContentLoaded', function () { prefForDom = googleSearch; console.log("check2-" + prefForDom + "-"); document.getElementById('addbtn').hidden = "hidden"; + document.getElementById('savebtn').hidden = "hidden"; //document.getElementById('searchbtn').hidden = "hidden"; //document.getElementById('searchText').hidden = "hidden"; content.style.width = "600px"; @@ -642,14 +788,17 @@ document.addEventListener('DOMContentLoaded', function () { if (googleSearch === "") { console.log("Search list is empty"); } + var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; var div = document.createElement('div'); div.setAttribute("align", "center"); var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + searchEngine); engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); engineLogo.style.cssFloat = 'middle'; div.appendChild(engineLogo); - var domain = getDomain(searchEngine); - var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; var searchEngineTxt = document.createTextNode(" " + engineName + " results."); div.appendChild(searchEngineTxt); @@ -671,7 +820,12 @@ document.addEventListener('DOMContentLoaded', function () { if(prefForDom){ //console.log(typeof allurls); if (Array.isArray(prefForDom)) { - content.appendChild(createList(prefForDom)); + console.log("pref dom is an array") + if (prefForDom.length > 0) { + content.appendChild(createList(prefForDom)); + } else { + noConfigFound(content); + } } else { content.appendChild(createDropDown(prefForDom, name)); var label = document.createElement('label'); @@ -690,17 +844,19 @@ document.addEventListener('DOMContentLoaded', function () { document.getElementById('selectall').checked = true; } createRadio(content); + //document.getElementById('addbtn').hidden = "hidden"; } else { - var text = document.createTextNode("Domain not set in preference."); + console.log("domain not set..."); + noConfigFound(content); + /*var text = document.createTextNode("Domain not set in preference."); document.getElementById('openbtn').hidden = "hidden"; - //document.getElementById('cancelbtn').hidden = "hidden"; document.getElementById('selectall').hidden = "hidden"; document.getElementById('selectall').nextSibling.nodeValue = ""; document.getElementById('sortListDir').hidden = "hidden"; document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('addbtn').hidden = ""; - content.appendChild(text); - //document.getElementById('typeSelect').addEventListener('changed', selectOption); + document.getElementById('anonymus').hidden = ""; + content.appendChild(text);*/ + } @@ -709,7 +865,7 @@ document.addEventListener('DOMContentLoaded', function () { }); var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('youtube.json')); + xhr.open('GET', chrome.extension.getURL('utube.json')); xhr.responseType = "text"; xhr.onreadystatechange = function() { @@ -749,16 +905,48 @@ document.addEventListener('DOMContentLoaded', function () { // //console.log("margin" + document.getElementById("selectall").style.margin); + /*var delayMillis = 10000; //1 second + + setTimeout(function() { + //your code to be executed after 1 second + }, delayMillis);*/ + document.getElementById('mainStuff').hidden = false; + document.getElementById('progress').hidden = true; }); +function noConfigFound(content) { + console.log("domain not set..."); + const divTxt = document.createElement("div"); + var text = document.createTextNode("Domain not set in preference." + "\n" + "You may enter the URL's to open one below the other in the space given below and open them."); + divTxt.style.marginLeft = "25px"; + document.getElementById('openbtn').hidden = "hidden"; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('addbtn').hidden = ""; + document.getElementById('anonymus').hidden = ""; + if (anonymus) { + document.getElementById('anonymus').value = anonymus; + document.getElementById('openbtn').hidden = ""; + } + document.getElementById('anonymus').onkeyup = editTextArea; + + + divTxt.appendChild(text); + content.appendChild(divTxt); + +} + function createRadio(content) { - var engDom = getDomain(searchEngine); + //var engDom = getDomain(searchEngine); //var engine = engDom.split('.')[0]; var engineUrl = new URL(searchEngine); console.log("url hostname eng-" + engineUrl.hostname); var engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; - var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'http://www.bing.com/']; //searchSites.split(','); + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/', 'https://www.youtube.com/']; //searchSites.split(','); var searchContent = document.getElementById('searchContent'); @@ -818,18 +1006,15 @@ function createRadio(content) { searchAgainBtn.setAttribute("type", "button"); selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; if (searchPage) { - var radio = document.createElement("INPUT"); + /*var radio = document.createElement("INPUT"); radio.setAttribute("type", "radio"); radio.setAttribute("value", both); radio.setAttribute("name", "site"); selectAll ? radio.disabled = true : radio.disabled = false; - //radio.setAttribute("id", "site"); var label = document.createElement("label"); label.innerHTML = "Both"; - //content.appendChild(radio); - //content.appendChild(label); searchDiv.appendChild(radio); - searchDiv.appendChild(label); + searchDiv.appendChild(label);*/ searchAgainBtn.setAttribute("id", "searchAgain"); searchAgainBtn.setAttribute("value", "Search Again"); searchAgainBtn.onclick = searchAgain; @@ -878,49 +1063,37 @@ function getPreferences(url_hostname, name, dataObj) { if (dataObj === undefined) { dataObj = jsonData; } - /*var pref = dataObj[url_hostname] || dataObj[name]; - if (pref) { - return pref; - } else { - var hostNameKeys = Object.keys(dataObj); - hostNameKeys.forEach(function(key) { - if (key.indexOf(',') !== -1) { - var hostnameArr = key.split(','); - hostnameArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[key]; - //return pref; - } - }); - } - - }); - return pref; - }*/ - //console.log(JSON.stringify(dataObj)); - for(var item in dataObj) { - var domain,pref; + console.log(url_hostname + " -- " + name ); + let pref = []; + for (var item in dataObj) { + let domain; domain = dataObj[item]['current']; - if (domain === url_hostname || domain === name) { - pref = dataObj[item]['sites']; - } - - if (pref) { - return pref; - } else { - if (domain.indexOf(',') !== -1) { - var domArr = domain.split(','); - domArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[item]['sites']; - //return pref; - } - }); + console.log("DOMAIN--" + domain); + if (domain.indexOf(',') === -1) { + console.log("in no comma"); + //pref = []; + //if (domain === url_hostname || domain === name) { + if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { + console.log("name matched....") + if (domain.indexOf('http://') !== -1) { + baseUrl = domain; + } else { + baseUrl = 'http://' + domain; + } + var sites = dataObj[item]['sites']; + pref = sites; + console.log("sites--" + sites); } - + console.log("in get pref " + JSON.stringify(pref)); + } else { + var domArr = domain.split(','); + domArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[item]['sites']; + } + }); + console.log("in get pref " + pref); } - //console.log(dataObj[item]['current']); - } console.log(pref); return pref; @@ -933,6 +1106,9 @@ function createList(allurls) { list.setAttribute("type", "1"); list.setAttribute("id", "orderedList"); //list.setAttribute("") + if (!searchPage) { + list.style.width = "100%"; + } list.style.align = "right"; var i=1; @@ -942,33 +1118,105 @@ function createList(allurls) { console.log("in createList " + JSON.stringify(page)); //console.log(Object.keys(page)); //console.log(Object.values(page)); - var linkObj, key; + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + var label = document.createElement('label'); + + var linkObj, key, url; if (typeof page === 'object') { console.log("has key value"); - linkObj = Object.values(page)[0]; + + if (typeof Object.values(page)[0] === 'object') { + url = Object.values(page)[0]; + linkObj = url.url; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + input.setAttribute("Alt", url.alt); + if (currentUrl !== linkObj && url.selected !== false && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("llll" + label.getText); + } + } else { + linkObj = Object.values(page)[0]; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + console.log("in else"); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + } + key = Object.keys(page)[0]; } else { var pageParts = page.split('/'); console.log(pageParts.length); console.log(pageParts[pageParts.length - 1] ); linkObj = page; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; - } - console.log("linkObj--" + linkObj); - console.log("currentUrl--" + currentUrl); + input.setAttribute("value", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } - var input = document.createElement("INPUT"); - //var linkObj = Object.values(page)[0]; - input.setAttribute("type", "checkbox"); - input.setAttribute("value", linkObj); + } input.setAttribute("name", "link"); if (currentUrl === linkObj) { key = key + "(Current Tab)"; console.log("kkk"+key); + document.getElementById('addbtn').hidden = "hidden"; } var id = key; //Object.keys(page)[0]; input.setAttribute("id", id); input.onclick = chkBoxClick; + label.htmlFor = id; + + console.log("linkObj--" + linkObj); + console.log("currentUrl--" + currentUrl); + + + //var linkObj = Object.values(page)[0]; + var li = document.createElement("LI"); @@ -982,47 +1230,11 @@ function createList(allurls) { logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); logo.setAttribute("width", "20"); logo.setAttribute("height", "12"); - var label = document.createElement('label'); - label.htmlFor = id; - - if (typeof linkObj === 'object') { - console.log("in if"); - input.setAttribute("value", linkObj.url); - input.setAttribute("Alt", linkObj.alt); - if (currentUrl !== linkObj && linkObj.selected !== false && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } else { - console.log("llll" + label.getText); - } - } else { - console.log("in else"); - input.setAttribute("value", linkObj); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } else { - console.log("llll" + label.getText); - } - } - var link = document.createElement('a'); link.textContent = id; link.href = linkObj; //Object.values(page)[0]; + link.title = linkObj; link.onclick = linkClick; label.appendChild(link); @@ -1168,9 +1380,34 @@ function isFromSearch(currentURL) { function getDomainName(url) { var hostname = new URL(url).hostname; var hostArr = hostname.split('.'); + console.log(hostArr.length + "---yyy"); + console.log(hostArr); if (hostArr.length === 2) { return hostArr[0]; + } else if (hostArr.length === 4) { + if (hostArr[0] === 'www') { + return hostArr[1]; + } else { + return hostArr[2]; + } } else { return hostArr[1]; } +} + +function isUrlInList(currentURL, urlList) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + + urlList.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + + return urlFound; } \ No newline at end of file From 55c70649f608e4ed552c83256da8901098a86ffe Mon Sep 17 00:00:00 2001 From: Gautam Date: Sun, 5 Nov 2017 19:50:12 -0600 Subject: [PATCH 24/33] Modified popup.js, background.js etc for fixes. --- options.js | 1765 +++++++++++++--------------------------------------- pages.json | 176 ++++-- popup.html | 1 + popup.js | 92 +-- 4 files changed, 607 insertions(+), 1427 deletions(-) diff --git a/options.js b/options.js index 04509b5..2cfbb52 100644 --- a/options.js +++ b/options.js @@ -1,1413 +1,498 @@ -var jsonData; -var currentTab; -var highlightTabs; -var tabsBackground; -var currentUrl; -var invokedWindow; -var selectAll; -var loading; -var googleSearch; -var parentUrl; -var utubeData; -var searchPage; -var queryString; -var searchSites; -var searchEngine; -let baseUrl; -let anonymus; -var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus']; -var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com']; - - - -chrome.storage.sync.get( options, function(items) { - jsonData = items.jsonData; - highlightTabs = items.highlightTabs; - tabsBackground = items.tabsBackground; - selectAll = items.selectAll; - loading = items.loading; - console.log("in sync get" + loading); - googleSearch = items.googleSearch; - parentUrl = items.parentUrl; - queryString = items.queryString; - //searchSites = items.searchSites; - searchEngine = items.searchEngine; - anonymus = items.anonymus; -}); - -function closeWindow (e) { - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - - window.close(); -} - - -function clickHandler(e) { - //loading = true; - console.log("in on clik opn"); - const allUrls = document.getElementsByName("link"); - console.log(allUrls); - - const urlsToOpen = []; - const tabToHilite = [currentTab.index]; - const openAt = currentTab.index + 1; - let anonymus; - if (allUrls.length === 0) { - console.log("link undefined " + allUrls); - anonymus = document.getElementById("anonymus").value; - const urls = anonymus.split('\n'); - urls.forEach(function (url) { - urlsToOpen.push(url); - }); - } else { - allUrls.forEach (function (url) { - console.log(url); - if (url.checked) { - urlsToOpen.push(url.value); - console.log("came till here"); - /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("came till here in else"); - } - }); +/** + * Created by gdev on 3/18/2017. + */ + +function save_options() { + var jsonData = document.getElementById('jsonData').value; + var tabsBackground = document.getElementById('tabsBackground').checked; + var highlightTabs = document.getElementById('highlightTabs').checked; + var selectAll = document.getElementById('selectAll').checked; + var timeOut = document.getElementById('timeOut').value; + var tabToLoad = document.getElementById('tabToLoad').value; + //var searchSites = document.getElementById('searchSites').value; + + if (jsonData.trim() === '') { + return; } - - console.log(urlsToOpen); - /*if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite}, function(){}); - }*/ - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - var opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymus}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); -} - -function selectall () { - const allUrls = document.getElementsByName("link"); - var parentNode; - if (document.getElementById('selectall').checked) { - allUrls.forEach (function (url) { - if (currentUrl !== url.value) { - url.checked = true; - url.nextSibling.nextSibling.style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - document.getElementById("sametab").hidden = true; - document.getElementById("sametabChkbx").checked = false; - } - parentNode = url.parentNode.parentNode.childNodes; - console.log("kkkkkk-" + url.value); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); + const dataLen = jsonData.replace(/\s/g, '').length; + var jsonObj = {}; + document.getElementById("error").innerHTML = ""; + try { + jsonObj = JSON.parse(jsonData); + const objLen = JSON.stringify(jsonObj).replace(/\s/g, '').length; + if (dataLen > objLen) { + throw new Error("The given json seems to have duplicate keys..Please check and try again"); + } + validJson(jsonObj); + var domValues = Object.values(jsonObj); + domValues.forEach(function(val){ + //alert(val); + var keys = Object.keys(val); + //alert(keys); + if (keys.indexOf('sites') === -1 || keys.indexOf('current') === -1) { + //alert ("in if"); + throw new Error("The given json seems to have different schema..Please check and try again"); } - }); - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(parentNode); - howmany.textContent = selNums + " selected."; - if (selNums > 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - } - } else { - allUrls.forEach (function (url) { - url.checked = false; - console.log(url.parentNode); - url.nextSibling.nextSibling.style.fontWeight = "normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").hidden = true; - document.getElementById("sametabChkbx").checked = false; - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - var howmany = document.getElementById("howmany"); - howmany.textContent = "0 selected."; - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; - //document.getElementById('searchAgain').disabled = false; + } catch(err) { + //alert (err); + document.getElementById("error").innerHTML = err.message; + return; } - -} - -function linkClick () { - console.log(this.href); - const opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); -} - -function chkBoxClick (ele) { - console.log(this.labels[0].innerHTML); - var currNode = this; - var none = true; - var selectedArray = []; - if (this.checked) { - this.labels[0].style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - //var liList = this.parentNode.parentNode.childNodes; - //console.log(liList.length); - - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - none = false; - return; - } - + chrome.storage.sync.set({ + jsonData: jsonObj, + tabsBackground: tabsBackground, + highlightTabs: highlightTabs, + selectAll: selectAll, + timeOut : timeOut, + tabToLoad : tabToLoad}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); }); - if (none) { - console.log("only one"); - document.getElementById("sametab").hidden = false; - document.getElementById("sametabChkbx").checked = true; - } else { - document.getElementById("sametab").hidden = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("li value-" + this.value); - /*selectedArray.push(this.value); - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - selectedArray.push(li.childNodes[0].value); - } - });*/ - var itemValue = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } else { - this.labels[0].style.fontWeight="normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").hidden = true; - document.getElementById("sametabChkbx").checked = false; - if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { - document.getElementById("openbtn").disabled = false; - } - if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { - console.log("more than one checked"); - document.getElementById("sametab").hidden = true; - document.getElementById("sametabChkbx").checked = false; - } else { - document.getElementById("sametab").hidden = false; - document.getElementById("sametabChkbx").checked = true; - } - - var itemValue = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(this.parentNode.parentNode.childNodes); - howmany.textContent = selNums + " selected."; - if (selNums === 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; - //document.getElementById('searchAgain').disabled = false; - } else { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } - if (selNums < this.parentNode.parentNode.childNodes.length) { - document.getElementById('selectall').checked = false; - } - if (selNums === this.parentNode.parentNode.childNodes.length) { - document.getElementById('selectall').checked = true; - } - //console.log("len--" + this.parentNode.parentNode.childNodes.length); -} - -function howManyChecked(liNodes) { - var chked = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked ++; - } - }); - return chked; -} - -function atleastOneChecked(liNodes) { - var chked = false; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked = true; - } - }); - - return chked; - /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); - return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ } -function moreThanOneChecked(liNodes) { - var n = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - n ++; - } - }); - if (n === 0 || n > 1 ) { - return true; - } else { - return false; - } +function checkIfArrayIsUnique(myArray) { + return myArray.length === new Set(myArray).size; } -function addUrl() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - /*var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - var domain = getDomain(currentUrl); - var name = hostNameArray[1];//domain.split('.')[0]; - //var jsonObj = {};*/ - var name = getDomainName(tab.url); - - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - //alert("before" + JSON.stringify(origObj)); - /*var prefForDom = origObj[fullDomain]; - if (prefForDom === undefined) { - prefForDom = origObj[name]; - }*/ - //var prefForDom = origObj[fullDomain] || origObj[name]; - var prefForDom = getPreferences(fullDomain, name, origObj); - console.log(prefForDom + " --- llllllll"); - var newEntryObj = {}; - var path = url.pathname.split('/'); - if (path.length === 0) { - newEntryObj[name] = currentUrl; - } else { - if (path[path.length-1].indexOf('=') === -1) { - newEntryObj[path[path.length-1]] = currentUrl; +function validJson(jsonObj) { + //alert (jsonObj); + //alert("all keys-" + Object.values(jsonObj)); + const keys = Object.keys(jsonObj); + //alert(keys); + //alert("check" + checkIfArrayIsUnique (keys)) + /*if (!checkIfArrayIsUnique (keys)) { + alert("The given json seems to have duplicate keys..Please correct and try again"); + //throw new Error("The given json seems to have duplicate keys..Please correct and try again"); + }*/ + //var baseUrl; + for (var item in jsonObj) { + //alert(item); + var current = jsonObj[item]['current']; + var sites = jsonObj[item]['sites']; + var linkObj; + + for (var index in sites) { + //alert(JSON.stringify(sites[index])); + if (Array.isArray(sites[index])) { + //alert("is array" + JSON.stringify(sites[index][0])); + sites[index].forEach(function(siteItem){ + //linkObj = siteItem; + //alert("Link-A-" + JSON.stringify(linkObj)); + if (typeof siteItem === 'object') { + if (typeof Object.values(siteItem)[0] === 'object') { + linkObj = Object.values(siteItem)[0].url; + alert("Link-A--1-" + JSON.stringify(linkObj)); + } else { + linkObj = Object.values(siteItem)[0]; + alert("Link-A--2-" + JSON.stringify(linkObj)); + } + } + if (linkObj.indexOf("http") === -1) { + linkObj = getBaseURL(current) + linkObj; + } + if (doesUrlRepeat(linkObj, jsonObj, current)) { + return; + } + }); + } else if (typeof sites[index] === 'object') { + if (typeof Object.values(sites[index])[0] === 'object') { + linkObj = Object.values(sites[index])[0].url; + alert("Link-B-" + linkObj); } else { - newEntryObj[path[1]] = currentUrl; + linkObj = Object.values(sites[index])[0]; + alert("Link-C-" + linkObj); + } + if (linkObj.indexOf("http") === -1) { + linkObj = getBaseURL(current) + linkObj; + } + if (doesUrlRepeat(linkObj, jsonObj, current)) { + return; + } + } else { + linkObj = sites[index]; + alert("Link-D-" + linkObj); + if (linkObj.indexOf("http") === -1) { + linkObj = getBaseURL(current) + linkObj; + } + if (doesUrlRepeat(linkObj, jsonObj, current)) { + return; } } - //path[path.length]; - //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; - - console.log(path.length); - console.log("dom-" + path + "--" + path[path.length-1]); - if (prefForDom) { - if (Array.isArray(prefForDom)) { - prefForDom.push(newEntryObj); + /*if (typeof sites[index] === 'object') { + //alert("is obj-" + JSON.stringify(Object.values(sites[index]))); + if (typeof Object.values(sites[index])[0] === 'object') { + linkObj = Object.values(sites[index])[0].url; } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - options[selectedType].push(newEntryObj); - } + linkObj = Object.values(sites[index])[0]; } - - } else { - //origObj[name] = [currentUrl]; - var newObj = {}; - newObj["current"] = name; - newObj["description"] = name; - newObj["sites"] = [newEntryObj]; - origObj[name] = newObj; - } - //origObj[name] = [currentUrl]; - console.log(JSON.stringify(origObj)); - //jsonObj = items; - //console.log(JSON.stringify(jsonObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); -} - - -function searchAgain () { - var urlSite = ''; - var selectedSite = getSearchSite(); - var selSiteArr; - var idx = currentTab.index + 1; - if (selectedSite.indexOf(',') > -1) { - selSiteArr = selectedSite.split(','); - selSiteArr.forEach(function(selSite){ - if (selSite.indexOf('yahoo') > -1) { - urlSite = selSite + 'search;?p=' + queryString; - } else { - urlSite = selSite + 'search?q=' + queryString; - } - - chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { - idx ++; - }); - }); - } else { - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + queryString; - } else { - urlSite = selectedSite + 'search?q=' + queryString; - } - chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { - - }); - //chrome.tabs.update(currentTab.id, {url: urlSite}); - } - - window.close(); -} - -function getSearchSite() { - var selectedSite; - var site = document.getElementsByName("site"); - for(var i = 0; i < site.length; i++) { - if(site[i].checked) { - selectedSite = site[i].value; - - if (!selectedSite.endsWith('/')) { - selectedSite = selectedSite + '/'; - } - } - } - - return selectedSite; -} - -function sortListDir() { - var list, i, switching, b, shouldSwitch, dir, switchcount = 0; - list = document.getElementById("orderedList"); - switching = true; - //Set the sorting direction to ascending: - dir = "asc"; - //Make a loop that will continue until no switching has been done: - while (switching) { - //start by saying: no switching is done: - switching = false; - b = list.getElementsByTagName("LI"); - //Loop through all list-items: - for (i = 0; i < (b.length - 1); i++) { - //start by saying there should be no switching: - shouldSwitch = false; - /*check if the next item should switch place with the current item, - based on the sorting direction (asc or desc):*/ - if (dir == "asc") { - if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically lower than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; - } - } else if (dir == "desc") { - if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically higher than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; - } - } - } - if (shouldSwitch) { - /*If a switch has been marked, make the switch - and mark that a switch has been done:*/ - b[i].parentNode.insertBefore(b[i + 1], b[i]); - switching = true; - //Each time a switch is done, increase switchcount by 1: - switchcount ++; - } else { - /*If no switching has been done AND the direction is "asc", - set the direction to "desc" and run the while loop again.*/ - if (switchcount == 0 && dir == "asc") { - dir = "desc"; - switching = true; - - } + linkObj = sites[index]; + }*/ + /*if (doesUrlRepeat(linkObj, jsonObj, current)) { + return; + }*/ } - } - chngSortBtnValue(); -} - -function chngSortBtnValue() { - var sortImg = document.getElementById('sortListDir'); - console.log(sortImg.getAttribute('src')); - if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { - //sortImg.nextSibling.textContent = "Sort Z to A"; - sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); - } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { - //sortImg.nextSibling.textContent = "Sort A to Z"; - sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); } } -function searchInSite (queryString) { - var urlSite = ''; - var searchText = document.getElementById('searchTextBox').value; - console.log(searchText); - if (searchText) { - var url = new URL(currentUrl); - - var selectedSite = getSearchSite(); - - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; +function getBaseURL(current) { + var baseUrl; + if (current.indexOf(',') === -1) { + if (current.indexOf('http://') !== -1 || current.indexOf('https://') !== -1) { + baseUrl = current; } else { - urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; + baseUrl = 'http://' + current; } - - chrome.tabs.update(currentTab.id, {url: urlSite}); - } - window.close(); + return baseUrl; } -document.addEventListener('beforeunload', function (event) { - console.log("unload.."); - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); +function doesUrlRepeat(linkObj, jsonObj, current) { + var firstOccurance = true; - window.close(); -}, true); - -function saveSelection() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var name = getDomainName(tab.url); + for (var item in jsonObj) { + var curr = jsonObj[item]['current']; + var sites = jsonObj[item]['sites']; - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - var prefForDom = getPreferences(fullDomain, name, origObj); + /*sites.forEach(function (site) { + alert ("for each " + JSON.stringify(site)); + }); - if (prefForDom) { - if (Array.isArray(prefForDom)) { - const allUrls = document.getElementsByName("link"); - allUrls.forEach (function (url) { - console.log("chkd--" + url.checked); - console.log("val--" + url.value); - console.log(url.labels[0].innerText); - console.log(JSON.stringify(prefForDom)); - console.log(prefForDom.length + "---long"); - var label = url.labels[0].innerText; - //if (label) //need to remove (currentTab from label) - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; + for (var index in sites) { + alert ("for loop " + JSON.stringify(sites[sites])); + }*/ + //alert("current--" + current + "--curr--" + curr); + //if (curr !== current) { + for (var index in sites) { + if (Array.isArray(sites[index])) { + sites[index].forEach(function(siteItem){ + //linkObj = siteItem; + //alert("Link-A-" + JSON.stringify(linkObj)); + var url; + if (typeof siteItem === 'object') { + if (typeof Object.values(siteItem)[0] === 'object') { + url = Object.values(siteItem)[0].url; + //alert("Link-A--1-" + JSON.stringify(linkObj)); + } else { + url = Object.values(siteItem)[0]; + //alert("Link-A--2-" + JSON.stringify(linkObj)); } - for (var i=0; i < prefForDom.length; i++) { - if (typeof prefForDom[i] === 'object') { - console.log(prefForDom[i]) ; - if (Object.keys(prefForDom[i])[0] === label) { - if (typeof Object.values(prefForDom[i])[0] === 'object') { - prefForDom[i][label]['selected'] = url.checked; - } else { - prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; - } - - } + } + if (url.indexOf("http") === -1) { + url = getBaseURL(curr) + url; + } + alert("link--" + linkObj + "\n" + "site--" + url); + if (linkObj === url) { + alert("me here AA"); + //alert("The url " + linkObj + "is defined under " + current + " and " + curr + "..Please correct and try again"); + if (!firstOccurance) { + let mesg; + if (curr === current) { + mesg = "The url " + linkObj + " is defined twice under " + current + "..Please correct and try again."; } else { - if (prefForDom[i] === url.value) { - prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; - } + mesg = "The url " + linkObj + " is defined under " + current + " and " + curr + "..Please correct and try again."; } + throw new Error(mesg); + return true; } - console.log(JSON.stringify(prefForDom)); - - }); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - const allUrls = document.getElementsByName("link"); - - allUrls.forEach (function (url) { - var label = url.labels[0].innerText; - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < allTypes.length; i++) { - console.log("vaan" + allTypes[i]); - if (typeof allTypes[i] === 'object') { - if (Object.keys(allTypes[i])[0] === label) { - if (typeof Object.values(prefForDom[i])[0] === 'object') { - prefForDom[selectedType][i][label]['selected'] = url.checked; - } else { - prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; - } + firstOccurance = false; - } - } else { - if (allTypes[i] === url.value) { - prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); } - } - } - console.log(JSON.stringify(origObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); }); - }); - }); -} - -function editTextArea () { - let txtAreaContent = this.value; - console.log("in txt are" + txtAreaContent); - if (txtAreaContent !== '') { - document.getElementById('openbtn').hidden = ""; - } -} -document.addEventListener('DOMContentLoaded', function () { - /* var bgPage = chrome.extension.getBackgroundPage(); - console.log("before"); - var bk = bgPage.test("abc"); // Here paste() is a function that returns value. - console.log("beforeAAA--" + bk);*/ - document.getElementById('mainStuff').hidden = true; - document.getElementById('cancelbtn').addEventListener('click', closeWindow); - document.getElementById('openbtn').addEventListener('click', clickHandler); - document.getElementById('selectall').addEventListener('click', selectall); - document.getElementById('addbtn').addEventListener('click', addUrl); - document.getElementById('savebtn').addEventListener('click', saveSelection); - //document.getElementById('searchAgain').addEventListener('click', searchAgain); - document.getElementById('sortListDir').addEventListener('click', sortListDir); - //document.getElementById('searchbtn').addEventListener('click', searchInSite); - onclick="()" - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - var content = document.getElementById('content'); - //chrome.storage.sync.set({loading: false}, function() {}); - //chrome.storage.sync.set({parentUrl: ""}, function() {}); - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - if (currentUrl === "chrome://newtab/") { - window.close(); - return; - } - - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - //var domain = getDomain(currentUrl); - var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; - console.log("currentUrl --" + currentUrl); - console.log("name --" + name); - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - if (loading) { - window.close(); - return; - } - var prefForDom; - console.log("test--" + isFromSearch(currentUrl)); - if (google.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { - console.log("inside google"); - if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { - //console.log("google seach list is empty"); - //window.close(); - //return; - var text = document.createTextNode("No previous search results found. Please try a fresh search."); - document.getElementById('openbtn').hidden = "hidden"; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); - - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('searchAgain').hidden = "hidden"; - //document.getElementById('addbtn').hidden = ""; - content.appendChild(text); - return; - - } - console.log("Check1 " + JSON.stringify(googleSearch)); - prefForDom = googleSearch; - console.log("check2-" + prefForDom + "-"); - document.getElementById('addbtn').hidden = "hidden"; - document.getElementById('savebtn').hidden = "hidden"; - //document.getElementById('searchbtn').hidden = "hidden"; - //document.getElementById('searchText').hidden = "hidden"; - content.style.width = "600px"; - document.getElementById('body').style.width = "603px"; - searchPage = true; - if (googleSearch === "") { - console.log("Search list is empty"); - } - var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - var div = document.createElement('div'); - div.setAttribute("align", "center"); - var engineLogo = document.createElement("IMG"); - console.log("get favicon--" + searchEngine); - engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); - //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); - engineLogo.style.cssFloat = 'middle'; - div.appendChild(engineLogo); - //var domain = getDomain(searchEngine); - //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - - var searchEngineTxt = document.createTextNode(" " + engineName + " results."); - div.appendChild(searchEngineTxt); - content.appendChild(div); - } - - if (prefForDom === undefined) { - prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; - //content.style.width = "200px"; - //ocument.getElementById('searchAgain').hidden = "hidden"; - searchPage = false; - } - - - - - console.log(jsonData); - console.log(prefForDom); - if(prefForDom){ - //console.log(typeof allurls); - if (Array.isArray(prefForDom)) { - console.log("pref dom is an array") - if (prefForDom.length > 0) { - content.appendChild(createList(prefForDom)); - } else { - noConfigFound(content); - } - } else { - content.appendChild(createDropDown(prefForDom, name)); - var label = document.createElement('label'); - var txt = document.createTextNode("Options "); - label.setAttribute("for", "typeSelect"); - label.appendChild(txt); - label.style.marginLeft = "25px"; - content.insertBefore(label,document.getElementById("typeSelect")); - var type = document.getElementById("typeSelect"); - //type.style.marginLeft = "25px"; - var selectedType = type.options[type.selectedIndex].value; - content.appendChild(createList(prefForDom[selectedType])); - } - //document.getElementsByName("link").addEventListener('click', chkBoxClick); - if (selectAll) { - document.getElementById('selectall').checked = true; - } - createRadio(content); - //document.getElementById('addbtn').hidden = "hidden"; - } else { - console.log("domain not set..."); - noConfigFound(content); - /*var text = document.createTextNode("Domain not set in preference."); - document.getElementById('openbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - document.getElementById('anonymus').hidden = ""; - content.appendChild(text);*/ - - } - - - - - }); - - var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('utube.json')); - xhr.responseType = "text"; - - xhr.onreadystatechange = function() { - console.log("here"); - if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { - //console.log(xhr.responseText); - //utubeData = xhr.responseText; - utubeData = JSON.parse(xhr.responseText); - console.log(utubeData); - if (utubeData !== undefined) { - var adStuff = document.getElementById('adStuff'); - //var utubeData = chrome.runtime.getURL("utube.json"); - console.log(utubeData); - var keys = Object.keys(utubeData); - var ranNum = randomIntFromInterval(0, 9); - console.log("Me random" + ranNum); - var utube = document.createElement('a'); - utube.textContent = keys[ranNum]; - utube.href = utubeData[keys[ranNum]]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - /*keys.forEach(function (key) { - //console.log(data); - var utube = document.createElement('a'); - utube.textContent = key; - utube.href = utubeData[key]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - });*/ - - } - } - }; - xhr.send(); - // - - //console.log("margin" + document.getElementById("selectall").style.margin); - /*var delayMillis = 10000; //1 second - - setTimeout(function() { - //your code to be executed after 1 second - - }, delayMillis);*/ - document.getElementById('mainStuff').hidden = false; - document.getElementById('progress').hidden = true; -}); - -function noConfigFound(content) { - console.log("domain not set..."); - const divTxt = document.createElement("div"); - var text = document.createTextNode("Domain not set in preference." + "\n" + "You may enter the URL's to open one below the other in the space given below and open them."); - divTxt.style.marginLeft = "25px"; - document.getElementById('openbtn').hidden = "hidden"; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('addbtn').hidden = ""; - document.getElementById('anonymus').hidden = ""; - if (anonymus) { - document.getElementById('anonymus').value = anonymus; - document.getElementById('openbtn').hidden = ""; - } - document.getElementById('anonymus').onkeyup = editTextArea; - - - divTxt.appendChild(text); - content.appendChild(divTxt); - -} - -function createRadio(content) { - //var engDom = getDomain(searchEngine); - //var engine = engDom.split('.')[0]; - var engineUrl = new URL(searchEngine); - console.log("url hostname eng-" + engineUrl.hostname); - var engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; - var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/', 'https://www.youtube.com/']; //searchSites.split(','); - - var searchContent = document.getElementById('searchContent'); - - var searchDiv = document.createElement('searchDiv'); - searchDiv.id = "searchDiv"; - searchDiv.style.margin = "0px 0px 0px 25px"; - searchDiv.style.width = '300px'; - - var searchLbl = document.createElement('label'); - searchLbl.innerHTML = "search in"; - searchLbl.style.marginLeft = "25px"; - searchContent.appendChild(searchLbl); - var br = document.createElement('br'); - searchContent.appendChild(br); - /*var margin = true;*/ - - var both; - - sitesArr.forEach(function (site) { - var url = new URL(site); - console.log("url hostname-" + url.hostname); - var name = getDomainName(site);//url.hostname.split('.')[1]; - //var domain = getDomain(site); - //var name = domain.split('.')[0]; - console.log("name " + name); - console.log("engg " + engine); - if (searchPage && name === engine) { - return; - } - - both = both ? both + "," + site : site; - console.log("both " + both); - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", site); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - //radio.setAttribute("id", "site"); - //radio.style.marginLeft = "10px"; - console.log("site " + site); - console.log("eng " + searchEngine); - /*var url = new URL(site); - var fullDomain = url.hostname;*/ - var label = document.createElement("label"); - label.innerHTML = name; - //content.appendChild(radio); - //content.appendChild(label); - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchContent.appendChild(searchDiv); - - - }); - - - var searchAgainBtn = document.createElement('input'); - searchAgainBtn.setAttribute("type", "button"); - selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; - if (searchPage) { - /*var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", both); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - var label = document.createElement("label"); - label.innerHTML = "Both"; - searchDiv.appendChild(radio); - searchDiv.appendChild(label);*/ - searchAgainBtn.setAttribute("id", "searchAgain"); - searchAgainBtn.setAttribute("value", "Search Again"); - searchAgainBtn.onclick = searchAgain; - } else { - var searchAgainTxt = document.createElement('input'); - searchAgainTxt.setAttribute("type", "text"); - searchAgainTxt.setAttribute("id", "searchTextBox"); - selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; - searchAgainTxt.style.marginLeft = "25px"; - searchDiv.appendChild(searchAgainTxt); - searchAgainBtn.setAttribute("id", "searchbtn"); - searchAgainBtn.setAttribute("value", "Search"); - searchAgainBtn.onclick = searchInSite; - } - searchAgainBtn.style.marginLeft = '2px'; - searchDiv.appendChild(searchAgainBtn); - - searchContent.appendChild(searchDiv); - - /*if (selectAll) { - const allUrls = document.getElementsByName("link"); - if (allUrls.length > -1) { - if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { - //radio.disabled = true; - searchAgainBtn.disabled = true; - document.getElementsByName('site')[0].style.disabled = true; - document.getElementsByName('site')[1].style.disabled = true; - document.getElementsByName('site')[2].style.disabled = true; - if (!searchPage) { - document.getElementById('searchTextBox').style.disabled = true; - } - } - - } - }*/ - - -} - -function randomIntFromInterval(min,max) -{ - return Math.floor(Math.random()*(max-min+1)+min); -} - -function getPreferences(url_hostname, name, dataObj) { - if (dataObj === undefined) { - dataObj = jsonData; - } - console.log(url_hostname + " -- " + name ); - let pref = []; - for (var item in dataObj) { - let domain; - domain = dataObj[item]['current']; - console.log("DOMAIN--" + domain); - if (domain.indexOf(',') === -1) { - console.log("in no comma"); - //pref = []; - //if (domain === url_hostname || domain === name) { - if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { - console.log("name matched....") - if (domain.indexOf('http://') !== -1) { - baseUrl = domain; + } else if (typeof sites[index] === 'object') { + var url; + if (typeof Object.values(sites[index])[0] === 'object') { + url = Object.values(sites[index])[0].url; } else { - baseUrl = 'http://' + domain; + url = Object.values(sites[index])[0]; } - var sites = dataObj[item]['sites']; - pref = sites; - console.log("sites--" + sites); - } - console.log("in get pref " + JSON.stringify(pref)); - } else { - var domArr = domain.split(','); - domArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[item]['sites']; + if (url.indexOf("http") === -1) { + url = getBaseURL(curr) + url; } - }); - console.log("in get pref " + pref); - } - } - console.log(pref); - return pref; - -} - -function createList(allurls) { - - var list = document.createElement("OL"); - list.setAttribute("type", "1"); - list.setAttribute("id", "orderedList"); - //list.setAttribute("") - if (!searchPage) { - list.style.width = "100%"; - } - list.style.align = "right"; - - var i=1; - var value=""; - var bgColor = "#EDEEED"; //"#F4F6F7"; - allurls.forEach(function(page) { - console.log("in createList " + JSON.stringify(page)); - //console.log(Object.keys(page)); - //console.log(Object.values(page)); - var input = document.createElement("INPUT"); - input.setAttribute("type", "checkbox"); - var label = document.createElement('label'); - - var linkObj, key, url; - if (typeof page === 'object') { - console.log("has key value"); - - if (typeof Object.values(page)[0] === 'object') { - url = Object.values(page)[0]; - linkObj = url.url; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - input.setAttribute("Alt", url.alt); - if (currentUrl !== linkObj && url.selected !== false && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); + alert("link--" + linkObj + "\n" + "site--" + url); + + if (linkObj === url) { + alert("me here A"); + //alert("The url " + linkObj + "is defined under " + current + " and " + curr + "..Please correct and try again"); + if (!firstOccurance) { + let mesg; + if (curr === current) { + mesg = "The url " + linkObj + " is defined twice under " + current + "..Please correct and try again."; + } else { + mesg = "The url " + linkObj + " is defined under " + current + " and " + curr + "..Please correct and try again."; + } + throw new Error(mesg); + return true; } - - } else { - console.log("llll" + label.getText); + firstOccurance = false; } + } else { - linkObj = Object.values(page)[0]; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; + var url = sites[index]; + if (url.indexOf("http") === -1) { + url = getBaseURL(curr) + url; } - input.setAttribute("value", linkObj); - console.log("in else"); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); + alert("link--" + linkObj + "\n" + "site--" + url); + + if (linkObj === url) { + alert("me here B"); + // alert("The url " + linkObj + "is defined under " + current + " and " + curr + "..Please correct and try again"); + if (!firstOccurance) { + let mesg; + if (curr === current) { + mesg = "The url " + linkObj + " is defined twice under " + current + "..Please correct and try again."; + } else { + mesg = "The url " + linkObj + " is defined under " + current + " and " + curr + "..Please correct and try again."; + } + throw new Error(mesg); + return true; } - } else { - console.log("llll" + label.getText); + firstOccurance = false; } } - - key = Object.keys(page)[0]; - } else { - var pageParts = page.split('/'); - console.log(pageParts.length); - console.log(pageParts[pageParts.length - 1] ); - linkObj = page; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; - input.setAttribute("value", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - - } - input.setAttribute("name", "link"); - if (currentUrl === linkObj) { - key = key + "(Current Tab)"; - console.log("kkk"+key); - document.getElementById('addbtn').hidden = "hidden"; - } - var id = key; //Object.keys(page)[0]; - input.setAttribute("id", id); - input.onclick = chkBoxClick; - label.htmlFor = id; - - console.log("linkObj--" + linkObj); - console.log("currentUrl--" + currentUrl); - - - //var linkObj = Object.values(page)[0]; - - - - var li = document.createElement("LI"); - li.style.backgroundColor = bgColor; - if (searchPage) - li.style.margin = "10px 0"; - - //li.setAttribute("background-color" , "#FFFEEC"); - var logo = document.createElement("IMG"); - console.log("link " + Object.values(page)[0]); - logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); - logo.setAttribute("width", "20"); - logo.setAttribute("height", "12"); - - var link = document.createElement('a'); - link.textContent = id; - link.href = linkObj; //Object.values(page)[0]; - link.title = linkObj; - link.onclick = linkClick; - label.appendChild(link); - - - list.appendChild(li); - li.appendChild(input); - li.appendChild(logo); - li.appendChild(label); - //list.appendChild(input); - //list.appendChild(logo); - //list.appendChild(label); - //var line = document.createElement('br'); - //list.appendChild(line); - if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" - bgColor = "#FFFFFF"; - } else { - bgColor = "#EDEEED"; //"#F4F6F7"; } - }); - var howmany = document.getElementById("howmany"); - if (selectAll) { - howmany.textContent = allurls.length + " selected."; - } else { - howmany.textContent = "0 selected."; + //} } - return list; - - + return false; } +// Restores tabsBackground state using the preferences +// stored in chrome.storage. +function restore_options() { + chrome.storage.sync.get( "jsonData", function(items) { + var content = document.getElementById('jsonData'); + var text = document.createTextNode(JSON.stringify(items.jsonData, null, "\t")); + //alert(library.json.prettyPrint(JSON.stringify(items.jsonData, null, "\t"))); + //var text = document.createTextNode(library.json.prettyPrint(JSON.stringify(items.jsonData, null, "\t"))); + //var text = document.createTextNode(library.json.prettyPrint(account)); + + content.appendChild(text); -function selectOption() { - var content = document.getElementById('content'); - var orderedList = document.getElementById('orderedList'); - if (orderedList) { - content.removeChild(orderedList); - } - - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - //var allTypes = jsonData[type.name]; - var url = new URL(currentUrl); - - //var allTypes = jsonData[url.hostname] || jsonData[type.name]; - var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; - if (Array.isArray(allTypes[selectedType])){ - content.appendChild(createList(allTypes[selectedType])); - } -} + }); + chrome.storage.sync.get({ + tabsBackground: true, + highlightTabs: true, + selectAll: true, + timeOut: 30, + tabToLoad : 2 + }, function(items) { + document.getElementById('tabsBackground').checked = items.tabsBackground; + document.getElementById('highlightTabs').checked = items.highlightTabs; + document.getElementById('selectAll').checked = items.selectAll; + document.getElementById('timeOut').value = items.timeOut; + document.getElementById('tabToLoad').value = items.tabToLoad; + //document.getElementById('searchSites').value = items.searchSites; -function createDropDown (data, hierarchy) { - var dropDown = document.createElement("SELECT"); - dropDown.setAttribute("id", "typeSelect"); - dropDown.setAttribute("name", hierarchy); - var keys = Object.keys(data); - keys.forEach(function (optn) { - var options = document.createElement("option"); - options.setAttribute("value", optn); - options.setAttribute("id", optn); - var txt = document.createTextNode(optn); - options.appendChild(txt); - if (optn.indexOf("default") > -1) { - options.selected = true; - } - dropDown.appendChild(options); }); - dropDown.onchange = selectOption; - return dropDown; - } +function replacer(key, value) { + alert(JSON.stringify(key)); + alert(JSON.stringify(value)); + return "" + value + ""; +} -function getDomain(url, subdomain) { - //var isSubdom = isSubdomain(url); - subdomain = subdomain || false; - - url = url.replace(/(https?:\/\/)?(www.)?/i, ''); - - if (!subdomain) { - url = url.split('.'); - - url = url.slice(url.length - 2).join('.'); - - } - - if (url.indexOf('/') !== -1) { - return url.split('/')[0]; +var account = { active: true, codes: [48348, 28923, 39080], city: "London" }; + +if (!library) + var library = {}; + +library.json = { + replacer: function(match, pIndent, pKey, pVal, pEnd) { + var key = ''; + var val = ''; + var str = ''; + var r = pIndent || ''; + if (pKey) + r = r + key + pKey.replace(/[": ]/g, '') + ': '; + if (pVal) + r = r + (pVal[0] == '"' ? str : val) + pVal + ''; + return r + (pEnd || ''); + }, + prettyPrint: function(obj) { + var jsonLine = /^( *)("[\w]+": )?("[^"]*"|[\w.+-]*)?([,[{])?$/mg; + return JSON.stringify(obj, null, 3) + .replace(/&/g, '&').replace(/\\"/g, '"') + .replace(//g, '>') + .replace(jsonLine, library.json.replacer); } +}; - return url; +function cancel_options () { + window.close(); } -function getCurrentTabUrl(callback) { - var queryInfo = { - active: true, - currentWindow: true - }; - - chrome.tabs.query(queryInfo, function(tabs) { - var tab = tabs[0]; - //var url = tab.url; - currentTab = tab; - callback(tab); +document.addEventListener('DOMContentLoaded', restore_options); +document.getElementById('save').addEventListener('click', save_options); +document.getElementById('cancel').addEventListener('click', cancel_options); + +/* +function save_options() { + var prefDomain = document.getElementById('prefDomain').value; + var prefUrl = document.getElementById('prefUrl').value; + //var highlightTabs = document.getElementById('highlightTabs').checked; + alert(prefDomain); + var urls={}; + + urls[prefDomain] = [prefUrl]; + + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + var origObj = items.preferedPages; + alert("before" + JSON.stringify(origObj)); + + if (origObj[prefDomain]) { + origObj[prefDomain].push(prefUrl); + } else { + origObj[prefDomain] = [prefUrl]; + } + + urls = origObj; + alert("final--" + JSON.stringify(urls)); + chrome.storage.sync.set({preferedPages: origObj}, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + //items.preferedPages.prefDomain.push(prefUrl); + //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); }); - - chrome.windows.getCurrent(function(currentWindow) { - invokedWindow = currentWindow.id; - }); - } -function utubeClick() { - var idx = currentTab.index + 1; - chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { +// Restores tabsBackground state using the preferences +// stored in chrome.storage. +function restore_options() { + chrome.storage.sync.get( "preferedPages", function(items) { + var content = document.getElementById('content'); + var text = document.createTextNode(JSON.stringify(items)); + var data = items.preferedPages; + var table = document.createElement("TABLE"); + table.setAttribute("id", "table"); + content.appendChild(table); + var tr = document.createElement("TR"); + tr.setAttribute("id", "heading"); + table.appendChild(tr); + + var col1 = document.createElement("TD"); + var cell1 = document.createTextNode("Domain"); + col1.appendChild(cell1); + tr.appendChild(col1); + + var col2 = document.createElement("TD"); + var cell2 = document.createTextNode("Preferred URL"); + col2.appendChild(cell2); + tr.appendChild(col2); + + var col3 = document.createElement("TD"); + var cell3 = document.createTextNode("Delete"); + col3.appendChild(cell3); + tr.appendChild(col3); + + table.style.border = "thin solid #000000"; + //tr.style.border = "thin solid #000000"; + col1.style.border = "thin solid #000000"; + col2.style.border = "thin solid #000000"; + col3.style.border = "thin solid #000000"; + var rowIndex = 0; + Object.keys(data).forEach(function(domain, index){ + var rowSpan = (data[domain]).length; + data[domain].forEach(function(url, url_index) { + var dataRow = document.createElement("TR"); + dataRow.id = rowIndex; + table.appendChild(dataRow); + if (url_index === 0) { + var col1 = document.createElement("TD"); + col1.rowSpan = rowSpan; + var cell1 = document.createTextNode(domain); + col1.appendChild(cell1); + col1.style.border = "thin solid #000000"; + dataRow.appendChild(col1); + } + var col2 = document.createElement("TD"); + var cell2 = document.createTextNode(url); + col2.appendChild(cell2); + col2.style.border = "thin solid #000000"; + dataRow.appendChild(col2); + var col3 = document.createElement("TD"); + var cell3 = document.createElement("INPUT"); + cell3.type = "checkbox"; + cell3.id = domain; + cell3.name = "delete_chkbx"; + col3.appendChild(cell3); + col3.align = "center"; + col3.style.border = "thin solid #000000"; + dataRow.appendChild(col3); + rowIndex++; + }); + + }); + //content.appendChild(text); }); } -function isParentGoogle(parentUrl) { - // var url = new URL(parentUrl); - // console.log("azhagiye...." + url.hostname); - //return google.indexOf(url.hostname) > -1; -} -function isFromSearch(currentURL) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - if (googleSearch) { - googleSearch.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - } - return urlFound; -} - -function getDomainName(url) { - var hostname = new URL(url).hostname; - var hostArr = hostname.split('.'); - console.log(hostArr.length + "---yyy"); - console.log(hostArr); - if (hostArr.length === 2) { - return hostArr[0]; - } else if (hostArr.length === 4) { - if (hostArr[0] === 'www') { - return hostArr[1]; - } else { - return hostArr[2]; - } - } else { - return hostArr[1]; - } -} - -function isUrlInList(currentURL, urlList) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - - urlList.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } +function delete_selected_options() { + alert("in delete"); + var allChBx = document.getElementsByName("delete_chkbx"); + + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + var origObj = items.preferedPages; + allChBx.forEach (function (chkbx) { + //alert(chkbx); + if (chkbx.checked) { + //alert("chked"); + var rowObj = chkbx.parentElement.parentElement; + var rowId = chkbx.parentElement.parentElement.id; + var domain; + var url; + //alert(rowObj.childNodes.length); + if (rowObj.childNodes.length === 2) { + domain = chkbx.id; + url = rowObj.childNodes[0].innerHTML; + } else { + domain = rowObj.childNodes[0].innerHTML; + url = rowObj.childNodes[1].innerHTML; + } + alert(rowId + "--" + domain + "--" + url); + alert("orig obj" + JSON.stringify(origObj)); + var urlIndex = origObj[domain].indexOf(url); + alert("index in obj-" + urlIndex); + origObj[domain].splice(urlIndex, 1); + alert("obj after delete" + JSON.stringify(origObj)); + } + }); + alert("obj after delete" + JSON.stringify(origObj)); + chrome.storage.sync.set({preferedPages: origObj}, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + //items.preferedPages.prefDomain.push(prefUrl); + //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); }); - return urlFound; -} \ No newline at end of file + +} +document.addEventListener('DOMContentLoaded', restore_options); +document.getElementById('save').addEventListener('click', save_options); +document.getElementById('delete').addEventListener('click', delete_selected_options); +*/ \ No newline at end of file diff --git a/pages.json b/pages.json index 9fa108d..54f85b8 100644 --- a/pages.json +++ b/pages.json @@ -1,53 +1,131 @@ { -"amazon": [ - {"Books": "http://www.amazon.in/books"}, - {"Kitchen": "http://www.amazon.in/kitchen"}, - {"Grocery": "http://www.amazon.in/Gourmet-Specialty-Foods"}, - {"Mobile-Phones": "http://www.amazon.in/mobile-phones"} -], -"cnn" : [ - {"Regions": "http://edition.cnn.com/regions"}, - {"Politics": "http://edition.cnn.com/politics"}, - {"International": "http://money.cnn.com/INTERNATIONAL/"}, - {"Entertainment": "http://edition.cnn.com/entertainment"}, - {"Technology": "http://money.cnn.com/technology/"} -], -"yahoo" : [ - {"NASDAQ" : {"url": "https://finance.yahoo.com/chart/^IXIC", "selected": false}}, - {"NFLX" : "https://finance.yahoo.com/chart/NFLX"}, - {"GOOGL" : "https://finance.yahoo.com/chart/GOOGL"}, - {"AAPL" : "https://finance.yahoo.com/chart/AAPL"}, - {"PCLN" : "https://finance.yahoo.com/chart/PCLN"}, - {"FB" : "https://finance.yahoo.com/chart/FB"}, - {"SIRI" : "https://finance.yahoo.com/chart/SIRI"}, - {"AAOI" : "https://finance.yahoo.com/chart/AAOI"}, - {"PLCE" : "https://finance.yahoo.com/chart/PLCE"}, - {"MYSZ" : "https://finance.yahoo.com/chart/MYSZ"}, - {"HTGM" : "https://finance.yahoo.com/chart/HTGM"}, - {"FIZZ" : "https://finance.yahoo.com/chart/FIZZ"}, - {"SNPS" : "https://finance.yahoo.com/chart/SNPS"}, - {"COOL" : "https://finance.yahoo.com/chart/COOL"}, - {"AUPH" : "https://finance.yahoo.com/chart/AUPH"}, - {"TECL" : "https://finance.yahoo.com/chart/TECL"}, - {"AKTX" : "https://finance.yahoo.com/chart/AKTX"}, - {"SLCA" : "https://finance.yahoo.com/chart/SLCA"}, - {"WIX" : "https://finance.yahoo.com/chart/WIX"} -], -"f-apimlb810lv":[ - {"subscription": "https://f-apimlb810lv/m/subscription/ui/"}, - {"remote": "https://f-apimlb810lv/m/remote/ui/"}, - {"telemetry": "https://f-apimlb810lv/m/telemetry/ui/"}, - {"location": "https://f-apimlb810lv/m/location/ui/"}, - {"notification": "https://f-apimlb810lv/m/notification/ui/"}, - {"monitor": "https://f-apimlb810lv/m/monitor/ui/"} -], - "f-loggui801lv:9000": [ - {"APILogs": "https://f-loggui801lv:9000/streams/564f49c3e4b0eaab4985f6e2/messages?rangetype=relative&q=*+AND+facility%3Aapim&relative=0&fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource#fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource"}, - { - "AOTALogs": { - "url": "https://f-loggui801lv:9000/streams/5899e8c6e4b057ec305d93d0/messages?rangetype=relative&q=*+AND+facility%3Aapim&relative=0&fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource#fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource", - "selected": false + "reddit": { + "current": "reddit", + "sites": [ + { + "stocks": "https://www.reddit.com/r/stocks/" + }, + { + "StockMarket": "https://www.reddit.com/r/StockMarket/" + }, + { + "Showerthoughts": "https://www.reddit.com/r/Showerthoughts/" } + ] + }, + "stackoverflow": { + "current": "stackoverflow", + "sites": [ + { + "java": "https://stackoverflow.com/questions/tagged/java" + }, + { + "javascript": "https://stackoverflow.com/questions/tagged/javascript" + }, + { + "python": "https://stackoverflow.com/questions/tagged/python" + } + ] + }, + "stocks": { + "current": "finance.yahoo.com", + "sites": { + "basic": [ + { + "NASDAQ": "https://finance.yahoo.com/quote/^IXIC?p=^IXIC" + }, + { + "NFLX": "https://finance.yahoo.com/quote/NFLX?p=NFLX" + }, + { + "GOOGL": "https://finance.yahoo.com/quote/GOOGL?p=GOOGL" + }, + { + "AAPL": "https://finance.yahoo.com/quote/AAPL?p=AAPL" + }, + { + "PCLN": "https://finance.yahoo.com/quote/PCLN?p=PCLN" + }, + { + "VERI": "https://finance.yahoo.com/quote/VERI?p=VERI" + }, + { + "DRYS": "https://finance.yahoo.com/quote/DRYS?p=DRYS" + }, + { + "OSTK": "https://finance.yahoo.com/quote/OSTK?p=OSTK" + }, + { + "OLED": "https://finance.yahoo.com/quote/OLED?p=OLED" + }, + { + "SHOP": "https://finance.yahoo.com/quote/SHOP?p=SHOP" + } + ], + "chart": [ + { + "NASDAQ": "https://finance.yahoo.com/chart/^IXIC?p=^IXIC" + }, + { + "NFLX": "https://finance.yahoo.com/chart/NFLX?p=NFLX" + }, + { + "GOOGL": "https://finance.yahoo.com/chart/GOOGL?p=GOOGL" + }, + { + "AAPL": "https://finance.yahoo.com/chart/AAPL?p=AAPL" + }, + { + "PCLN": "https://finance.yahoo.com/chart/PCLN?p=PCLN" + }, + { + "VERI": "https://finance.yahoo.com/chart/VERI?p=VERI" + }, + { + "DRYS": "https://finance.yahoo.com/chart/DRYS?p=DRYS" + }, + { + "OSTK": "https://finance.yahoo.com/chart/OSTK?p=OSTK" + }, + { + "OLED": "https://finance.yahoo.com/chart/OLED?p=OLED" + }, + { + "SHOP": "https://finance.yahoo.com/chart/SHOP?p=SHOP" + } + ] } + }, + "thestreet": { + "current": "thestreet", + "sites": [ + { + "Daniel Dicker": "https://realmoney.thestreet.com/authors/daniel-dicker" + }, + { + "Helene Meisler": "https://realmoney.thestreet.com/authors/helene-meisler" + }, + { + "Jonathan Heller": "https://realmoney.thestreet.com/authors/jonathan-heller" + }, + { + "Guy Ortmann": "https://realmoney.thestreet.com/authors/guy-ortmann" + }, + { + "Carolyn Boroden": "https://realmoney.thestreet.com/authors/carolyn-boroden" + }, + { + "Roger Arnold": "https://realmoney.thestreet.com/authors/roger-arnold" + }, + { + "Chris Laudani": "https://realmoney.thestreet.com/authors/chris-laudani" + }, + { + "Bruce Kamich": "https://realmoney.thestreet.com/authors/bruce-kamich" + }, + { + "James Rev Shark Deporre": "https://realmoney.thestreet.com/authors/james-rev-shark-deporre" + } ] -} + } +} \ No newline at end of file diff --git a/popup.html b/popup.html index 381834e..0af7d00 100644 --- a/popup.html +++ b/popup.html @@ -49,6 +49,7 @@
+

diff --git a/popup.js b/popup.js index 04509b5..2c0b7ea 100644 --- a/popup.js +++ b/popup.js @@ -13,8 +13,8 @@ var searchPage; var queryString; var searchSites; var searchEngine; -let baseUrl; -let anonymus; +var baseUrl; +var anonymus; var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus']; var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com']; @@ -58,46 +58,55 @@ function closeWindow (e) { function clickHandler(e) { //loading = true; - console.log("in on clik opn"); const allUrls = document.getElementsByName("link"); - console.log(allUrls); - const urlsToOpen = []; const tabToHilite = [currentTab.index]; const openAt = currentTab.index + 1; - let anonymus; - if (allUrls.length === 0) { - console.log("link undefined " + allUrls); - anonymus = document.getElementById("anonymus").value; - const urls = anonymus.split('\n'); - urls.forEach(function (url) { - urlsToOpen.push(url); - }); - } else { - allUrls.forEach (function (url) { - console.log(url); - if (url.checked) { - urlsToOpen.push(url.value); - console.log("came till here"); - /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); + var anonymus; + try { + if (allUrls.length === 0) { + console.log("link undefined " + allUrls); + anonymus = document.getElementById("anonymus").value; + const urls = anonymus.split('\n'); + urls.forEach(function (url) { + if (url.startsWith('http') || url.startsWith('https')) { + urlsToOpen.push(url); + } else { + throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); + //return ; } - } else { - console.log("came till here in else"); - } - }); + }); + } else { + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + console.log("came till here"); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("came till here in else"); + } + }); + } + } catch (err) { + document.getElementById("error").innerHTML = err.message; + return; } + console.log(urlsToOpen); /*if (highlightTabs) { chrome.tabs.highlight({tabs: tabToHilite}, function(){}); @@ -705,7 +714,10 @@ function saveSelection() { function editTextArea () { let txtAreaContent = this.value; console.log("in txt are" + txtAreaContent); - if (txtAreaContent !== '') { + if (txtAreaContent === '') { + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById("error").innerHTML = ""; + } else { document.getElementById('openbtn').hidden = ""; } } @@ -943,9 +955,13 @@ function noConfigFound(content) { function createRadio(content) { //var engDom = getDomain(searchEngine); //var engine = engDom.split('.')[0]; - var engineUrl = new URL(searchEngine); - console.log("url hostname eng-" + engineUrl.hostname); - var engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + //var engineUrl = new URL(searchEngine); + //console.log("url hostname eng-" + engineUrl.hostname); + var engine; + if (searchPage) { + engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + } + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/', 'https://www.youtube.com/']; //searchSites.split(','); var searchContent = document.getElementById('searchContent'); From 323885731224b6f652fe0d71511307514c74124c Mon Sep 17 00:00:00 2001 From: Gautam Date: Sun, 26 Nov 2017 19:41:56 -0600 Subject: [PATCH 25/33] Modified popup.js, background.js etc for fixes. --- popup.html | 2 +- popup.js | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/popup.html b/popup.html index 0af7d00..2f3ec76 100644 --- a/popup.html +++ b/popup.html @@ -39,7 +39,7 @@
-
+
diff --git a/popup.js b/popup.js index 2c0b7ea..7b18918 100644 --- a/popup.js +++ b/popup.js @@ -674,10 +674,10 @@ function saveSelection() { label = label.split('(')[0]; } for (var i=0; i < allTypes.length; i++) { - console.log("vaan" + allTypes[i]); + //console.log("vaan" + JSON.stringify(allTypes[i])); if (typeof allTypes[i] === 'object') { if (Object.keys(allTypes[i])[0] === label) { - if (typeof Object.values(prefForDom[i])[0] === 'object') { + if (typeof Object.values(allTypes[i])[0] === 'object') { prefForDom[selectedType][i][label]['selected'] = url.checked; } else { prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; @@ -930,7 +930,9 @@ document.addEventListener('DOMContentLoaded', function () { function noConfigFound(content) { console.log("domain not set..."); const divTxt = document.createElement("div"); - var text = document.createTextNode("Domain not set in preference." + "\n" + "You may enter the URL's to open one below the other in the space given below and open them."); + var pre = document.createElement("PRE"); + var text = document.createTextNode("Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); + pre.appendChild(text); divTxt.style.marginLeft = "25px"; document.getElementById('openbtn').hidden = "hidden"; //document.getElementById('cancelbtn').hidden = "hidden"; @@ -947,7 +949,7 @@ function noConfigFound(content) { document.getElementById('anonymus').onkeyup = editTextArea; - divTxt.appendChild(text); + divTxt.appendChild(pre); content.appendChild(divTxt); } From 00b0604b2176f956a3a3cea734c13c27f4cd79f5 Mon Sep 17 00:00:00 2001 From: Gautam Date: Thu, 30 Nov 2017 22:59:56 -0600 Subject: [PATCH 26/33] Modified popup.js, background.js etc for fixes. --- background.js | 64 +++++--- content_script.js | 36 ++++- manifest.json | 8 +- options.html | 7 +- options.js | 36 +++-- popup.js | 399 +++++++++++++++++++++++++++++----------------- 6 files changed, 362 insertions(+), 188 deletions(-) diff --git a/background.js b/background.js index 1102663..8669c74 100644 --- a/background.js +++ b/background.js @@ -9,7 +9,7 @@ var lastTab; var urls = []; var tabToHilite; var openAt; -var firstPage; +var firstPage = ""; var invokedWind; var startTime; var pagesToOpen = []; @@ -32,7 +32,11 @@ function rotateIcon(rotate) { keep_switching_icon = rotate === undefined ? keep_switching_icon : rotate; const image = keep_switching_icon ? "icons/" + loading_images[image_index] : "icons/ic_title_black_24dp_1x.png"; + //console.log("currWindow--" + currWindow + "---" + invokedWind); + //if (currWindow === invokedWind) { chrome.browserAction.setIcon({path: image}); + //} + image_index = (image_index + 1) % loading_images.length; if ( keep_switching_icon ) @@ -72,25 +76,40 @@ chrome.storage.onChanged.addListener(function(changes, area) { currentTask = true; openAt ++; startTime = new Date().getTime(); - chrome.tabs.create({url: urls[0], active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - //console.log(JSON.stringify(tab)); - firstPage = tab.id; - lastTab = tab.id; - console.log("reset" + openAt + urls[0]); - // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); - //keep_switching_icon = true; - //console.log(keep_switching_icon); - rotateIcon(true); - chrome.tabs.onRemoved.addListener(function (tabId , info) { - if (tabId === lastTab) { - chrome.storage.sync.set({loading: false}, function() {}); - rotateIcon(false); + //var url = urls[0]; + for (var x = 0;x < parseInt(tabToLoad); x++) { + console.log("link----------------" + urls[x]); + url = urls[x]; + chrome.tabs.create({url: url, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ + tabToHilite.push(tab.index); + //openAt ++; + + //pagesToOpen.shift(); + //console.log(JSON.stringify(tab)); + if (firstPage === "") { + console.log("x equal to zero"); + firstPage = tab.id; + } + lastTab = tab.id; + console.log("reset" + openAt + urls[x]); + // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); + //keep_switching_icon = true; + //console.log(keep_switching_icon); + rotateIcon(true); + + chrome.tabs.onRemoved.addListener(function (tabId , info) { + if (tabId === lastTab) { + chrome.storage.sync.set({loading: false}, function() {}); + rotateIcon(false); + //chrome.browserAction.setIcon({path: "icons/ic_title_black_24dp_1x.png", tabId : tabId}); + } + }); + }); + openAt ++; + } - }); } else { openAt ++; chrome.tabs.create({url: urls, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ @@ -159,20 +178,27 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { if (firstPage !== "") { chrome.tabs.update(firstPage, {active: true}); firstPage = ""; + console.log("before-------------" + pagesToOpen); + for (var i = 0 ; i < parseInt(tabToLoad) - 1; i ++) { + pagesToOpen.shift(); + } + console.log("after-------------" + pagesToOpen); } console.log("k is-" + k); if (k === parseInt(tabToLoad)) { console.log("k is 2" + new Date().getTime()); k = 0; } + for ( ;k < parseInt(tabToLoad); k++) { - console.log("k inside for--" + k + "---" + new Date().getTime()); + console.log("k inside for--" + k + "---" + new Date().getTime() + "--------" + pagesToOpen[0]); pagesToOpen.shift(); chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { lastTab = tab.id; tabToHilite.push(tab.index); - openAt ++; + //openAt ++; }); + openAt ++; if (pagesToOpen.length == 1) { return; } diff --git a/content_script.js b/content_script.js index 1f9b822..1453728 100644 --- a/content_script.js +++ b/content_script.js @@ -78,6 +78,29 @@ $("div#contents").find("h3 > a").each(function (index) { //div#title-wrapper }); + +//cnn +var urlBase = location.origin; +console.log(urlBase); +$("div.cd__content").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + +}); + jsonObj['sites'] = sites; if (location.origin.indexOf('yahoo') > -1) { queryString = document.getElementsByName("p")[0].value; @@ -97,6 +120,8 @@ console.log(location.origin);*/ //var urlquery = ''; //urlquery = location.origin + location.pathname + '?q=' + queryString; console.log("Final object...\n" + JSON.stringify(jsonObj)); +console.log("queryStr--" + queryString); +//chrome.storage.sync.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); chrome.storage.sync.set({'googleSearch': sites, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { console.log('Settings saved'); }); @@ -109,15 +134,18 @@ $("div.srg").find("h3 > a").click(function () { }); $('a').click(function(){ + //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); }); -var urlArr = []; -$('a').each(function(){ - urlArr.push($(this).attr('href')); +var urlArr = [];//[id^="yui_"] +$('a').each(function(index){ + //urlArr.push($(this).attr('href')); //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); + //console.log('u r going to ' + $(this).attr('href') + '..jst li dt..' ); + //console.log( $(this)); }); -console.log("showing..\n" + urlArr); +//console.log("showing..\n" + urlArr); //chrome.runtime.sendMessage({todo: "show_text"}); diff --git a/manifest.json b/manifest.json index eb31b7c..16d2f64 100644 --- a/manifest.json +++ b/manifest.json @@ -33,7 +33,13 @@ } }, "content_scripts": [{ - "matches": ["https://www.google.com/*"], + "matches": ["https://www.google.co.in/*", + "https://www.google.com/*", + "https://search.yahoo.com/*", + "https://www.bing.com/*", + "https://www.youtube.com/*", + "https://in.yahoo.com/*", + "http://edition.cnn.com/"], "js": ["jquery-1.8.0.min.js", "content_script.js"] }], "browser_action": { diff --git a/options.html b/options.html index 9d1cf1c..0a43856 100644 --- a/options.html +++ b/options.html @@ -44,7 +44,7 @@ Highlight tabs with same base url.
- Select all pages. + Select all pages (Only for google/yahoo/bing/youtube search results).
Page loading time out @@ -52,6 +52,11 @@
Tabs to load at a time +
+ Load from: Configuration + + Page + diff --git a/options.js b/options.js index 2cfbb52..78c82e8 100644 --- a/options.js +++ b/options.js @@ -9,6 +9,7 @@ function save_options() { var selectAll = document.getElementById('selectAll').checked; var timeOut = document.getElementById('timeOut').value; var tabToLoad = document.getElementById('tabToLoad').value; + var loadFrom = document.getElementsByName('loadFrom')[0].checked ? document.getElementsByName('loadFrom')[0].value : document.getElementsByName('loadFrom')[1].value; //var searchSites = document.getElementById('searchSites').value; if (jsonData.trim() === '') { @@ -46,7 +47,8 @@ function save_options() { highlightTabs: highlightTabs, selectAll: selectAll, timeOut : timeOut, - tabToLoad : tabToLoad}, + tabToLoad : tabToLoad, + loadFrom : loadFrom}, function() { // Update status to let user know options were saved. var status = document.getElementById('status'); @@ -89,10 +91,10 @@ function validJson(jsonObj) { if (typeof siteItem === 'object') { if (typeof Object.values(siteItem)[0] === 'object') { linkObj = Object.values(siteItem)[0].url; - alert("Link-A--1-" + JSON.stringify(linkObj)); + //alert("Link-A--1-" + JSON.stringify(linkObj)); } else { linkObj = Object.values(siteItem)[0]; - alert("Link-A--2-" + JSON.stringify(linkObj)); + //alert("Link-A--2-" + JSON.stringify(linkObj)); } } if (linkObj.indexOf("http") === -1) { @@ -105,10 +107,10 @@ function validJson(jsonObj) { } else if (typeof sites[index] === 'object') { if (typeof Object.values(sites[index])[0] === 'object') { linkObj = Object.values(sites[index])[0].url; - alert("Link-B-" + linkObj); + //alert("Link-B-" + linkObj); } else { linkObj = Object.values(sites[index])[0]; - alert("Link-C-" + linkObj); + //alert("Link-C-" + linkObj); } if (linkObj.indexOf("http") === -1) { linkObj = getBaseURL(current) + linkObj; @@ -118,7 +120,7 @@ function validJson(jsonObj) { } } else { linkObj = sites[index]; - alert("Link-D-" + linkObj); + //alert("Link-D-" + linkObj); if (linkObj.indexOf("http") === -1) { linkObj = getBaseURL(current) + linkObj; } @@ -192,9 +194,9 @@ function doesUrlRepeat(linkObj, jsonObj, current) { if (url.indexOf("http") === -1) { url = getBaseURL(curr) + url; } - alert("link--" + linkObj + "\n" + "site--" + url); + //alert("link--" + linkObj + "\n" + "site--" + url); if (linkObj === url) { - alert("me here AA"); + //alert("me here AA"); //alert("The url " + linkObj + "is defined under " + current + " and " + curr + "..Please correct and try again"); if (!firstOccurance) { let mesg; @@ -220,10 +222,10 @@ function doesUrlRepeat(linkObj, jsonObj, current) { if (url.indexOf("http") === -1) { url = getBaseURL(curr) + url; } - alert("link--" + linkObj + "\n" + "site--" + url); + //alert("link--" + linkObj + "\n" + "site--" + url); if (linkObj === url) { - alert("me here A"); + //alert("me here A"); //alert("The url " + linkObj + "is defined under " + current + " and " + curr + "..Please correct and try again"); if (!firstOccurance) { let mesg; @@ -243,10 +245,10 @@ function doesUrlRepeat(linkObj, jsonObj, current) { if (url.indexOf("http") === -1) { url = getBaseURL(curr) + url; } - alert("link--" + linkObj + "\n" + "site--" + url); + //alert("link--" + linkObj + "\n" + "site--" + url); if (linkObj === url) { - alert("me here B"); + //alert("me here B"); // alert("The url " + linkObj + "is defined under " + current + " and " + curr + "..Please correct and try again"); if (!firstOccurance) { let mesg; @@ -284,13 +286,21 @@ function restore_options() { highlightTabs: true, selectAll: true, timeOut: 30, - tabToLoad : 2 + tabToLoad : 2, + loadFrom : "config" }, function(items) { document.getElementById('tabsBackground').checked = items.tabsBackground; document.getElementById('highlightTabs').checked = items.highlightTabs; document.getElementById('selectAll').checked = items.selectAll; document.getElementById('timeOut').value = items.timeOut; document.getElementById('tabToLoad').value = items.tabToLoad; + alert(items.loadFrom); + if (items.loadFrom === 'config'){ + document.getElementsByName('loadFrom')[0].checked = true; + } else { + document.getElementsByName('loadFrom')[1].checked = true; + } + //document.getElementById('searchSites').value = items.searchSites; diff --git a/popup.js b/popup.js index 7b18918..3c6daa5 100644 --- a/popup.js +++ b/popup.js @@ -15,9 +15,11 @@ var searchSites; var searchEngine; var baseUrl; var anonymus; -var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus']; -var google = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com']; - +var newtab; +var loadFrom; +var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus', 'loadFrom']; +var readPage = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com', 'edition.cnn.com']; +var searchSite= ['google', 'yahoo', 'bing', 'youtube']; chrome.storage.sync.get( options, function(items) { @@ -28,11 +30,13 @@ chrome.storage.sync.get( options, function(items) { loading = items.loading; console.log("in sync get" + loading); googleSearch = items.googleSearch; + console.log("in sync get search--" + googleSearch); parentUrl = items.parentUrl; queryString = items.queryString; //searchSites = items.searchSites; searchEngine = items.searchEngine; anonymus = items.anonymus; + loadFrom = items.loadFrom; }); function closeWindow (e) { @@ -62,12 +66,12 @@ function clickHandler(e) { const urlsToOpen = []; const tabToHilite = [currentTab.index]; const openAt = currentTab.index + 1; - var anonymus; + var anonymusValues; try { if (allUrls.length === 0) { console.log("link undefined " + allUrls); - anonymus = document.getElementById("anonymus").value; - const urls = anonymus.split('\n'); + anonymusValues = document.getElementById("anonymus").value; + const urls = anonymusValues.split('\n'); urls.forEach(function (url) { if (url.startsWith('http') || url.startsWith('https')) { urlsToOpen.push(url); @@ -113,7 +117,7 @@ function clickHandler(e) { }*/ chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); var opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymus}, function() { + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { if (chrome.runtime.error) { console.log("Runtime error."); } @@ -123,17 +127,17 @@ function clickHandler(e) { function selectall () { const allUrls = document.getElementsByName("link"); - var parentNode; + var parentNode = allUrls[0].parentNode.parentNode.childNodes; if (document.getElementById('selectall').checked) { allUrls.forEach (function (url) { if (currentUrl !== url.value) { url.checked = true; url.nextSibling.nextSibling.style.fontWeight = "bold"; document.getElementById("openbtn").disabled = false; - document.getElementById("sametab").hidden = true; + document.getElementById("sametab").disabled = true; document.getElementById("sametabChkbx").checked = false; } - parentNode = url.parentNode.parentNode.childNodes; + console.log("kkkkkk-" + url.value); var itemValue = url.value; if (searchPage) { @@ -145,6 +149,8 @@ function selectall () { } }); + + /* var howmany = document.getElementById("howmany"); var selNums = howManyChecked(parentNode); howmany.textContent = selNums + " selected."; @@ -160,14 +166,14 @@ function selectall () { document.getElementsByName('site')[0].disabled = true; document.getElementsByName('site')[1].disabled = true; document.getElementsByName('site')[2].disabled = true; - } + }*/ } else { allUrls.forEach (function (url) { url.checked = false; console.log(url.parentNode); url.nextSibling.nextSibling.style.fontWeight = "normal"; document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").hidden = true; + document.getElementById("sametab").disabled = true; document.getElementById("sametabChkbx").checked = false; var itemValue = url.value; if (searchPage) { @@ -179,7 +185,7 @@ function selectall () { } }); - var howmany = document.getElementById("howmany"); + /*var howmany = document.getElementById("howmany"); howmany.textContent = "0 selected."; if (document.getElementById('searchAgain')) { document.getElementById('searchAgain').disabled = false; @@ -191,11 +197,11 @@ function selectall () { } document.getElementsByName('site')[0].disabled = false; document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; + document.getElementsByName('site')[2].disabled = false; */ //document.getElementById('searchAgain').disabled = false; } - + changeSelection(parentNode); } function linkClick () { @@ -230,10 +236,10 @@ function chkBoxClick (ele) { }); if (none) { console.log("only one"); - document.getElementById("sametab").hidden = false; + document.getElementById("sametab").disabled = false; document.getElementById("sametabChkbx").checked = true; } else { - document.getElementById("sametab").hidden = true; + document.getElementById("sametab").disabled = true; document.getElementById("sametabChkbx").checked = false; } @@ -268,32 +274,39 @@ function chkBoxClick (ele) { } else { this.labels[0].style.fontWeight="normal"; document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").hidden = true; + document.getElementById("sametab").disabled = true; document.getElementById("sametabChkbx").checked = false; if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { document.getElementById("openbtn").disabled = false; } if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { console.log("more than one checked"); - document.getElementById("sametab").hidden = true; + document.getElementById("sametab").disabled = true; document.getElementById("sametabChkbx").checked = false; } else { - document.getElementById("sametab").hidden = false; + document.getElementById("sametab").disabled = false; document.getElementById("sametabChkbx").checked = true; } - var itemValue = this.value; + var selItems = this.value; if (searchPage) { chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { console.log(response.farewell); }); }); } } + changeSelection(this.parentNode.parentNode.childNodes); + //console.log("len--" + this.parentNode.parentNode.childNodes.length); +} + +function changeSelection (listNodes) { + var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(this.parentNode.parentNode.childNodes); + var selNums = howManyChecked(listNodes); + console.log(listNodes.length + "***" + selNums); howmany.textContent = selNums + " selected."; if (selNums === 0) { if (document.getElementById('searchAgain')) { @@ -322,13 +335,13 @@ function chkBoxClick (ele) { document.getElementsByName('site')[2].disabled = true; //document.getElementById('searchAgain').disabled = true; } - if (selNums < this.parentNode.parentNode.childNodes.length) { + console.log("selected--" + selNums + "--list len--" + listNodes.length); + if (selNums < listNodes.length) { document.getElementById('selectall').checked = false; } - if (selNums === this.parentNode.parentNode.childNodes.length) { + if (selNums === listNodes.length) { document.getElementById('selectall').checked = true; } - //console.log("len--" + this.parentNode.parentNode.childNodes.length); } function howManyChecked(liNodes) { @@ -382,7 +395,22 @@ function addUrl() { var name = hostNameArray[1];//domain.split('.')[0]; //var jsonObj = {};*/ var name = getDomainName(tab.url); - + let textBox = document.getElementById('anonymus'); + var newObjArr = []; + if (textBox) { + console.log(textBox.value); + if (textBox.value !== '') { + var values = textBox.value.split('\n'); + values.forEach(function (value){ + var obj = {}; + var key = getKeyFromURL(value.split('/')); + obj[key] = value; + newObjArr.push(obj); + }); + } + //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; + console.log(newObjArr); + } chrome.storage.sync.get( "jsonData", function(items) { console.log(JSON.stringify(items)); var origObj = items.jsonData; @@ -393,26 +421,37 @@ function addUrl() { }*/ //var prefForDom = origObj[fullDomain] || origObj[name]; var prefForDom = getPreferences(fullDomain, name, origObj); - console.log(prefForDom + " --- llllllll"); + console.log("==" + prefForDom + "--- llllllll"); var newEntryObj = {}; var path = url.pathname.split('/'); - if (path.length === 0) { - newEntryObj[name] = currentUrl; + var key = getKeyFromURL(path); + /*if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; } else { if (path[path.length-1].indexOf('=') === -1) { - newEntryObj[path[path.length-1]] = currentUrl; + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; } else { - newEntryObj[path[1]] = currentUrl; + //newEntryObj[path[1]] = currentUrl; + key = path[1]; } } - + if (key === '') { + key = 'Home'; + }*/ + newEntryObj[key] = currentUrl; + console.log(newEntryObj); + //if (newObjArr.length > 0) { + newObjArr.push(newEntryObj); + //} //path[path.length]; //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; console.log(path.length); console.log("dom-" + path + "--" + path[path.length-1]); - if (prefForDom) { + console.log('in if'); if (Array.isArray(prefForDom)) { prefForDom.push(newEntryObj); } else { @@ -428,11 +467,12 @@ function addUrl() { } else { + console.log('in else'); //origObj[name] = [currentUrl]; var newObj = {}; newObj["current"] = name; newObj["description"] = name; - newObj["sites"] = [newEntryObj]; + newObj["sites"] = newObjArr; //[newEntryObj]; origObj[name] = newObj; } //origObj[name] = [currentUrl]; @@ -453,6 +493,27 @@ function addUrl() { }); } +function getKeyFromURL (path) { + //var path = url.pathname.split('/'); + console.log(path); + var key; + if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + } + return key; +} function searchAgain () { var urlSite = ''; @@ -548,7 +609,7 @@ function sortListDir() { } else { /*If no switching has been done AND the direction is "asc", set the direction to "desc" and run the while loop again.*/ - if (switchcount == 0 && dir == "asc") { + if (switchcount === 0 && dir == "asc") { dir = "desc"; switching = true; @@ -709,16 +770,20 @@ function saveSelection() { }); }); }); + + /*const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode);*/ } function editTextArea () { let txtAreaContent = this.value; console.log("in txt are" + txtAreaContent); if (txtAreaContent === '') { - document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('openbtn').disabled = true; document.getElementById("error").innerHTML = ""; } else { - document.getElementById('openbtn').hidden = ""; + document.getElementById('openbtn').disabled = false; } } document.addEventListener('DOMContentLoaded', function () { @@ -735,7 +800,7 @@ document.addEventListener('DOMContentLoaded', function () { //document.getElementById('searchAgain').addEventListener('click', searchAgain); document.getElementById('sortListDir').addEventListener('click', sortListDir); //document.getElementById('searchbtn').addEventListener('click', searchInSite); - onclick="()" + onclick="()"; console.log("lod--" + loading); console.log("jsondata--" + jsonData); var content = document.getElementById('content'); @@ -744,8 +809,11 @@ document.addEventListener('DOMContentLoaded', function () { getCurrentTabUrl(function(tab) { currentUrl = tab.url; if (currentUrl === "chrome://newtab/") { - window.close(); - return; + //window.close(); + //return; + newtab = true; + } else { + newtab = false; } var url = new URL(tab.url); @@ -766,111 +834,128 @@ document.addEventListener('DOMContentLoaded', function () { } var prefForDom; console.log("test--" + isFromSearch(currentUrl)); - if (google.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { - console.log("inside google"); - if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { - //console.log("google seach list is empty"); - //window.close(); - //return; - var text = document.createTextNode("No previous search results found. Please try a fresh search."); - document.getElementById('openbtn').hidden = "hidden"; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); - - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('searchAgain').hidden = "hidden"; - //document.getElementById('addbtn').hidden = ""; - content.appendChild(text); - return; + console.log("loadFrom-" + loadFrom); + var fromPage = true; + if (loadFrom === 'config' && searchSite.indexOf(url.hostname) === -1) { + fromPage = false; + } + if (!newtab) { + if (fromPage) { + if (readPage.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { + console.log("inside google"); + if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { + //console.log("google seach list is empty"); + //window.close(); + //return; + var text = document.createTextNode("No previous search results found. Please try a fresh search."); + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); + + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('addbtn').hidden = ""; + content.appendChild(text); + return; + } + console.log("Check1 " + JSON.stringify(googleSearch)); + prefForDom = googleSearch; + console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').disabled = true; + document.getElementById('savebtn').disabled = true; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + searchEngine); + engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + } } - console.log("Check1 " + JSON.stringify(googleSearch)); - prefForDom = googleSearch; - console.log("check2-" + prefForDom + "-"); - document.getElementById('addbtn').hidden = "hidden"; - document.getElementById('savebtn').hidden = "hidden"; - //document.getElementById('searchbtn').hidden = "hidden"; - //document.getElementById('searchText').hidden = "hidden"; - content.style.width = "600px"; - document.getElementById('body').style.width = "603px"; - searchPage = true; - if (googleSearch === "") { - console.log("Search list is empty"); - } - var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - var div = document.createElement('div'); - div.setAttribute("align", "center"); - var engineLogo = document.createElement("IMG"); - console.log("get favicon--" + searchEngine); - engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); - //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); - engineLogo.style.cssFloat = 'middle'; - div.appendChild(engineLogo); - //var domain = getDomain(searchEngine); - //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - - var searchEngineTxt = document.createTextNode(" " + engineName + " results."); - div.appendChild(searchEngineTxt); - content.appendChild(div); - } - if (prefForDom === undefined) { - prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; - //content.style.width = "200px"; - //ocument.getElementById('searchAgain').hidden = "hidden"; - searchPage = false; - } + if (prefForDom === undefined) { + prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //content.style.width = "200px"; + //ocument.getElementById('searchAgain').hidden = "hidden"; + searchPage = false; + } - console.log(jsonData); - console.log(prefForDom); - if(prefForDom){ - //console.log(typeof allurls); - if (Array.isArray(prefForDom)) { - console.log("pref dom is an array") - if (prefForDom.length > 0) { - content.appendChild(createList(prefForDom)); + + console.log(jsonData); + console.log(prefForDom); + if(prefForDom){ + //console.log(typeof allurls); + if (Array.isArray(prefForDom)) { + console.log("pref dom is an array"); + if (prefForDom.length > 0) { + content.appendChild(createList(prefForDom)); + } else { + noConfigFound(content); + } } else { - noConfigFound(content); + content.appendChild(createDropDown(prefForDom, name)); + var label = document.createElement('label'); + var txt = document.createTextNode("Options "); + label.setAttribute("for", "typeSelect"); + label.appendChild(txt); + label.style.marginLeft = "25px"; + content.insertBefore(label,document.getElementById("typeSelect")); + var type = document.getElementById("typeSelect"); + //type.style.marginLeft = "25px"; + var selectedType = type.options[type.selectedIndex].value; + content.appendChild(createList(prefForDom[selectedType])); } + //document.getElementsByName("link").addEventListener('click', chkBoxClick); + if (selectAll && searchPage) { + document.getElementById('selectall').checked = true; + } + createRadio(content); + //document.getElementById('addbtn').hidden = "hidden"; + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); } else { - content.appendChild(createDropDown(prefForDom, name)); - var label = document.createElement('label'); - var txt = document.createTextNode("Options "); - label.setAttribute("for", "typeSelect"); - label.appendChild(txt); - label.style.marginLeft = "25px"; - content.insertBefore(label,document.getElementById("typeSelect")); - var type = document.getElementById("typeSelect"); - //type.style.marginLeft = "25px"; - var selectedType = type.options[type.selectedIndex].value; - content.appendChild(createList(prefForDom[selectedType])); - } - //document.getElementsByName("link").addEventListener('click', chkBoxClick); - if (selectAll) { - document.getElementById('selectall').checked = true; + console.log("domain not set..."); + noConfigFound(content); + /*var text = document.createTextNode("Domain not set in preference."); + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + document.getElementById('anonymus').hidden = ""; + content.appendChild(text);*/ + } - createRadio(content); - //document.getElementById('addbtn').hidden = "hidden"; - } else { - console.log("domain not set..."); - noConfigFound(content); - /*var text = document.createTextNode("Domain not set in preference."); - document.getElementById('openbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - document.getElementById('anonymus').hidden = ""; - content.appendChild(text);*/ - } + } else { + var mesg = "Bank Page."; + noConfigFound(content, mesg); + } @@ -927,24 +1012,32 @@ document.addEventListener('DOMContentLoaded', function () { document.getElementById('progress').hidden = true; }); -function noConfigFound(content) { +function noConfigFound(content, msg) { console.log("domain not set..."); + var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; + if (msg) { + textContent = msg + textContent; + document.getElementById('addbtn').disabled = true; + } else { + textContent = "Domain not set in preference." + textContent; + } const divTxt = document.createElement("div"); var pre = document.createElement("PRE"); - var text = document.createTextNode("Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); + var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); pre.appendChild(text); divTxt.style.marginLeft = "25px"; - document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('openbtn').disabled = true; //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('addbtn').hidden = ""; + document.getElementById('selectall').disabled = true; + //document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + + document.getElementById('savebtn').disabled = true; document.getElementById('anonymus').hidden = ""; if (anonymus) { document.getElementById('anonymus').value = anonymus; - document.getElementById('openbtn').hidden = ""; + document.getElementById('openbtn').disabled = false; } document.getElementById('anonymus').onkeyup = editTextArea; @@ -964,7 +1057,7 @@ function createRadio(content) { engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; } - var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/', 'https://www.youtube.com/']; //searchSites.split(','); + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' var searchContent = document.getElementById('searchContent'); @@ -1024,7 +1117,7 @@ function createRadio(content) { searchAgainBtn.setAttribute("type", "button"); selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; if (searchPage) { - /*var radio = document.createElement("INPUT"); + var radio = document.createElement("INPUT"); radio.setAttribute("type", "radio"); radio.setAttribute("value", both); radio.setAttribute("name", "site"); @@ -1032,7 +1125,7 @@ function createRadio(content) { var label = document.createElement("label"); label.innerHTML = "Both"; searchDiv.appendChild(radio); - searchDiv.appendChild(label);*/ + searchDiv.appendChild(label); searchAgainBtn.setAttribute("id", "searchAgain"); searchAgainBtn.setAttribute("value", "Search Again"); searchAgainBtn.onclick = searchAgain; @@ -1082,7 +1175,7 @@ function getPreferences(url_hostname, name, dataObj) { dataObj = jsonData; } console.log(url_hostname + " -- " + name ); - let pref = []; + let pref;// = []; for (var item in dataObj) { let domain; domain = dataObj[item]['current']; @@ -1126,12 +1219,14 @@ function createList(allurls) { //list.setAttribute("") if (!searchPage) { list.style.width = "100%"; + selectAll = true; } list.style.align = "right"; var i=1; var value=""; var bgColor = "#EDEEED"; //"#F4F6F7"; + allurls.forEach(function(page) { console.log("in createList " + JSON.stringify(page)); //console.log(Object.keys(page)); @@ -1152,7 +1247,7 @@ function createList(allurls) { } input.setAttribute("value", linkObj); input.setAttribute("Alt", url.alt); - if (currentUrl !== linkObj && url.selected !== false && selectAll) { + if (currentUrl !== linkObj && url.selected !== false) { // && selectAll input.setAttribute("checked", true); label.style.fontWeight = "bold"; if (searchPage) { @@ -1222,7 +1317,7 @@ function createList(allurls) { if (currentUrl === linkObj) { key = key + "(Current Tab)"; console.log("kkk"+key); - document.getElementById('addbtn').hidden = "hidden"; + document.getElementById('addbtn').disabled = true; } var id = key; //Object.keys(page)[0]; input.setAttribute("id", id); @@ -1272,12 +1367,12 @@ function createList(allurls) { bgColor = "#EDEEED"; //"#F4F6F7"; } }); - var howmany = document.getElementById("howmany"); + /*var howmany = document.getElementById("howmany"); if (selectAll) { howmany.textContent = allurls.length + " selected."; } else { howmany.textContent = "0 selected."; - } + }*/ return list; @@ -1301,6 +1396,10 @@ function selectOption() { if (Array.isArray(allTypes[selectedType])){ content.appendChild(createList(allTypes[selectedType])); } + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); + } From cca16e21e79985d46aa4d0c93bf3bb979814e33c Mon Sep 17 00:00:00 2001 From: Gautam Date: Sun, 10 Dec 2017 23:14:14 -0600 Subject: [PATCH 27/33] Modified popup.js, background.js etc for fixes. --- background.js | 34 +- content_script.js | 5 +- manifest.json | 2 +- options.js | 2 +- popup.js | 2791 +++++++++++++++++++++++---------------------- 5 files changed, 1426 insertions(+), 1408 deletions(-) diff --git a/background.js b/background.js index 8669c74..eebffec 100644 --- a/background.js +++ b/background.js @@ -71,13 +71,15 @@ chrome.storage.onChanged.addListener(function(changes, area) { invokedWind = changes.invokedWindow.newValue; console.log("invoked from " + invokedWind + "\n urls-" + urls.length); console.log("list of urls to open--" + urls); + console.log(tabToLoad); if (!changes.opnSmeTb.newValue) { if (Array.isArray(urls)) { currentTask = true; openAt ++; startTime = new Date().getTime(); //var url = urls[0]; - for (var x = 0;x < parseInt(tabToLoad); x++) { + var loopLimit = urls.length < parseInt(tabToLoad) ? urls.length : parseInt(tabToLoad); + for (var x = 0;x < loopLimit; x++) { console.log("link----------------" + urls[x]); url = urls[x]; chrome.tabs.create({url: url, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ @@ -92,7 +94,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { } lastTab = tab.id; - console.log("reset" + openAt + urls[x]); + console.log("reset" + openAt + url); // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); //keep_switching_icon = true; //console.log(keep_switching_icon); @@ -108,6 +110,7 @@ chrome.storage.onChanged.addListener(function(changes, area) { }); openAt ++; + } } else { @@ -178,11 +181,11 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { if (firstPage !== "") { chrome.tabs.update(firstPage, {active: true}); firstPage = ""; - console.log("before-------------" + pagesToOpen); + console.log("before-------------" + pagesToOpen.length); for (var i = 0 ; i < parseInt(tabToLoad) - 1; i ++) { pagesToOpen.shift(); } - console.log("after-------------" + pagesToOpen); + console.log("after-------------" + pagesToOpen.length); } console.log("k is-" + k); if (k === parseInt(tabToLoad)) { @@ -193,19 +196,24 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { for ( ;k < parseInt(tabToLoad); k++) { console.log("k inside for--" + k + "---" + new Date().getTime() + "--------" + pagesToOpen[0]); pagesToOpen.shift(); - chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { - lastTab = tab.id; - tabToHilite.push(tab.index); - //openAt ++; - }); + console.log(pagesToOpen.length); + if (pagesToOpen.length > 0 ){ + chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + //openAt ++; + }); + } + openAt ++; - if (pagesToOpen.length == 1) { + if (pagesToOpen.length === 1) { return; } } } - if (info.status === "complete" && tabId === lastTab && pagesToOpen.length == 1) { + if (info.status === "complete" && tabId === lastTab && pagesToOpen.length <= 1) { + console.log("current task done..."); chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); //chrome.runtime.sendMessage({msg: "completed"}, function(response) {}); chrome.storage.sync.set({loading: false}, function() {}); @@ -220,7 +228,9 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { /* chrome.browserAction.onClicked.addListener(function(tab) { console.log("call adi"); - //chrome.tabs.executeScript(null, {file: "content_script.js"}); + chrome.tabs.executeScript({file: "./popup.js"}); + + });*/ /* diff --git a/content_script.js b/content_script.js index 1453728..5730347 100644 --- a/content_script.js +++ b/content_script.js @@ -121,8 +121,9 @@ console.log(location.origin);*/ //urlquery = location.origin + location.pathname + '?q=' + queryString; console.log("Final object...\n" + JSON.stringify(jsonObj)); console.log("queryStr--" + queryString); -//chrome.storage.sync.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); -chrome.storage.sync.set({'googleSearch': sites, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { +chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); +//chrome.storage.sync.StorageArea.remove(['googleSearch', 'queryString', 'searchEngine']); +chrome.storage.local.set({'googleSearch': sites, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { console.log('Settings saved'); }); diff --git a/manifest.json b/manifest.json index 16d2f64..1ec98df 100644 --- a/manifest.json +++ b/manifest.json @@ -39,7 +39,7 @@ "https://www.bing.com/*", "https://www.youtube.com/*", "https://in.yahoo.com/*", - "http://edition.cnn.com/"], + "http://www.cnn.com/"], "js": ["jquery-1.8.0.min.js", "content_script.js"] }], "browser_action": { diff --git a/options.js b/options.js index 78c82e8..b059eb1 100644 --- a/options.js +++ b/options.js @@ -11,7 +11,7 @@ function save_options() { var tabToLoad = document.getElementById('tabToLoad').value; var loadFrom = document.getElementsByName('loadFrom')[0].checked ? document.getElementsByName('loadFrom')[0].value : document.getElementsByName('loadFrom')[1].value; //var searchSites = document.getElementById('searchSites').value; - + alert(tabToLoad); if (jsonData.trim() === '') { return; } diff --git a/popup.js b/popup.js index 3c6daa5..798bc7c 100644 --- a/popup.js +++ b/popup.js @@ -23,1146 +23,1153 @@ var searchSite= ['google', 'yahoo', 'bing', 'youtube']; chrome.storage.sync.get( options, function(items) { - jsonData = items.jsonData; - highlightTabs = items.highlightTabs; - tabsBackground = items.tabsBackground; - selectAll = items.selectAll; - loading = items.loading; - console.log("in sync get" + loading); - googleSearch = items.googleSearch; - console.log("in sync get search--" + googleSearch); - parentUrl = items.parentUrl; - queryString = items.queryString; - //searchSites = items.searchSites; - searchEngine = items.searchEngine; - anonymus = items.anonymus; - loadFrom = items.loadFrom; + jsonData = items.jsonData; + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; + selectAll = items.selectAll; + loading = items.loading; + console.log("in sync get" + loading); + //googleSearch = items.googleSearch; + //console.log("in sync get search--" + googleSearch); + parentUrl = items.parentUrl; + //queryString = items.queryString; + //searchSites = items.searchSites; + //searchEngine = items.searchEngine; + anonymus = items.anonymus; + loadFrom = items.loadFrom; }); -function closeWindow (e) { - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - +chrome.storage.local.get( options, function(items) { + googleSearch = items.googleSearch; + console.log("in sync get search--" + googleSearch); + queryString = items.queryString; + searchEngine = items.searchEngine; +}); - window.close(); +function closeWindow (e) { + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); } function clickHandler(e) { - //loading = true; - const allUrls = document.getElementsByName("link"); - const urlsToOpen = []; - const tabToHilite = [currentTab.index]; - const openAt = currentTab.index + 1; - var anonymusValues; - try { - if (allUrls.length === 0) { - console.log("link undefined " + allUrls); - anonymusValues = document.getElementById("anonymus").value; - const urls = anonymusValues.split('\n'); - urls.forEach(function (url) { - if (url.startsWith('http') || url.startsWith('https')) { - urlsToOpen.push(url); - } else { - throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); - //return ; - } - - }); - } else { - allUrls.forEach (function (url) { - console.log(url); - if (url.checked) { - urlsToOpen.push(url.value); - console.log("came till here"); - /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("came till here in else"); - } - }); - } - } catch (err) { - document.getElementById("error").innerHTML = err.message; - return; - } - - - console.log(urlsToOpen); - /*if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite}, function(){}); - }*/ - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - var opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); + //loading = true; + const allUrls = document.getElementsByName("link"); + const urlsToOpen = []; + const tabToHilite = [currentTab.index]; + const openAt = currentTab.index + 1; + var anonymusValues; + try { + if (allUrls.length === 0) { + console.log("link undefined " + allUrls); + anonymusValues = document.getElementById("anonymus").value; + const urls = anonymusValues.split('\n'); + urls.forEach(function (url) { + if (url.startsWith('http') || url.startsWith('https')) { + urlsToOpen.push(url); + } else { + throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); + //return ; + } + + }); + } else { + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + console.log("came till here"); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("came till here in else"); + } + }); + } + } catch (err) { + document.getElementById("error").innerHTML = err.message; + return; + } + + + console.log(urlsToOpen); + /*if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); + }*/ + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + var opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); } function selectall () { - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - if (document.getElementById('selectall').checked) { - allUrls.forEach (function (url) { - if (currentUrl !== url.value) { - url.checked = true; - url.nextSibling.nextSibling.style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("kkkkkk-" + url.value); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - /* - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(parentNode); - howmany.textContent = selNums + " selected."; - if (selNums > 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - }*/ - } else { - allUrls.forEach (function (url) { - url.checked = false; - console.log(url.parentNode); - url.nextSibling.nextSibling.style.fontWeight = "normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - /*var howmany = document.getElementById("howmany"); - howmany.textContent = "0 selected."; - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; */ - //document.getElementById('searchAgain').disabled = false; - } - - changeSelection(parentNode); + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + if (document.getElementById('selectall').checked) { + allUrls.forEach (function (url) { + if (currentUrl !== url.value) { + url.checked = true; + url.nextSibling.nextSibling.style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("kkkkkk-" + url.value); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + /* + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(parentNode); + howmany.textContent = selNums + " selected."; + if (selNums > 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + }*/ + } else { + allUrls.forEach (function (url) { + url.checked = false; + console.log(url.parentNode); + url.nextSibling.nextSibling.style.fontWeight = "normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + /*var howmany = document.getElementById("howmany"); + howmany.textContent = "0 selected."; + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; */ + //document.getElementById('searchAgain').disabled = false; + } + + changeSelection(parentNode); } function linkClick () { - console.log(this.href); - const opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); + console.log(this.href); + const opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); } function chkBoxClick (ele) { - console.log(this.labels[0].innerHTML); - var currNode = this; - var none = true; - var selectedArray = []; - if (this.checked) { - this.labels[0].style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - //var liList = this.parentNode.parentNode.childNodes; - //console.log(liList.length); - - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - none = false; - return; - } - - }); - if (none) { - console.log("only one"); - document.getElementById("sametab").disabled = false; - document.getElementById("sametabChkbx").checked = true; - } else { - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("li value-" + this.value); - /*selectedArray.push(this.value); - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - selectedArray.push(li.childNodes[0].value); - } - });*/ - var itemValue = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } else { - this.labels[0].style.fontWeight="normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { - document.getElementById("openbtn").disabled = false; - } - if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { - console.log("more than one checked"); - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } else { - document.getElementById("sametab").disabled = false; - document.getElementById("sametabChkbx").checked = true; - } - - var selItems = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { - console.log(response.farewell); - }); - }); - } - - } - changeSelection(this.parentNode.parentNode.childNodes); - //console.log("len--" + this.parentNode.parentNode.childNodes.length); + console.log(this.labels[0].innerHTML); + var currNode = this; + var none = true; + var selectedArray = []; + if (this.checked) { + this.labels[0].style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + //var liList = this.parentNode.parentNode.childNodes; + //console.log(liList.length); + + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + none = false; + return; + } + + }); + if (none) { + console.log("only one"); + document.getElementById("sametab").disabled = false; + document.getElementById("sametabChkbx").checked = true; + } else { + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("li value-" + this.value); + /*selectedArray.push(this.value); + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + selectedArray.push(li.childNodes[0].value); + } + });*/ + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } else { + this.labels[0].style.fontWeight="normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { + document.getElementById("openbtn").disabled = false; + } + if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { + console.log("more than one checked"); + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } else { + document.getElementById("sametab").disabled = false; + document.getElementById("sametabChkbx").checked = true; + } + + var selItems = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { + console.log(response.farewell); + }); + }); + } + + } + changeSelection(this.parentNode.parentNode.childNodes); + //console.log("len--" + this.parentNode.parentNode.childNodes.length); } function changeSelection (listNodes) { - - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(listNodes); - console.log(listNodes.length + "***" + selNums); - howmany.textContent = selNums + " selected."; - if (selNums === 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; - //document.getElementById('searchAgain').disabled = false; - } else { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } - console.log("selected--" + selNums + "--list len--" + listNodes.length); - if (selNums < listNodes.length) { - document.getElementById('selectall').checked = false; - } - if (selNums === listNodes.length) { - document.getElementById('selectall').checked = true; - } + + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(listNodes); + console.log(listNodes.length + "***" + selNums); + howmany.textContent = selNums + " selected."; + if (selNums === 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; + } else { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } + console.log("selected--" + selNums + "--list len--" + listNodes.length); + if (selNums < listNodes.length) { + document.getElementById('selectall').checked = false; + } + if (selNums === listNodes.length) { + document.getElementById('selectall').checked = true; + } } function howManyChecked(liNodes) { - var chked = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked ++; - } - }); - return chked; + var chked = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked ++; + } + }); + return chked; } function atleastOneChecked(liNodes) { - var chked = false; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked = true; - } - }); - - return chked; - - /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); - return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ + var chked = false; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked = true; + } + }); + + return chked; + + /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ } function moreThanOneChecked(liNodes) { - var n = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - n ++; - } - }); - if (n === 0 || n > 1 ) { - return true; - } else { - return false; - } + var n = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + n ++; + } + }); + if (n === 0 || n > 1 ) { + return true; + } else { + return false; + } } function addUrl() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - /*var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - var domain = getDomain(currentUrl); - var name = hostNameArray[1];//domain.split('.')[0]; - //var jsonObj = {};*/ - var name = getDomainName(tab.url); - let textBox = document.getElementById('anonymus'); - var newObjArr = []; - if (textBox) { - console.log(textBox.value); - if (textBox.value !== '') { - var values = textBox.value.split('\n'); - values.forEach(function (value){ - var obj = {}; - var key = getKeyFromURL(value.split('/')); - obj[key] = value; - newObjArr.push(obj); - }); - } - //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; - console.log(newObjArr); - } - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - //alert("before" + JSON.stringify(origObj)); - /*var prefForDom = origObj[fullDomain]; - if (prefForDom === undefined) { - prefForDom = origObj[name]; - }*/ - //var prefForDom = origObj[fullDomain] || origObj[name]; - var prefForDom = getPreferences(fullDomain, name, origObj); - console.log("==" + prefForDom + "--- llllllll"); - var newEntryObj = {}; - var path = url.pathname.split('/'); - var key = getKeyFromURL(path); - /*if (path.length === 0) { - //newEntryObj[name] = currentUrl; - key = name; - } else { - if (path[path.length-1].indexOf('=') === -1) { - //newEntryObj[path[path.length-1]] = currentUrl; - key = path[path.length-1]; - } else { - //newEntryObj[path[1]] = currentUrl; - key = path[1]; - } - } - if (key === '') { - key = 'Home'; - }*/ - newEntryObj[key] = currentUrl; - console.log(newEntryObj); - //if (newObjArr.length > 0) { - newObjArr.push(newEntryObj); - //} - //path[path.length]; - //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; - - console.log(path.length); - console.log("dom-" + path + "--" + path[path.length-1]); - if (prefForDom) { - console.log('in if'); - if (Array.isArray(prefForDom)) { - prefForDom.push(newEntryObj); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - options[selectedType].push(newEntryObj); - } - } - - - } else { - console.log('in else'); - //origObj[name] = [currentUrl]; - var newObj = {}; - newObj["current"] = name; - newObj["description"] = name; - newObj["sites"] = newObjArr; //[newEntryObj]; - origObj[name] = newObj; - } - //origObj[name] = [currentUrl]; - console.log(JSON.stringify(origObj)); - //jsonObj = items; - //console.log(JSON.stringify(jsonObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + /*var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + var domain = getDomain(currentUrl); + var name = hostNameArray[1];//domain.split('.')[0]; + //var jsonObj = {};*/ + var name = getDomainName(tab.url); + let textBox = document.getElementById('anonymus'); + var newObjArr = []; + if (textBox) { + console.log(textBox.value); + if (textBox.value !== '') { + var values = textBox.value.split('\n'); + values.forEach(function (value){ + var obj = {}; + var key = getKeyFromURL(value.split('/')); + obj[key] = value; + newObjArr.push(obj); + }); + } + //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; + console.log(newObjArr); + } + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + //alert("before" + JSON.stringify(origObj)); + /*var prefForDom = origObj[fullDomain]; + if (prefForDom === undefined) { + prefForDom = origObj[name]; + }*/ + //var prefForDom = origObj[fullDomain] || origObj[name]; + var prefForDom = getPreferences(fullDomain, name, origObj); + console.log("==" + prefForDom + "--- llllllll"); + var newEntryObj = {}; + var path = url.pathname.split('/'); + var key = getKeyFromURL(path); + /*if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + }*/ + newEntryObj[key] = currentUrl; + console.log(newEntryObj); + //if (newObjArr.length > 0) { + newObjArr.push(newEntryObj); + //} + //path[path.length]; + //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; + + console.log(path.length); + console.log("dom-" + path + "--" + path[path.length-1]); + if (prefForDom) { + console.log('in if'); + if (Array.isArray(prefForDom)) { + prefForDom.push(newEntryObj); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + options[selectedType].push(newEntryObj); + } + } + + + } else { + console.log('in else'); + //origObj[name] = [currentUrl]; + var newObj = {}; + newObj["current"] = name; + newObj["description"] = name; + newObj["sites"] = newObjArr; //[newEntryObj]; + origObj[name] = newObj; + } + //origObj[name] = [currentUrl]; + console.log(JSON.stringify(origObj)); + //jsonObj = items; + //console.log(JSON.stringify(jsonObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); } function getKeyFromURL (path) { - //var path = url.pathname.split('/'); - console.log(path); - var key; - if (path.length === 0) { - //newEntryObj[name] = currentUrl; - key = name; - } else { - if (path[path.length-1].indexOf('=') === -1) { - //newEntryObj[path[path.length-1]] = currentUrl; - key = path[path.length-1]; - } else { - //newEntryObj[path[1]] = currentUrl; - key = path[1]; - } - } - if (key === '') { - key = 'Home'; - } - return key; + //var path = url.pathname.split('/'); + console.log(path); + var key; + if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + } + return key; } function searchAgain () { - var urlSite = ''; - var selectedSite = getSearchSite(); - var selSiteArr; - var idx = currentTab.index + 1; - if (selectedSite.indexOf(',') > -1) { - selSiteArr = selectedSite.split(','); - selSiteArr.forEach(function(selSite){ - if (selSite.indexOf('yahoo') > -1) { - urlSite = selSite + 'search;?p=' + queryString; - } else { - urlSite = selSite + 'search?q=' + queryString; - } - - chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { - idx ++; - }); - }); - } else { - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + queryString; - } else { - urlSite = selectedSite + 'search?q=' + queryString; - } - chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { - - }); - //chrome.tabs.update(currentTab.id, {url: urlSite}); - } - - window.close(); + var urlSite = ''; + var selectedSite = getSearchSite(); + var selSiteArr; + var idx = currentTab.index + 1; + if (selectedSite.indexOf(',') > -1) { + selSiteArr = selectedSite.split(','); + selSiteArr.forEach(function(selSite){ + if (selSite.indexOf('yahoo') > -1) { + urlSite = selSite + 'search;?p=' + queryString; + } else { + urlSite = selSite + 'search?q=' + queryString; + } + + chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { + idx ++; + }); + }); + } else { + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + queryString; + } else { + urlSite = selectedSite + 'search?q=' + queryString; + } + chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { + + }); + //chrome.tabs.update(currentTab.id, {url: urlSite}); + } + + window.close(); } function getSearchSite() { - var selectedSite; - var site = document.getElementsByName("site"); - for(var i = 0; i < site.length; i++) { - if(site[i].checked) { - selectedSite = site[i].value; - - if (!selectedSite.endsWith('/')) { - selectedSite = selectedSite + '/'; - } - } - } - - return selectedSite; + var selectedSite; + var site = document.getElementsByName("site"); + for(var i = 0; i < site.length; i++) { + if(site[i].checked) { + selectedSite = site[i].value; + + if (!selectedSite.endsWith('/')) { + selectedSite = selectedSite + '/'; + } + } + } + + return selectedSite; } function sortListDir() { - var list, i, switching, b, shouldSwitch, dir, switchcount = 0; - list = document.getElementById("orderedList"); - switching = true; - //Set the sorting direction to ascending: - dir = "asc"; - //Make a loop that will continue until no switching has been done: - while (switching) { - //start by saying: no switching is done: - switching = false; - b = list.getElementsByTagName("LI"); - //Loop through all list-items: - for (i = 0; i < (b.length - 1); i++) { - //start by saying there should be no switching: - shouldSwitch = false; - /*check if the next item should switch place with the current item, - based on the sorting direction (asc or desc):*/ - if (dir == "asc") { - if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically lower than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; - } - } else if (dir == "desc") { - if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically higher than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; - } - } + var list, i, switching, b, shouldSwitch, dir, switchcount = 0; + list = document.getElementById("orderedList"); + switching = true; + //Set the sorting direction to ascending: + dir = "asc"; + //Make a loop that will continue until no switching has been done: + while (switching) { + //start by saying: no switching is done: + switching = false; + b = list.getElementsByTagName("LI"); + //Loop through all list-items: + for (i = 0; i < (b.length - 1); i++) { + //start by saying there should be no switching: + shouldSwitch = false; + /*check if the next item should switch place with the current item, + based on the sorting direction (asc or desc):*/ + if (dir == "asc") { + if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically lower than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; } - if (shouldSwitch) { - /*If a switch has been marked, make the switch - and mark that a switch has been done:*/ - b[i].parentNode.insertBefore(b[i + 1], b[i]); - switching = true; - //Each time a switch is done, increase switchcount by 1: - switchcount ++; - } else { - /*If no switching has been done AND the direction is "asc", - set the direction to "desc" and run the while loop again.*/ - if (switchcount === 0 && dir == "asc") { - dir = "desc"; - switching = true; - - } + } else if (dir == "desc") { + if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically higher than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; } + } + } + if (shouldSwitch) { + /*If a switch has been marked, make the switch + and mark that a switch has been done:*/ + b[i].parentNode.insertBefore(b[i + 1], b[i]); + switching = true; + //Each time a switch is done, increase switchcount by 1: + switchcount ++; + } else { + /*If no switching has been done AND the direction is "asc", + set the direction to "desc" and run the while loop again.*/ + if (switchcount === 0 && dir == "asc") { + dir = "desc"; + switching = true; + + } } - chngSortBtnValue(); + } + chngSortBtnValue(); } function chngSortBtnValue() { - var sortImg = document.getElementById('sortListDir'); - console.log(sortImg.getAttribute('src')); - if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { - //sortImg.nextSibling.textContent = "Sort Z to A"; - sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); - } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { - //sortImg.nextSibling.textContent = "Sort A to Z"; - sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); - } + var sortImg = document.getElementById('sortListDir'); + console.log(sortImg.getAttribute('src')); + if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { + //sortImg.nextSibling.textContent = "Sort Z to A"; + sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); + } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { + //sortImg.nextSibling.textContent = "Sort A to Z"; + sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); + } } function searchInSite (queryString) { - var urlSite = ''; - var searchText = document.getElementById('searchTextBox').value; - console.log(searchText); - if (searchText) { - var url = new URL(currentUrl); - - var selectedSite = getSearchSite(); - - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; - } else { - urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; - } - - chrome.tabs.update(currentTab.id, {url: urlSite}); - - } - window.close(); + var urlSite = ''; + var searchText = document.getElementById('searchTextBox').value; + console.log(searchText); + if (searchText) { + var url = new URL(currentUrl); + + var selectedSite = getSearchSite(); + + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; + } else { + urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; + } + + chrome.tabs.update(currentTab.id, {url: urlSite}); + + } + window.close(); } document.addEventListener('beforeunload', function (event) { - console.log("unload.."); - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - - window.close(); + console.log("unload.."); + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); }, true); function saveSelection() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var name = getDomainName(tab.url); - - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - var prefForDom = getPreferences(fullDomain, name, origObj); - - if (prefForDom) { - if (Array.isArray(prefForDom)) { - const allUrls = document.getElementsByName("link"); - allUrls.forEach (function (url) { - console.log("chkd--" + url.checked); - console.log("val--" + url.value); - console.log(url.labels[0].innerText); - console.log(JSON.stringify(prefForDom)); - console.log(prefForDom.length + "---long"); - var label = url.labels[0].innerText; - //if (label) //need to remove (currentTab from label) - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < prefForDom.length; i++) { - if (typeof prefForDom[i] === 'object') { - console.log(prefForDom[i]) ; - if (Object.keys(prefForDom[i])[0] === label) { - if (typeof Object.values(prefForDom[i])[0] === 'object') { - prefForDom[i][label]['selected'] = url.checked; - } else { - prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; - } - - } - } else { - if (prefForDom[i] === url.value) { - prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - const allUrls = document.getElementsByName("link"); - - allUrls.forEach (function (url) { - var label = url.labels[0].innerText; - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < allTypes.length; i++) { - //console.log("vaan" + JSON.stringify(allTypes[i])); - if (typeof allTypes[i] === 'object') { - if (Object.keys(allTypes[i])[0] === label) { - if (typeof Object.values(allTypes[i])[0] === 'object') { - prefForDom[selectedType][i][label]['selected'] = url.checked; - } else { - prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; - } - - } - } else { - if (allTypes[i] === url.value) { - prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); - } - } - } - console.log(JSON.stringify(origObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); - - /*const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode);*/ + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var name = getDomainName(tab.url); + + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + var prefForDom = getPreferences(fullDomain, name, origObj); + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + const allUrls = document.getElementsByName("link"); + allUrls.forEach (function (url) { + console.log("chkd--" + url.checked); + console.log("val--" + url.value); + console.log(url.labels[0].innerText); + console.log(JSON.stringify(prefForDom)); + console.log(prefForDom.length + "---long"); + var label = url.labels[0].innerText; + //if (label) //need to remove (currentTab from label) + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < prefForDom.length; i++) { + if (typeof prefForDom[i] === 'object') { + console.log(prefForDom[i]) ; + if (Object.keys(prefForDom[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[i][label]['selected'] = url.checked; + } else { + prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; + } + + } + } else { + if (prefForDom[i] === url.value) { + prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + const allUrls = document.getElementsByName("link"); + + allUrls.forEach (function (url) { + var label = url.labels[0].innerText; + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < allTypes.length; i++) { + //console.log("vaan" + JSON.stringify(allTypes[i])); + if (typeof allTypes[i] === 'object') { + if (Object.keys(allTypes[i])[0] === label) { + if (typeof Object.values(allTypes[i])[0] === 'object') { + prefForDom[selectedType][i][label]['selected'] = url.checked; + } else { + prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; + } + + } + } else { + if (allTypes[i] === url.value) { + prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } + } + } + console.log(JSON.stringify(origObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); + + /*const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode);*/ } function editTextArea () { - let txtAreaContent = this.value; - console.log("in txt are" + txtAreaContent); - if (txtAreaContent === '') { - document.getElementById('openbtn').disabled = true; - document.getElementById("error").innerHTML = ""; - } else { - document.getElementById('openbtn').disabled = false; - } + let txtAreaContent = this.value; + console.log("in txt are" + txtAreaContent); + if (txtAreaContent === '') { + document.getElementById('openbtn').disabled = true; + document.getElementById("error").innerHTML = ""; + } else { + document.getElementById('openbtn').disabled = false; + } } document.addEventListener('DOMContentLoaded', function () { - /* var bgPage = chrome.extension.getBackgroundPage(); - console.log("before"); + /* var bgPage = chrome.extension.getBackgroundPage(); + console.log("before"); var bk = bgPage.test("abc"); // Here paste() is a function that returns value. - console.log("beforeAAA--" + bk);*/ - document.getElementById('mainStuff').hidden = true; - document.getElementById('cancelbtn').addEventListener('click', closeWindow); - document.getElementById('openbtn').addEventListener('click', clickHandler); - document.getElementById('selectall').addEventListener('click', selectall); - document.getElementById('addbtn').addEventListener('click', addUrl); - document.getElementById('savebtn').addEventListener('click', saveSelection); - //document.getElementById('searchAgain').addEventListener('click', searchAgain); - document.getElementById('sortListDir').addEventListener('click', sortListDir); - //document.getElementById('searchbtn').addEventListener('click', searchInSite); - onclick="()"; - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - var content = document.getElementById('content'); + console.log("beforeAAA--" + bk);*/ + document.getElementById('mainStuff').hidden = true; + document.getElementById('cancelbtn').addEventListener('click', closeWindow); + document.getElementById('openbtn').addEventListener('click', clickHandler); + document.getElementById('selectall').addEventListener('click', selectall); + document.getElementById('addbtn').addEventListener('click', addUrl); + document.getElementById('savebtn').addEventListener('click', saveSelection); + //document.getElementById('searchAgain').addEventListener('click', searchAgain); + document.getElementById('sortListDir').addEventListener('click', sortListDir); + //document.getElementById('searchbtn').addEventListener('click', searchInSite); + onclick="()"; + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + var content = document.getElementById('content'); //chrome.storage.sync.set({loading: false}, function() {}); - //chrome.storage.sync.set({parentUrl: ""}, function() {}); - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - if (currentUrl === "chrome://newtab/") { - //window.close(); - //return; - newtab = true; - } else { - newtab = false; - } - - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - //var domain = getDomain(currentUrl); - var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; - console.log("currentUrl --" + currentUrl); - console.log("name --" + name); - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - if (loading) { - window.close(); - return; - } - var prefForDom; - console.log("test--" + isFromSearch(currentUrl)); - console.log("loadFrom-" + loadFrom); - var fromPage = true; - if (loadFrom === 'config' && searchSite.indexOf(url.hostname) === -1) { - fromPage = false; - } - if (!newtab) { - if (fromPage) { - if (readPage.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { - console.log("inside google"); - if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { - //console.log("google seach list is empty"); - //window.close(); - //return; - var text = document.createTextNode("No previous search results found. Please try a fresh search."); - document.getElementById('openbtn').disabled = true; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').disabled = true; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').disabled = true; - console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); - - //document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('searchAgain').hidden = "hidden"; - //document.getElementById('addbtn').hidden = ""; - content.appendChild(text); - return; - - } - console.log("Check1 " + JSON.stringify(googleSearch)); - prefForDom = googleSearch; - console.log("check2-" + prefForDom + "-"); - document.getElementById('addbtn').disabled = true; - document.getElementById('savebtn').disabled = true; - //document.getElementById('searchbtn').hidden = "hidden"; - //document.getElementById('searchText').hidden = "hidden"; - content.style.width = "600px"; - document.getElementById('body').style.width = "603px"; - searchPage = true; - if (googleSearch === "") { - console.log("Search list is empty"); - } - var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - var div = document.createElement('div'); - div.setAttribute("align", "center"); - var engineLogo = document.createElement("IMG"); - console.log("get favicon--" + searchEngine); - engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); - //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); - engineLogo.style.cssFloat = 'middle'; - div.appendChild(engineLogo); - //var domain = getDomain(searchEngine); - //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - - var searchEngineTxt = document.createTextNode(" " + engineName + " results."); - div.appendChild(searchEngineTxt); - content.appendChild(div); - } - } - - - if (prefForDom === undefined) { - prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; - //content.style.width = "200px"; - //ocument.getElementById('searchAgain').hidden = "hidden"; - searchPage = false; - } - - - - - console.log(jsonData); - console.log(prefForDom); - if(prefForDom){ - //console.log(typeof allurls); - if (Array.isArray(prefForDom)) { - console.log("pref dom is an array"); - if (prefForDom.length > 0) { - content.appendChild(createList(prefForDom)); - } else { - noConfigFound(content); - } - } else { - content.appendChild(createDropDown(prefForDom, name)); - var label = document.createElement('label'); - var txt = document.createTextNode("Options "); - label.setAttribute("for", "typeSelect"); - label.appendChild(txt); - label.style.marginLeft = "25px"; - content.insertBefore(label,document.getElementById("typeSelect")); - var type = document.getElementById("typeSelect"); - //type.style.marginLeft = "25px"; - var selectedType = type.options[type.selectedIndex].value; - content.appendChild(createList(prefForDom[selectedType])); - } - //document.getElementsByName("link").addEventListener('click', chkBoxClick); - if (selectAll && searchPage) { - document.getElementById('selectall').checked = true; - } - createRadio(content); - //document.getElementById('addbtn').hidden = "hidden"; - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode); - } else { - console.log("domain not set..."); - noConfigFound(content); - /*var text = document.createTextNode("Domain not set in preference."); - document.getElementById('openbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - document.getElementById('anonymus').hidden = ""; - content.appendChild(text);*/ - - } - - - } else { - var mesg = "Bank Page."; - noConfigFound(content, mesg); - } - - - - }); - - var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('utube.json')); - xhr.responseType = "text"; - - xhr.onreadystatechange = function() { - console.log("here"); - if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { - //console.log(xhr.responseText); - //utubeData = xhr.responseText; - utubeData = JSON.parse(xhr.responseText); - console.log(utubeData); - if (utubeData !== undefined) { - var adStuff = document.getElementById('adStuff'); - //var utubeData = chrome.runtime.getURL("utube.json"); - console.log(utubeData); - var keys = Object.keys(utubeData); - var ranNum = randomIntFromInterval(0, 9); - console.log("Me random" + ranNum); - var utube = document.createElement('a'); - utube.textContent = keys[ranNum]; - utube.href = utubeData[keys[ranNum]]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - /*keys.forEach(function (key) { - //console.log(data); - var utube = document.createElement('a'); - utube.textContent = key; - utube.href = utubeData[key]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - });*/ - - } - } - }; - xhr.send(); - // - - //console.log("margin" + document.getElementById("selectall").style.margin); - /*var delayMillis = 10000; //1 second - - setTimeout(function() { - //your code to be executed after 1 second - - }, delayMillis);*/ - document.getElementById('mainStuff').hidden = false; - document.getElementById('progress').hidden = true; + //chrome.storage.sync.set({parentUrl: ""}, function() {}); + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + if (currentUrl === "chrome://newtab/") { + //window.close(); + //return; + newtab = true; + } else { + newtab = false; + } + + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + //var domain = getDomain(currentUrl); + var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; + console.log("currentUrl --" + currentUrl); + console.log("name --" + name); + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + if (loading) { + window.close(); + return; + } + var prefForDom; + console.log("test--" + isFromSearch(currentUrl)); + console.log("loadFrom-" + loadFrom); + var fromPage = true; + if (loadFrom === 'config' && searchSite.indexOf(url.hostname) === -1) { + fromPage = false; + } + if (!newtab) { + if (fromPage) { + if (readPage.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { + console.log("inside google"); + if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { + //console.log("google seach list is empty"); + //window.close(); + //return; + var text = document.createTextNode("No previous search results found. Please try a fresh search."); + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); + + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('addbtn').hidden = ""; + content.appendChild(text); + return; + + } + console.log("Check1 " + JSON.stringify(googleSearch)); + prefForDom = googleSearch; + console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').disabled = true; + document.getElementById('savebtn').disabled = true; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + searchEngine); + engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + } + } + + + if (prefForDom === undefined) { + prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //content.style.width = "200px"; + //ocument.getElementById('searchAgain').hidden = "hidden"; + searchPage = false; + } + + + + + console.log(jsonData); + console.log(prefForDom); + if(prefForDom){ + //console.log(typeof allurls); + if (Array.isArray(prefForDom)) { + console.log("pref dom is an array"); + if (prefForDom.length > 0) { + content.appendChild(createList(prefForDom)); + } else { + noConfigFound(content); + } + } else { + content.appendChild(createDropDown(prefForDom, name)); + var label = document.createElement('label'); + var txt = document.createTextNode("Options "); + label.setAttribute("for", "typeSelect"); + label.appendChild(txt); + label.style.marginLeft = "25px"; + content.insertBefore(label,document.getElementById("typeSelect")); + var type = document.getElementById("typeSelect"); + //type.style.marginLeft = "25px"; + var selectedType = type.options[type.selectedIndex].value; + content.appendChild(createList(prefForDom[selectedType])); + } + //document.getElementsByName("link").addEventListener('click', chkBoxClick); + if (selectAll && searchPage) { + document.getElementById('selectall').checked = true; + } + createRadio(content); + //document.getElementById('addbtn').hidden = "hidden"; + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); + } else { + console.log("domain not set..."); + noConfigFound(content); + /*var text = document.createTextNode("Domain not set in preference."); + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + document.getElementById('anonymus').hidden = ""; + content.appendChild(text);*/ + + } + + + } else { + var mesg = "Bank Page."; + noConfigFound(content, mesg); + } + + + + }); + + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('utube.json')); + xhr.responseType = "text"; + + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + //console.log(xhr.responseText); + //utubeData = xhr.responseText; + utubeData = JSON.parse(xhr.responseText); + console.log(utubeData); + if (utubeData !== undefined) { + var adStuff = document.getElementById('adStuff'); + //var utubeData = chrome.runtime.getURL("utube.json"); + console.log(utubeData); + var keys = Object.keys(utubeData); + var ranNum = randomIntFromInterval(0, 9); + console.log("Me random" + ranNum); + var utube = document.createElement('a'); + utube.textContent = keys[ranNum]; + utube.href = utubeData[keys[ranNum]]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + /*keys.forEach(function (key) { + //console.log(data); + var utube = document.createElement('a'); + utube.textContent = key; + utube.href = utubeData[key]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + });*/ + + } + } + }; + xhr.send(); + // + + //console.log("margin" + document.getElementById("selectall").style.margin); + /*var delayMillis = 10000; //1 second + + setTimeout(function() { + //your code to be executed after 1 second + + }, delayMillis);*/ + document.getElementById('mainStuff').hidden = false; + document.getElementById('progress').hidden = true; }); function noConfigFound(content, msg) { - console.log("domain not set..."); - var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; - if (msg) { - textContent = msg + textContent; - document.getElementById('addbtn').disabled = true; - } else { - textContent = "Domain not set in preference." + textContent; - } - const divTxt = document.createElement("div"); - var pre = document.createElement("PRE"); - var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); - pre.appendChild(text); - divTxt.style.marginLeft = "25px"; - document.getElementById('openbtn').disabled = true; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').disabled = true; - //document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').disabled = true; - //document.getElementById('sortListDir').nextSibling.nodeValue = ""; - - document.getElementById('savebtn').disabled = true; - document.getElementById('anonymus').hidden = ""; - if (anonymus) { - document.getElementById('anonymus').value = anonymus; - document.getElementById('openbtn').disabled = false; - } - document.getElementById('anonymus').onkeyup = editTextArea; - - - divTxt.appendChild(pre); - content.appendChild(divTxt); - + console.log("domain not set..."); + var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; + if (msg) { + textContent = msg + textContent; + document.getElementById('addbtn').disabled = true; + } else { + textContent = "Domain not set in preference." + textContent; + } + const divTxt = document.createElement("div"); + var pre = document.createElement("PRE"); + var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); + pre.appendChild(text); + divTxt.style.marginLeft = "25px"; + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + //document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + + document.getElementById('savebtn').disabled = true; + document.getElementById('anonymus').hidden = ""; + if (anonymus) { + document.getElementById('anonymus').value = anonymus; + document.getElementById('openbtn').disabled = false; + } + document.getElementById('anonymus').onkeyup = editTextArea; + + + divTxt.appendChild(pre); + content.appendChild(divTxt); + } function createRadio(content) { - //var engDom = getDomain(searchEngine); - //var engine = engDom.split('.')[0]; - //var engineUrl = new URL(searchEngine); - //console.log("url hostname eng-" + engineUrl.hostname); - var engine; - if (searchPage) { - engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; - } - - var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' - - var searchContent = document.getElementById('searchContent'); - - var searchDiv = document.createElement('searchDiv'); - searchDiv.id = "searchDiv"; - searchDiv.style.margin = "0px 0px 0px 25px"; - searchDiv.style.width = '300px'; - - var searchLbl = document.createElement('label'); - searchLbl.innerHTML = "search in"; - searchLbl.style.marginLeft = "25px"; - searchContent.appendChild(searchLbl); - var br = document.createElement('br'); - searchContent.appendChild(br); - /*var margin = true;*/ - - var both; - - sitesArr.forEach(function (site) { - var url = new URL(site); - console.log("url hostname-" + url.hostname); - var name = getDomainName(site);//url.hostname.split('.')[1]; - //var domain = getDomain(site); - //var name = domain.split('.')[0]; - console.log("name " + name); - console.log("engg " + engine); - if (searchPage && name === engine) { - return; - } - - both = both ? both + "," + site : site; - console.log("both " + both); - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", site); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - //radio.setAttribute("id", "site"); - //radio.style.marginLeft = "10px"; - console.log("site " + site); - console.log("eng " + searchEngine); - /*var url = new URL(site); - var fullDomain = url.hostname;*/ - var label = document.createElement("label"); - label.innerHTML = name; - //content.appendChild(radio); - //content.appendChild(label); - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchContent.appendChild(searchDiv); - - - }); - - - var searchAgainBtn = document.createElement('input'); - searchAgainBtn.setAttribute("type", "button"); - selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; - if (searchPage) { - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", both); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - var label = document.createElement("label"); - label.innerHTML = "Both"; - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchAgainBtn.setAttribute("id", "searchAgain"); - searchAgainBtn.setAttribute("value", "Search Again"); - searchAgainBtn.onclick = searchAgain; - } else { - var searchAgainTxt = document.createElement('input'); - searchAgainTxt.setAttribute("type", "text"); - searchAgainTxt.setAttribute("id", "searchTextBox"); - selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; - searchAgainTxt.style.marginLeft = "25px"; - searchDiv.appendChild(searchAgainTxt); - searchAgainBtn.setAttribute("id", "searchbtn"); - searchAgainBtn.setAttribute("value", "Search"); - searchAgainBtn.onclick = searchInSite; - } - searchAgainBtn.style.marginLeft = '2px'; - searchDiv.appendChild(searchAgainBtn); - - searchContent.appendChild(searchDiv); - - /*if (selectAll) { - const allUrls = document.getElementsByName("link"); - if (allUrls.length > -1) { - if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { - //radio.disabled = true; - searchAgainBtn.disabled = true; - document.getElementsByName('site')[0].style.disabled = true; - document.getElementsByName('site')[1].style.disabled = true; - document.getElementsByName('site')[2].style.disabled = true; - if (!searchPage) { - document.getElementById('searchTextBox').style.disabled = true; - } - } - - } - }*/ - - + //var engDom = getDomain(searchEngine); + //var engine = engDom.split('.')[0]; + //var engineUrl = new URL(searchEngine); + //console.log("url hostname eng-" + engineUrl.hostname); + var engine; + if (searchPage) { + engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + } + + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' + + var searchContent = document.getElementById('searchContent'); + + var searchDiv = document.createElement('searchDiv'); + searchDiv.id = "searchDiv"; + searchDiv.style.margin = "0px 0px 0px 25px"; + searchDiv.style.width = '300px'; + + var searchLbl = document.createElement('label'); + searchLbl.innerHTML = "search in"; + searchLbl.style.marginLeft = "25px"; + searchContent.appendChild(searchLbl); + var br = document.createElement('br'); + searchContent.appendChild(br); + /*var margin = true;*/ + + var both; + + sitesArr.forEach(function (site) { + var url = new URL(site); + console.log("url hostname-" + url.hostname); + var name = getDomainName(site);//url.hostname.split('.')[1]; + //var domain = getDomain(site); + //var name = domain.split('.')[0]; + console.log("name " + name); + console.log("engg " + engine); + if (searchPage && name === engine) { + return; + } + + both = both ? both + "," + site : site; + console.log("both " + both); + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", site); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + //radio.setAttribute("id", "site"); + //radio.style.marginLeft = "10px"; + console.log("site " + site); + console.log("eng " + searchEngine); + /*var url = new URL(site); + var fullDomain = url.hostname;*/ + var label = document.createElement("label"); + label.innerHTML = name; + //content.appendChild(radio); + //content.appendChild(label); + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchContent.appendChild(searchDiv); + + + }); + + + var searchAgainBtn = document.createElement('input'); + searchAgainBtn.setAttribute("type", "button"); + selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; + if (searchPage) { + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", both); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + var label = document.createElement("label"); + label.innerHTML = "Both"; + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchAgainBtn.setAttribute("id", "searchAgain"); + searchAgainBtn.setAttribute("value", "Search Again"); + searchAgainBtn.onclick = searchAgain; + } else { + var searchAgainTxt = document.createElement('input'); + searchAgainTxt.setAttribute("type", "text"); + searchAgainTxt.setAttribute("id", "searchTextBox"); + selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; + searchAgainTxt.style.marginLeft = "25px"; + searchDiv.appendChild(searchAgainTxt); + searchAgainBtn.setAttribute("id", "searchbtn"); + searchAgainBtn.setAttribute("value", "Search"); + searchAgainBtn.onclick = searchInSite; + } + searchAgainBtn.style.marginLeft = '2px'; + searchDiv.appendChild(searchAgainBtn); + + searchContent.appendChild(searchDiv); + + /*if (selectAll) { + const allUrls = document.getElementsByName("link"); + if (allUrls.length > -1) { + if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { + //radio.disabled = true; + searchAgainBtn.disabled = true; + document.getElementsByName('site')[0].style.disabled = true; + document.getElementsByName('site')[1].style.disabled = true; + document.getElementsByName('site')[2].style.disabled = true; + if (!searchPage) { + document.getElementById('searchTextBox').style.disabled = true; + } + } + + } + }*/ + + } function randomIntFromInterval(min,max) @@ -1171,263 +1178,263 @@ function randomIntFromInterval(min,max) } function getPreferences(url_hostname, name, dataObj) { - if (dataObj === undefined) { - dataObj = jsonData; - } - console.log(url_hostname + " -- " + name ); - let pref;// = []; - for (var item in dataObj) { - let domain; - domain = dataObj[item]['current']; - console.log("DOMAIN--" + domain); - if (domain.indexOf(',') === -1) { - console.log("in no comma"); - //pref = []; - //if (domain === url_hostname || domain === name) { - if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { - console.log("name matched....") - if (domain.indexOf('http://') !== -1) { - baseUrl = domain; - } else { - baseUrl = 'http://' + domain; - } - var sites = dataObj[item]['sites']; - pref = sites; - console.log("sites--" + sites); - } - console.log("in get pref " + JSON.stringify(pref)); - } else { - var domArr = domain.split(','); - domArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[item]['sites']; - } - }); - console.log("in get pref " + pref); - } - } - console.log(pref); - return pref; - -} + if (dataObj === undefined) { + dataObj = jsonData; + } + console.log(url_hostname + " -- " + name ); + let pref;// = []; + for (var item in dataObj) { + let domain; + domain = dataObj[item]['current']; + console.log("DOMAIN--" + domain); + if (domain.indexOf(',') === -1) { + console.log("in no comma"); + //pref = []; + //if (domain === url_hostname || domain === name) { + if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { + console.log("name matched....") + if (domain.indexOf('http://') !== -1) { + baseUrl = domain; + } else { + baseUrl = 'http://' + domain; + } + var sites = dataObj[item]['sites']; + pref = sites; + console.log("sites--" + sites); + } + console.log("in get pref " + JSON.stringify(pref)); + } else { + var domArr = domain.split(','); + domArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[item]['sites']; + } + }); + console.log("in get pref " + pref); + } + } + console.log(pref); + return pref; + +} function createList(allurls) { - - var list = document.createElement("OL"); - list.setAttribute("type", "1"); - list.setAttribute("id", "orderedList"); - //list.setAttribute("") - if (!searchPage) { - list.style.width = "100%"; - selectAll = true; - } - list.style.align = "right"; - - var i=1; - var value=""; - var bgColor = "#EDEEED"; //"#F4F6F7"; - - allurls.forEach(function(page) { - console.log("in createList " + JSON.stringify(page)); - //console.log(Object.keys(page)); - //console.log(Object.values(page)); - var input = document.createElement("INPUT"); - input.setAttribute("type", "checkbox"); - var label = document.createElement('label'); - - var linkObj, key, url; - if (typeof page === 'object') { - console.log("has key value"); - - if (typeof Object.values(page)[0] === 'object') { - url = Object.values(page)[0]; - linkObj = url.url; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - input.setAttribute("Alt", url.alt); - if (currentUrl !== linkObj && url.selected !== false) { // && selectAll - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("llll" + label.getText); - } - } else { - linkObj = Object.values(page)[0]; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - console.log("in else"); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - } - - key = Object.keys(page)[0]; - } else { - var pageParts = page.split('/'); - console.log(pageParts.length); - console.log(pageParts[pageParts.length - 1] ); - linkObj = page; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; - input.setAttribute("value", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - - } - input.setAttribute("name", "link"); - if (currentUrl === linkObj) { - key = key + "(Current Tab)"; - console.log("kkk"+key); - document.getElementById('addbtn').disabled = true; - } - var id = key; //Object.keys(page)[0]; - input.setAttribute("id", id); - input.onclick = chkBoxClick; - label.htmlFor = id; - - console.log("linkObj--" + linkObj); - console.log("currentUrl--" + currentUrl); - - - //var linkObj = Object.values(page)[0]; - - - - var li = document.createElement("LI"); - li.style.backgroundColor = bgColor; - if (searchPage) - li.style.margin = "10px 0"; - - //li.setAttribute("background-color" , "#FFFEEC"); - var logo = document.createElement("IMG"); - console.log("link " + Object.values(page)[0]); - logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); - logo.setAttribute("width", "20"); - logo.setAttribute("height", "12"); - - var link = document.createElement('a'); - link.textContent = id; - link.href = linkObj; //Object.values(page)[0]; - link.title = linkObj; - link.onclick = linkClick; - label.appendChild(link); - - - list.appendChild(li); - li.appendChild(input); - li.appendChild(logo); - li.appendChild(label); - //list.appendChild(input); - //list.appendChild(logo); - //list.appendChild(label); - //var line = document.createElement('br'); - //list.appendChild(line); - if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" - bgColor = "#FFFFFF"; - } else { - bgColor = "#EDEEED"; //"#F4F6F7"; - } - }); - /*var howmany = document.getElementById("howmany"); - if (selectAll) { - howmany.textContent = allurls.length + " selected."; - } else { - howmany.textContent = "0 selected."; - }*/ - return list; - - + + var list = document.createElement("OL"); + list.setAttribute("type", "1"); + list.setAttribute("id", "orderedList"); + //list.setAttribute("") + if (!searchPage) { + list.style.width = "100%"; + selectAll = true; + } + list.style.align = "right"; + + var i=1; + var value=""; + var bgColor = "#EDEEED"; //"#F4F6F7"; + + allurls.forEach(function(page) { + console.log("in createList " + JSON.stringify(page)); + //console.log(Object.keys(page)); + //console.log(Object.values(page)); + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + var label = document.createElement('label'); + + var linkObj, key, url; + if (typeof page === 'object') { + console.log("has key value"); + + if (typeof Object.values(page)[0] === 'object') { + url = Object.values(page)[0]; + linkObj = url.url; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + input.setAttribute("Alt", url.alt); + if (currentUrl !== linkObj && url.selected !== false) { // && selectAll + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("llll" + label.getText); + } + } else { + linkObj = Object.values(page)[0]; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + console.log("in else"); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + } + + key = Object.keys(page)[0]; + } else { + var pageParts = page.split('/'); + console.log(pageParts.length); + console.log(pageParts[pageParts.length - 1] ); + linkObj = page; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; + input.setAttribute("value", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + + } + input.setAttribute("name", "link"); + if (currentUrl === linkObj) { + key = key + "(Current Tab)"; + console.log("kkk"+key); + document.getElementById('addbtn').disabled = true; + } + var id = key; //Object.keys(page)[0]; + input.setAttribute("id", id); + input.onclick = chkBoxClick; + label.htmlFor = id; + + console.log("linkObj--" + linkObj); + console.log("currentUrl--" + currentUrl); + + + //var linkObj = Object.values(page)[0]; + + + + var li = document.createElement("LI"); + li.style.backgroundColor = bgColor; + if (searchPage) + li.style.margin = "10px 0"; + + //li.setAttribute("background-color" , "#FFFEEC"); + var logo = document.createElement("IMG"); + console.log("link " + Object.values(page)[0]); + logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); + logo.setAttribute("width", "20"); + logo.setAttribute("height", "12"); + + var link = document.createElement('a'); + link.textContent = id; + link.href = linkObj; //Object.values(page)[0]; + link.title = linkObj; + link.onclick = linkClick; + label.appendChild(link); + + + list.appendChild(li); + li.appendChild(input); + li.appendChild(logo); + li.appendChild(label); + //list.appendChild(input); + //list.appendChild(logo); + //list.appendChild(label); + //var line = document.createElement('br'); + //list.appendChild(line); + if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" + bgColor = "#FFFFFF"; + } else { + bgColor = "#EDEEED"; //"#F4F6F7"; + } + }); + /*var howmany = document.getElementById("howmany"); + if (selectAll) { + howmany.textContent = allurls.length + " selected."; + } else { + howmany.textContent = "0 selected."; + }*/ + return list; + + } function selectOption() { - var content = document.getElementById('content'); - var orderedList = document.getElementById('orderedList'); - if (orderedList) { - content.removeChild(orderedList); - } - - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - //var allTypes = jsonData[type.name]; - var url = new URL(currentUrl); + var content = document.getElementById('content'); + var orderedList = document.getElementById('orderedList'); + if (orderedList) { + content.removeChild(orderedList); + } + + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + //var allTypes = jsonData[type.name]; + var url = new URL(currentUrl); //var allTypes = jsonData[url.hostname] || jsonData[type.name]; - var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; - if (Array.isArray(allTypes[selectedType])){ - content.appendChild(createList(allTypes[selectedType])); - } - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode); - + var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; + if (Array.isArray(allTypes[selectedType])){ + content.appendChild(createList(allTypes[selectedType])); + } + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); + } function createDropDown (data, hierarchy) { - var dropDown = document.createElement("SELECT"); - dropDown.setAttribute("id", "typeSelect"); - dropDown.setAttribute("name", hierarchy); - var keys = Object.keys(data); - keys.forEach(function (optn) { - var options = document.createElement("option"); - options.setAttribute("value", optn); - options.setAttribute("id", optn); - var txt = document.createTextNode(optn); - options.appendChild(txt); - if (optn.indexOf("default") > -1) { - options.selected = true; - } - dropDown.appendChild(options); - }); - dropDown.onchange = selectOption; - return dropDown; - + var dropDown = document.createElement("SELECT"); + dropDown.setAttribute("id", "typeSelect"); + dropDown.setAttribute("name", hierarchy); + var keys = Object.keys(data); + keys.forEach(function (optn) { + var options = document.createElement("option"); + options.setAttribute("value", optn); + options.setAttribute("id", optn); + var txt = document.createTextNode(optn); + options.appendChild(txt); + if (optn.indexOf("default") > -1) { + options.selected = true; + } + dropDown.appendChild(options); + }); + dropDown.onchange = selectOption; + return dropDown; + } - + function getDomain(url, subdomain) { - //var isSubdom = isSubdomain(url); - subdomain = subdomain || false; + //var isSubdom = isSubdomain(url); + subdomain = subdomain || false; url = url.replace(/(https?:\/\/)?(www.)?/i, ''); @@ -1446,85 +1453,85 @@ function getDomain(url, subdomain) { } function getCurrentTabUrl(callback) { - var queryInfo = { - active: true, - currentWindow: true - }; - - chrome.tabs.query(queryInfo, function(tabs) { - - var tab = tabs[0]; - //var url = tab.url; - currentTab = tab; - callback(tab); - }); - - chrome.windows.getCurrent(function(currentWindow) { - invokedWindow = currentWindow.id; - }); - -} - -function utubeClick() { - var idx = currentTab.index + 1; - chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function(tabs) { + + var tab = tabs[0]; + //var url = tab.url; +currentTab = tab; + callback(tab); + }); + + chrome.windows.getCurrent(function(currentWindow) { + invokedWindow = currentWindow.id; + }); - }); } -function isParentGoogle(parentUrl) { - // var url = new URL(parentUrl); - // console.log("azhagiye...." + url.hostname); - //return google.indexOf(url.hostname) > -1; -} - -function isFromSearch(currentURL) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - if (googleSearch) { - googleSearch.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - } - return urlFound; -} - -function getDomainName(url) { - var hostname = new URL(url).hostname; - var hostArr = hostname.split('.'); - console.log(hostArr.length + "---yyy"); - console.log(hostArr); - if (hostArr.length === 2) { - return hostArr[0]; - } else if (hostArr.length === 4) { - if (hostArr[0] === 'www') { - return hostArr[1]; - } else { - return hostArr[2]; - } - } else { - return hostArr[1]; - } -} - -function isUrlInList(currentURL, urlList) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - - urlList.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - - return urlFound; -} \ No newline at end of file + + function utubeClick() { + var idx = currentTab.index + 1; + chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { + + }); + } + function isParentGoogle(parentUrl) { + // var url = new URL(parentUrl); + // console.log("azhagiye...." + url.hostname); + //return google.indexOf(url.hostname) > -1; + } + + function isFromSearch(currentURL) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + if (googleSearch) { + googleSearch.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + } + return urlFound; + } + + function getDomainName(url) { + var hostname = new URL(url).hostname; + var hostArr = hostname.split('.'); + console.log(hostArr.length + "---yyy"); + console.log(hostArr); + if (hostArr.length === 2) { + return hostArr[0]; + } else if (hostArr.length === 4) { + if (hostArr[0] === 'www') { + return hostArr[1]; + } else { + return hostArr[2]; + } + } else { + return hostArr[1]; + } + } + + function isUrlInList(currentURL, urlList) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + + urlList.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + + return urlFound; + } \ No newline at end of file From 79404304ffbf393969ad0f8bf2790771dcfa1e64 Mon Sep 17 00:00:00 2001 From: Gautam Date: Mon, 1 Jan 2018 18:32:37 -0600 Subject: [PATCH 28/33] Modified popup.js, background.js etc for fixes. --- content_script.js | 519 ++++++-- manifest.json | 34 +- options.html | 4 +- options.js | 12 +- popup.js | 2962 ++++++++++++++++++++++++--------------------- 5 files changed, 2011 insertions(+), 1520 deletions(-) diff --git a/content_script.js b/content_script.js index 5730347..326a56c 100644 --- a/content_script.js +++ b/content_script.js @@ -2,113 +2,426 @@ var jsonObj = {}; //jsonObj["current"] = "search"; //jsonObj["description"] = "google search"; var sites = []; -var queryString; +var queryString = ""; var hrefAdded = []; -//google -$("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - obj[this.text] = $(this).attr('href'); - sites.push(obj); - hrefAdded.push($(this).attr('href')); +function refreshObj() { + chrome.storage.local.get('googleSearch', function(searchResult){ + console.log("result orig-" + JSON.stringify(searchResult)); + if (searchResult.googleSearch) { + jsonObj = searchResult.googleSearch; + } + if (location.origin.indexOf('cnn') > -1) { + queryString = ""; + //cnn + var urlBase = location.origin; + console.log(urlBase); + $("div.cd__content").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + jsonObj['cnn'] = sites; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('google') > -1) { + //refreshObj(); + queryString = document.getElementsByName("q")[0].value; + + //google + $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + + obj[this.text] = $(this).attr('href'); + sites.push(obj); + hrefAdded.push($(this).attr('href')); + + + }); + + $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + + }); + + $("div.srg").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + }); + console.log("Orig object...\n" + JSON.stringify(jsonObj)); + jsonObj['google'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + sites = []; + } else if (location.origin.indexOf('bing') > -1){ + //refreshObj(); + queryString = document.getElementsByName("q")[0].value; + //bing //ol.b_results + + $("ol#b_results > li.b_algo").find("h2 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + }); + jsonObj['bing'] = sites; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + + } else if (location.origin.indexOf('yahoo') > -1) { + + queryString = document.getElementsByName("p")[0].value; + //yahoo + $("div#web").find("h3 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + }); + jsonObj['yahoo'] = sites; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('youtube') > -1) { + + queryString = document.getElementsByName("search_query")[0].value; + //youtube //find("ytd-video-renderer") + $("div#contents").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + //div#title-wrapper + }); + console.log("Orig object...\n" + JSON.stringify(jsonObj)); + jsonObj['youtube'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('stackoverflow') > -1) { + if (document.getElementsByName("q")) { + queryString = document.getElementsByName("q")[0].value; + } + //stackoverflow + var urlBase = location.origin; + console.log(urlBase); + if (queryString === "") { + $("div.summary").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + } else { + $("div.result-link").find("span > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + } -}); + jsonObj['stackoverflow'] = sites; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('washingtonpost') > -1) { + + + //washingtonpost + $("div.headline").find("a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + //div#title-wrapper + }); + console.log("Orig object...\n" + JSON.stringify(jsonObj)); + jsonObj['washingtonpost'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); -$("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = $(this).attr('href'); - sites.push(obj); - } + } + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); + sites = []; + }); + //console.log("obj new-" + JSON.stringify(jsonObj)); +} -}); -$("div.srg").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = $(this).attr('href'); - sites.push(obj); - } -}); -//bing //ol.b_results -$("ol#b_results > li.b_algo").find("h2 > a").each(function () { - console.log("Title: " + this.text); - var lnk = $(this).attr('href'); - console.log("from: " + JSON.stringify(lnk)); - var obj = {}; - obj[this.text] = $(this).attr('href'); - sites.push(obj); -}); -//yahoo -$("div#web").find("h3 > a").each(function () { - console.log("Title: " + this.text); - var lnk = $(this).attr('href'); - console.log("from: " + JSON.stringify(lnk)); - var obj = {}; - obj[this.text] = $(this).attr('href'); - sites.push(obj); -}); -//youtube //find("ytd-video-renderer") -$("div#contents").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } - //div#title-wrapper -}); -//cnn -var urlBase = location.origin; -console.log(urlBase); -$("div.cd__content").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - //var urlBase = location.origin; - //console.log(urlBase); - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - console.log("not in hrefadded array"); - // var partialUrl = $(this).attr('href'); - //var fullUrl = urlBase + partialUrl; - //console.log(fullUrl); - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } +window.addEventListener ("load", myMain, false); -}); +function myMain (evt) { + //refreshObj(); + + + /*if (location.origin.indexOf('cnn') > -1) { + refreshObj(); + queryString = ""; + //cnn + var urlBase = location.origin; + console.log(urlBase); + $("div.cd__content").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + jsonObj['cnn'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); + }*/ + + + + + + + + //chrome.runtime.sendMessage({cnnLoading: "complete"}); + /*chrome.storage.local.set({'cnnLoading': "complete"}, function() { + console.log('Cnn loading complete..'); + });*/ +} + + + + +/* -jsonObj['sites'] = sites; if (location.origin.indexOf('yahoo') > -1) { - queryString = document.getElementsByName("p")[0].value; + refreshObj(); + queryString = document.getElementsByName("p")[0].value; + //yahoo + $("div#web").find("h3 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + }); + jsonObj['yahoo'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); } else if (location.origin.indexOf('youtube') > -1) { - queryString = document.getElementsByName("search_query")[0].value; -} else { - queryString = document.getElementsByName("q")[0].value; -} + refreshObj(); + queryString = document.getElementsByName("search_query")[0].value; + //youtube //find("ytd-video-renderer") + $("div#contents").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + //div#title-wrapper + }); + jsonObj['youtube'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); +} else if (location.origin.indexOf('cnn') > -1) { + queryString = ""; +} else if (location.origin.indexOf('google') > -1) { + refreshObj(); + queryString = document.getElementsByName("q")[0].value; + + //google + $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + + obj[this.text] = $(this).attr('href'); + sites.push(obj); + hrefAdded.push($(this).attr('href')); + + + }); + + $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + + }); + + $("div.srg").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + }); + jsonObj['google'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); +} else if (location.origin.indexOf('bing') > -1){ + refreshObj(); + queryString = document.getElementsByName("q")[0].value; + //bing //ol.b_results + + $("ol#b_results > li.b_algo").find("h2 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + }); + jsonObj['bing'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); + +}*/ //var queryString = document.getElementsByName("q")[0].value; //"p" for yahoo /*console.log("jjjjj" + queryString); console.log(location.pathname); @@ -119,13 +432,14 @@ console.log(location.pathname); console.log(location.origin);*/ //var urlquery = ''; //urlquery = location.origin + location.pathname + '?q=' + queryString; -console.log("Final object...\n" + JSON.stringify(jsonObj)); -console.log("queryStr--" + queryString); -chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); -//chrome.storage.sync.StorageArea.remove(['googleSearch', 'queryString', 'searchEngine']); -chrome.storage.local.set({'googleSearch': sites, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); -}); +/*if (location.origin.indexOf('cnn') === -1) { + jsonObj['cnn'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); +}*/ var fromGS = {}; $("div.srg").find("h3 > a").click(function () { @@ -148,15 +462,21 @@ $('a').each(function(index){ }); //console.log("showing..\n" + urlArr); -//chrome.runtime.sendMessage({todo: "show_text"}); + chrome.runtime.onMessage.addListener(function(req, sender, sendres){ + if (req.exec) { + refreshObj(); + return; + } + console.log("in lsner lll" + location.origin); /*if (request.greeting == "hello")*/ var url = new URL(location.origin); var name = url.hostname.split('.')[1]; //if (req.highlight) { //alert(req.selectedItems); + console.log("in lsner" + req.selectedItems); if (name === 'google') { @@ -279,5 +599,4 @@ function highlightTextYT(selectedItems, highlight) { } }); - } \ No newline at end of file diff --git a/manifest.json b/manifest.json index 1ec98df..7907c7a 100644 --- a/manifest.json +++ b/manifest.json @@ -16,7 +16,9 @@ "chrome_style": true }, "background": { - "scripts": ["background.js"] + "scripts": [ + "background.js" + ] }, "commands": { "toggle-feature": { @@ -32,16 +34,26 @@ } } }, - "content_scripts": [{ - "matches": ["https://www.google.co.in/*", - "https://www.google.com/*", - "https://search.yahoo.com/*", - "https://www.bing.com/*", - "https://www.youtube.com/*", - "https://in.yahoo.com/*", - "http://www.cnn.com/"], - "js": ["jquery-1.8.0.min.js", "content_script.js"] - }], + "content_scripts": [ + { + "matches": [ + "https://www.google.co.in/*", + "https://www.google.com/*", + "https://search.yahoo.com/*", + "https://www.bing.com/*", + "https://www.youtube.com/*", + "https://in.yahoo.com/*", + "http://wwww.cnn.com/*", + "https://stackoverflow.com/*", + "https://www.washingtonpost.com/*" + ], + "js": [ + "jquery-1.8.0.min.js", + "content_script.js" + ], + "run_at": "document_end" + } + ], "browser_action": { "default_title": "Open my pages.", "default_icon": "icons/ic_title_black_24dp_1x.png", diff --git a/options.html b/options.html index 0a43856..fb3c2da 100644 --- a/options.html +++ b/options.html @@ -53,11 +53,11 @@ Tabs to load at a time
- Load from: Configuration + diff --git a/options.js b/options.js index b059eb1..fb220b0 100644 --- a/options.js +++ b/options.js @@ -9,7 +9,7 @@ function save_options() { var selectAll = document.getElementById('selectAll').checked; var timeOut = document.getElementById('timeOut').value; var tabToLoad = document.getElementById('tabToLoad').value; - var loadFrom = document.getElementsByName('loadFrom')[0].checked ? document.getElementsByName('loadFrom')[0].value : document.getElementsByName('loadFrom')[1].value; + //var loadFrom = document.getElementsByName('loadFrom')[0].checked ? document.getElementsByName('loadFrom')[0].value : document.getElementsByName('loadFrom')[1].value; //var searchSites = document.getElementById('searchSites').value; alert(tabToLoad); if (jsonData.trim() === '') { @@ -47,8 +47,7 @@ function save_options() { highlightTabs: highlightTabs, selectAll: selectAll, timeOut : timeOut, - tabToLoad : tabToLoad, - loadFrom : loadFrom}, + tabToLoad : tabToLoad}, function() { // Update status to let user know options were saved. var status = document.getElementById('status'); @@ -286,20 +285,19 @@ function restore_options() { highlightTabs: true, selectAll: true, timeOut: 30, - tabToLoad : 2, - loadFrom : "config" + tabToLoad : 2 }, function(items) { document.getElementById('tabsBackground').checked = items.tabsBackground; document.getElementById('highlightTabs').checked = items.highlightTabs; document.getElementById('selectAll').checked = items.selectAll; document.getElementById('timeOut').value = items.timeOut; document.getElementById('tabToLoad').value = items.tabToLoad; - alert(items.loadFrom); + /*alert(items.loadFrom); if (items.loadFrom === 'config'){ document.getElementsByName('loadFrom')[0].checked = true; } else { document.getElementsByName('loadFrom')[1].checked = true; - } + } */ //document.getElementById('searchSites').value = items.searchSites; diff --git a/popup.js b/popup.js index 798bc7c..5256219 100644 --- a/popup.js +++ b/popup.js @@ -17,1159 +17,1277 @@ var baseUrl; var anonymus; var newtab; var loadFrom; -var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'searchEngine', 'anonymus', 'loadFrom']; -var readPage = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com', 'edition.cnn.com']; -var searchSite= ['google', 'yahoo', 'bing', 'youtube']; - +var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'anonymus']; //'searchEngine',, 'loadFrom' +//var readPage = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com', 'edition.cnn.com']; +var readPage = ['google', 'search.yahoo', 'bing', 'youtube', 'cnn', 'stackoverflow', 'washingtonpost']; +var dualSetting = ['cnn', 'stackoverflow']; +var cnnLoading = "loading"; chrome.storage.sync.get( options, function(items) { - jsonData = items.jsonData; - highlightTabs = items.highlightTabs; - tabsBackground = items.tabsBackground; - selectAll = items.selectAll; - loading = items.loading; - console.log("in sync get" + loading); - //googleSearch = items.googleSearch; - //console.log("in sync get search--" + googleSearch); - parentUrl = items.parentUrl; - //queryString = items.queryString; - //searchSites = items.searchSites; - //searchEngine = items.searchEngine; - anonymus = items.anonymus; - loadFrom = items.loadFrom; + jsonData = items.jsonData; + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; + selectAll = items.selectAll; + loading = items.loading; + console.log("in sync get" + loading); + //googleSearch = items.googleSearch; + //console.log("in sync get search--" + googleSearch); + parentUrl = items.parentUrl; + //queryString = items.queryString; + //searchSites = items.searchSites; + //searchEngine = items.searchEngine; + anonymus = items.anonymus; + //loadFrom = items.loadFrom; }); chrome.storage.local.get( options, function(items) { - googleSearch = items.googleSearch; - console.log("in sync get search--" + googleSearch); - queryString = items.queryString; - searchEngine = items.searchEngine; + googleSearch = items.googleSearch; + console.log("in sync get search--" + googleSearch); + queryString = items.queryString; + // searchEngine = items.searchEngine; }); function closeWindow (e) { - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - - window.close(); + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); } function clickHandler(e) { - //loading = true; - const allUrls = document.getElementsByName("link"); - const urlsToOpen = []; - const tabToHilite = [currentTab.index]; - const openAt = currentTab.index + 1; - var anonymusValues; - try { - if (allUrls.length === 0) { - console.log("link undefined " + allUrls); - anonymusValues = document.getElementById("anonymus").value; - const urls = anonymusValues.split('\n'); - urls.forEach(function (url) { - if (url.startsWith('http') || url.startsWith('https')) { - urlsToOpen.push(url); - } else { - throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); - //return ; - } - - }); - } else { - allUrls.forEach (function (url) { - console.log(url); - if (url.checked) { - urlsToOpen.push(url.value); - console.log("came till here"); - /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("came till here in else"); - } - }); - } - } catch (err) { - document.getElementById("error").innerHTML = err.message; - return; - } - - - console.log(urlsToOpen); - /*if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite}, function(){}); - }*/ - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - var opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); + //loading = true; + document.getElementById("openbtn").disabled = true; + const allUrls = document.getElementsByName("link"); + const urlsToOpen = []; + const tabToHilite = [currentTab.index]; + const openAt = currentTab.index + 1; + var anonymusValues; + try { + if (allUrls.length === 0) { + console.log("link undefined " + allUrls); + anonymusValues = document.getElementById("anonymus").value; + const urls = anonymusValues.split('\n'); + urls.forEach(function (url) { + if (url.startsWith('http') || url.startsWith('https')) { + urlsToOpen.push(url); + } else { + throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); + //return ; + } + + }); + } else { + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + console.log("came till here"); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("came till here in else"); + } + }); + } + } catch (err) { + document.getElementById("error").innerHTML = err.message; + return; + } + + + console.log(urlsToOpen); + /*if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); + }*/ + + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + var opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); } function selectall () { - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - if (document.getElementById('selectall').checked) { - allUrls.forEach (function (url) { - if (currentUrl !== url.value) { - url.checked = true; - url.nextSibling.nextSibling.style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("kkkkkk-" + url.value); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - /* - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(parentNode); - howmany.textContent = selNums + " selected."; - if (selNums > 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - }*/ - } else { - allUrls.forEach (function (url) { - url.checked = false; - console.log(url.parentNode); - url.nextSibling.nextSibling.style.fontWeight = "normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - /*var howmany = document.getElementById("howmany"); - howmany.textContent = "0 selected."; - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; */ - //document.getElementById('searchAgain').disabled = false; - } - - changeSelection(parentNode); + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + if (document.getElementById('selectall').checked) { + allUrls.forEach (function (url) { + if (currentUrl !== url.value) { + url.checked = true; + url.nextSibling.nextSibling.style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("kkkkkk-" + url.value); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + /* + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(parentNode); + howmany.textContent = selNums + " selected."; + if (selNums > 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + }*/ + } else { + allUrls.forEach (function (url) { + url.checked = false; + console.log(url.parentNode); + url.nextSibling.nextSibling.style.fontWeight = "normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + /*var howmany = document.getElementById("howmany"); + howmany.textContent = "0 selected."; + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; */ + //document.getElementById('searchAgain').disabled = false; + } + + changeSelection(parentNode); } function linkClick () { - console.log(this.href); - const opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); + console.log(this.href); + const opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); } function chkBoxClick (ele) { - console.log(this.labels[0].innerHTML); - var currNode = this; - var none = true; - var selectedArray = []; - if (this.checked) { - this.labels[0].style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - //var liList = this.parentNode.parentNode.childNodes; - //console.log(liList.length); - - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - none = false; - return; - } - - }); - if (none) { - console.log("only one"); - document.getElementById("sametab").disabled = false; - document.getElementById("sametabChkbx").checked = true; - } else { - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("li value-" + this.value); - /*selectedArray.push(this.value); - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - selectedArray.push(li.childNodes[0].value); - } - });*/ - var itemValue = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } else { - this.labels[0].style.fontWeight="normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { - document.getElementById("openbtn").disabled = false; - } - if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { - console.log("more than one checked"); - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } else { - document.getElementById("sametab").disabled = false; - document.getElementById("sametabChkbx").checked = true; - } - - var selItems = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { - console.log(response.farewell); - }); - }); - } - - } - changeSelection(this.parentNode.parentNode.childNodes); - //console.log("len--" + this.parentNode.parentNode.childNodes.length); + console.log(this.labels[0].innerHTML); + var currNode = this; + var none = true; + var selectedArray = []; + if (this.checked) { + this.labels[0].style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + //var liList = this.parentNode.parentNode.childNodes; + //console.log(liList.length); + + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + none = false; + return; + } + + }); + if (none) { + console.log("only one"); + document.getElementById("sametab").disabled = false; + document.getElementById("sametabChkbx").checked = true; + } else { + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("li value-" + this.value); + /*selectedArray.push(this.value); + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + selectedArray.push(li.childNodes[0].value); + } + });*/ + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } else { + this.labels[0].style.fontWeight="normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { + document.getElementById("openbtn").disabled = false; + } + if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { + console.log("more than one checked"); + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } else { + document.getElementById("sametab").disabled = false; + document.getElementById("sametabChkbx").checked = true; + } + + var selItems = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { + console.log(response.farewell); + }); + }); + } + + } + changeSelection(this.parentNode.parentNode.childNodes); + //console.log("len--" + this.parentNode.parentNode.childNodes.length); } function changeSelection (listNodes) { - - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(listNodes); - console.log(listNodes.length + "***" + selNums); - howmany.textContent = selNums + " selected."; - if (selNums === 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; - //document.getElementById('searchAgain').disabled = false; - } else { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } - console.log("selected--" + selNums + "--list len--" + listNodes.length); - if (selNums < listNodes.length) { - document.getElementById('selectall').checked = false; - } - if (selNums === listNodes.length) { - document.getElementById('selectall').checked = true; - } + + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(listNodes); + console.log(listNodes.length + "***" + selNums); + howmany.textContent = selNums + " selected."; + if (selNums === 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; + } else { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } + console.log("selected--" + selNums + "--list len--" + listNodes.length); + if (selNums < listNodes.length) { + document.getElementById('selectall').checked = false; + } + if (selNums === listNodes.length) { + document.getElementById('selectall').checked = true; + } } function howManyChecked(liNodes) { - var chked = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked ++; - } - }); - return chked; + var chked = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked ++; + } + }); + return chked; } function atleastOneChecked(liNodes) { - var chked = false; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked = true; - } - }); - - return chked; - - /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); - return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ + var chked = false; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked = true; + } + }); + + return chked; + + /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ } function moreThanOneChecked(liNodes) { - var n = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - n ++; - } - }); - if (n === 0 || n > 1 ) { - return true; - } else { - return false; - } + var n = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + n ++; + } + }); + if (n === 0 || n > 1 ) { + return true; + } else { + return false; + } } function addUrl() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - /*var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - var domain = getDomain(currentUrl); - var name = hostNameArray[1];//domain.split('.')[0]; - //var jsonObj = {};*/ - var name = getDomainName(tab.url); - let textBox = document.getElementById('anonymus'); - var newObjArr = []; - if (textBox) { - console.log(textBox.value); - if (textBox.value !== '') { - var values = textBox.value.split('\n'); - values.forEach(function (value){ - var obj = {}; - var key = getKeyFromURL(value.split('/')); - obj[key] = value; - newObjArr.push(obj); - }); - } - //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; - console.log(newObjArr); - } - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - //alert("before" + JSON.stringify(origObj)); - /*var prefForDom = origObj[fullDomain]; - if (prefForDom === undefined) { - prefForDom = origObj[name]; - }*/ - //var prefForDom = origObj[fullDomain] || origObj[name]; - var prefForDom = getPreferences(fullDomain, name, origObj); - console.log("==" + prefForDom + "--- llllllll"); - var newEntryObj = {}; - var path = url.pathname.split('/'); - var key = getKeyFromURL(path); - /*if (path.length === 0) { - //newEntryObj[name] = currentUrl; - key = name; - } else { - if (path[path.length-1].indexOf('=') === -1) { - //newEntryObj[path[path.length-1]] = currentUrl; - key = path[path.length-1]; - } else { - //newEntryObj[path[1]] = currentUrl; - key = path[1]; - } - } - if (key === '') { - key = 'Home'; - }*/ - newEntryObj[key] = currentUrl; - console.log(newEntryObj); - //if (newObjArr.length > 0) { - newObjArr.push(newEntryObj); - //} - //path[path.length]; - //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; - - console.log(path.length); - console.log("dom-" + path + "--" + path[path.length-1]); - if (prefForDom) { - console.log('in if'); - if (Array.isArray(prefForDom)) { - prefForDom.push(newEntryObj); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - options[selectedType].push(newEntryObj); - } - } - - - } else { - console.log('in else'); - //origObj[name] = [currentUrl]; - var newObj = {}; - newObj["current"] = name; - newObj["description"] = name; - newObj["sites"] = newObjArr; //[newEntryObj]; - origObj[name] = newObj; - } - //origObj[name] = [currentUrl]; - console.log(JSON.stringify(origObj)); - //jsonObj = items; - //console.log(JSON.stringify(jsonObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + /*var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + var domain = getDomain(currentUrl); + var name = hostNameArray[1];//domain.split('.')[0]; + //var jsonObj = {};*/ + var name = getDomainName(tab.url); + let textBox = document.getElementById('anonymus'); + var newObjArr = []; + if (textBox) { + console.log(textBox.value); + if (textBox.value !== '') { + var values = textBox.value.split('\n'); + values.forEach(function (value){ + var obj = {}; + var key = getKeyFromURL(value.split('/')); + obj[key] = value; + newObjArr.push(obj); + }); + } + //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; + console.log(newObjArr); + } + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + //alert("before" + JSON.stringify(origObj)); + /*var prefForDom = origObj[fullDomain]; + if (prefForDom === undefined) { + prefForDom = origObj[name]; + }*/ + //var prefForDom = origObj[fullDomain] || origObj[name]; + var prefForDom = getPreferences(fullDomain, name, origObj); + console.log("==" + prefForDom + "--- llllllll"); + var newEntryObj = {}; + var path = url.pathname.split('/'); + var key = getKeyFromURL(path); + /*if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + }*/ + newEntryObj[key] = currentUrl; + console.log(newEntryObj); + //if (newObjArr.length > 0) { + newObjArr.push(newEntryObj); + //} + //path[path.length]; + //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; + + console.log(path.length); + console.log("dom-" + path + "--" + path[path.length-1]); + if (prefForDom) { + console.log('in if'); + if (Array.isArray(prefForDom)) { + prefForDom.push(newEntryObj); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + options[selectedType].push(newEntryObj); + } + } + + + } else { + console.log('in else'); + //origObj[name] = [currentUrl]; + var newObj = {}; + newObj["current"] = name; + newObj["description"] = name; + newObj["sites"] = newObjArr; //[newEntryObj]; + origObj[name] = newObj; + } + //origObj[name] = [currentUrl]; + console.log(JSON.stringify(origObj)); + //jsonObj = items; + //console.log(JSON.stringify(jsonObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); } function getKeyFromURL (path) { - //var path = url.pathname.split('/'); - console.log(path); - var key; - if (path.length === 0) { - //newEntryObj[name] = currentUrl; - key = name; - } else { - if (path[path.length-1].indexOf('=') === -1) { - //newEntryObj[path[path.length-1]] = currentUrl; - key = path[path.length-1]; - } else { - //newEntryObj[path[1]] = currentUrl; - key = path[1]; - } - } - if (key === '') { - key = 'Home'; - } - return key; + //var path = url.pathname.split('/'); + console.log(path); + var key; + if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + } + return key; } function searchAgain () { - var urlSite = ''; - var selectedSite = getSearchSite(); - var selSiteArr; - var idx = currentTab.index + 1; - if (selectedSite.indexOf(',') > -1) { - selSiteArr = selectedSite.split(','); - selSiteArr.forEach(function(selSite){ - if (selSite.indexOf('yahoo') > -1) { - urlSite = selSite + 'search;?p=' + queryString; - } else { - urlSite = selSite + 'search?q=' + queryString; - } - - chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { - idx ++; - }); - }); - } else { - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + queryString; - } else { - urlSite = selectedSite + 'search?q=' + queryString; - } - chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { - - }); - //chrome.tabs.update(currentTab.id, {url: urlSite}); - } - - window.close(); + var urlSite = ''; + var selectedSite = getSearchSite(); + var selSiteArr; + var idx = currentTab.index + 1; + if (selectedSite.indexOf(',') > -1) { + selSiteArr = selectedSite.split(','); + selSiteArr.forEach(function(selSite){ + if (selSite.indexOf('yahoo') > -1) { + urlSite = selSite + 'search;?p=' + queryString; + } else { + urlSite = selSite + 'search?q=' + queryString; + } + + chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { + idx ++; + }); + }); + } else { + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + queryString; + } else { + urlSite = selectedSite + 'search?q=' + queryString; + } + chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { + + }); + //chrome.tabs.update(currentTab.id, {url: urlSite}); + } + + window.close(); } function getSearchSite() { - var selectedSite; - var site = document.getElementsByName("site"); - for(var i = 0; i < site.length; i++) { - if(site[i].checked) { - selectedSite = site[i].value; - - if (!selectedSite.endsWith('/')) { - selectedSite = selectedSite + '/'; - } - } - } - - return selectedSite; + var selectedSite; + var site = document.getElementsByName("site"); + for(var i = 0; i < site.length; i++) { + if(site[i].checked) { + selectedSite = site[i].value; + + if (!selectedSite.endsWith('/')) { + selectedSite = selectedSite + '/'; + } + } + } + + return selectedSite; } function sortListDir() { - var list, i, switching, b, shouldSwitch, dir, switchcount = 0; - list = document.getElementById("orderedList"); - switching = true; - //Set the sorting direction to ascending: - dir = "asc"; - //Make a loop that will continue until no switching has been done: - while (switching) { - //start by saying: no switching is done: - switching = false; - b = list.getElementsByTagName("LI"); - //Loop through all list-items: - for (i = 0; i < (b.length - 1); i++) { - //start by saying there should be no switching: - shouldSwitch = false; - /*check if the next item should switch place with the current item, - based on the sorting direction (asc or desc):*/ - if (dir == "asc") { - if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically lower than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; + var list, i, switching, b, shouldSwitch, dir, switchcount = 0; + list = document.getElementById("orderedList"); + switching = true; + //Set the sorting direction to ascending: + dir = "asc"; + //Make a loop that will continue until no switching has been done: + while (switching) { + //start by saying: no switching is done: + switching = false; + b = list.getElementsByTagName("LI"); + //Loop through all list-items: + for (i = 0; i < (b.length - 1); i++) { + //start by saying there should be no switching: + shouldSwitch = false; + /*check if the next item should switch place with the current item, + based on the sorting direction (asc or desc):*/ + if (dir == "asc") { + if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically lower than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; + } + } else if (dir == "desc") { + if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically higher than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; + } + } } - } else if (dir == "desc") { - if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically higher than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; + if (shouldSwitch) { + /*If a switch has been marked, make the switch + and mark that a switch has been done:*/ + b[i].parentNode.insertBefore(b[i + 1], b[i]); + switching = true; + //Each time a switch is done, increase switchcount by 1: + switchcount ++; + } else { + /*If no switching has been done AND the direction is "asc", + set the direction to "desc" and run the while loop again.*/ + if (switchcount === 0 && dir == "asc") { + dir = "desc"; + switching = true; + + } } - } } - if (shouldSwitch) { - /*If a switch has been marked, make the switch - and mark that a switch has been done:*/ - b[i].parentNode.insertBefore(b[i + 1], b[i]); - switching = true; - //Each time a switch is done, increase switchcount by 1: - switchcount ++; - } else { - /*If no switching has been done AND the direction is "asc", - set the direction to "desc" and run the while loop again.*/ - if (switchcount === 0 && dir == "asc") { - dir = "desc"; - switching = true; - - } - } - } - chngSortBtnValue(); + chngSortBtnValue(); } function chngSortBtnValue() { - var sortImg = document.getElementById('sortListDir'); - console.log(sortImg.getAttribute('src')); - if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { - //sortImg.nextSibling.textContent = "Sort Z to A"; - sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); - } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { - //sortImg.nextSibling.textContent = "Sort A to Z"; - sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); - } + var sortImg = document.getElementById('sortListDir'); + console.log(sortImg.getAttribute('src')); + if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { + //sortImg.nextSibling.textContent = "Sort Z to A"; + sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); + } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { + //sortImg.nextSibling.textContent = "Sort A to Z"; + sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); + } } function searchInSite (queryString) { - var urlSite = ''; - var searchText = document.getElementById('searchTextBox').value; - console.log(searchText); - if (searchText) { - var url = new URL(currentUrl); - - var selectedSite = getSearchSite(); - - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; - } else { - urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; - } - - chrome.tabs.update(currentTab.id, {url: urlSite}); - - } - window.close(); + var urlSite = ''; + var searchText = document.getElementById('searchTextBox').value; + console.log(searchText); + if (searchText) { + var url = new URL(currentUrl); + + var selectedSite = getSearchSite(); + + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; + } else { + urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; + } + + chrome.tabs.update(currentTab.id, {url: urlSite}); + + } + window.close(); } document.addEventListener('beforeunload', function (event) { - console.log("unload.."); - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - - window.close(); + console.log("unload.."); + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); }, true); function saveSelection() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var name = getDomainName(tab.url); - - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - var prefForDom = getPreferences(fullDomain, name, origObj); - - if (prefForDom) { - if (Array.isArray(prefForDom)) { - const allUrls = document.getElementsByName("link"); - allUrls.forEach (function (url) { - console.log("chkd--" + url.checked); - console.log("val--" + url.value); - console.log(url.labels[0].innerText); - console.log(JSON.stringify(prefForDom)); - console.log(prefForDom.length + "---long"); - var label = url.labels[0].innerText; - //if (label) //need to remove (currentTab from label) - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < prefForDom.length; i++) { - if (typeof prefForDom[i] === 'object') { - console.log(prefForDom[i]) ; - if (Object.keys(prefForDom[i])[0] === label) { - if (typeof Object.values(prefForDom[i])[0] === 'object') { - prefForDom[i][label]['selected'] = url.checked; - } else { - prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; - } - - } - } else { - if (prefForDom[i] === url.value) { - prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - const allUrls = document.getElementsByName("link"); - - allUrls.forEach (function (url) { - var label = url.labels[0].innerText; - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < allTypes.length; i++) { - //console.log("vaan" + JSON.stringify(allTypes[i])); - if (typeof allTypes[i] === 'object') { - if (Object.keys(allTypes[i])[0] === label) { - if (typeof Object.values(allTypes[i])[0] === 'object') { - prefForDom[selectedType][i][label]['selected'] = url.checked; - } else { - prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; - } - - } - } else { - if (allTypes[i] === url.value) { - prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); - } - } - } - console.log(JSON.stringify(origObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); - - /*const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode);*/ + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var name = getDomainName(tab.url); + + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + var prefForDom = getPreferences(fullDomain, name, origObj); + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + const allUrls = document.getElementsByName("link"); + allUrls.forEach (function (url) { + console.log("chkd--" + url.checked); + console.log("val--" + url.value); + console.log(url.labels[0].innerText); + console.log(JSON.stringify(prefForDom)); + console.log(prefForDom.length + "---long"); + var label = url.labels[0].innerText; + //if (label) //need to remove (currentTab from label) + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < prefForDom.length; i++) { + if (typeof prefForDom[i] === 'object') { + console.log(prefForDom[i]) ; + if (Object.keys(prefForDom[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[i][label]['selected'] = url.checked; + } else { + prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; + } + + } + } else { + if (prefForDom[i] === url.value) { + prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + const allUrls = document.getElementsByName("link"); + + allUrls.forEach (function (url) { + var label = url.labels[0].innerText; + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < allTypes.length; i++) { + //console.log("vaan" + JSON.stringify(allTypes[i])); + if (typeof allTypes[i] === 'object') { + if (Object.keys(allTypes[i])[0] === label) { + if (typeof Object.values(allTypes[i])[0] === 'object') { + prefForDom[selectedType][i][label]['selected'] = url.checked; + } else { + prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; + } + + } + } else { + if (allTypes[i] === url.value) { + prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } + } + } + console.log(JSON.stringify(origObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); + + /*const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode);*/ } function editTextArea () { - let txtAreaContent = this.value; - console.log("in txt are" + txtAreaContent); - if (txtAreaContent === '') { - document.getElementById('openbtn').disabled = true; - document.getElementById("error").innerHTML = ""; - } else { - document.getElementById('openbtn').disabled = false; - } + let txtAreaContent = this.value; + console.log("in txt are" + txtAreaContent); + if (txtAreaContent === '') { + document.getElementById('openbtn').disabled = true; + document.getElementById("error").innerHTML = ""; + } else { + document.getElementById('openbtn').disabled = false; + } } + +function findInArray(array, item) { + //var found = false; + for (var x = 0; x < array.length; x ++) { + console.log(array[x] + " ---" + item); + console.log(array[x].indexOf(item)); + + if (item.indexOf(array[x]) > -1) { + //found = true; + //return found; + + return true; + } + } + return false; +} + document.addEventListener('DOMContentLoaded', function () { - /* var bgPage = chrome.extension.getBackgroundPage(); - console.log("before"); + /* var bgPage = chrome.extension.getBackgroundPage(); + console.log("before"); var bk = bgPage.test("abc"); // Here paste() is a function that returns value. - console.log("beforeAAA--" + bk);*/ - document.getElementById('mainStuff').hidden = true; - document.getElementById('cancelbtn').addEventListener('click', closeWindow); - document.getElementById('openbtn').addEventListener('click', clickHandler); - document.getElementById('selectall').addEventListener('click', selectall); - document.getElementById('addbtn').addEventListener('click', addUrl); - document.getElementById('savebtn').addEventListener('click', saveSelection); - //document.getElementById('searchAgain').addEventListener('click', searchAgain); - document.getElementById('sortListDir').addEventListener('click', sortListDir); - //document.getElementById('searchbtn').addEventListener('click', searchInSite); - onclick="()"; - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - var content = document.getElementById('content'); + console.log("beforeAAA--" + bk);*/ + document.getElementById('mainStuff').hidden = true; + document.getElementById('cancelbtn').addEventListener('click', closeWindow); + document.getElementById('openbtn').addEventListener('click', clickHandler); + document.getElementById('selectall').addEventListener('click', selectall); + document.getElementById('addbtn').addEventListener('click', addUrl); + document.getElementById('savebtn').addEventListener('click', saveSelection); + //document.getElementById('searchAgain').addEventListener('click', searchAgain); + document.getElementById('sortListDir').addEventListener('click', sortListDir); + //document.getElementById('searchbtn').addEventListener('click', searchInSite); + //onclick="()"; + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + var content = document.getElementById('content'); //chrome.storage.sync.set({loading: false}, function() {}); - //chrome.storage.sync.set({parentUrl: ""}, function() {}); - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - if (currentUrl === "chrome://newtab/") { - //window.close(); - //return; - newtab = true; - } else { - newtab = false; - } - - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - //var domain = getDomain(currentUrl); - var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; - console.log("currentUrl --" + currentUrl); - console.log("name --" + name); - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - if (loading) { - window.close(); - return; - } - var prefForDom; - console.log("test--" + isFromSearch(currentUrl)); - console.log("loadFrom-" + loadFrom); - var fromPage = true; - if (loadFrom === 'config' && searchSite.indexOf(url.hostname) === -1) { - fromPage = false; - } - if (!newtab) { - if (fromPage) { - if (readPage.indexOf (url.hostname) > -1 || isFromSearch(currentUrl)) { - console.log("inside google"); - if (googleSearch === undefined || Object.keys(googleSearch).length === 0) { - //console.log("google seach list is empty"); - //window.close(); - //return; - var text = document.createTextNode("No previous search results found. Please try a fresh search."); - document.getElementById('openbtn').disabled = true; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').disabled = true; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').disabled = true; - console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); - - //document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('searchAgain').hidden = "hidden"; - //document.getElementById('addbtn').hidden = ""; - content.appendChild(text); - return; - - } - console.log("Check1 " + JSON.stringify(googleSearch)); - prefForDom = googleSearch; - console.log("check2-" + prefForDom + "-"); - document.getElementById('addbtn').disabled = true; - document.getElementById('savebtn').disabled = true; - //document.getElementById('searchbtn').hidden = "hidden"; - //document.getElementById('searchText').hidden = "hidden"; - content.style.width = "600px"; - document.getElementById('body').style.width = "603px"; - searchPage = true; - if (googleSearch === "") { - console.log("Search list is empty"); - } - var engineName = getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - var div = document.createElement('div'); - div.setAttribute("align", "center"); - var engineLogo = document.createElement("IMG"); - console.log("get favicon--" + searchEngine); - engineLogo.setAttribute("src", 'chrome://favicon/'+ searchEngine); - //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); - engineLogo.style.cssFloat = 'middle'; - div.appendChild(engineLogo); - //var domain = getDomain(searchEngine); - //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - - var searchEngineTxt = document.createTextNode(" " + engineName + " results."); - div.appendChild(searchEngineTxt); - content.appendChild(div); - } - } - - - if (prefForDom === undefined) { - prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; - //content.style.width = "200px"; - //ocument.getElementById('searchAgain').hidden = "hidden"; - searchPage = false; - } - - - - - console.log(jsonData); - console.log(prefForDom); - if(prefForDom){ - //console.log(typeof allurls); - if (Array.isArray(prefForDom)) { - console.log("pref dom is an array"); - if (prefForDom.length > 0) { - content.appendChild(createList(prefForDom)); - } else { - noConfigFound(content); - } - } else { - content.appendChild(createDropDown(prefForDom, name)); - var label = document.createElement('label'); - var txt = document.createTextNode("Options "); - label.setAttribute("for", "typeSelect"); - label.appendChild(txt); - label.style.marginLeft = "25px"; - content.insertBefore(label,document.getElementById("typeSelect")); - var type = document.getElementById("typeSelect"); - //type.style.marginLeft = "25px"; - var selectedType = type.options[type.selectedIndex].value; - content.appendChild(createList(prefForDom[selectedType])); - } - //document.getElementsByName("link").addEventListener('click', chkBoxClick); - if (selectAll && searchPage) { - document.getElementById('selectall').checked = true; - } - createRadio(content); - //document.getElementById('addbtn').hidden = "hidden"; - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode); - } else { - console.log("domain not set..."); - noConfigFound(content); - /*var text = document.createTextNode("Domain not set in preference."); - document.getElementById('openbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - document.getElementById('anonymus').hidden = ""; - content.appendChild(text);*/ - - } - - - } else { - var mesg = "Bank Page."; - noConfigFound(content, mesg); - } - - - - }); - - var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('utube.json')); - xhr.responseType = "text"; - - xhr.onreadystatechange = function() { - console.log("here"); - if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { - //console.log(xhr.responseText); - //utubeData = xhr.responseText; - utubeData = JSON.parse(xhr.responseText); - console.log(utubeData); - if (utubeData !== undefined) { - var adStuff = document.getElementById('adStuff'); - //var utubeData = chrome.runtime.getURL("utube.json"); - console.log(utubeData); - var keys = Object.keys(utubeData); - var ranNum = randomIntFromInterval(0, 9); - console.log("Me random" + ranNum); - var utube = document.createElement('a'); - utube.textContent = keys[ranNum]; - utube.href = utubeData[keys[ranNum]]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - /*keys.forEach(function (key) { - //console.log(data); - var utube = document.createElement('a'); - utube.textContent = key; - utube.href = utubeData[key]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - });*/ - - } - } - }; - xhr.send(); - // - - //console.log("margin" + document.getElementById("selectall").style.margin); - /*var delayMillis = 10000; //1 second - - setTimeout(function() { - //your code to be executed after 1 second - - }, delayMillis);*/ - document.getElementById('mainStuff').hidden = false; - document.getElementById('progress').hidden = true; + //chrome.storage.sync.set({parentUrl: ""}, function() {}); + /*if (cnnLoading === 'loading') { + window.close(); + return; + }*/ + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {exec:true}, function(response) { + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + if (currentUrl === "chrome://newtab/") { + //window.close(); + //return; + newtab = true; + } else { + newtab = false; + } + + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + //var domain = getDomain(currentUrl); + var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; + console.log("currentUrl --" + currentUrl); + console.log("name --" + name); + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + if (loading) { + window.close(); + return; + } + var prefForDom; + //console.log("test--" + isFromSearch(currentUrl)); + console.log("loadFrom-" + loadFrom); + console.log("going to else part -- " + JSON.stringify(tab)); + var fromPage = true; + if (findInArray(dualSetting, url.hostname)) { + //if (loadFrom === 'config') { + fromPage = false; + //} + createLoadOptions(content, "config"); + + } + + if (!newtab) { + if (fromPage) { + console.log("from page" + name); + console.log(findInArray(readPage, url.hostname) + "---" + readPage.indexOf(url.hostname)); + if (findInArray(readPage, url.hostname) > -1 || isFromSearch(currentUrl)) { + console.log("inside google"); + searchEngine = name; + //to do run content script from here //move this to top, put every thing inside callbak + + + if (googleSearch === undefined || Object.keys(googleSearch).length === 0){ // || searchEngine.indexOf(url.hostname) === -1 + //console.log("google seach list is empty"); + //window.close(); + //return; + var text = document.createTextNode("No previous search results found. Please try a fresh search."); + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); + + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('addbtn').hidden = ""; + content.appendChild(text); + return; + + } + console.log("Check1 " + JSON.stringify(googleSearch)); + prefForDom = googleSearch[name]; + console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').disabled = true; + document.getElementById('savebtn').disabled = true; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + + var engineName = name; //getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + name); + engineLogo.setAttribute("src", 'chrome://favicon/'+ name); //searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + } + } + + + if (prefForDom === undefined) { + prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //content.style.width = "200px"; + //ocument.getElementById('searchAgain').hidden = "hidden"; + searchPage = false; + } + + + + + console.log(jsonData); + console.log(prefForDom); + if(prefForDom){ + //console.log(typeof allurls); + loadList(prefForDom, content, name); + } else { + console.log("domain not set..."); + noConfigFound(content); + /*var text = document.createTextNode("Domain not set in preference."); + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + document.getElementById('anonymus').hidden = ""; + content.appendChild(text);*/ + + } + + } else { + var mesg = "Bank Page."; + noConfigFound(content, mesg); + } + }); + + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('utube.json')); + xhr.responseType = "text"; + + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + //console.log(xhr.responseText); + //utubeData = xhr.responseText; + utubeData = JSON.parse(xhr.responseText); + console.log(utubeData); + if (utubeData !== undefined) { + var adStuff = document.getElementById('adStuff'); + //var utubeData = chrome.runtime.getURL("utube.json"); + console.log(utubeData); + var keys = Object.keys(utubeData); + var ranNum = randomIntFromInterval(0, 9); + console.log("Me random" + ranNum); + var utube = document.createElement('a'); + utube.textContent = keys[ranNum]; + utube.href = utubeData[keys[ranNum]]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + /*keys.forEach(function (key) { + //console.log(data); + var utube = document.createElement('a'); + utube.textContent = key; + utube.href = utubeData[key]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + });*/ + + } + } + }; + xhr.send(); + // + + //console.log("margin" + document.getElementById("selectall").style.margin); + /*var delayMillis = 10000; //1 second + + setTimeout(function() { + //your code to be executed after 1 second + + }, delayMillis);*/ + document.getElementById('mainStuff').hidden = false; + document.getElementById('progress').hidden = true; + console.log(response.farewell); + }); + }); + }); +function createLoadOptions(content, sele) { + var loadDiv = document.createElement("div"); + loadDiv.style.width = '300px'; + var label = document.createElement("label"); + label.innerHTML = "Load from "; + label.style.marginLeft = "25px"; + loadDiv.appendChild(label); + + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", "config"); + radio.setAttribute("name", "loadFrom"); + if (sele === 'config') + radio.checked = true; + radio.onclick = updateList; + + label = document.createElement("label"); + label.innerHTML = "Config"; + + loadDiv.appendChild(radio); + loadDiv.appendChild(label); + + radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", "page"); + radio.setAttribute("name", "loadFrom"); + if (sele === 'page') + radio.checked = true; + + label = document.createElement("label"); + label.innerHTML = "Page"; + console.log("i m ann"); + radio.onclick = updateList; + loadDiv.appendChild(radio); + loadDiv.appendChild(label); + content.appendChild(loadDiv); + +} + +function updateList(ele) { + + console.log(ele.srcElement.value); + if (ele.srcElement.value === 'page') { + var content = document.getElementById('content'); + while (content.hasChildNodes()) { + content.removeChild(content.firstChild); + } + var searchContent = document.getElementById('searchContent'); + while (searchContent.hasChildNodes()) { + searchContent.removeChild(searchContent.firstChild); + } + createLoadOptions(content, "page"); + var name = getDomainName(currentUrl); + //prefForDom = googleSearch; + //console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').disabled = true; + document.getElementById('savebtn').disabled = true; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + var engineName = name;//getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + name); + engineLogo.setAttribute("src", 'chrome://favicon/'+ name); //searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + loadList(googleSearch[name], content, name); + } else if (ele.srcElement.value === 'config'){ + console.log("config part"); + var content = document.getElementById('content'); + while (content.hasChildNodes()) { + content.removeChild(content.firstChild); + } + var searchContent = document.getElementById('searchContent'); + while (searchContent.hasChildNodes()) { + searchContent.removeChild(searchContent.firstChild); + } + createLoadOptions(content, "config"); + var url = new URL(currentUrl); + var name = getDomainName(currentUrl); + searchPage = false; + content.style.width = "200px"; + document.getElementById('body').style.width = "400px"; + document.getElementById('addbtn').disabled = false; + document.getElementById('savebtn').disabled = false; + loadList(getPreferences(url.hostname, name), content, name); + } + + //content.removeAll(); + +} + function noConfigFound(content, msg) { - console.log("domain not set..."); - var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; - if (msg) { - textContent = msg + textContent; - document.getElementById('addbtn').disabled = true; - } else { - textContent = "Domain not set in preference." + textContent; - } - const divTxt = document.createElement("div"); - var pre = document.createElement("PRE"); - var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); - pre.appendChild(text); - divTxt.style.marginLeft = "25px"; - document.getElementById('openbtn').disabled = true; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').disabled = true; - //document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').disabled = true; - //document.getElementById('sortListDir').nextSibling.nodeValue = ""; - - document.getElementById('savebtn').disabled = true; - document.getElementById('anonymus').hidden = ""; - if (anonymus) { - document.getElementById('anonymus').value = anonymus; - document.getElementById('openbtn').disabled = false; - } - document.getElementById('anonymus').onkeyup = editTextArea; - - - divTxt.appendChild(pre); - content.appendChild(divTxt); - + console.log("domain not set..."); + var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; + if (msg) { + textContent = msg + textContent; + document.getElementById('addbtn').disabled = true; + } else { + textContent = "Domain not set in preference." + textContent; + } + const divTxt = document.createElement("div"); + var pre = document.createElement("PRE"); + var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); + pre.appendChild(text); + divTxt.style.marginLeft = "25px"; + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + //document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + + document.getElementById('savebtn').disabled = true; + document.getElementById('anonymus').hidden = ""; + if (anonymus) { + document.getElementById('anonymus').value = anonymus; + document.getElementById('openbtn').disabled = false; + } + document.getElementById('anonymus').onkeyup = editTextArea; + + + divTxt.appendChild(pre); + content.appendChild(divTxt); + } function createRadio(content) { - //var engDom = getDomain(searchEngine); - //var engine = engDom.split('.')[0]; - //var engineUrl = new URL(searchEngine); - //console.log("url hostname eng-" + engineUrl.hostname); - var engine; - if (searchPage) { - engine = getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; - } - - var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' - - var searchContent = document.getElementById('searchContent'); - - var searchDiv = document.createElement('searchDiv'); - searchDiv.id = "searchDiv"; - searchDiv.style.margin = "0px 0px 0px 25px"; - searchDiv.style.width = '300px'; - - var searchLbl = document.createElement('label'); - searchLbl.innerHTML = "search in"; - searchLbl.style.marginLeft = "25px"; - searchContent.appendChild(searchLbl); - var br = document.createElement('br'); - searchContent.appendChild(br); - /*var margin = true;*/ - - var both; - - sitesArr.forEach(function (site) { - var url = new URL(site); - console.log("url hostname-" + url.hostname); - var name = getDomainName(site);//url.hostname.split('.')[1]; - //var domain = getDomain(site); - //var name = domain.split('.')[0]; - console.log("name " + name); - console.log("engg " + engine); - if (searchPage && name === engine) { - return; - } - - both = both ? both + "," + site : site; - console.log("both " + both); - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", site); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - //radio.setAttribute("id", "site"); - //radio.style.marginLeft = "10px"; - console.log("site " + site); - console.log("eng " + searchEngine); - /*var url = new URL(site); - var fullDomain = url.hostname;*/ - var label = document.createElement("label"); - label.innerHTML = name; - //content.appendChild(radio); - //content.appendChild(label); - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchContent.appendChild(searchDiv); - - - }); - - - var searchAgainBtn = document.createElement('input'); - searchAgainBtn.setAttribute("type", "button"); - selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; - if (searchPage) { - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", both); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - var label = document.createElement("label"); - label.innerHTML = "Both"; - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchAgainBtn.setAttribute("id", "searchAgain"); - searchAgainBtn.setAttribute("value", "Search Again"); - searchAgainBtn.onclick = searchAgain; - } else { - var searchAgainTxt = document.createElement('input'); - searchAgainTxt.setAttribute("type", "text"); - searchAgainTxt.setAttribute("id", "searchTextBox"); - selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; - searchAgainTxt.style.marginLeft = "25px"; - searchDiv.appendChild(searchAgainTxt); - searchAgainBtn.setAttribute("id", "searchbtn"); - searchAgainBtn.setAttribute("value", "Search"); - searchAgainBtn.onclick = searchInSite; - } - searchAgainBtn.style.marginLeft = '2px'; - searchDiv.appendChild(searchAgainBtn); - - searchContent.appendChild(searchDiv); - - /*if (selectAll) { - const allUrls = document.getElementsByName("link"); - if (allUrls.length > -1) { - if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { - //radio.disabled = true; - searchAgainBtn.disabled = true; - document.getElementsByName('site')[0].style.disabled = true; - document.getElementsByName('site')[1].style.disabled = true; - document.getElementsByName('site')[2].style.disabled = true; - if (!searchPage) { - document.getElementById('searchTextBox').style.disabled = true; - } - } - - } - }*/ - - + //var engDom = getDomain(searchEngine); + //var engine = engDom.split('.')[0]; + //var engineUrl = new URL(searchEngine); + //console.log("url hostname eng-" + engineUrl.hostname); + var engine; + if (searchPage) { + //console.log(searchEngine + currentUrl); + engine = searchEngine; //getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + } + + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' + + var searchContent = document.getElementById('searchContent'); + + var searchDiv = document.createElement('div'); + searchDiv.id = "searchDiv"; + searchDiv.style.margin = "0px 0px 0px 25px"; + searchDiv.style.width = '300px'; + + var searchLbl = document.createElement('label'); + searchLbl.innerHTML = "search in"; + searchLbl.style.marginLeft = "25px"; + searchContent.appendChild(searchLbl); + var br = document.createElement('br'); + searchContent.appendChild(br); + /*var margin = true;*/ + + var both; + + sitesArr.forEach(function (site) { + var url = new URL(site); + console.log("url hostname-" + url.hostname); + var name = getDomainName(site);//url.hostname.split('.')[1]; + //var domain = getDomain(site); + //var name = domain.split('.')[0]; + console.log("name " + name); + console.log("engg " + engine); + if (searchPage && name === engine) { + return; + } + + both = both ? both + "," + site : site; + console.log("both " + both); + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", site); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + //radio.setAttribute("id", "site"); + //radio.style.marginLeft = "10px"; + console.log("site " + site); + console.log("eng " + searchEngine); + /*var url = new URL(site); + var fullDomain = url.hostname;*/ + var label = document.createElement("label"); + label.innerHTML = name; + //content.appendChild(radio); + //content.appendChild(label); + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchContent.appendChild(searchDiv); + + + }); + + + var searchAgainBtn = document.createElement('input'); + searchAgainBtn.setAttribute("type", "button"); + selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; + if (searchPage) { + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", both); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + var label = document.createElement("label"); + label.innerHTML = "Both"; + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchAgainBtn.setAttribute("id", "searchAgain"); + searchAgainBtn.setAttribute("value", "Search Again"); + searchAgainBtn.onclick = searchAgain; + } else { + var searchAgainTxt = document.createElement('input'); + searchAgainTxt.setAttribute("type", "text"); + searchAgainTxt.setAttribute("id", "searchTextBox"); + selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; + //fsearchAgainTxt.style.marginLeft = "25px"; + searchDiv.appendChild(searchAgainTxt); + searchAgainBtn.setAttribute("id", "searchbtn"); + searchAgainBtn.setAttribute("value", "Search"); + searchAgainBtn.onclick = searchInSite; + } + searchAgainBtn.style.marginLeft = '2px'; + searchDiv.appendChild(searchAgainBtn); + + searchContent.appendChild(searchDiv); + + /*if (selectAll) { + const allUrls = document.getElementsByName("link"); + if (allUrls.length > -1) { + if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { + //radio.disabled = true; + searchAgainBtn.disabled = true; + document.getElementsByName('site')[0].style.disabled = true; + document.getElementsByName('site')[1].style.disabled = true; + document.getElementsByName('site')[2].style.disabled = true; + if (!searchPage) { + document.getElementById('searchTextBox').style.disabled = true; + } + } + + } + }*/ + + } function randomIntFromInterval(min,max) @@ -1178,263 +1296,266 @@ function randomIntFromInterval(min,max) } function getPreferences(url_hostname, name, dataObj) { - if (dataObj === undefined) { - dataObj = jsonData; - } - console.log(url_hostname + " -- " + name ); - let pref;// = []; - for (var item in dataObj) { - let domain; - domain = dataObj[item]['current']; - console.log("DOMAIN--" + domain); - if (domain.indexOf(',') === -1) { - console.log("in no comma"); - //pref = []; - //if (domain === url_hostname || domain === name) { - if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { - console.log("name matched....") - if (domain.indexOf('http://') !== -1) { - baseUrl = domain; - } else { - baseUrl = 'http://' + domain; - } - var sites = dataObj[item]['sites']; - pref = sites; - console.log("sites--" + sites); - } - console.log("in get pref " + JSON.stringify(pref)); - } else { - var domArr = domain.split(','); - domArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[item]['sites']; - } - }); - console.log("in get pref " + pref); - } - } - console.log(pref); - return pref; - -} + if (dataObj === undefined) { + dataObj = jsonData; + } + console.log(url_hostname + " -- " + name ); + let pref;// = []; + for (var item in dataObj) { + let domain; + domain = dataObj[item]['current']; + console.log("DOMAIN--" + domain); + if (domain.indexOf(',') === -1) { + console.log("in no comma"); + //pref = []; + //if (domain === url_hostname || domain === name) { + if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { + console.log("name matched....") + if (domain.indexOf('http://') !== -1) { + baseUrl = domain; + } else { + baseUrl = 'http://' + domain; + } + var sites = dataObj[item]['sites']; + pref = sites; + console.log("sites--" + sites); + } + console.log("in get pref " + JSON.stringify(pref)); + } else { + var domArr = domain.split(','); + domArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[item]['sites']; + } + }); + console.log("in get pref " + pref); + } + } + console.log(pref); + return pref; + +} function createList(allurls) { - - var list = document.createElement("OL"); - list.setAttribute("type", "1"); - list.setAttribute("id", "orderedList"); - //list.setAttribute("") - if (!searchPage) { - list.style.width = "100%"; - selectAll = true; - } - list.style.align = "right"; - - var i=1; - var value=""; - var bgColor = "#EDEEED"; //"#F4F6F7"; - - allurls.forEach(function(page) { - console.log("in createList " + JSON.stringify(page)); - //console.log(Object.keys(page)); - //console.log(Object.values(page)); - var input = document.createElement("INPUT"); - input.setAttribute("type", "checkbox"); - var label = document.createElement('label'); - - var linkObj, key, url; - if (typeof page === 'object') { - console.log("has key value"); - - if (typeof Object.values(page)[0] === 'object') { - url = Object.values(page)[0]; - linkObj = url.url; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - input.setAttribute("Alt", url.alt); - if (currentUrl !== linkObj && url.selected !== false) { // && selectAll - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("llll" + label.getText); - } - } else { - linkObj = Object.values(page)[0]; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - console.log("in else"); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - } - - key = Object.keys(page)[0]; - } else { - var pageParts = page.split('/'); - console.log(pageParts.length); - console.log(pageParts[pageParts.length - 1] ); - linkObj = page; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; - input.setAttribute("value", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - - } - input.setAttribute("name", "link"); - if (currentUrl === linkObj) { - key = key + "(Current Tab)"; - console.log("kkk"+key); - document.getElementById('addbtn').disabled = true; - } - var id = key; //Object.keys(page)[0]; - input.setAttribute("id", id); - input.onclick = chkBoxClick; - label.htmlFor = id; - - console.log("linkObj--" + linkObj); - console.log("currentUrl--" + currentUrl); - - - //var linkObj = Object.values(page)[0]; - - - - var li = document.createElement("LI"); - li.style.backgroundColor = bgColor; - if (searchPage) - li.style.margin = "10px 0"; - - //li.setAttribute("background-color" , "#FFFEEC"); - var logo = document.createElement("IMG"); - console.log("link " + Object.values(page)[0]); - logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); - logo.setAttribute("width", "20"); - logo.setAttribute("height", "12"); - - var link = document.createElement('a'); - link.textContent = id; - link.href = linkObj; //Object.values(page)[0]; - link.title = linkObj; - link.onclick = linkClick; - label.appendChild(link); - - - list.appendChild(li); - li.appendChild(input); - li.appendChild(logo); - li.appendChild(label); - //list.appendChild(input); - //list.appendChild(logo); - //list.appendChild(label); - //var line = document.createElement('br'); - //list.appendChild(line); - if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" - bgColor = "#FFFFFF"; - } else { - bgColor = "#EDEEED"; //"#F4F6F7"; - } - }); - /*var howmany = document.getElementById("howmany"); - if (selectAll) { - howmany.textContent = allurls.length + " selected."; - } else { - howmany.textContent = "0 selected."; - }*/ - return list; - - + + var list = document.createElement("OL"); + list.setAttribute("type", "1"); + list.setAttribute("id", "orderedList"); + //list.setAttribute("") + if (!searchPage) { + list.style.width = "100%"; + selectAll = true; + } + list.style.align = "right"; + + var i=1; + var value=""; + var bgColor = "#EDEEED"; //"#F4F6F7"; + + allurls.forEach(function(page) { + console.log("in createList " + JSON.stringify(page)); + //console.log(Object.keys(page)); + //console.log(Object.values(page)); + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + var label = document.createElement('label'); + + var linkObj, key, url; + if (typeof page === 'object') { + console.log("has key value"); + if (Object.keys(page).length > 0){ //todo remove this condition 291217 ..any empty obj got into the jsonObj for washington post....due to which popup dint load...ths was added to handle that + if (typeof Object.values(page)[0] === 'object') { + url = Object.values(page)[0]; + linkObj = url.url; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + input.setAttribute("Alt", url.alt); + if (currentUrl !== linkObj && url.selected !== false) { // && selectAll + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("llll" + label.getText); + } + } else { + linkObj = Object.values(page)[0]; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + console.log("in else"); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + } + + key = Object.keys(page)[0]; + + } + + } else { + var pageParts = page.split('/'); + console.log(pageParts.length); + console.log(pageParts[pageParts.length - 1] ); + linkObj = page; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; + input.setAttribute("value", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + + } + input.setAttribute("name", "link"); + if (currentUrl === linkObj) { + key = key + "(Current Tab)"; + console.log("kkk"+key); + document.getElementById('addbtn').disabled = true; + } + var id = key; //Object.keys(page)[0]; + input.setAttribute("id", id); + input.onclick = chkBoxClick; + label.htmlFor = id; + + console.log("linkObj--" + linkObj); + console.log("currentUrl--" + currentUrl); + + + //var linkObj = Object.values(page)[0]; + + + + var li = document.createElement("LI"); + li.style.backgroundColor = bgColor; + if (searchPage) + li.style.margin = "10px 0"; + + //li.setAttribute("background-color" , "#FFFEEC"); + var logo = document.createElement("IMG"); + console.log("link " + Object.values(page)[0]); + logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); + logo.setAttribute("width", "20"); + logo.setAttribute("height", "12"); + + var link = document.createElement('a'); + link.textContent = id; + link.href = linkObj; //Object.values(page)[0]; + link.title = linkObj; + link.onclick = linkClick; + label.appendChild(link); + + + list.appendChild(li); + li.appendChild(input); + li.appendChild(logo); + li.appendChild(label); + //list.appendChild(input); + //list.appendChild(logo); + //list.appendChild(label); + //var line = document.createElement('br'); + //list.appendChild(line); + if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" + bgColor = "#FFFFFF"; + } else { + bgColor = "#EDEEED"; //"#F4F6F7"; + } + }); + /*var howmany = document.getElementById("howmany"); + if (selectAll) { + howmany.textContent = allurls.length + " selected."; + } else { + howmany.textContent = "0 selected."; + }*/ + return list; + + } function selectOption() { - var content = document.getElementById('content'); - var orderedList = document.getElementById('orderedList'); - if (orderedList) { - content.removeChild(orderedList); - } - - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - //var allTypes = jsonData[type.name]; - var url = new URL(currentUrl); + var content = document.getElementById('content'); + var orderedList = document.getElementById('orderedList'); + if (orderedList) { + content.removeChild(orderedList); + } + + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + //var allTypes = jsonData[type.name]; + var url = new URL(currentUrl); //var allTypes = jsonData[url.hostname] || jsonData[type.name]; - var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; - if (Array.isArray(allTypes[selectedType])){ - content.appendChild(createList(allTypes[selectedType])); - } - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode); - + var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; + if (Array.isArray(allTypes[selectedType])){ + content.appendChild(createList(allTypes[selectedType])); + } + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); + } function createDropDown (data, hierarchy) { - var dropDown = document.createElement("SELECT"); - dropDown.setAttribute("id", "typeSelect"); - dropDown.setAttribute("name", hierarchy); - var keys = Object.keys(data); - keys.forEach(function (optn) { - var options = document.createElement("option"); - options.setAttribute("value", optn); - options.setAttribute("id", optn); - var txt = document.createTextNode(optn); - options.appendChild(txt); - if (optn.indexOf("default") > -1) { - options.selected = true; - } - dropDown.appendChild(options); - }); - dropDown.onchange = selectOption; - return dropDown; - + var dropDown = document.createElement("SELECT"); + dropDown.setAttribute("id", "typeSelect"); + dropDown.setAttribute("name", hierarchy); + var keys = Object.keys(data); + keys.forEach(function (optn) { + var options = document.createElement("option"); + options.setAttribute("value", optn); + options.setAttribute("id", optn); + var txt = document.createTextNode(optn); + options.appendChild(txt); + if (optn.indexOf("default") > -1) { + options.selected = true; + } + dropDown.appendChild(options); + }); + dropDown.onchange = selectOption; + return dropDown; + } - + function getDomain(url, subdomain) { - //var isSubdom = isSubdomain(url); - subdomain = subdomain || false; + //var isSubdom = isSubdomain(url); + subdomain = subdomain || false; url = url.replace(/(https?:\/\/)?(www.)?/i, ''); @@ -1453,85 +1574,126 @@ function getDomain(url, subdomain) { } function getCurrentTabUrl(callback) { - var queryInfo = { - active: true, - currentWindow: true - }; - - chrome.tabs.query(queryInfo, function(tabs) { - - var tab = tabs[0]; - //var url = tab.url; -currentTab = tab; - callback(tab); - }); - - chrome.windows.getCurrent(function(currentWindow) { - invokedWindow = currentWindow.id; - }); + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function(tabs) { + + var tab = tabs[0]; + //var url = tab.url; + currentTab = tab; + callback(tab); + }); + + chrome.windows.getCurrent(function(currentWindow) { + invokedWindow = currentWindow.id; + }); + +} + +function utubeClick() { + var idx = currentTab.index + 1; + chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { + + }); +} +function isParentGoogle(parentUrl) { + // var url = new URL(parentUrl); + // console.log("azhagiye...." + url.hostname); + //return google.indexOf(url.hostname) > -1; +} + +function isFromSearch(currentURL) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + if (googleSearch) { + googleSearch.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + } + return urlFound; +} + +function getDomainName(url) { + var hostname = new URL(url).hostname; + var hostArr = hostname.split('.'); + console.log(hostArr.length + "---yyy"); + console.log(hostArr); + if (hostArr.length === 2) { + return hostArr[0]; + } else if (hostArr.length === 4) { + if (hostArr[0] === 'www') { + return hostArr[1]; + } else { + return hostArr[2]; + } + } else { + return hostArr[1]; + } +} + +function isUrlInList(currentURL, urlList) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + + urlList.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + + return urlFound; +} + +chrome.runtime.onMessage.addListener(function(req, sender, sendres){ + if (req.cnnLoading === "complete") { + console.log("cnn loaded....") + } + + +}); + +function loadList(prefForDom, content, name) { + if (Array.isArray(prefForDom)) { + console.log("pref dom is an array"); + if (prefForDom.length > 0) { + content.appendChild(createList(prefForDom)); + } else { + noConfigFound(content); + } + } else { + content.appendChild(createDropDown(prefForDom, name)); + var label = document.createElement('label'); + var txt = document.createTextNode("Options "); + label.setAttribute("for", "typeSelect"); + label.appendChild(txt); + label.style.marginLeft = "25px"; + content.insertBefore(label,document.getElementById("typeSelect")); + var type = document.getElementById("typeSelect"); + //type.style.marginLeft = "25px"; + var selectedType = type.options[type.selectedIndex].value; + content.appendChild(createList(prefForDom[selectedType])); + } + //document.getElementsByName("link").addEventListener('click', chkBoxClick); + if (selectAll && searchPage) { + document.getElementById('selectall').checked = true; + } + createRadio(content); + //document.getElementById('addbtn').hidden = "hidden"; + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); } - - function utubeClick() { - var idx = currentTab.index + 1; - chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { - - }); - } - function isParentGoogle(parentUrl) { - // var url = new URL(parentUrl); - // console.log("azhagiye...." + url.hostname); - //return google.indexOf(url.hostname) > -1; - } - - function isFromSearch(currentURL) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - if (googleSearch) { - googleSearch.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - } - return urlFound; - } - - function getDomainName(url) { - var hostname = new URL(url).hostname; - var hostArr = hostname.split('.'); - console.log(hostArr.length + "---yyy"); - console.log(hostArr); - if (hostArr.length === 2) { - return hostArr[0]; - } else if (hostArr.length === 4) { - if (hostArr[0] === 'www') { - return hostArr[1]; - } else { - return hostArr[2]; - } - } else { - return hostArr[1]; - } - } - - function isUrlInList(currentURL, urlList) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - - urlList.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - - return urlFound; - } \ No newline at end of file From cd83699c208831fb1ec63f5ba98c88d7ce0cfb92 Mon Sep 17 00:00:00 2001 From: Gautam Date: Tue, 2 Jan 2018 22:47:04 -0600 Subject: [PATCH 29/33] Modified popup.js, background.js etc for fixes. --- popup.js | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/popup.js b/popup.js index 5256219..0d7d82d 100644 --- a/popup.js +++ b/popup.js @@ -20,7 +20,7 @@ var loadFrom; var options = ['tabsBackground', 'highlightTabs', 'jsonData', 'selectAll', 'loading', 'googleSearch', 'parentUrl', 'queryString', 'anonymus']; //'searchEngine',, 'loadFrom' //var readPage = ['www.google.co.in', 'www.google.com', 'search.yahoo.com', 'www.bing.com', 'www.youtube.com', 'edition.cnn.com']; var readPage = ['google', 'search.yahoo', 'bing', 'youtube', 'cnn', 'stackoverflow', 'washingtonpost']; -var dualSetting = ['cnn', 'stackoverflow']; + var cnnLoading = "loading"; chrome.storage.sync.get( options, function(items) { @@ -662,8 +662,17 @@ function searchInSite (queryString) { } window.close(); } -document.addEventListener('beforeunload', function (event) { + + + +document.addEventListener('onbeforeunload', function (event) { console.log("unload.."); + //localStorage.removeItem(key); + //window.localStorage.removeItem("googleSearch"); + /*window.onbeforeunload = function() { + + return ''; + };*/ const allUrls = document.getElementsByName("link"); var parentNode; allUrls.forEach (function (url) { @@ -801,7 +810,7 @@ function findInArray(array, item) { //var found = false; for (var x = 0; x < array.length; x ++) { console.log(array[x] + " ---" + item); - console.log(array[x].indexOf(item)); + console.log(item.indexOf(array[x])); if (item.indexOf(array[x]) > -1) { //found = true; @@ -870,7 +879,12 @@ document.addEventListener('DOMContentLoaded', function () { console.log("loadFrom-" + loadFrom); console.log("going to else part -- " + JSON.stringify(tab)); var fromPage = true; - if (findInArray(dualSetting, url.hostname)) { + + prefForDom = getPreferences(url.hostname, name); + console.log(prefForDom != undefined); + console.log(findInArray(readPage, url.hostname)); + if (prefForDom != undefined && findInArray(readPage, url.hostname)) { + console.log("inside if...."); //if (loadFrom === 'config') { fromPage = false; //} @@ -881,8 +895,8 @@ document.addEventListener('DOMContentLoaded', function () { if (!newtab) { if (fromPage) { console.log("from page" + name); - console.log(findInArray(readPage, url.hostname) + "---" + readPage.indexOf(url.hostname)); - if (findInArray(readPage, url.hostname) > -1 || isFromSearch(currentUrl)) { + console.log(findInArray(readPage, url.hostname) + "---" + isFromSearch(currentUrl, name)); + if (findInArray(readPage, url.hostname) || isFromSearch(currentUrl, name)) { console.log("inside google"); searchEngine = name; //to do run content script from here //move this to top, put every thing inside callbak @@ -943,7 +957,7 @@ document.addEventListener('DOMContentLoaded', function () { if (prefForDom === undefined) { prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; //content.style.width = "200px"; - //ocument.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('searchAgain').hidden = "hidden"; searchPage = false; } @@ -1605,12 +1619,12 @@ function isParentGoogle(parentUrl) { //return google.indexOf(url.hostname) > -1; } -function isFromSearch(currentURL) { +function isFromSearch(currentURL, name) { //console.log("Check1 " + JSON.stringify(googleSearch)); console.log("Check22 " + currentURL); var urlFound = false; - if (googleSearch) { - googleSearch.forEach(function (obj) { + if (googleSearch && googleSearch[name]) { + googleSearch[name].forEach(function (obj) { var value = Object.values(obj); console.log("Check3 " + value); if (value == currentURL) { @@ -1693,6 +1707,7 @@ function loadList(prefForDom, content, name) { createRadio(content); //document.getElementById('addbtn').hidden = "hidden"; const allUrls = document.getElementsByName("link"); + console.log(allUrls[0]); var parentNode = allUrls[0].parentNode.parentNode.childNodes; changeSelection(parentNode); From b7b6f23089c8600987f8b146aefc143845e2657a Mon Sep 17 00:00:00 2001 From: Gautam Dev Date: Thu, 4 Jan 2018 23:13:23 -0600 Subject: [PATCH 30/33] Update popup.js --- popup.js | 3112 +++++++++++++++++++++++++++--------------------------- 1 file changed, 1556 insertions(+), 1556 deletions(-) diff --git a/popup.js b/popup.js index 0d7d82d..9e41174 100644 --- a/popup.js +++ b/popup.js @@ -24,1284 +24,1284 @@ var readPage = ['google', 'search.yahoo', 'bing', 'youtube', 'cnn', 'stackoverfl var cnnLoading = "loading"; chrome.storage.sync.get( options, function(items) { - jsonData = items.jsonData; - highlightTabs = items.highlightTabs; - tabsBackground = items.tabsBackground; - selectAll = items.selectAll; - loading = items.loading; - console.log("in sync get" + loading); - //googleSearch = items.googleSearch; - //console.log("in sync get search--" + googleSearch); - parentUrl = items.parentUrl; - //queryString = items.queryString; - //searchSites = items.searchSites; - //searchEngine = items.searchEngine; - anonymus = items.anonymus; - //loadFrom = items.loadFrom; + jsonData = items.jsonData; + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; + selectAll = items.selectAll; + loading = items.loading; + console.log("in sync get" + loading); + //googleSearch = items.googleSearch; + //console.log("in sync get search--" + googleSearch); + parentUrl = items.parentUrl; + //queryString = items.queryString; + //searchSites = items.searchSites; + //searchEngine = items.searchEngine; + anonymus = items.anonymus; + //loadFrom = items.loadFrom; }); chrome.storage.local.get( options, function(items) { - googleSearch = items.googleSearch; - console.log("in sync get search--" + googleSearch); - queryString = items.queryString; - // searchEngine = items.searchEngine; + googleSearch = items.googleSearch; + console.log("in sync get search--" + googleSearch); + queryString = items.queryString; + // searchEngine = items.searchEngine; }); function closeWindow (e) { - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - - window.close(); + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); } function clickHandler(e) { - //loading = true; - document.getElementById("openbtn").disabled = true; - const allUrls = document.getElementsByName("link"); - const urlsToOpen = []; - const tabToHilite = [currentTab.index]; - const openAt = currentTab.index + 1; - var anonymusValues; - try { - if (allUrls.length === 0) { - console.log("link undefined " + allUrls); - anonymusValues = document.getElementById("anonymus").value; - const urls = anonymusValues.split('\n'); - urls.forEach(function (url) { - if (url.startsWith('http') || url.startsWith('https')) { - urlsToOpen.push(url); - } else { - throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); - //return ; - } - - }); - } else { - allUrls.forEach (function (url) { - console.log(url); - if (url.checked) { - urlsToOpen.push(url.value); - console.log("came till here"); - /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ - tabToHilite.push(tab.index); - openAt ++; - });*/ - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("came till here in else"); - } - }); - } - } catch (err) { - document.getElementById("error").innerHTML = err.message; - return; - } - - - console.log(urlsToOpen); - /*if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite}, function(){}); - }*/ - - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - var opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); + //loading = true; + document.getElementById("openbtn").disabled = true; + const allUrls = document.getElementsByName("link"); + const urlsToOpen = []; + const tabToHilite = [currentTab.index]; + const openAt = currentTab.index + 1; + var anonymusValues; + try { + if (allUrls.length === 0) { + console.log("link undefined " + allUrls); + anonymusValues = document.getElementById("anonymus").value; + const urls = anonymusValues.split('\n'); + urls.forEach(function (url) { + if (url.startsWith('http') || url.startsWith('https')) { + urlsToOpen.push(url); + } else { + throw new Error("The url " + url + " does not have protocol " + "..Please specify and try again"); + //return ; + } + + }); + } else { + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + urlsToOpen.push(url.value); + console.log("came till here"); + /*chrome.tabs.create({url: url.value, active : !tabsBackground, index: openAt}, function(tab){ + tabToHilite.push(tab.index); + openAt ++; + });*/ + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("came till here in else"); + } + }); + } + } catch (err) { + document.getElementById("error").innerHTML = err.message; + return; + } + + + console.log(urlsToOpen); + /*if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite}, function(){}); + }*/ + + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + var opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: urlsToOpen, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading: true, anonymus : anonymusValues}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); } function selectall () { - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - if (document.getElementById('selectall').checked) { - allUrls.forEach (function (url) { - if (currentUrl !== url.value) { - url.checked = true; - url.nextSibling.nextSibling.style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("kkkkkk-" + url.value); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - /* - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(parentNode); - howmany.textContent = selNums + " selected."; - if (selNums > 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - }*/ - } else { - allUrls.forEach (function (url) { - url.checked = false; - console.log(url.parentNode); - url.nextSibling.nextSibling.style.fontWeight = "normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - /*var howmany = document.getElementById("howmany"); - howmany.textContent = "0 selected."; - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; */ - //document.getElementById('searchAgain').disabled = false; - } - - changeSelection(parentNode); + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + if (document.getElementById('selectall').checked) { + allUrls.forEach (function (url) { + if (currentUrl !== url.value) { + url.checked = true; + url.nextSibling.nextSibling.style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("kkkkkk-" + url.value); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + /* + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(parentNode); + howmany.textContent = selNums + " selected."; + if (selNums > 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + }*/ + } else { + allUrls.forEach (function (url) { + url.checked = false; + console.log(url.parentNode); + url.nextSibling.nextSibling.style.fontWeight = "normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + /*var howmany = document.getElementById("howmany"); + howmany.textContent = "0 selected."; + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; */ + //document.getElementById('searchAgain').disabled = false; + } + + changeSelection(parentNode); } function linkClick () { - console.log(this.href); - const opnSmeTab = document.getElementById("sametabChkbx").checked; - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); - chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - window.close(); + console.log(this.href); + const opnSmeTab = document.getElementById("sametabChkbx").checked; + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : "", loading: false}, function() {}); + chrome.storage.sync.set({urlsToOpen: this.href, currTab: currentTab, invokedWindow: invokedWindow, opnSmeTb: opnSmeTab, loading : true}, function() { + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + window.close(); } function chkBoxClick (ele) { - console.log(this.labels[0].innerHTML); - var currNode = this; - var none = true; - var selectedArray = []; - if (this.checked) { - this.labels[0].style.fontWeight = "bold"; - document.getElementById("openbtn").disabled = false; - //var liList = this.parentNode.parentNode.childNodes; - //console.log(liList.length); - - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - none = false; - return; - } - - }); - if (none) { - console.log("only one"); - document.getElementById("sametab").disabled = false; - document.getElementById("sametabChkbx").checked = true; - } else { - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } - - console.log("li value-" + this.value); - /*selectedArray.push(this.value); - this.parentNode.parentNode.childNodes.forEach(function (li){ - if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { - selectedArray.push(li.childNodes[0].value); - } - });*/ - var itemValue = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } else { - this.labels[0].style.fontWeight="normal"; - document.getElementById("openbtn").disabled = true; - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { - document.getElementById("openbtn").disabled = false; - } - if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { - console.log("more than one checked"); - document.getElementById("sametab").disabled = true; - document.getElementById("sametabChkbx").checked = false; - } else { - document.getElementById("sametab").disabled = false; - document.getElementById("sametabChkbx").checked = true; - } - - var selItems = this.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { - console.log(response.farewell); - }); - }); - } - - } - changeSelection(this.parentNode.parentNode.childNodes); - //console.log("len--" + this.parentNode.parentNode.childNodes.length); + console.log(this.labels[0].innerHTML); + var currNode = this; + var none = true; + var selectedArray = []; + if (this.checked) { + this.labels[0].style.fontWeight = "bold"; + document.getElementById("openbtn").disabled = false; + //var liList = this.parentNode.parentNode.childNodes; + //console.log(liList.length); + + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + none = false; + return; + } + + }); + if (none) { + console.log("only one"); + document.getElementById("sametab").disabled = false; + document.getElementById("sametabChkbx").checked = true; + } else { + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } + + console.log("li value-" + this.value); + /*selectedArray.push(this.value); + this.parentNode.parentNode.childNodes.forEach(function (li){ + if (currNode !== li.childNodes[0] && li.childNodes[0].checked) { + selectedArray.push(li.childNodes[0].value); + } + });*/ + var itemValue = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } else { + this.labels[0].style.fontWeight="normal"; + document.getElementById("openbtn").disabled = true; + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + if (atleastOneChecked(this.parentNode.parentNode.childNodes)) { + document.getElementById("openbtn").disabled = false; + } + if (moreThanOneChecked(this.parentNode.parentNode.childNodes)) { + console.log("more than one checked"); + document.getElementById("sametab").disabled = true; + document.getElementById("sametabChkbx").checked = false; + } else { + document.getElementById("sametab").disabled = false; + document.getElementById("sametabChkbx").checked = true; + } + + var selItems = this.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: selItems}, function(response) { + console.log(response.farewell); + }); + }); + } + + } + changeSelection(this.parentNode.parentNode.childNodes); + //console.log("len--" + this.parentNode.parentNode.childNodes.length); } function changeSelection (listNodes) { - - var howmany = document.getElementById("howmany"); - var selNums = howManyChecked(listNodes); - console.log(listNodes.length + "***" + selNums); - howmany.textContent = selNums + " selected."; - if (selNums === 0) { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = false; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = false; - document.getElementById('searchTextBox').disabled = false; - } - document.getElementsByName('site')[0].disabled = false; - document.getElementsByName('site')[1].disabled = false; - document.getElementsByName('site')[2].disabled = false; - //document.getElementById('searchAgain').disabled = false; - } else { - if (document.getElementById('searchAgain')) { - document.getElementById('searchAgain').disabled = true; - } - - if (document.getElementById('searchbtn')) { - document.getElementById('searchbtn').disabled = true; - document.getElementById('searchTextBox').disabled = true; - } - document.getElementsByName('site')[0].disabled = true; - document.getElementsByName('site')[1].disabled = true; - document.getElementsByName('site')[2].disabled = true; - //document.getElementById('searchAgain').disabled = true; - } - console.log("selected--" + selNums + "--list len--" + listNodes.length); - if (selNums < listNodes.length) { - document.getElementById('selectall').checked = false; - } - if (selNums === listNodes.length) { - document.getElementById('selectall').checked = true; - } + + var howmany = document.getElementById("howmany"); + var selNums = howManyChecked(listNodes); + console.log(listNodes.length + "***" + selNums); + howmany.textContent = selNums + " selected."; + if (selNums === 0) { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = false; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = false; + document.getElementById('searchTextBox').disabled = false; + } + document.getElementsByName('site')[0].disabled = false; + document.getElementsByName('site')[1].disabled = false; + document.getElementsByName('site')[2].disabled = false; + //document.getElementById('searchAgain').disabled = false; + } else { + if (document.getElementById('searchAgain')) { + document.getElementById('searchAgain').disabled = true; + } + + if (document.getElementById('searchbtn')) { + document.getElementById('searchbtn').disabled = true; + document.getElementById('searchTextBox').disabled = true; + } + document.getElementsByName('site')[0].disabled = true; + document.getElementsByName('site')[1].disabled = true; + document.getElementsByName('site')[2].disabled = true; + //document.getElementById('searchAgain').disabled = true; + } + console.log("selected--" + selNums + "--list len--" + listNodes.length); + if (selNums < listNodes.length) { + document.getElementById('selectall').checked = false; + } + if (selNums === listNodes.length) { + document.getElementById('selectall').checked = true; + } } function howManyChecked(liNodes) { - var chked = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked ++; - } - }); - return chked; + var chked = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked ++; + } + }); + return chked; } function atleastOneChecked(liNodes) { - var chked = false; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - chked = true; - } - }); - - return chked; - - /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); - return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ + var chked = false; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + chked = true; + } + }); + + return chked; + + /*console.log(Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked)); + return Array.prototype.slice.call(chkBoxNodes).some(x => x.childNodes[0].checked);*/ } function moreThanOneChecked(liNodes) { - var n = 0; - liNodes.forEach (function (liNode){ - if (liNode.childNodes[0].checked) { - n ++; - } - }); - if (n === 0 || n > 1 ) { - return true; - } else { - return false; - } + var n = 0; + liNodes.forEach (function (liNode){ + if (liNode.childNodes[0].checked) { + n ++; + } + }); + if (n === 0 || n > 1 ) { + return true; + } else { + return false; + } } function addUrl() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - /*var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - var domain = getDomain(currentUrl); - var name = hostNameArray[1];//domain.split('.')[0]; - //var jsonObj = {};*/ - var name = getDomainName(tab.url); - let textBox = document.getElementById('anonymus'); - var newObjArr = []; - if (textBox) { - console.log(textBox.value); - if (textBox.value !== '') { - var values = textBox.value.split('\n'); - values.forEach(function (value){ - var obj = {}; - var key = getKeyFromURL(value.split('/')); - obj[key] = value; - newObjArr.push(obj); - }); - } - //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; - console.log(newObjArr); - } - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - //alert("before" + JSON.stringify(origObj)); - /*var prefForDom = origObj[fullDomain]; - if (prefForDom === undefined) { - prefForDom = origObj[name]; - }*/ - //var prefForDom = origObj[fullDomain] || origObj[name]; - var prefForDom = getPreferences(fullDomain, name, origObj); - console.log("==" + prefForDom + "--- llllllll"); - var newEntryObj = {}; - var path = url.pathname.split('/'); - var key = getKeyFromURL(path); - /*if (path.length === 0) { - //newEntryObj[name] = currentUrl; - key = name; - } else { - if (path[path.length-1].indexOf('=') === -1) { - //newEntryObj[path[path.length-1]] = currentUrl; - key = path[path.length-1]; - } else { - //newEntryObj[path[1]] = currentUrl; - key = path[1]; - } - } - if (key === '') { - key = 'Home'; - }*/ - newEntryObj[key] = currentUrl; - console.log(newEntryObj); - //if (newObjArr.length > 0) { - newObjArr.push(newEntryObj); - //} - //path[path.length]; - //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; - - console.log(path.length); - console.log("dom-" + path + "--" + path[path.length-1]); - if (prefForDom) { - console.log('in if'); - if (Array.isArray(prefForDom)) { - prefForDom.push(newEntryObj); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - options[selectedType].push(newEntryObj); - } - } - - - } else { - console.log('in else'); - //origObj[name] = [currentUrl]; - var newObj = {}; - newObj["current"] = name; - newObj["description"] = name; - newObj["sites"] = newObjArr; //[newEntryObj]; - origObj[name] = newObj; - } - //origObj[name] = [currentUrl]; - console.log(JSON.stringify(origObj)); - //jsonObj = items; - //console.log(JSON.stringify(jsonObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + /*var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + var domain = getDomain(currentUrl); + var name = hostNameArray[1];//domain.split('.')[0]; + //var jsonObj = {};*/ + var name = getDomainName(tab.url); + let textBox = document.getElementById('anonymus'); + var newObjArr = []; + if (textBox) { + console.log(textBox.value); + if (textBox.value !== '') { + var values = textBox.value.split('\n'); + values.forEach(function (value){ + var obj = {}; + var key = getKeyFromURL(value.split('/')); + obj[key] = value; + newObjArr.push(obj); + }); + } + //var newURLs = textBox.value ? textBox.value.replace('\n', ',') : ''; + console.log(newObjArr); + } + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + //alert("before" + JSON.stringify(origObj)); + /*var prefForDom = origObj[fullDomain]; + if (prefForDom === undefined) { + prefForDom = origObj[name]; + }*/ + //var prefForDom = origObj[fullDomain] || origObj[name]; + var prefForDom = getPreferences(fullDomain, name, origObj); + console.log("==" + prefForDom + "--- llllllll"); + var newEntryObj = {}; + var path = url.pathname.split('/'); + var key = getKeyFromURL(path); + /*if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + }*/ + newEntryObj[key] = currentUrl; + console.log(newEntryObj); + //if (newObjArr.length > 0) { + newObjArr.push(newEntryObj); + //} + //path[path.length]; + //var nameKey = url.pathname.endsWith('/') ? url.pathname[url.pathname.length - 2] : url.pathname[url.pathname.length - 1]; + + console.log(path.length); + console.log("dom-" + path + "--" + path[path.length-1]); + if (prefForDom) { + console.log('in if'); + if (Array.isArray(prefForDom)) { + prefForDom.push(newEntryObj); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + options[selectedType].push(newEntryObj); + } + } + + + } else { + console.log('in else'); + //origObj[name] = [currentUrl]; + var newObj = {}; + newObj["current"] = name; + newObj["description"] = name; + newObj["sites"] = newObjArr; //[newEntryObj]; + origObj[name] = newObj; + } + //origObj[name] = [currentUrl]; + console.log(JSON.stringify(origObj)); + //jsonObj = items; + //console.log(JSON.stringify(jsonObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); } function getKeyFromURL (path) { - //var path = url.pathname.split('/'); - console.log(path); - var key; - if (path.length === 0) { - //newEntryObj[name] = currentUrl; - key = name; - } else { - if (path[path.length-1].indexOf('=') === -1) { - //newEntryObj[path[path.length-1]] = currentUrl; - key = path[path.length-1]; - } else { - //newEntryObj[path[1]] = currentUrl; - key = path[1]; - } - } - if (key === '') { - key = 'Home'; - } - return key; + //var path = url.pathname.split('/'); + console.log(path); + var key; + if (path.length === 0) { + //newEntryObj[name] = currentUrl; + key = name; + } else { + if (path[path.length-1].indexOf('=') === -1) { + //newEntryObj[path[path.length-1]] = currentUrl; + key = path[path.length-1]; + } else { + //newEntryObj[path[1]] = currentUrl; + key = path[1]; + } + } + if (key === '') { + key = 'Home'; + } + return key; } function searchAgain () { - var urlSite = ''; - var selectedSite = getSearchSite(); - var selSiteArr; - var idx = currentTab.index + 1; - if (selectedSite.indexOf(',') > -1) { - selSiteArr = selectedSite.split(','); - selSiteArr.forEach(function(selSite){ - if (selSite.indexOf('yahoo') > -1) { - urlSite = selSite + 'search;?p=' + queryString; - } else { - urlSite = selSite + 'search?q=' + queryString; - } - - chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { - idx ++; - }); - }); - } else { - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + queryString; - } else { - urlSite = selectedSite + 'search?q=' + queryString; - } - chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { - - }); - //chrome.tabs.update(currentTab.id, {url: urlSite}); - } - - window.close(); + var urlSite = ''; + var selectedSite = getSearchSite(); + var selSiteArr; + var idx = currentTab.index + 1; + if (selectedSite.indexOf(',') > -1) { + selSiteArr = selectedSite.split(','); + selSiteArr.forEach(function(selSite){ + if (selSite.indexOf('yahoo') > -1) { + urlSite = selSite + 'search;?p=' + queryString; + } else { + urlSite = selSite + 'search?q=' + queryString; + } + + chrome.tabs.create({url: urlSite, active : false, index: parseInt(idx), windowId : invokedWindow}, function(tab) { + idx ++; + }); + }); + } else { + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + queryString; + } else { + urlSite = selectedSite + 'search?q=' + queryString; + } + chrome.tabs.create({url: urlSite, active : false, index: parseInt(currentTab.index + 1), windowId : invokedWindow}, function(tab) { + + }); + //chrome.tabs.update(currentTab.id, {url: urlSite}); + } + + window.close(); } function getSearchSite() { - var selectedSite; - var site = document.getElementsByName("site"); - for(var i = 0; i < site.length; i++) { - if(site[i].checked) { - selectedSite = site[i].value; - - if (!selectedSite.endsWith('/')) { - selectedSite = selectedSite + '/'; - } - } - } - - return selectedSite; + var selectedSite; + var site = document.getElementsByName("site"); + for(var i = 0; i < site.length; i++) { + if(site[i].checked) { + selectedSite = site[i].value; + + if (!selectedSite.endsWith('/')) { + selectedSite = selectedSite + '/'; + } + } + } + + return selectedSite; } function sortListDir() { - var list, i, switching, b, shouldSwitch, dir, switchcount = 0; - list = document.getElementById("orderedList"); - switching = true; - //Set the sorting direction to ascending: - dir = "asc"; - //Make a loop that will continue until no switching has been done: - while (switching) { - //start by saying: no switching is done: - switching = false; - b = list.getElementsByTagName("LI"); - //Loop through all list-items: - for (i = 0; i < (b.length - 1); i++) { - //start by saying there should be no switching: - shouldSwitch = false; - /*check if the next item should switch place with the current item, - based on the sorting direction (asc or desc):*/ - if (dir == "asc") { - if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically lower than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; - } - } else if (dir == "desc") { - if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { - console.log("THE TEXT--" + b[i].innerText); - /*if next item is alphabetically higher than current item, - mark as a switch and break the loop:*/ - shouldSwitch= true; - break; - } - } + var list, i, switching, b, shouldSwitch, dir, switchcount = 0; + list = document.getElementById("orderedList"); + switching = true; + //Set the sorting direction to ascending: + dir = "asc"; + //Make a loop that will continue until no switching has been done: + while (switching) { + //start by saying: no switching is done: + switching = false; + b = list.getElementsByTagName("LI"); + //Loop through all list-items: + for (i = 0; i < (b.length - 1); i++) { + //start by saying there should be no switching: + shouldSwitch = false; + /*check if the next item should switch place with the current item, + based on the sorting direction (asc or desc):*/ + if (dir == "asc") { + if (b[i].innerText.toLowerCase() > b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically lower than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; } - if (shouldSwitch) { - /*If a switch has been marked, make the switch - and mark that a switch has been done:*/ - b[i].parentNode.insertBefore(b[i + 1], b[i]); - switching = true; - //Each time a switch is done, increase switchcount by 1: - switchcount ++; - } else { - /*If no switching has been done AND the direction is "asc", - set the direction to "desc" and run the while loop again.*/ - if (switchcount === 0 && dir == "asc") { - dir = "desc"; - switching = true; - - } + } else if (dir == "desc") { + if (b[i].innerText.toLowerCase() < b[i + 1].innerText.toLowerCase()) { + console.log("THE TEXT--" + b[i].innerText); + /*if next item is alphabetically higher than current item, + mark as a switch and break the loop:*/ + shouldSwitch= true; + break; } + } + } + if (shouldSwitch) { + /*If a switch has been marked, make the switch + and mark that a switch has been done:*/ + b[i].parentNode.insertBefore(b[i + 1], b[i]); + switching = true; + //Each time a switch is done, increase switchcount by 1: + switchcount ++; + } else { + /*If no switching has been done AND the direction is "asc", + set the direction to "desc" and run the while loop again.*/ + if (switchcount === 0 && dir == "asc") { + dir = "desc"; + switching = true; + + } } - chngSortBtnValue(); + } + chngSortBtnValue(); } function chngSortBtnValue() { - var sortImg = document.getElementById('sortListDir'); - console.log(sortImg.getAttribute('src')); - if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { - //sortImg.nextSibling.textContent = "Sort Z to A"; - sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); - } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { - //sortImg.nextSibling.textContent = "Sort A to Z"; - sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); - } + var sortImg = document.getElementById('sortListDir'); + console.log(sortImg.getAttribute('src')); + if (sortImg.getAttribute('src') === "./icons/Small_A_Z.jpg") { + //sortImg.nextSibling.textContent = "Sort Z to A"; + sortImg.setAttribute('src', './icons/Small_Z_A.jpg'); + } else if (sortImg.getAttribute('src') === "./icons/Small_Z_A.jpg") { + //sortImg.nextSibling.textContent = "Sort A to Z"; + sortImg.setAttribute('src', './icons/Small_A_Z.jpg'); + } } function searchInSite (queryString) { - var urlSite = ''; - var searchText = document.getElementById('searchTextBox').value; - console.log(searchText); - if (searchText) { - var url = new URL(currentUrl); - - var selectedSite = getSearchSite(); - - if (selectedSite.indexOf('yahoo') > -1) { - urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; - } else { - urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; - } - - chrome.tabs.update(currentTab.id, {url: urlSite}); - - } - window.close(); + var urlSite = ''; + var searchText = document.getElementById('searchTextBox').value; + console.log(searchText); + if (searchText) { + var url = new URL(currentUrl); + + var selectedSite = getSearchSite(); + + if (selectedSite.indexOf('yahoo') > -1) { + urlSite = selectedSite + 'search;?p=' + searchText + '%20site:' + url.hostname; + } else { + urlSite = selectedSite + 'search?q=' + searchText + '%20site:' + url.hostname; + } + + chrome.tabs.update(currentTab.id, {url: urlSite}); + + } + window.close(); } - + document.addEventListener('onbeforeunload', function (event) { - console.log("unload.."); - //localStorage.removeItem(key); - //window.localStorage.removeItem("googleSearch"); - /*window.onbeforeunload = function() { - - return ''; - };*/ - const allUrls = document.getElementsByName("link"); - var parentNode; - allUrls.forEach (function (url) { - console.log(url.parentNode); - var itemValue = url.value; - if (searchPage) { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - }); - - - window.close(); + console.log("unload.."); + //localStorage.removeItem(key); + //window.localStorage.removeItem("googleSearch"); + /*window.onbeforeunload = function() { + + return ''; + };*/ + const allUrls = document.getElementsByName("link"); + var parentNode; + allUrls.forEach (function (url) { + console.log(url.parentNode); + var itemValue = url.value; + if (searchPage) { + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:false, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + }); + + + window.close(); }, true); function saveSelection() { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var name = getDomainName(tab.url); - - chrome.storage.sync.get( "jsonData", function(items) { - console.log(JSON.stringify(items)); - var origObj = items.jsonData; - var prefForDom = getPreferences(fullDomain, name, origObj); - - if (prefForDom) { - if (Array.isArray(prefForDom)) { - const allUrls = document.getElementsByName("link"); - allUrls.forEach (function (url) { - console.log("chkd--" + url.checked); - console.log("val--" + url.value); - console.log(url.labels[0].innerText); - console.log(JSON.stringify(prefForDom)); - console.log(prefForDom.length + "---long"); - var label = url.labels[0].innerText; - //if (label) //need to remove (currentTab from label) - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < prefForDom.length; i++) { - if (typeof prefForDom[i] === 'object') { - console.log(prefForDom[i]) ; - if (Object.keys(prefForDom[i])[0] === label) { - if (typeof Object.values(prefForDom[i])[0] === 'object') { - prefForDom[i][label]['selected'] = url.checked; - } else { - prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; - } - - } - } else { - if (prefForDom[i] === url.value) { - prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); - } else { - var options = prefForDom; - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - var allTypes = options[selectedType]; - if (Array.isArray(options[selectedType])){ - const allUrls = document.getElementsByName("link"); - - allUrls.forEach (function (url) { - var label = url.labels[0].innerText; - if (label.indexOf("Current Tab")) { - label = label.split('(')[0]; - } - for (var i=0; i < allTypes.length; i++) { - //console.log("vaan" + JSON.stringify(allTypes[i])); - if (typeof allTypes[i] === 'object') { - if (Object.keys(allTypes[i])[0] === label) { - if (typeof Object.values(allTypes[i])[0] === 'object') { - prefForDom[selectedType][i][label]['selected'] = url.checked; - } else { - prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; - } - - } - } else { - if (allTypes[i] === url.value) { - prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; - } - } - } - console.log(JSON.stringify(prefForDom)); - - }); - } - } - } - console.log(JSON.stringify(origObj)); - chrome.storage.sync.set({ - jsonData: origObj}, - function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); - }); - }); - }); - - /*const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode);*/ + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var name = getDomainName(tab.url); + + chrome.storage.sync.get( "jsonData", function(items) { + console.log(JSON.stringify(items)); + var origObj = items.jsonData; + var prefForDom = getPreferences(fullDomain, name, origObj); + + if (prefForDom) { + if (Array.isArray(prefForDom)) { + const allUrls = document.getElementsByName("link"); + allUrls.forEach (function (url) { + console.log("chkd--" + url.checked); + console.log("val--" + url.value); + console.log(url.labels[0].innerText); + console.log(JSON.stringify(prefForDom)); + console.log(prefForDom.length + "---long"); + var label = url.labels[0].innerText; + //if (label) //need to remove (currentTab from label) + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < prefForDom.length; i++) { + if (typeof prefForDom[i] === 'object') { + console.log(prefForDom[i]) ; + if (Object.keys(prefForDom[i])[0] === label) { + if (typeof Object.values(prefForDom[i])[0] === 'object') { + prefForDom[i][label]['selected'] = url.checked; + } else { + prefForDom[i][label] = {'selected' : url.checked, url : Object.values(prefForDom[i])[0]}; + } + + } + } else { + if (prefForDom[i] === url.value) { + prefForDom[i] = {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } else { + var options = prefForDom; + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + var allTypes = options[selectedType]; + if (Array.isArray(options[selectedType])){ + const allUrls = document.getElementsByName("link"); + + allUrls.forEach (function (url) { + var label = url.labels[0].innerText; + if (label.indexOf("Current Tab")) { + label = label.split('(')[0]; + } + for (var i=0; i < allTypes.length; i++) { + //console.log("vaan" + JSON.stringify(allTypes[i])); + if (typeof allTypes[i] === 'object') { + if (Object.keys(allTypes[i])[0] === label) { + if (typeof Object.values(allTypes[i])[0] === 'object') { + prefForDom[selectedType][i][label]['selected'] = url.checked; + } else { + prefForDom[selectedType][i][label] = {'selected' : url.checked, url : Object.values(allTypes[i])[0]}; + } + + } + } else { + if (allTypes[i] === url.value) { + prefForDom[selectedType][i]= {[label] : {'selected' : url.checked, url : url.value}}; + } + } + } + console.log(JSON.stringify(prefForDom)); + + }); + } + } + } + console.log(JSON.stringify(origObj)); + chrome.storage.sync.set({ + jsonData: origObj}, + function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + }); + }); + + /*const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode);*/ } function editTextArea () { - let txtAreaContent = this.value; - console.log("in txt are" + txtAreaContent); - if (txtAreaContent === '') { - document.getElementById('openbtn').disabled = true; - document.getElementById("error").innerHTML = ""; - } else { - document.getElementById('openbtn').disabled = false; - } + let txtAreaContent = this.value; + console.log("in txt are" + txtAreaContent); + if (txtAreaContent === '') { + document.getElementById('openbtn').disabled = true; + document.getElementById("error").innerHTML = ""; + } else { + document.getElementById('openbtn').disabled = false; + } } function findInArray(array, item) { - //var found = false; - for (var x = 0; x < array.length; x ++) { - console.log(array[x] + " ---" + item); - console.log(item.indexOf(array[x])); - - if (item.indexOf(array[x]) > -1) { - //found = true; - //return found; - - return true; - } - } - return false; + //var found = false; + for (var x = 0; x < array.length; x ++) { + console.log(array[x] + " ---" + item); + console.log(item.indexOf(array[x])); + + if (item.indexOf(array[x]) > -1) { + //found = true; + //return found; + + return true; + } + } + return false; } document.addEventListener('DOMContentLoaded', function () { - /* var bgPage = chrome.extension.getBackgroundPage(); - console.log("before"); + /* var bgPage = chrome.extension.getBackgroundPage(); + console.log("before"); var bk = bgPage.test("abc"); // Here paste() is a function that returns value. - console.log("beforeAAA--" + bk);*/ - document.getElementById('mainStuff').hidden = true; - document.getElementById('cancelbtn').addEventListener('click', closeWindow); - document.getElementById('openbtn').addEventListener('click', clickHandler); - document.getElementById('selectall').addEventListener('click', selectall); - document.getElementById('addbtn').addEventListener('click', addUrl); - document.getElementById('savebtn').addEventListener('click', saveSelection); - //document.getElementById('searchAgain').addEventListener('click', searchAgain); - document.getElementById('sortListDir').addEventListener('click', sortListDir); - //document.getElementById('searchbtn').addEventListener('click', searchInSite); - //onclick="()"; - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - var content = document.getElementById('content'); + console.log("beforeAAA--" + bk);*/ + document.getElementById('mainStuff').hidden = true; + document.getElementById('cancelbtn').addEventListener('click', closeWindow); + document.getElementById('openbtn').addEventListener('click', clickHandler); + document.getElementById('selectall').addEventListener('click', selectall); + document.getElementById('addbtn').addEventListener('click', addUrl); + document.getElementById('savebtn').addEventListener('click', saveSelection); + //document.getElementById('searchAgain').addEventListener('click', searchAgain); + document.getElementById('sortListDir').addEventListener('click', sortListDir); + //document.getElementById('searchbtn').addEventListener('click', searchInSite); + //onclick="()"; + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + var content = document.getElementById('content'); //chrome.storage.sync.set({loading: false}, function() {}); - //chrome.storage.sync.set({parentUrl: ""}, function() {}); - /*if (cnnLoading === 'loading') { - window.close(); - return; - }*/ - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {exec:true}, function(response) { - getCurrentTabUrl(function(tab) { - currentUrl = tab.url; - if (currentUrl === "chrome://newtab/") { - //window.close(); - //return; - newtab = true; - } else { - newtab = false; - } - - var url = new URL(tab.url); - var fullDomain = url.hostname; - console.log("dom-" + fullDomain); - var hostNameArray = fullDomain.split("."); - - console.log(hostNameArray.length); - //var domain = getDomain(currentUrl); - var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; - console.log("currentUrl --" + currentUrl); - console.log("name --" + name); - console.log("lod--" + loading); - console.log("jsondata--" + jsonData); - if (loading) { - window.close(); - return; - } - var prefForDom; - //console.log("test--" + isFromSearch(currentUrl)); - console.log("loadFrom-" + loadFrom); - console.log("going to else part -- " + JSON.stringify(tab)); - var fromPage = true; - - prefForDom = getPreferences(url.hostname, name); - console.log(prefForDom != undefined); - console.log(findInArray(readPage, url.hostname)); - if (prefForDom != undefined && findInArray(readPage, url.hostname)) { - console.log("inside if...."); - //if (loadFrom === 'config') { - fromPage = false; - //} - createLoadOptions(content, "config"); - - } - - if (!newtab) { - if (fromPage) { - console.log("from page" + name); - console.log(findInArray(readPage, url.hostname) + "---" + isFromSearch(currentUrl, name)); - if (findInArray(readPage, url.hostname) || isFromSearch(currentUrl, name)) { - console.log("inside google"); - searchEngine = name; - //to do run content script from here //move this to top, put every thing inside callbak - - - if (googleSearch === undefined || Object.keys(googleSearch).length === 0){ // || searchEngine.indexOf(url.hostname) === -1 - //console.log("google seach list is empty"); - //window.close(); - //return; - var text = document.createTextNode("No previous search results found. Please try a fresh search."); - document.getElementById('openbtn').disabled = true; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').disabled = true; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').disabled = true; - console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); - - //document.getElementById('sortListDir').nextSibling.nodeValue = ""; - //document.getElementById('searchAgain').hidden = "hidden"; - //document.getElementById('addbtn').hidden = ""; - content.appendChild(text); - return; - - } - console.log("Check1 " + JSON.stringify(googleSearch)); - prefForDom = googleSearch[name]; - console.log("check2-" + prefForDom + "-"); - document.getElementById('addbtn').disabled = true; - document.getElementById('savebtn').disabled = true; - //document.getElementById('searchbtn').hidden = "hidden"; - //document.getElementById('searchText').hidden = "hidden"; - content.style.width = "600px"; - document.getElementById('body').style.width = "603px"; - searchPage = true; - if (googleSearch === "") { - console.log("Search list is empty"); - } - - var engineName = name; //getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - var div = document.createElement('div'); - div.setAttribute("align", "center"); - var engineLogo = document.createElement("IMG"); - console.log("get favicon--" + name); - engineLogo.setAttribute("src", 'chrome://favicon/'+ name); //searchEngine); - //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); - engineLogo.style.cssFloat = 'middle'; - div.appendChild(engineLogo); - //var domain = getDomain(searchEngine); - //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - - var searchEngineTxt = document.createTextNode(" " + engineName + " results."); - div.appendChild(searchEngineTxt); - content.appendChild(div); - } - } - - - if (prefForDom === undefined) { - prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; - //content.style.width = "200px"; - //document.getElementById('searchAgain').hidden = "hidden"; - searchPage = false; - } - - - - - console.log(jsonData); - console.log(prefForDom); - if(prefForDom){ - //console.log(typeof allurls); - loadList(prefForDom, content, name); - } else { - console.log("domain not set..."); - noConfigFound(content); - /*var text = document.createTextNode("Domain not set in preference."); - document.getElementById('openbtn').hidden = "hidden"; - document.getElementById('selectall').hidden = "hidden"; - document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').hidden = "hidden"; - document.getElementById('sortListDir').nextSibling.nodeValue = ""; - document.getElementById('anonymus').hidden = ""; - content.appendChild(text);*/ - - } - - } else { - var mesg = "Bank Page."; - noConfigFound(content, mesg); - } - }); - - var xhr = new XMLHttpRequest(); - xhr.open('GET', chrome.extension.getURL('utube.json')); - xhr.responseType = "text"; - - xhr.onreadystatechange = function() { - console.log("here"); - if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { - //console.log(xhr.responseText); - //utubeData = xhr.responseText; - utubeData = JSON.parse(xhr.responseText); - console.log(utubeData); - if (utubeData !== undefined) { - var adStuff = document.getElementById('adStuff'); - //var utubeData = chrome.runtime.getURL("utube.json"); - console.log(utubeData); - var keys = Object.keys(utubeData); - var ranNum = randomIntFromInterval(0, 9); - console.log("Me random" + ranNum); - var utube = document.createElement('a'); - utube.textContent = keys[ranNum]; - utube.href = utubeData[keys[ranNum]]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - /*keys.forEach(function (key) { - //console.log(data); - var utube = document.createElement('a'); - utube.textContent = key; - utube.href = utubeData[key]; - utube.onclick = utubeClick; - adStuff.appendChild(utube); - adStuff.appendChild(document.createElement('br')); - });*/ - - } - } - }; - xhr.send(); - // - - //console.log("margin" + document.getElementById("selectall").style.margin); - /*var delayMillis = 10000; //1 second - - setTimeout(function() { - //your code to be executed after 1 second - - }, delayMillis);*/ - document.getElementById('mainStuff').hidden = false; - document.getElementById('progress').hidden = true; - console.log(response.farewell); - }); - }); - + //chrome.storage.sync.set({parentUrl: ""}, function() {}); + /*if (cnnLoading === 'loading') { + window.close(); + return; + }*/ + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {exec:true}, function(response) { + getCurrentTabUrl(function(tab) { + currentUrl = tab.url; + if (currentUrl === "chrome://newtab/") { + //window.close(); + //return; + newtab = true; + } else { + newtab = false; + } + + var url = new URL(tab.url); + var fullDomain = url.hostname; + console.log("dom-" + fullDomain); + var hostNameArray = fullDomain.split("."); + + console.log(hostNameArray.length); + //var domain = getDomain(currentUrl); + var name = getDomainName(tab.url); //hostNameArray[1]; //domain.split('.')[0]; + console.log("currentUrl --" + currentUrl); + console.log("name --" + name); + console.log("lod--" + loading); + console.log("jsondata--" + jsonData); + if (loading) { + window.close(); + return; + } + var prefForDom; + //console.log("test--" + isFromSearch(currentUrl)); + console.log("loadFrom-" + loadFrom); + console.log("going to else part -- " + JSON.stringify(tab)); + var fromPage = true; + + prefForDom = getPreferences(url.hostname, name); + console.log(prefForDom != undefined); + console.log(findInArray(readPage, url.hostname)); + if (prefForDom != undefined && findInArray(readPage, url.hostname)) { + console.log("inside if...."); + //if (loadFrom === 'config') { + fromPage = false; + //} + createLoadOptions(content, "config"); + + } + + if (!newtab) { + if (fromPage) { + console.log("from page" + name); + console.log(findInArray(readPage, url.hostname) + "---" + isFromSearch(currentUrl, name)); + if (findInArray(readPage, url.hostname) || isFromSearch(currentUrl, name)) { + console.log("inside google"); + searchEngine = name; + //to do run content script from here //move this to top, put every thing inside callbak + + + if (googleSearch === undefined || Object.keys(googleSearch).length === 0){ // || searchEngine.indexOf(url.hostname) === -1 + //console.log("google seach list is empty"); + //window.close(); + //return; + var text = document.createTextNode("No previous search results found. Please try a fresh search."); + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + console.log(document.getElementById('sortListDir').nextSibling.nodeValue + "fffk"); + + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + //document.getElementById('searchAgain').hidden = "hidden"; + //document.getElementById('addbtn').hidden = ""; + content.appendChild(text); + return; + + } + console.log("Check1 " + JSON.stringify(googleSearch)); + prefForDom = googleSearch[name]; + console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').disabled = true; + document.getElementById('savebtn').disabled = true; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + + var engineName = name; //getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + name); + engineLogo.setAttribute("src", 'chrome://favicon/'+ name); //searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + } + } + + + if (prefForDom === undefined) { + prefForDom = getPreferences(url.hostname, name); //jsonData[url.hostname] || jsonData[name]; + //content.style.width = "200px"; + //document.getElementById('searchAgain').hidden = "hidden"; + searchPage = false; + } + + + + + console.log(jsonData); + console.log(prefForDom); + if(prefForDom){ + //console.log(typeof allurls); + loadList(prefForDom, content, name); + } else { + console.log("domain not set..."); + noConfigFound(content); + /*var text = document.createTextNode("Domain not set in preference."); + document.getElementById('openbtn').hidden = "hidden"; + document.getElementById('selectall').hidden = "hidden"; + document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').hidden = "hidden"; + document.getElementById('sortListDir').nextSibling.nodeValue = ""; + document.getElementById('anonymus').hidden = ""; + content.appendChild(text);*/ + + } + + } else { + var mesg = "Bank Page."; + noConfigFound(content, mesg); + } + }); + + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('utube.json')); + xhr.responseType = "text"; + + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + //console.log(xhr.responseText); + //utubeData = xhr.responseText; + utubeData = JSON.parse(xhr.responseText); + console.log(utubeData); + if (utubeData !== undefined) { + var adStuff = document.getElementById('adStuff'); + //var utubeData = chrome.runtime.getURL("utube.json"); + console.log(utubeData); + var keys = Object.keys(utubeData); + var ranNum = randomIntFromInterval(0, 9); + console.log("Me random" + ranNum); + var utube = document.createElement('a'); + utube.textContent = keys[ranNum]; + utube.href = utubeData[keys[ranNum]]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + /*keys.forEach(function (key) { + //console.log(data); + var utube = document.createElement('a'); + utube.textContent = key; + utube.href = utubeData[key]; + utube.onclick = utubeClick; + adStuff.appendChild(utube); + adStuff.appendChild(document.createElement('br')); + });*/ + + } + } + }; + xhr.send(); + // + + //console.log("margin" + document.getElementById("selectall").style.margin); + /*var delayMillis = 10000; //1 second + + setTimeout(function() { + //your code to be executed after 1 second + + }, delayMillis);*/ + document.getElementById('mainStuff').hidden = false; + document.getElementById('progress').hidden = true; + console.log(response.farewell); + }); + }); + }); function createLoadOptions(content, sele) { - var loadDiv = document.createElement("div"); - loadDiv.style.width = '300px'; - var label = document.createElement("label"); - label.innerHTML = "Load from "; - label.style.marginLeft = "25px"; - loadDiv.appendChild(label); - - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", "config"); - radio.setAttribute("name", "loadFrom"); - if (sele === 'config') - radio.checked = true; - radio.onclick = updateList; - - label = document.createElement("label"); - label.innerHTML = "Config"; - - loadDiv.appendChild(radio); - loadDiv.appendChild(label); - - radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", "page"); - radio.setAttribute("name", "loadFrom"); - if (sele === 'page') - radio.checked = true; - - label = document.createElement("label"); - label.innerHTML = "Page"; - console.log("i m ann"); - radio.onclick = updateList; - loadDiv.appendChild(radio); - loadDiv.appendChild(label); - content.appendChild(loadDiv); - + var loadDiv = document.createElement("div"); + loadDiv.style.width = '300px'; + var label = document.createElement("label"); + label.innerHTML = "Load from "; + label.style.marginLeft = "25px"; + loadDiv.appendChild(label); + + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", "config"); + radio.setAttribute("name", "loadFrom"); + if (sele === 'config') + radio.checked = true; + radio.onclick = updateList; + + label = document.createElement("label"); + label.innerHTML = "Config"; + + loadDiv.appendChild(radio); + loadDiv.appendChild(label); + + radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", "page"); + radio.setAttribute("name", "loadFrom"); + if (sele === 'page') + radio.checked = true; + + label = document.createElement("label"); + label.innerHTML = "Page"; + console.log("i m ann"); + radio.onclick = updateList; + loadDiv.appendChild(radio); + loadDiv.appendChild(label); + content.appendChild(loadDiv); + } -function updateList(ele) { - +function updateList(ele) { + console.log(ele.srcElement.value); - if (ele.srcElement.value === 'page') { - var content = document.getElementById('content'); - while (content.hasChildNodes()) { - content.removeChild(content.firstChild); - } - var searchContent = document.getElementById('searchContent'); - while (searchContent.hasChildNodes()) { - searchContent.removeChild(searchContent.firstChild); - } - createLoadOptions(content, "page"); - var name = getDomainName(currentUrl); - //prefForDom = googleSearch; - //console.log("check2-" + prefForDom + "-"); - document.getElementById('addbtn').disabled = true; - document.getElementById('savebtn').disabled = true; - //document.getElementById('searchbtn').hidden = "hidden"; - //document.getElementById('searchText').hidden = "hidden"; - content.style.width = "600px"; - document.getElementById('body').style.width = "603px"; - searchPage = true; - if (googleSearch === "") { - console.log("Search list is empty"); - } - var engineName = name;//getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - var div = document.createElement('div'); - div.setAttribute("align", "center"); - var engineLogo = document.createElement("IMG"); - console.log("get favicon--" + name); - engineLogo.setAttribute("src", 'chrome://favicon/'+ name); //searchEngine); - //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); - engineLogo.style.cssFloat = 'middle'; - div.appendChild(engineLogo); - //var domain = getDomain(searchEngine); - //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; - - var searchEngineTxt = document.createTextNode(" " + engineName + " results."); - div.appendChild(searchEngineTxt); - content.appendChild(div); - loadList(googleSearch[name], content, name); - } else if (ele.srcElement.value === 'config'){ - console.log("config part"); - var content = document.getElementById('content'); - while (content.hasChildNodes()) { - content.removeChild(content.firstChild); - } - var searchContent = document.getElementById('searchContent'); - while (searchContent.hasChildNodes()) { - searchContent.removeChild(searchContent.firstChild); - } - createLoadOptions(content, "config"); - var url = new URL(currentUrl); - var name = getDomainName(currentUrl); - searchPage = false; - content.style.width = "200px"; - document.getElementById('body').style.width = "400px"; - document.getElementById('addbtn').disabled = false; - document.getElementById('savebtn').disabled = false; - loadList(getPreferences(url.hostname, name), content, name); - } - - //content.removeAll(); - + if (ele.srcElement.value === 'page') { + var content = document.getElementById('content'); + while (content.hasChildNodes()) { + content.removeChild(content.firstChild); + } + var searchContent = document.getElementById('searchContent'); + while (searchContent.hasChildNodes()) { + searchContent.removeChild(searchContent.firstChild); + } + createLoadOptions(content, "page"); + var name = getDomainName(currentUrl); + //prefForDom = googleSearch; + //console.log("check2-" + prefForDom + "-"); + document.getElementById('addbtn').disabled = true; + document.getElementById('savebtn').disabled = true; + //document.getElementById('searchbtn').hidden = "hidden"; + //document.getElementById('searchText').hidden = "hidden"; + content.style.width = "600px"; + document.getElementById('body').style.width = "603px"; + searchPage = true; + if (googleSearch === "") { + console.log("Search list is empty"); + } + var engineName = name;//getDomainName(searchEngine); //new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + var div = document.createElement('div'); + div.setAttribute("align", "center"); + var engineLogo = document.createElement("IMG"); + console.log("get favicon--" + name); + engineLogo.setAttribute("src", 'chrome://favicon/'+ name); //searchEngine); + //engineLogo.setAttribute("src", '/icons/' + engineName + '.ico'); + engineLogo.style.cssFloat = 'middle'; + div.appendChild(engineLogo); + //var domain = getDomain(searchEngine); + //var engineName = new URL(searchEngine).hostname.split('.')[1];//domain.split('.')[0]; + + var searchEngineTxt = document.createTextNode(" " + engineName + " results."); + div.appendChild(searchEngineTxt); + content.appendChild(div); + loadList(googleSearch[name], content, name); + } else if (ele.srcElement.value === 'config'){ + console.log("config part"); + var content = document.getElementById('content'); + while (content.hasChildNodes()) { + content.removeChild(content.firstChild); + } + var searchContent = document.getElementById('searchContent'); + while (searchContent.hasChildNodes()) { + searchContent.removeChild(searchContent.firstChild); + } + createLoadOptions(content, "config"); + var url = new URL(currentUrl); + var name = getDomainName(currentUrl); + searchPage = false; + content.style.width = "200px"; + document.getElementById('body').style.width = "400px"; + document.getElementById('addbtn').disabled = false; + document.getElementById('savebtn').disabled = false; + loadList(getPreferences(url.hostname, name), content, name); + } + + //content.removeAll(); + } function noConfigFound(content, msg) { - console.log("domain not set..."); - var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; - if (msg) { - textContent = msg + textContent; - document.getElementById('addbtn').disabled = true; - } else { - textContent = "Domain not set in preference." + textContent; - } - const divTxt = document.createElement("div"); - var pre = document.createElement("PRE"); - var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); - pre.appendChild(text); - divTxt.style.marginLeft = "25px"; - document.getElementById('openbtn').disabled = true; - //document.getElementById('cancelbtn').hidden = "hidden"; - document.getElementById('selectall').disabled = true; - //document.getElementById('selectall').nextSibling.nodeValue = ""; - document.getElementById('sortListDir').disabled = true; - //document.getElementById('sortListDir').nextSibling.nodeValue = ""; - - document.getElementById('savebtn').disabled = true; - document.getElementById('anonymus').hidden = ""; - if (anonymus) { - document.getElementById('anonymus').value = anonymus; - document.getElementById('openbtn').disabled = false; - } - document.getElementById('anonymus').onkeyup = editTextArea; - - - divTxt.appendChild(pre); - content.appendChild(divTxt); - + console.log("domain not set..."); + var textContent = "\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."; + if (msg) { + textContent = msg + textContent; + document.getElementById('addbtn').disabled = true; + } else { + textContent = "Domain not set in preference." + textContent; + } + const divTxt = document.createElement("div"); + var pre = document.createElement("PRE"); + var text = document.createTextNode(textContent);//"Domain not set in preference.\nYou may enter the URL's to open,one below the other,\nin the space given below and open them."); + pre.appendChild(text); + divTxt.style.marginLeft = "25px"; + document.getElementById('openbtn').disabled = true; + //document.getElementById('cancelbtn').hidden = "hidden"; + document.getElementById('selectall').disabled = true; + //document.getElementById('selectall').nextSibling.nodeValue = ""; + document.getElementById('sortListDir').disabled = true; + //document.getElementById('sortListDir').nextSibling.nodeValue = ""; + + document.getElementById('savebtn').disabled = true; + document.getElementById('anonymus').hidden = ""; + if (anonymus) { + document.getElementById('anonymus').value = anonymus; + document.getElementById('openbtn').disabled = false; + } + document.getElementById('anonymus').onkeyup = editTextArea; + + + divTxt.appendChild(pre); + content.appendChild(divTxt); + } function createRadio(content) { - //var engDom = getDomain(searchEngine); - //var engine = engDom.split('.')[0]; - //var engineUrl = new URL(searchEngine); - //console.log("url hostname eng-" + engineUrl.hostname); - var engine; - if (searchPage) { - //console.log(searchEngine + currentUrl); - engine = searchEngine; //getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; - } - - var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' - - var searchContent = document.getElementById('searchContent'); - - var searchDiv = document.createElement('div'); - searchDiv.id = "searchDiv"; - searchDiv.style.margin = "0px 0px 0px 25px"; - searchDiv.style.width = '300px'; - - var searchLbl = document.createElement('label'); - searchLbl.innerHTML = "search in"; - searchLbl.style.marginLeft = "25px"; - searchContent.appendChild(searchLbl); - var br = document.createElement('br'); - searchContent.appendChild(br); - /*var margin = true;*/ - - var both; - - sitesArr.forEach(function (site) { - var url = new URL(site); - console.log("url hostname-" + url.hostname); - var name = getDomainName(site);//url.hostname.split('.')[1]; - //var domain = getDomain(site); - //var name = domain.split('.')[0]; - console.log("name " + name); - console.log("engg " + engine); - if (searchPage && name === engine) { - return; - } - - both = both ? both + "," + site : site; - console.log("both " + both); - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", site); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - //radio.setAttribute("id", "site"); - //radio.style.marginLeft = "10px"; - console.log("site " + site); - console.log("eng " + searchEngine); - /*var url = new URL(site); - var fullDomain = url.hostname;*/ - var label = document.createElement("label"); - label.innerHTML = name; - //content.appendChild(radio); - //content.appendChild(label); - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchContent.appendChild(searchDiv); - - - }); - - - var searchAgainBtn = document.createElement('input'); - searchAgainBtn.setAttribute("type", "button"); - selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; - if (searchPage) { - var radio = document.createElement("INPUT"); - radio.setAttribute("type", "radio"); - radio.setAttribute("value", both); - radio.setAttribute("name", "site"); - selectAll ? radio.disabled = true : radio.disabled = false; - var label = document.createElement("label"); - label.innerHTML = "Both"; - searchDiv.appendChild(radio); - searchDiv.appendChild(label); - searchAgainBtn.setAttribute("id", "searchAgain"); - searchAgainBtn.setAttribute("value", "Search Again"); - searchAgainBtn.onclick = searchAgain; - } else { - var searchAgainTxt = document.createElement('input'); - searchAgainTxt.setAttribute("type", "text"); - searchAgainTxt.setAttribute("id", "searchTextBox"); - selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; - //fsearchAgainTxt.style.marginLeft = "25px"; - searchDiv.appendChild(searchAgainTxt); - searchAgainBtn.setAttribute("id", "searchbtn"); - searchAgainBtn.setAttribute("value", "Search"); - searchAgainBtn.onclick = searchInSite; - } - searchAgainBtn.style.marginLeft = '2px'; - searchDiv.appendChild(searchAgainBtn); - - searchContent.appendChild(searchDiv); - - /*if (selectAll) { - const allUrls = document.getElementsByName("link"); - if (allUrls.length > -1) { - if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { - //radio.disabled = true; - searchAgainBtn.disabled = true; - document.getElementsByName('site')[0].style.disabled = true; - document.getElementsByName('site')[1].style.disabled = true; - document.getElementsByName('site')[2].style.disabled = true; - if (!searchPage) { - document.getElementById('searchTextBox').style.disabled = true; - } - } - - } - }*/ - - + //var engDom = getDomain(searchEngine); + //var engine = engDom.split('.')[0]; + //var engineUrl = new URL(searchEngine); + //console.log("url hostname eng-" + engineUrl.hostname); + var engine; + if (searchPage) { + //console.log(searchEngine + currentUrl); + engine = searchEngine; //getDomainName(searchEngine); //engineUrl.hostname.split('.')[1]; + } + + var sitesArr = ['https://www.google.com/', 'https://search.yahoo.com/', 'https://www.bing.com/']; //searchSites.split(',');//, 'https://www.youtube.com/' + + var searchContent = document.getElementById('searchContent'); + + var searchDiv = document.createElement('div'); + searchDiv.id = "searchDiv"; + searchDiv.style.margin = "0px 0px 0px 25px"; + searchDiv.style.width = '300px'; + + var searchLbl = document.createElement('label'); + searchLbl.innerHTML = "search in"; + searchLbl.style.marginLeft = "25px"; + searchContent.appendChild(searchLbl); + var br = document.createElement('br'); + searchContent.appendChild(br); + /*var margin = true;*/ + + var both; + + sitesArr.forEach(function (site) { + var url = new URL(site); + console.log("url hostname-" + url.hostname); + var name = getDomainName(site);//url.hostname.split('.')[1]; + //var domain = getDomain(site); + //var name = domain.split('.')[0]; + console.log("name " + name); + console.log("engg " + engine); + if (searchPage && name === engine) { + return; + } + + both = both ? both + "," + site : site; + console.log("both " + both); + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", site); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + //radio.setAttribute("id", "site"); + //radio.style.marginLeft = "10px"; + console.log("site " + site); + console.log("eng " + searchEngine); + /*var url = new URL(site); + var fullDomain = url.hostname;*/ + var label = document.createElement("label"); + label.innerHTML = name; + //content.appendChild(radio); + //content.appendChild(label); + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchContent.appendChild(searchDiv); + + + }); + + + var searchAgainBtn = document.createElement('input'); + searchAgainBtn.setAttribute("type", "button"); + selectAll ? searchAgainBtn.disabled = true : searchAgainBtn.disabled = false; + if (searchPage) { + var radio = document.createElement("INPUT"); + radio.setAttribute("type", "radio"); + radio.setAttribute("value", both); + radio.setAttribute("name", "site"); + selectAll ? radio.disabled = true : radio.disabled = false; + var label = document.createElement("label"); + label.innerHTML = "Both"; + searchDiv.appendChild(radio); + searchDiv.appendChild(label); + searchAgainBtn.setAttribute("id", "searchAgain"); + searchAgainBtn.setAttribute("value", "Search Again"); + searchAgainBtn.onclick = searchAgain; + } else { + var searchAgainTxt = document.createElement('input'); + searchAgainTxt.setAttribute("type", "text"); + searchAgainTxt.setAttribute("id", "searchTextBox"); + selectAll ? searchAgainTxt.disabled = true : searchAgainTxt.disabled = false; + //fsearchAgainTxt.style.marginLeft = "25px"; + searchDiv.appendChild(searchAgainTxt); + searchAgainBtn.setAttribute("id", "searchbtn"); + searchAgainBtn.setAttribute("value", "Search"); + searchAgainBtn.onclick = searchInSite; + } + searchAgainBtn.style.marginLeft = '2px'; + searchDiv.appendChild(searchAgainBtn); + + searchContent.appendChild(searchDiv); + + /*if (selectAll) { + const allUrls = document.getElementsByName("link"); + if (allUrls.length > -1) { + if (howManyChecked(allUrls[0].parentNode.parentNode.childNodes)) { + //radio.disabled = true; + searchAgainBtn.disabled = true; + document.getElementsByName('site')[0].style.disabled = true; + document.getElementsByName('site')[1].style.disabled = true; + document.getElementsByName('site')[2].style.disabled = true; + if (!searchPage) { + document.getElementById('searchTextBox').style.disabled = true; + } + } + + } + }*/ + + } function randomIntFromInterval(min,max) @@ -1310,266 +1310,266 @@ function randomIntFromInterval(min,max) } function getPreferences(url_hostname, name, dataObj) { - if (dataObj === undefined) { - dataObj = jsonData; - } - console.log(url_hostname + " -- " + name ); - let pref;// = []; - for (var item in dataObj) { - let domain; - domain = dataObj[item]['current']; - console.log("DOMAIN--" + domain); - if (domain.indexOf(',') === -1) { - console.log("in no comma"); - //pref = []; - //if (domain === url_hostname || domain === name) { - if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { - console.log("name matched....") - if (domain.indexOf('http://') !== -1) { - baseUrl = domain; - } else { - baseUrl = 'http://' + domain; - } - var sites = dataObj[item]['sites']; - pref = sites; - console.log("sites--" + sites); - } - console.log("in get pref " + JSON.stringify(pref)); - } else { - var domArr = domain.split(','); - domArr.forEach(function(hostname){ - if (url_hostname === hostname || name === hostname) { - pref = dataObj[item]['sites']; - } - }); - console.log("in get pref " + pref); - } - } - console.log(pref); - return pref; - -} + if (dataObj === undefined) { + dataObj = jsonData; + } + console.log(url_hostname + " -- " + name ); + let pref;// = []; + for (var item in dataObj) { + let domain; + domain = dataObj[item]['current']; + console.log("DOMAIN--" + domain); + if (domain.indexOf(',') === -1) { + console.log("in no comma"); + //pref = []; + //if (domain === url_hostname || domain === name) { + if (domain.indexOf(url_hostname) > -1 || domain.indexOf(name) > -1) { + console.log("name matched....") + if (domain.indexOf('http://') !== -1) { + baseUrl = domain; + } else { + baseUrl = 'http://' + domain; + } + var sites = dataObj[item]['sites']; + pref = sites; + console.log("sites--" + sites); + } + console.log("in get pref " + JSON.stringify(pref)); + } else { + var domArr = domain.split(','); + domArr.forEach(function(hostname){ + if (url_hostname === hostname || name === hostname) { + pref = dataObj[item]['sites']; + } + }); + console.log("in get pref " + pref); + } + } + console.log(pref); + return pref; + +} function createList(allurls) { - - var list = document.createElement("OL"); - list.setAttribute("type", "1"); - list.setAttribute("id", "orderedList"); - //list.setAttribute("") - if (!searchPage) { - list.style.width = "100%"; - selectAll = true; - } - list.style.align = "right"; - - var i=1; - var value=""; - var bgColor = "#EDEEED"; //"#F4F6F7"; - - allurls.forEach(function(page) { - console.log("in createList " + JSON.stringify(page)); - //console.log(Object.keys(page)); - //console.log(Object.values(page)); - var input = document.createElement("INPUT"); - input.setAttribute("type", "checkbox"); - var label = document.createElement('label'); - - var linkObj, key, url; - if (typeof page === 'object') { - console.log("has key value"); - if (Object.keys(page).length > 0){ //todo remove this condition 291217 ..any empty obj got into the jsonObj for washington post....due to which popup dint load...ths was added to handle that - if (typeof Object.values(page)[0] === 'object') { - url = Object.values(page)[0]; - linkObj = url.url; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - input.setAttribute("Alt", url.alt); - if (currentUrl !== linkObj && url.selected !== false) { // && selectAll - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - - } else { - console.log("llll" + label.getText); - } - } else { - linkObj = Object.values(page)[0]; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - input.setAttribute("value", linkObj); - console.log("in else"); - input.setAttribute("Alt", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - } - - key = Object.keys(page)[0]; - - } - - } else { - var pageParts = page.split('/'); - console.log(pageParts.length); - console.log(pageParts[pageParts.length - 1] ); - linkObj = page; - if (linkObj.indexOf("http") === -1) { - linkObj = baseUrl + linkObj; - } - key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; - input.setAttribute("value", linkObj); - if (currentUrl !== linkObj && selectAll) { - input.setAttribute("checked", true); - label.style.fontWeight = "bold"; - if (searchPage) { - var itemValue = input.value; - chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { - chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { - console.log(response.farewell); - }); - }); - } - } else { - console.log("llll" + label.getText); - } - - } - input.setAttribute("name", "link"); - if (currentUrl === linkObj) { - key = key + "(Current Tab)"; - console.log("kkk"+key); - document.getElementById('addbtn').disabled = true; - } - var id = key; //Object.keys(page)[0]; - input.setAttribute("id", id); - input.onclick = chkBoxClick; - label.htmlFor = id; - - console.log("linkObj--" + linkObj); - console.log("currentUrl--" + currentUrl); - - - //var linkObj = Object.values(page)[0]; - - - - var li = document.createElement("LI"); - li.style.backgroundColor = bgColor; - if (searchPage) - li.style.margin = "10px 0"; - - //li.setAttribute("background-color" , "#FFFEEC"); - var logo = document.createElement("IMG"); - console.log("link " + Object.values(page)[0]); - logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); - logo.setAttribute("width", "20"); - logo.setAttribute("height", "12"); - - var link = document.createElement('a'); - link.textContent = id; - link.href = linkObj; //Object.values(page)[0]; - link.title = linkObj; - link.onclick = linkClick; - label.appendChild(link); - - - list.appendChild(li); - li.appendChild(input); - li.appendChild(logo); - li.appendChild(label); - //list.appendChild(input); - //list.appendChild(logo); - //list.appendChild(label); - //var line = document.createElement('br'); - //list.appendChild(line); - if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" - bgColor = "#FFFFFF"; - } else { - bgColor = "#EDEEED"; //"#F4F6F7"; - } - }); - /*var howmany = document.getElementById("howmany"); - if (selectAll) { - howmany.textContent = allurls.length + " selected."; - } else { - howmany.textContent = "0 selected."; - }*/ - return list; - - + + var list = document.createElement("OL"); + list.setAttribute("type", "1"); + list.setAttribute("id", "orderedList"); + //list.setAttribute("") + if (!searchPage) { + list.style.width = "100%"; + selectAll = true; + } + list.style.align = "right"; + + var i=1; + var value=""; + var bgColor = "#EDEEED"; //"#F4F6F7"; + + allurls.forEach(function(page) { + console.log("in createList " + JSON.stringify(page)); + //console.log(Object.keys(page)); + //console.log(Object.values(page)); + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + var label = document.createElement('label'); + + var linkObj, key, url; + if (typeof page === 'object') { + console.log("has key value"); + if (Object.keys(page).length > 0){ //todo remove this condition 291217 ..any empty obj got into the jsonObj for washington post....due to which popup dint load...ths was added to handle that + if (typeof Object.values(page)[0] === 'object') { + url = Object.values(page)[0]; + linkObj = url.url; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + input.setAttribute("Alt", url.alt); + if (currentUrl !== linkObj && url.selected !== false) { // && selectAll + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + + } else { + console.log("llll" + label.getText); + } + } else { + linkObj = Object.values(page)[0]; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + input.setAttribute("value", linkObj); + console.log("in else"); + input.setAttribute("Alt", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + } + + key = Object.keys(page)[0]; + + } + + } else { + var pageParts = page.split('/'); + console.log(pageParts.length); + console.log(pageParts[pageParts.length - 1] ); + linkObj = page; + if (linkObj.indexOf("http") === -1) { + linkObj = baseUrl + linkObj; + } + key = page.endsWith('/') ? pageParts[pageParts.length - 2] : pageParts[pageParts.length - 1]; + input.setAttribute("value", linkObj); + if (currentUrl !== linkObj && selectAll) { + input.setAttribute("checked", true); + label.style.fontWeight = "bold"; + if (searchPage) { + var itemValue = input.value; + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {highlight:true, selectedItems: itemValue}, function(response) { + console.log(response.farewell); + }); + }); + } + } else { + console.log("llll" + label.getText); + } + + } + input.setAttribute("name", "link"); + if (currentUrl === linkObj) { + key = key + "(Current Tab)"; + console.log("kkk"+key); + document.getElementById('addbtn').disabled = true; + } + var id = key; //Object.keys(page)[0]; + input.setAttribute("id", id); + input.onclick = chkBoxClick; + label.htmlFor = id; + + console.log("linkObj--" + linkObj); + console.log("currentUrl--" + currentUrl); + + + //var linkObj = Object.values(page)[0]; + + + + var li = document.createElement("LI"); + li.style.backgroundColor = bgColor; + if (searchPage) + li.style.margin = "10px 0"; + + //li.setAttribute("background-color" , "#FFFEEC"); + var logo = document.createElement("IMG"); + console.log("link " + Object.values(page)[0]); + logo.setAttribute("src", 'chrome://favicon/'+ linkObj); //Object.values(page)[0]); + logo.setAttribute("width", "20"); + logo.setAttribute("height", "12"); + + var link = document.createElement('a'); + link.textContent = id; + link.href = linkObj; //Object.values(page)[0]; + link.title = linkObj; + link.onclick = linkClick; + label.appendChild(link); + + + list.appendChild(li); + li.appendChild(input); + li.appendChild(logo); + li.appendChild(label); + //list.appendChild(input); + //list.appendChild(logo); + //list.appendChild(label); + //var line = document.createElement('br'); + //list.appendChild(line); + if (bgColor === "#EDEEED") {//ECF0F1 //"#F4F6F7" + bgColor = "#FFFFFF"; + } else { + bgColor = "#EDEEED"; //"#F4F6F7"; + } + }); + /*var howmany = document.getElementById("howmany"); + if (selectAll) { + howmany.textContent = allurls.length + " selected."; + } else { + howmany.textContent = "0 selected."; + }*/ + return list; + + } function selectOption() { - var content = document.getElementById('content'); - var orderedList = document.getElementById('orderedList'); - if (orderedList) { - content.removeChild(orderedList); - } - - var type = document.getElementById("typeSelect"); - var selectedType = type.options[type.selectedIndex].value; - - //var allTypes = jsonData[type.name]; - var url = new URL(currentUrl); + var content = document.getElementById('content'); + var orderedList = document.getElementById('orderedList'); + if (orderedList) { + content.removeChild(orderedList); + } + + var type = document.getElementById("typeSelect"); + var selectedType = type.options[type.selectedIndex].value; + + //var allTypes = jsonData[type.name]; + var url = new URL(currentUrl); //var allTypes = jsonData[url.hostname] || jsonData[type.name]; - var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; - if (Array.isArray(allTypes[selectedType])){ - content.appendChild(createList(allTypes[selectedType])); - } - const allUrls = document.getElementsByName("link"); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode); - + var allTypes = getPreferences(url.hostname, type.name); //jsonData[url.hostname] || jsonData[name]; + if (Array.isArray(allTypes[selectedType])){ + content.appendChild(createList(allTypes[selectedType])); + } + const allUrls = document.getElementsByName("link"); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); + } function createDropDown (data, hierarchy) { - var dropDown = document.createElement("SELECT"); - dropDown.setAttribute("id", "typeSelect"); - dropDown.setAttribute("name", hierarchy); - var keys = Object.keys(data); - keys.forEach(function (optn) { - var options = document.createElement("option"); - options.setAttribute("value", optn); - options.setAttribute("id", optn); - var txt = document.createTextNode(optn); - options.appendChild(txt); - if (optn.indexOf("default") > -1) { - options.selected = true; - } - dropDown.appendChild(options); - }); - dropDown.onchange = selectOption; - return dropDown; - + var dropDown = document.createElement("SELECT"); + dropDown.setAttribute("id", "typeSelect"); + dropDown.setAttribute("name", hierarchy); + var keys = Object.keys(data); + keys.forEach(function (optn) { + var options = document.createElement("option"); + options.setAttribute("value", optn); + options.setAttribute("id", optn); + var txt = document.createTextNode(optn); + options.appendChild(txt); + if (optn.indexOf("default") > -1) { + options.selected = true; + } + dropDown.appendChild(options); + }); + dropDown.onchange = selectOption; + return dropDown; + } - + function getDomain(url, subdomain) { - //var isSubdom = isSubdomain(url); - subdomain = subdomain || false; + //var isSubdom = isSubdomain(url); + subdomain = subdomain || false; url = url.replace(/(https?:\/\/)?(www.)?/i, ''); @@ -1588,127 +1588,127 @@ function getDomain(url, subdomain) { } function getCurrentTabUrl(callback) { - var queryInfo = { - active: true, - currentWindow: true - }; - - chrome.tabs.query(queryInfo, function(tabs) { - - var tab = tabs[0]; - //var url = tab.url; - currentTab = tab; - callback(tab); - }); - - chrome.windows.getCurrent(function(currentWindow) { - invokedWindow = currentWindow.id; - }); - -} - -function utubeClick() { - var idx = currentTab.index + 1; - chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { - - }); -} -function isParentGoogle(parentUrl) { - // var url = new URL(parentUrl); - // console.log("azhagiye...." + url.hostname); - //return google.indexOf(url.hostname) > -1; -} - -function isFromSearch(currentURL, name) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; - if (googleSearch && googleSearch[name]) { - googleSearch[name].forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - } - return urlFound; -} - -function getDomainName(url) { - var hostname = new URL(url).hostname; - var hostArr = hostname.split('.'); - console.log(hostArr.length + "---yyy"); - console.log(hostArr); - if (hostArr.length === 2) { - return hostArr[0]; - } else if (hostArr.length === 4) { - if (hostArr[0] === 'www') { - return hostArr[1]; - } else { - return hostArr[2]; - } - } else { - return hostArr[1]; - } -} - -function isUrlInList(currentURL, urlList) { - //console.log("Check1 " + JSON.stringify(googleSearch)); - console.log("Check22 " + currentURL); - var urlFound = false; + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function(tabs) { + + var tab = tabs[0]; + //var url = tab.url; +currentTab = tab; + callback(tab); + }); + + chrome.windows.getCurrent(function(currentWindow) { + invokedWindow = currentWindow.id; + }); - urlList.forEach(function (obj) { - var value = Object.values(obj); - console.log("Check3 " + value); - if (value == currentURL) { - console.log("ret true"); - urlFound = true; - } - }); - - return urlFound; } - -chrome.runtime.onMessage.addListener(function(req, sender, sendres){ - if (req.cnnLoading === "complete") { - console.log("cnn loaded....") - } - - + + function utubeClick() { + var idx = currentTab.index + 1; + chrome.tabs.create({url: this.href, active : false, index: idx, windowId : invokedWindow}, function(tab) { + + }); + } + function isParentGoogle(parentUrl) { + // var url = new URL(parentUrl); + // console.log("azhagiye...." + url.hostname); + //return google.indexOf(url.hostname) > -1; + } + + function isFromSearch(currentURL, name) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + if (googleSearch && googleSearch[name]) { + googleSearch[name].forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + } + return urlFound; + } + + function getDomainName(url) { + var hostname = new URL(url).hostname; + var hostArr = hostname.split('.'); + console.log(hostArr.length + "---yyy"); + console.log(hostArr); + if (hostArr.length === 2) { + return hostArr[0]; + } else if (hostArr.length === 4) { + if (hostArr[0] === 'www') { + return hostArr[1]; + } else { + return hostArr[2]; + } + } else { + return hostArr[1]; + } + } + + function isUrlInList(currentURL, urlList) { + //console.log("Check1 " + JSON.stringify(googleSearch)); + console.log("Check22 " + currentURL); + var urlFound = false; + + urlList.forEach(function (obj) { + var value = Object.values(obj); + console.log("Check3 " + value); + if (value == currentURL) { + console.log("ret true"); + urlFound = true; + } + }); + + return urlFound; + } + + chrome.runtime.onMessage.addListener(function(req, sender, sendres){ + if (req.cnnLoading === "complete") { + console.log("cnn loaded....") + } + + }); function loadList(prefForDom, content, name) { - if (Array.isArray(prefForDom)) { - console.log("pref dom is an array"); - if (prefForDom.length > 0) { - content.appendChild(createList(prefForDom)); - } else { - noConfigFound(content); - } - } else { - content.appendChild(createDropDown(prefForDom, name)); - var label = document.createElement('label'); - var txt = document.createTextNode("Options "); - label.setAttribute("for", "typeSelect"); - label.appendChild(txt); - label.style.marginLeft = "25px"; - content.insertBefore(label,document.getElementById("typeSelect")); - var type = document.getElementById("typeSelect"); - //type.style.marginLeft = "25px"; - var selectedType = type.options[type.selectedIndex].value; - content.appendChild(createList(prefForDom[selectedType])); - } - //document.getElementsByName("link").addEventListener('click', chkBoxClick); - if (selectAll && searchPage) { - document.getElementById('selectall').checked = true; - } - createRadio(content); - //document.getElementById('addbtn').hidden = "hidden"; - const allUrls = document.getElementsByName("link"); - console.log(allUrls[0]); - var parentNode = allUrls[0].parentNode.parentNode.childNodes; - changeSelection(parentNode); - + if (Array.isArray(prefForDom)) { + console.log("pref dom is an array"); + if (prefForDom.length > 0) { + content.appendChild(createList(prefForDom)); + } else { + noConfigFound(content); + } + } else { + content.appendChild(createDropDown(prefForDom, name)); + var label = document.createElement('label'); + var txt = document.createTextNode("Options "); + label.setAttribute("for", "typeSelect"); + label.appendChild(txt); + label.style.marginLeft = "25px"; + content.insertBefore(label,document.getElementById("typeSelect")); + var type = document.getElementById("typeSelect"); + //type.style.marginLeft = "25px"; + var selectedType = type.options[type.selectedIndex].value; + content.appendChild(createList(prefForDom[selectedType])); + } + //document.getElementsByName("link").addEventListener('click', chkBoxClick); + if (selectAll && searchPage) { + document.getElementById('selectall').checked = true; + } + createRadio(content); + //document.getElementById('addbtn').hidden = "hidden"; + const allUrls = document.getElementsByName("link"); + console.log(allUrls[0]); + var parentNode = allUrls[0].parentNode.parentNode.childNodes; + changeSelection(parentNode); + } From 59db6b1572762662d5387540272d29488b345c36 Mon Sep 17 00:00:00 2001 From: Gautam Date: Sun, 4 Feb 2018 23:25:21 -0600 Subject: [PATCH 31/33] Modified popup.js, background.js etc for fixes. --- background.js | 340 ++--- content_script.js | 908 +++++++------ manifest.json | 2 +- options.html | 52 +- options.js | 632 ++++----- popup.html | 126 +- popup.js | 3301 ++++++++++++++++++++++++--------------------- 7 files changed, 2823 insertions(+), 2538 deletions(-) diff --git a/background.js b/background.js index eebffec..2fceaa1 100644 --- a/background.js +++ b/background.js @@ -1,7 +1,7 @@ /** * Created by gdev on 3/19/2017. */ -var highlightTabs; + var highlightTabs; var tabsBackground; var currWindow; var timeOut; @@ -20,23 +20,23 @@ var options = ['tabsBackground', 'highlightTabs', 'timeOut', 'tabToLoad']; var loading_images = ['ajax-loader_LB.gif', - 'ajax-loader_LT.gif', - 'ajax-loader_RT.gif', - 'ajax-loader_RB.gif']; - + 'ajax-loader_LT.gif', + 'ajax-loader_RT.gif', + 'ajax-loader_RB.gif']; + var image_index = 0; var tabLoadTimeout = 60; - + var keep_switching_icon; function rotateIcon(rotate) -{ +{ keep_switching_icon = rotate === undefined ? keep_switching_icon : rotate; const image = keep_switching_icon ? "icons/" + loading_images[image_index] : "icons/ic_title_black_24dp_1x.png"; - //console.log("currWindow--" + currWindow + "---" + invokedWind); - //if (currWindow === invokedWind) { - chrome.browserAction.setIcon({path: image}); - //} - + //console.log("currWindow--" + currWindow + "---" + invokedWind); + //if (currWindow === invokedWind) { + chrome.browserAction.setIcon({path: image}); + //} + image_index = (image_index + 1) % loading_images.length; if ( keep_switching_icon ) @@ -45,101 +45,101 @@ function rotateIcon(rotate) } } chrome.storage.sync.get( options, function(items) { - highlightTabs = items.highlightTabs; - tabsBackground = items.tabsBackground; - timeOut = items.timeOut * 1000; - tabToLoad = items.tabToLoad; - console.log("time out--" + tabToLoad); + highlightTabs = items.highlightTabs; + tabsBackground = items.tabsBackground; + timeOut = items.timeOut * 1000; + tabToLoad = items.tabToLoad; + console.log("time out--" + tabToLoad); }); chrome.windows.getCurrent(function(win){ currWindow = win.id; }); chrome.storage.sync.get(function(data) { - console.log("data sync " + JSON.stringify(data)); -}); + console.log("data sync " + JSON.stringify(data)); +}); chrome.storage.onChanged.addListener(function(changes, area) { - console.log("in bkgd page" + JSON.stringify(changes)); - //console.log("currWindow from bkg" + currWindow); - + console.log("in bkgd page" + JSON.stringify(changes)); + //console.log("currWindow from bkg" + currWindow); + if (area == "sync" && "urlsToOpen" in changes) { - urls = changes.urlsToOpen.newValue; - if (typeof urls != "undefined" && urls !== null && urls.length > 0) { - pagesToOpen = urls; - tabToHilite = [changes.currTab.newValue.index]; - openAt = changes.currTab.newValue.index; - invokedWind = changes.invokedWindow.newValue; - console.log("invoked from " + invokedWind + "\n urls-" + urls.length); - console.log("list of urls to open--" + urls); - console.log(tabToLoad); - if (!changes.opnSmeTb.newValue) { - if (Array.isArray(urls)) { - currentTask = true; - openAt ++; - startTime = new Date().getTime(); - //var url = urls[0]; - var loopLimit = urls.length < parseInt(tabToLoad) ? urls.length : parseInt(tabToLoad); - for (var x = 0;x < loopLimit; x++) { - console.log("link----------------" + urls[x]); - url = urls[x]; - chrome.tabs.create({url: url, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ - tabToHilite.push(tab.index); - //openAt ++; - - //pagesToOpen.shift(); - //console.log(JSON.stringify(tab)); - if (firstPage === "") { - console.log("x equal to zero"); - firstPage = tab.id; - - } - lastTab = tab.id; - console.log("reset" + openAt + url); - // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); - //keep_switching_icon = true; - //console.log(keep_switching_icon); - rotateIcon(true); - - chrome.tabs.onRemoved.addListener(function (tabId , info) { - if (tabId === lastTab) { - chrome.storage.sync.set({loading: false}, function() {}); - rotateIcon(false); - //chrome.browserAction.setIcon({path: "icons/ic_title_black_24dp_1x.png", tabId : tabId}); - } - }); - - }); - openAt ++; - - } - - } else { - openAt ++; - chrome.tabs.create({url: urls, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ - tabToHilite.push(tab.index); - }); - chrome.storage.sync.set({loading: false}, function() {}); - } - } else { - chrome.tabs.update(changes.currTab.newValue.id, {url: urls[0]}); - chrome.storage.sync.set({loading: false}, function() {}); - } - - if (highlightTabs) { - chrome.tabs.highlight({tabs: tabToHilite, windowId: invokedWind}, function(){ - if (chrome.runtime.error) { - console.log("Runtime error."); - } - }); - } - - } - chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); + urls = changes.urlsToOpen.newValue; + if (typeof urls != "undefined" && urls !== null && urls.length > 0) { + pagesToOpen = urls; + tabToHilite = [changes.currTab.newValue.index]; + openAt = changes.currTab.newValue.index; + invokedWind = changes.invokedWindow.newValue; + console.log("invoked from " + invokedWind + "\n urls-" + urls.length); + console.log("list of urls to open--" + urls); + console.log(tabToLoad); + if (!changes.opnSmeTb.newValue) { + if (Array.isArray(urls)) { + currentTask = true; + openAt ++; + startTime = new Date().getTime(); + //var url = urls[0]; + var loopLimit = urls.length < parseInt(tabToLoad) ? urls.length : parseInt(tabToLoad); + for (var x = 0;x < loopLimit; x++) { + console.log("link----------------" + urls[x]); + url = urls[x]; + chrome.tabs.create({url: url, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ + tabToHilite.push(tab.index); + //openAt ++; + + //pagesToOpen.shift(); + //console.log(JSON.stringify(tab)); + if (firstPage === "") { + console.log("x equal to zero"); + firstPage = tab.id; + + } + lastTab = tab.id; + console.log("reset" + openAt + url); + // chrome.browserAction.setIcon({path:"icons/ajax-loader.gif"}); + //keep_switching_icon = true; + //console.log(keep_switching_icon); + rotateIcon(true); + + chrome.tabs.onRemoved.addListener(function (tabId , info) { + if (tabId === lastTab) { + chrome.storage.sync.set({loading: false}, function() {}); + rotateIcon(false); + //chrome.browserAction.setIcon({path: "icons/ic_title_black_24dp_1x.png", tabId : tabId}); + } + }); + + }); + openAt ++; + + } + + } else { + openAt ++; + chrome.tabs.create({url: urls, active : !tabsBackground, index: parseInt(openAt), windowId : invokedWind}, function(tab){ + tabToHilite.push(tab.index); + }); + chrome.storage.sync.set({loading: false}, function() {}); + } + } else { + chrome.tabs.update(changes.currTab.newValue.id, {url: urls[0]}); + chrome.storage.sync.set({loading: false}, function() {}); + } + + if (highlightTabs) { + chrome.tabs.highlight({tabs: tabToHilite, windowId: invokedWind}, function(){ + if (chrome.runtime.error) { + console.log("Runtime error."); + } + }); + } + + } + chrome.storage.sync.set({urlsToOpen: [], currTab : "", invokedWindow : "", opnSmeTb : ""}, function() {}); } - if (chrome.runtime.error) { - console.log("ddd Runtime error."); - } - + if (chrome.runtime.error) { + console.log("ddd Runtime error."); + } + }); var parentUrl = ""; @@ -154,74 +154,74 @@ var parentTitle = ""; });*/ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { - console.log("Test " + tabId + "--" + JSON.stringify(info) + "--" + JSON.stringify(changeInfo)); - if (parentUrl === "") { - parentUrl = info.url; - parentTitle = info.title; - //chrome.storage.sync.set({parentUrl: parentUrl}, function() {}); - } - - console.log("urls ln" + pagesToOpen.length); - if (info.status === "loading" && tabId === lastTab) { - var now = new Date().getTime(); - console.log(now - startTime); - console.log(timeOut); - if (now - startTime > timeOut) { - chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); - chrome.storage.sync.set({loading: false}, function() {}); - rotateIcon(false); - currentTask = false; - } - } - console.log(lastTab + "--tt--" + openAt); - - if (currentTask) { - if (info.status === "complete" && tabId === lastTab && pagesToOpen.length > 1) { - console.log("firstPage--" + firstPage); - if (firstPage !== "") { - chrome.tabs.update(firstPage, {active: true}); - firstPage = ""; - console.log("before-------------" + pagesToOpen.length); - for (var i = 0 ; i < parseInt(tabToLoad) - 1; i ++) { - pagesToOpen.shift(); - } - console.log("after-------------" + pagesToOpen.length); - } - console.log("k is-" + k); - if (k === parseInt(tabToLoad)) { - console.log("k is 2" + new Date().getTime()); - k = 0; - } - - for ( ;k < parseInt(tabToLoad); k++) { - console.log("k inside for--" + k + "---" + new Date().getTime() + "--------" + pagesToOpen[0]); - pagesToOpen.shift(); - console.log(pagesToOpen.length); - if (pagesToOpen.length > 0 ){ - chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { - lastTab = tab.id; - tabToHilite.push(tab.index); - //openAt ++; - }); - } - - openAt ++; - if (pagesToOpen.length === 1) { - return; - } - } - - } - if (info.status === "complete" && tabId === lastTab && pagesToOpen.length <= 1) { - console.log("current task done..."); - chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); - //chrome.runtime.sendMessage({msg: "completed"}, function(response) {}); - chrome.storage.sync.set({loading: false}, function() {}); - //keep_switching_icon = false; - rotateIcon(false); - currentTask = false; - } - } + console.log("Test " + tabId + "--" + JSON.stringify(info) + "--" + JSON.stringify(changeInfo)); + if (parentUrl === "") { + parentUrl = info.url; + parentTitle = info.title; + //chrome.storage.sync.set({parentUrl: parentUrl}, function() {}); + } + + console.log("urls ln" + pagesToOpen.length); + if (info.status === "loading" && tabId === lastTab) { + var now = new Date().getTime(); + console.log(now - startTime); + console.log(timeOut); + if (now - startTime > timeOut) { + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + chrome.storage.sync.set({loading: false}, function() {}); + rotateIcon(false); + currentTask = false; + } + } + console.log(lastTab + "--tt--" + openAt); + + if (currentTask) { + if (info.status === "complete" && tabId === lastTab && pagesToOpen.length > 1) { + console.log("firstPage--" + firstPage); + if (firstPage !== "") { + chrome.tabs.update(firstPage, {active: true}); + firstPage = ""; + console.log("before-------------" + pagesToOpen.length); + for (var i = 0 ; i < parseInt(tabToLoad) - 1; i ++) { + pagesToOpen.shift(); + } + console.log("after-------------" + pagesToOpen.length); + } + console.log("k is-" + k); + if (k === parseInt(tabToLoad)) { + console.log("k is 2" + new Date().getTime()); + k = 0; + } + + for ( ;k < parseInt(tabToLoad); k++) { + console.log("k inside for--" + k + "---" + new Date().getTime() + "--------" + pagesToOpen[0]); + pagesToOpen.shift(); + console.log(pagesToOpen.length); + if (pagesToOpen.length > 0 ){ + chrome.tabs.create({url: pagesToOpen[0], active : false, index: parseInt(openAt), windowId : invokedWind}, function(tab) { + lastTab = tab.id; + tabToHilite.push(tab.index); + //openAt ++; + }); + } + + openAt ++; + if (pagesToOpen.length === 1) { + return; + } + } + + } + if (info.status === "complete" && tabId === lastTab && pagesToOpen.length <= 1) { + console.log("current task done..."); + chrome.browserAction.setIcon({path:"icons/ic_title_black_24dp_1x.png"}); + //chrome.runtime.sendMessage({msg: "completed"}, function(response) {}); + chrome.storage.sync.set({loading: false}, function() {}); + //keep_switching_icon = false; + rotateIcon(false); + currentTask = false; + } + } }); @@ -229,13 +229,13 @@ chrome.tabs.onUpdated.addListener(function(tabId , changeInfo, info) { chrome.browserAction.onClicked.addListener(function(tab) { console.log("call adi"); chrome.tabs.executeScript({file: "./popup.js"}); - - + + });*/ /* chrome.runtime.onMessage.addListener(function(req, sender, sendres){ console.log("in lstnr"); - - + + });*/ diff --git a/content_script.js b/content_script.js index 326a56c..2182928 100644 --- a/content_script.js +++ b/content_script.js @@ -1,311 +1,362 @@ var jsonObj = {}; //jsonObj["current"] = "search"; -//jsonObj["description"] = "google search"; + //jsonObj["description"] = "google search"; var sites = []; var queryString = ""; var hrefAdded = []; function refreshObj() { - chrome.storage.local.get('googleSearch', function(searchResult){ - console.log("result orig-" + JSON.stringify(searchResult)); - if (searchResult.googleSearch) { - jsonObj = searchResult.googleSearch; - } - - if (location.origin.indexOf('cnn') > -1) { - queryString = ""; - //cnn - var urlBase = location.origin; - console.log(urlBase); - $("div.cd__content").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - //var urlBase = location.origin; - //console.log(urlBase); - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - console.log("not in hrefadded array"); - // var partialUrl = $(this).attr('href'); - //var fullUrl = urlBase + partialUrl; - //console.log(fullUrl); - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } - - }); - jsonObj['cnn'] = sites; - /*console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - });*/ - } else if (location.origin.indexOf('google') > -1) { - //refreshObj(); - queryString = document.getElementsByName("q")[0].value; - - //google - $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - - obj[this.text] = $(this).attr('href'); - sites.push(obj); - hrefAdded.push($(this).attr('href')); - - - }); - - $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = $(this).attr('href'); - sites.push(obj); - } - - - }); - - $("div.srg").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = $(this).attr('href'); - sites.push(obj); - } - - }); - console.log("Orig object...\n" + JSON.stringify(jsonObj)); - jsonObj['google'] = sites; - console.log("Final object...\n" + JSON.stringify(jsonObj)); - /*console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - });*/ - sites = []; - } else if (location.origin.indexOf('bing') > -1){ - //refreshObj(); - queryString = document.getElementsByName("q")[0].value; - //bing //ol.b_results - - $("ol#b_results > li.b_algo").find("h2 > a").each(function () { - console.log("Title: " + this.text); - var lnk = $(this).attr('href'); - console.log("from: " + JSON.stringify(lnk)); - var obj = {}; - obj[this.text] = $(this).attr('href'); - sites.push(obj); - }); - jsonObj['bing'] = sites; - /*console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - });*/ - - } else if (location.origin.indexOf('yahoo') > -1) { - - queryString = document.getElementsByName("p")[0].value; - //yahoo - $("div#web").find("h3 > a").each(function () { - console.log("Title: " + this.text); - var lnk = $(this).attr('href'); - console.log("from: " + JSON.stringify(lnk)); - var obj = {}; - obj[this.text] = $(this).attr('href'); - sites.push(obj); - }); - jsonObj['yahoo'] = sites; - /*console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - });*/ - } else if (location.origin.indexOf('youtube') > -1) { - - queryString = document.getElementsByName("search_query")[0].value; - //youtube //find("ytd-video-renderer") - $("div#contents").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } - - //div#title-wrapper - }); - console.log("Orig object...\n" + JSON.stringify(jsonObj)); - jsonObj['youtube'] = sites; - console.log("Final object...\n" + JSON.stringify(jsonObj)); - /*console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - });*/ - } else if (location.origin.indexOf('stackoverflow') > -1) { - if (document.getElementsByName("q")) { - queryString = document.getElementsByName("q")[0].value; - } - //stackoverflow - var urlBase = location.origin; - console.log(urlBase); - if (queryString === "") { - $("div.summary").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - //var urlBase = location.origin; - //console.log(urlBase); - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - console.log("not in hrefadded array"); - // var partialUrl = $(this).attr('href'); - //var fullUrl = urlBase + partialUrl; - //console.log(fullUrl); - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } - - }); - } else { - $("div.result-link").find("span > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - //var urlBase = location.origin; - //console.log(urlBase); - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - console.log("not in hrefadded array"); - // var partialUrl = $(this).attr('href'); - //var fullUrl = urlBase + partialUrl; - //console.log(fullUrl); - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } - - }); - } - - jsonObj['stackoverflow'] = sites; - /*console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - });*/ - } else if (location.origin.indexOf('washingtonpost') > -1) { - - - //washingtonpost - $("div.headline").find("a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - obj[this.text] = $(this).attr('href'); - sites.push(obj); - } - - //div#title-wrapper - }); - console.log("Orig object...\n" + JSON.stringify(jsonObj)); - jsonObj['washingtonpost'] = sites; - console.log("Final object...\n" + JSON.stringify(jsonObj)); - - } - console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - }); - sites = []; - }); + chrome.storage.local.get('googleSearch', function(searchResult){ + console.log("result orig-" + JSON.stringify(searchResult)); + if (searchResult.googleSearch) { + jsonObj = searchResult.googleSearch; + } + + if (location.origin.indexOf('cnn') > -1) { + queryString = ""; + //cnn + var urlBase = location.origin; + console.log(urlBase); + $("div.cd__content").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + //jsonObj['cnn'] = sites; + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = false; + newObj["sites"] = sites; //[newEntryObj]; + jsonObj['cnn'] = newObj; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('google') > -1) { + //refreshObj(); + queryString = document.getElementsByName("q")[0].value; + + //google + $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + + obj[this.text] = $(this).attr('href'); + sites.push(obj); + hrefAdded.push($(this).attr('href')); + + + }); + + $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + + }); + + $("div.srg").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + }); + console.log("Orig object...\n" + JSON.stringify(jsonObj)); + //jsonObj['google'] = sites; + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = false; + newObj["sites"] = sites; //[newEntryObj]; + jsonObj['google'] = newObj; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + sites = []; + } else if (location.origin.indexOf('bing') > -1){ + //refreshObj(); + queryString = document.getElementsByName("q")[0].value; + //bing //ol.b_results + + $("ol#b_results > li.b_algo").find("h2 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + }); + //jsonObj['bing'] = sites; + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = false; + newObj["sites"] = sites; //[newEntryObj]; + jsonObj['bing'] = newObj; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + + } else if (location.origin.indexOf('yahoo') > -1) { + + queryString = document.getElementsByName("p")[0].value; + //yahoo + $("div#web").find("h3 > a").each(function () { + console.log("Title: " + this.text); + var lnk = $(this).attr('href'); + console.log("from: " + JSON.stringify(lnk)); + var obj = {}; + obj[this.text] = $(this).attr('href'); + sites.push(obj); + }); + //jsonObj['yahoo'] = sites; + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = false; + newObj["sites"] = sites; //[newEntryObj]; + jsonObj['yahoo'] = newObj; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('youtube') > -1) { + + queryString = document.getElementsByName("search_query")[0].value; + //youtube //find("ytd-video-renderer") + $("div#contents").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + //div#title-wrapper + }); + console.log("Orig object...\n" + JSON.stringify(jsonObj)); + //jsonObj['youtube'] = sites; + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = false; + newObj["sites"] = sites; //[newEntryObj]; + jsonObj['youtube'] = newObj; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('stackoverflow') > -1) { + var groupedObj = {}; + if (document.getElementsByName("q")) { + queryString = document.getElementsByName("q")[0].value; + } + //stackoverflow + var urlBase = location.origin; + console.log(urlBase); + if (queryString === "") { + $("div.summary").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + //var subItems=[]; + + $(this).parent().next().find("a").each (function (){ + var subItems = groupedObj[this.text]; + if (subItems && subItems.length > 0) { + subItems.push(obj); + } else { + subItems = []; + subItems.push(obj); + } + groupedObj[this.text] = subItems; + + }); + + //sites.push(obj); + } + + }); + } else { + $("div.result-link").find("span > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + } + + //jsonObj['stackoverflow'] = sites; + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = true; + newObj["sites"] = groupedObj; //sites; //[newEntryObj]; + jsonObj['stackoverflow'] = newObj; + /*console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + });*/ + } else if (location.origin.indexOf('washingtonpost') > -1) { + + + //washingtonpost + $("div.headline").find("a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + obj[this.text] = $(this).attr('href'); + sites.push(obj); + } + + //div#title-wrapper + }); + + console.log("Orig object...\n" + JSON.stringify(jsonObj)); + var newObj = {}; + newObj["current"] = location.origin; + newObj["tree"] = false; + newObj["sites"] = sites; //[newEntryObj]; + jsonObj['washingtonpost'] = newObj; + //jsonObj['washingtonpost'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + + } + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); + sites = []; + }); - //console.log("obj new-" + JSON.stringify(jsonObj)); + //console.log("obj new-" + JSON.stringify(jsonObj)); } - - - - - + + + + + window.addEventListener ("load", myMain, false); function myMain (evt) { - //refreshObj(); - - - /*if (location.origin.indexOf('cnn') > -1) { - refreshObj(); - queryString = ""; - //cnn - var urlBase = location.origin; - console.log(urlBase); - $("div.cd__content").find("h3 > a").each(function (index) { - console.log("Title: " + this.text); - console.log($(this)); - //$(this).append("
My new line text"); - console.log('me done'); - var obj = {}; - //var urlBase = location.origin; - //console.log(urlBase); - if (hrefAdded.indexOf($(this).attr('href')) === -1) { - console.log("not in hrefadded array"); - // var partialUrl = $(this).attr('href'); - //var fullUrl = urlBase + partialUrl; - //console.log(fullUrl); - obj[this.text] = location.origin + $(this).attr('href'); - sites.push(obj); - } - - }); - jsonObj['cnn'] = sites; - console.log("Final object...\n" + JSON.stringify(jsonObj)); - console.log("queryStr--" + queryString); - //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); - chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { - console.log('Settings saved'); - }); - }*/ - - - - - - - - //chrome.runtime.sendMessage({cnnLoading: "complete"}); - /*chrome.storage.local.set({'cnnLoading': "complete"}, function() { - console.log('Cnn loading complete..'); - });*/ + //refreshObj(); + + + /*if (location.origin.indexOf('cnn') > -1) { + refreshObj(); + queryString = ""; + //cnn + var urlBase = location.origin; + console.log(urlBase); + $("div.cd__content").find("h3 > a").each(function (index) { + console.log("Title: " + this.text); + console.log($(this)); + //$(this).append("
My new line text"); + console.log('me done'); + var obj = {}; + //var urlBase = location.origin; + //console.log(urlBase); + if (hrefAdded.indexOf($(this).attr('href')) === -1) { + console.log("not in hrefadded array"); + // var partialUrl = $(this).attr('href'); + //var fullUrl = urlBase + partialUrl; + //console.log(fullUrl); + obj[this.text] = location.origin + $(this).attr('href'); + sites.push(obj); + } + + }); + jsonObj['cnn'] = sites; + console.log("Final object...\n" + JSON.stringify(jsonObj)); + console.log("queryStr--" + queryString); + //chrome.storage.local.set({'googleSearch': "", 'queryString' : "", 'searchEngine' : ""}, function() {}); + chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { + console.log('Settings saved'); + }); + }*/ + + + + + + + + //chrome.runtime.sendMessage({cnnLoading: "complete"}); + /*chrome.storage.local.set({'cnnLoading': "complete"}, function() { + console.log('Cnn loading complete..'); + });*/ } -/* +/* if (location.origin.indexOf('yahoo') > -1) { refreshObj(); @@ -339,7 +390,7 @@ if (location.origin.indexOf('yahoo') > -1) { obj[this.text] = location.origin + $(this).attr('href'); sites.push(obj); } - + //div#title-wrapper }); jsonObj['youtube'] = sites; @@ -353,7 +404,7 @@ if (location.origin.indexOf('yahoo') > -1) { } else if (location.origin.indexOf('google') > -1) { refreshObj(); queryString = document.getElementsByName("q")[0].value; - + //google $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { console.log("Title: " + this.text); @@ -361,12 +412,12 @@ if (location.origin.indexOf('yahoo') > -1) { //$(this).append("
My new line text"); console.log('me done'); var obj = {}; - + obj[this.text] = $(this).attr('href'); sites.push(obj); hrefAdded.push($(this).attr('href')); - - + + }); $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { @@ -379,8 +430,8 @@ if (location.origin.indexOf('yahoo') > -1) { obj[this.text] = $(this).attr('href'); sites.push(obj); } - - + + }); $("div.srg").find("h3 > a").each(function (index) { @@ -393,7 +444,7 @@ if (location.origin.indexOf('yahoo') > -1) { obj[this.text] = $(this).attr('href'); sites.push(obj); } - + }); jsonObj['google'] = sites; console.log("Final object...\n" + JSON.stringify(jsonObj)); @@ -405,7 +456,7 @@ if (location.origin.indexOf('yahoo') > -1) { refreshObj(); queryString = document.getElementsByName("q")[0].value; //bing //ol.b_results - + $("ol#b_results > li.b_algo").find("h2 > a").each(function () { console.log("Title: " + this.text); var lnk = $(this).attr('href'); @@ -420,7 +471,7 @@ if (location.origin.indexOf('yahoo') > -1) { chrome.storage.local.set({'googleSearch': jsonObj, 'queryString' : queryString, 'searchEngine' : location.origin}, function() { console.log('Settings saved'); }); - + }*/ //var queryString = document.getElementsByName("q")[0].value; //"p" for yahoo /*console.log("jjjjj" + queryString); @@ -443,160 +494,161 @@ console.log(location.origin);*/ var fromGS = {}; $("div.srg").find("h3 > a").click(function () { - fromGS = $(this).attr('href'); - console.log("from: " + JSON.stringify(fromGS)); - + fromGS = $(this).attr('href'); + console.log("from: " + JSON.stringify(fromGS)); + }); $('a').click(function(){ - - //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); + + //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); }); var urlArr = [];//[id^="yui_"] $('a').each(function(index){ - //urlArr.push($(this).attr('href')); - //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); - //console.log('u r going to ' + $(this).attr('href') + '..jst li dt..' ); - //console.log( $(this)); + //urlArr.push($(this).attr('href')); + //alert('u r going to ' + $(this).attr('href') + '..jst li dt..'); + //console.log('u r going to ' + $(this).attr('href') + '..jst li dt..' ); + //console.log( $(this)); }); //console.log("showing..\n" + urlArr); chrome.runtime.onMessage.addListener(function(req, sender, sendres){ - if (req.exec) { - refreshObj(); - return; - } - - console.log("in lsner lll" + location.origin); - /*if (request.greeting == "hello")*/ + if (req.exec) { + refreshObj(); + return; + } + + //console.log("in lsner lll" + location.origin); + /*if (request.greeting == "hello")*/ var url = new URL(location.origin); - var name = url.hostname.split('.')[1]; - //if (req.highlight) { - //alert(req.selectedItems); - - console.log("in lsner" + req.selectedItems); - - if (name === 'google') { - highlightTextG(req.selectedItems, req.highlight); - } else if (name === 'yahoo') { - highlightTextY(req.selectedItems, req.highlight); - } else if (name === 'bing') { - highlightTextB(req.selectedItems, req.highlight); - } else if (name === 'youtube') { - highlightTextYT(req.selectedItems, req.highlight); - } - + var name = url.hostname.split('.')[1]; + //if (req.highlight) { + //alert(req.selectedItems); + + //console.log("in lsner" + req.selectedItems); + + if (name === 'google') { + highlightTextG(req.selectedItems, req.highlight); + } else if (name === 'yahoo') { + highlightTextY(req.selectedItems, req.highlight); + } else if (name === 'bing') { + highlightTextB(req.selectedItems, req.highlight); + } else if (name === 'youtube') { + highlightTextYT(req.selectedItems, req.highlight); + } + }); function highlightTextG(selectedItems, highlight) { + + //console.log("in highlight"); + //$("div.srg").find("h3 > a").each(function (index) { + $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { + //console.log("in first search.." + selectedItems); + //console.log("in first search.." + $(this).attr('href')); + if(selectedItems === $(this).attr('href')) { + if (highlight) { + //console.log("going to highlight,,,"); + $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); + } else { + //console.log("going to de highlight,,,"); + $(this.parentNode.nextSibling).css("background-color",""); + } + + //console.log($(this)); + //console.log($(this.parentNode.nextSibling)); + } + }); - console.log("in highlight"); - //$("div.srg").find("h3 > a").each(function (index) { - $("div#rso > div._NId:first").find("div.g").find("div.rc").find("h3 > a").each(function (index) { - //console.log("in first search.." + selectedItems); - //console.log("in first search.." + $(this).attr('href')); - if(selectedItems === $(this).attr('href')) { - if (highlight) { - //console.log("going to highlight,,,"); - $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); - } else { - //console.log("going to de highlight,,,"); - $(this.parentNode.nextSibling).css("background-color",""); - } - - console.log($(this)); - console.log($(this.parentNode.nextSibling)); - } - }); - - $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { - console.log("in 2nd search.."); - if(selectedItems === $(this).attr('href')) { - if (highlight) { - $("div#rso").find("div > g-section-with-header").css("background-color","#E2DDDD"); - - //$(this.parentNode.nextSibling).css("background-color","#E2DDDD"); - } else { - $("div#rso").find("div > g-section-with-header").css("background-color",""); - } - - console.log($(this)); - console.log($("div#rso").find("div > g-section-with-header > g-scrolling-carousel")); - } - - }); - $("div.srg").find("h3 > a").each(function (index) { - console.log("in 3rd search.."); - if(selectedItems === $(this).attr('href')) { - if (highlight) { - $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); - } else { - $(this.parentNode.nextSibling).css("background-color",""); - } - - console.log($(this)); - console.log($(this.parentNode.nextSibling)); - } - }); + $("div#rso").find("div > g-section-with-header").find("h3").find("a").each(function (index) { + //console.log("in 2nd search.."); + if(selectedItems === $(this).attr('href')) { + if (highlight) { + $("div#rso").find("div > g-section-with-header").css("background-color","#E2DDDD"); + + //$(this.parentNode.nextSibling).css("background-color","#E2DDDD"); + } else { + $("div#rso").find("div > g-section-with-header").css("background-color",""); + } + + //console.log($(this)); + //console.log($("div#rso").find("div > g-section-with-header > g-scrolling-carousel")); + } + + }); + $("div.srg").find("h3 > a").each(function (index) { + //console.log("in 3rd search.."); + if(selectedItems === $(this).attr('href')) { + if (highlight) { + $(this.parentNode.nextSibling).css("background-color","#E2DDDD"); + } else { + $(this.parentNode.nextSibling).css("background-color",""); + } + + //console.log($(this)); + //console.log($(this.parentNode.nextSibling)); + } + }); } function highlightTextY(selectedItems, highlight) { - - console.log("in highlight"); - $("div#web").find("h3 > a").each(function () { - if(selectedItems === $(this).attr('href')) { - if (highlight) { - $(this.parentNode.parentNode.nextSibling.nextSibling).css("background-color","#E2DDDD"); - } else { - $(this.parentNode.parentNode.nextSibling.nextSibling).css("background-color",""); - } - console.log($(this)); - console.log($(this.parentNode.parentNode.nextSibling.nextSibling)); - } - - }); - + + //console.log("in highlight"); + $("div#web").find("h3 > a").each(function () { + if(selectedItems === $(this).attr('href')) { + if (highlight) { + $(this.parentNode.parentNode.nextSibling.nextSibling).css("background-color","#E2DDDD"); + } else { + $(this.parentNode.parentNode.nextSibling.nextSibling).css("background-color",""); + } + //console.log($(this)); + //console.log($(this.parentNode.parentNode.nextSibling.nextSibling)); + } + + }); + } function highlightTextB(selectedItems, highlight) { - - console.log("in highlight"); - $("ol#b_results > li.b_algo").find("h2 > a").each(function () { - if(selectedItems === $(this).attr('href')) { - console.log($(this)); - console.log($(this.parentNode.nextSibling)); - if (highlight) { - $(this.parentNode.parentNode).find("div.b_caption").css("background-color","#E2DDDD"); - } else { - $(this.parentNode.parentNode).find("div.b_caption").css("background-color",""); - } - - } - - }); - + + //console.log("in highlight"); + $("ol#b_results > li.b_algo").find("h2 > a").each(function () { + if(selectedItems === $(this).attr('href')) { + //console.log($(this)); + //console.log($(this.parentNode.nextSibling)); + if (highlight) { + $(this.parentNode.parentNode).find("div.b_caption").css("background-color","#E2DDDD"); + } else { + $(this.parentNode.parentNode).find("div.b_caption").css("background-color",""); + } + + } + + }); + } function highlightTextYT(selectedItems, highlight) { - - console.log("in highlight" + selectedItems); - $("div#contents").find("ytd-video-renderer").find("h3 > a").each(function (index) { - console.log($(this).attr('href')); - if(selectedItems.indexOf($(this).attr('href')) > -1) { - console.log($(this)); - console.log($(this.parentNode.nextSibling)); - console.log($(this.parentNode.parentNode)); - if (highlight) { - $(this.parentNode.parentNode).css("background-color","#E2DDDD"); - } else { - $(this.parentNode.parentNode).css("background-color",""); - } - - } - - }); + + //console.log("in highlight" + selectedItems); + $("div#contents").find("ytd-video-renderer").find("h3 > a").each(function (index) { + //console.log($(this).attr('href')); + if(selectedItems.indexOf($(this).attr('href')) > -1) { + //console.log($(this)); + //console.log($(this.parentNode.nextSibling)); + //console.log($(this.parentNode.parentNode)); + if (highlight) { + $(this.parentNode.parentNode).css("background-color","#E2DDDD"); + } else { + $(this.parentNode.parentNode).css("background-color",""); + } + + } + + }); + } \ No newline at end of file diff --git a/manifest.json b/manifest.json index 7907c7a..f3f25c7 100644 --- a/manifest.json +++ b/manifest.json @@ -43,7 +43,7 @@ "https://www.bing.com/*", "https://www.youtube.com/*", "https://in.yahoo.com/*", - "http://wwww.cnn.com/*", + "http://www.cnn.com/*", "https://stackoverflow.com/*", "https://www.washingtonpost.com/*" ], diff --git a/options.html b/options.html index fb3c2da..807ca47 100644 --- a/options.html +++ b/options.html @@ -1,26 +1,26 @@ - My Preferences Options - + @@ -30,25 +30,25 @@
-->