const tabsAction    = browser.tabs;
const searchBar     = document.getElementById("searchBar");
const errHandler    = document.getElementById("errorZone");
const listZone      = document.getElementById("listZone");
const notFoundText  = document.createTextNode("Search not found...");
const tabImg        = browser.extension.getURL("icons/tab.png");
var oldElm          = "";
var plusTag         = ""

function logTabs(tabs) {
    // tab.url requires the `tabs` permission
    for (let tab of tabs) {
        createContainer(tab);
    }
    // Set poped-out-window position and 100px up from selected elm
     oldElm.scrollIntoView();
     window.scrollBy(0, -100);
}

function createContainer(tab) {
    var id                = tab.id;
    var spanTag           = document.createElement("DIV");
    var pTag              = document.createElement("P");
    var iconText          = document.createTextNode(tab.title);
    var closeImgTag       = document.createElement("IMG");
    var hidnStImgTag      = document.createElement("IMG");
    var icoImgTag         = document.createElement("IMG");  // Used to properly set bg

    spanTag.setAttribute("tabID", tab.id);
    spanTag.title         = tab.title;
    spanTag.id            = "iconElm";
    closeImgTag.id        = "closeBttn";
    closeImgTag.className = "closeImg";
    closeImgTag.src       = "../icons/x.png";
    hidnStImgTag.id       = "hideTgglBttn"
    hidnStImgTag.className= "hiderImg";
    pTag.className        = "pTagTitleText";

    if (!tab.hidden) {
        spanTag.className = "block";
        hidnStImgTag.src  = "../icons/eyeOpen.png";
    } else {
        spanTag.className = "block hiddenBGColor";
        hidnStImgTag.src  = "../icons/eyeClosed.png";
    }

    spanTag.style.backgroundImage    = "url(" + tab.favIconUrl + ")";
    icoImgTag.src         = tab.favIconUrl;
    icoImgTag.onerror     = function() { spanTag.style.backgroundImage = "url(" + tabImg + ")"; }

    spanTag.appendChild(closeImgTag);
    spanTag.appendChild(hidnStImgTag);
    pTag.appendChild(iconText);
    spanTag.appendChild(pTag);
    listZone.appendChild(spanTag);

    // Set oldElm so eventListeners.js has starting ref
    if (tab.active == true) {
        spanTag.className     = "block block-focused";
        if (oldElm) {
            oldElm.setAttribute("class", "block");
        }
        oldElm = spanTag;
    }
}

function createTab() {
  tabsAction.create({})
            .then(function (tab) {
                createContainer(tab);
            }).then(function () {
                listZone.appendChild(plusTag);
            });
}

function onError(error) { console.log(`Error: ${error}`); }

function getTabs(tabs) {
    // Get current tab and then list of tabs
    tabsAction.query({currentWindow: true})
            .then(logTabs, onError);
}
getTabs();
