var app = {}; var BackgroundImage = null; var GridBackImage = null; var GridFolderImage = null; app.init = function(){ app.Messages.getSettings(function(settings){ app.settings = settings; BackgroundColor.value = app.settings.backgroundColor; BackgroundImage = app.settings.backgroundImage; BackgroundPreview.style.backgroundColor = app.settings.backgroundColor; BackgroundPreview.style.backgroundImage = app.settings.backgroundImage; BackgroundPreview.style.backgroundRepeat = 'no-repeat'; BackgroundPreview.style.backgroundSize = '100% 100%'; GridRows.value = app.settings.grid.rows; GridMargins.value = app.settings.grid.margin; GridColumns.value = app.settings.grid.columns; GridBackNode.checked = app.settings.grid.backNode; GridBackImage = app.settings.grid.backIcon; GridBackPreview.style.backgroundImage = app.settings.grid.backIcon; GridBackPreview.style.backgroundRepeat = 'no-repeat'; GridBackPreview.style.backgroundPosition = '50% 50%'; GridFolderImage = app.settings.grid.folderIcon; GridFolderPreview.style.backgroundImage = app.settings.grid.folderIcon; GridFolderPreview.style.backgroundRepeat = 'no-repeat'; GridFolderPreview.style.backgroundSize = '100% 100%'; GridCellsMargins.value = app.settings.grid.cells.margin; GridCellsMarginsHover.value = app.settings.grid.cells.marginHover; GridCellsBackgroundTransparent.checked = (app.settings.grid.cells.backgroundColor == null); GridCellsBackgroundColor.value = app.settings.grid.cells.backgroundColor; GridCellsBackgroundTransparentHover.checked = (app.settings.grid.cells.backgroundColorHover == null); GridCellsBackgroundColorHover.value = app.settings.grid.cells.backgroundColorHover; GridCellsBorderRadius.value = app.settings.grid.cells.borderRadius; GridCellsBorderRadiusHover.value = app.settings.grid.cells.borderRadiusHover; GridCellsBorderColor.value = app.settings.grid.cells.borderColor; GridCellsBorderColorHover.value = app.settings.grid.cells.borderColorHover; GridCellsTitle.checked = app.settings.grid.cells.title; GridCellsTitleHeight.value = app.settings.grid.cells.titleHeight; GridCellsTitleFontSize.value = app.settings.grid.cells.titleFontSize; GridCellsTitleColor.value = app.settings.grid.cells.titleColor; GridCellsTitleColorHover.value = app.settings.grid.cells.titleColorHover; GridCellsTitleBackgroundTransparent.checked = (app.settings.grid.cells.titleBackgroundColor == null); GridCellsTitleBackgroundColor.value = app.settings.grid.cells.titleBackgroundColor; GridCellsTitleBackgroundColorHover.value = app.settings.grid.cells.titleBackgroundColorHover; GridCellsTitleBackgroundTransparentHover.checked = (app.settings.grid.cells.titleBackgroundColorHover == null); }); BtnOk.onclick = function(){ BtnApply.onclick(); window.frameElement.popup.close(); } BtnApply.onclick = function(){ app.settings.backgroundColor = BackgroundColor.value; app.settings.backgroundImage = BackgroundImage; app.settings.grid.rows = +(GridRows.value); app.settings.grid.margin = +(GridMargins.value); app.settings.grid.columns = +(GridColumns.value); app.settings.grid.backNode = GridBackNode.checked; app.settings.grid.backIcon = GridBackImage; app.settings.grid.folderIcon = GridFolderImage; app.settings.grid.cells.margin = +(GridCellsMargins.value); //app.settings.grid.cells.marginHover = +(GridCellsMarginsHover.value); app.settings.grid.cells.marginHover = +(GridCellsMargins.value); if(GridCellsBackgroundTransparent.checked == true) app.settings.grid.cells.backgroundColor = null; else app.settings.grid.cells.backgroundColor = GridCellsBackgroundColor.value; if(GridCellsBackgroundTransparentHover.checked == true) app.settings.grid.cells.backgroundColorHover = null; else app.settings.grid.cells.backgroundColorHover = GridCellsBackgroundColorHover.value; app.settings.grid.cells.borderRadius = +(GridCellsBorderRadius.value); app.settings.grid.cells.borderRadiusHover = +(GridCellsBorderRadiusHover.value); app.settings.grid.cells.borderColor = GridCellsBorderColor.value; app.settings.grid.cells.borderColorHover = GridCellsBorderColorHover.value; app.settings.grid.cells.title = GridCellsTitle.checked; app.settings.grid.cells.titleHeight = GridCellsTitleHeight.value; app.settings.grid.cells.titleFontSize = GridCellsTitleFontSize.value; app.settings.grid.cells.titleColor = GridCellsTitleColor.value; app.settings.grid.cells.titleColorHover = GridCellsTitleColorHover.value; if(GridCellsTitleBackgroundTransparent.checked == true) app.settings.grid.cells.titleBackgroundColor = null; else app.settings.grid.cells.titleBackgroundColor = GridCellsTitleBackgroundColor.value; if(GridCellsTitleBackgroundTransparentHover.checked == true) app.settings.grid.cells.titleBackgroundColorHover = null; else app.settings.grid.cells.titleBackgroundColorHover = GridCellsTitleBackgroundColorHover.value; browser.runtime.sendMessage( { cmd: app.Messages.Commands.setSettings, settings: app.settings } ); } BtnCancel.onclick = function(){ window.frameElement.popup.close(); } var tabButtons = Tabs.children[0].children[0].children[0]; for(var i=0; i<tabButtons.children.length-1; i++){ tabButtons.children[i].index = i; tabButtons.children[i].onclick = function(){ for(var j=0; j<tabButtons.children.length-1; j++){ if(j==this.index){ tabButtons.children[j].className = 'TabButtonActive'; Tabs.children[1].children[j].className = ''; } else { tabButtons.children[j].className = 'TabButton'; Tabs.children[1].children[j].className = 'hidden'; } } } } BackgroundColor.onchange = function(){ BackgroundPreview.style.backgroundColor = BackgroundColor.value; } BackgroundImageClear.onclick = function(){ BackgroundImage = null; BackgroundPreview.style.backgroundImage = BackgroundImage; } BackgroundImageFile.onclick = function(){ this.value = null; } BackgroundImageFile.onchange = function(){ var fileReader = new FileReader(); fileReader.onload = function(e){ BackgroundImage = 'url(' + e.target.result + ')'; BackgroundImageFile.value = null; BackgroundPreview.style.backgroundImage = BackgroundImage; } fileReader.readAsDataURL(BackgroundImageFile.files[0]); } GridBackImageReset.onclick = function(){ GridBackImage = 'url(/img/back.png)'; GridBackPreview.style.backgroundImage = GridBackImage; } GridBackImageFile.onclick = function(){ this.value = null; } GridBackImageFile.onchange = function(){ var fileReader = new FileReader(); fileReader.onload = function(e){ GridBackImage = 'url(' + e.target.result + ')'; GridBackImageFile.value = null; GridBackPreview.style.backgroundImage = GridBackImage; } fileReader.readAsDataURL(GridBackImageFile.files[0]); } GridFolderImageReset.onclick = function(){ GridFolderImage = 'url(/img/folder.png)'; GridFolderPreview.style.backgroundImage = GridFolderImage; } GridFolderImageFile.onclick = function(){ this.value = null; } GridFolderImageFile.onchange = function(){ var fileReader = new FileReader(); fileReader.onload = function(e){ GridFolderImage = 'url(' + e.target.result + ')'; GridFolderImageFile.value = null; GridFolderPreview.style.backgroundImage = GridFolderImage; } fileReader.readAsDataURL(GridFolderImageFile.files[0]); } }; app.Messages = {}; app.Messages.Commands = { getSettings: 0, setSettings: 1, getNode: 2, setNodeIndex: 3, createBookmark: 4, createFolder: 5, deleteNode: 6, refreshNode: 7, capturePage: 8, settingsChanged: 100, gridNodesLoaded: 101 }; app.Messages.getSettings = function(callback){ browser.runtime.sendMessage({ cmd: app.Messages.Commands.getSettings }).then(callback); }; window.onload = function(){ app.init(); };