// ==UserScript== // @name Edge-nuity Megascript // @version 1.6 // @description Completes through instructional, summary, and warm-up sections by guessing answers (they don’t impact grades). You can begin activities while the instructor is speaking, when theres an activity, a "Search clipboard" button appears for quick access to answers during quizzes (will search your copied text on brainly and auto-redirect) And much more (read desc). // @author TTT // @license MIT // @include *://*core.learn*/* // @include https://brainly.com/* // @grant none // @namespace https://www.tampermonkey.net/ // @downloadURL none // ==/UserScript== const checkElementVisibility = (element) => { const boundingRect = element.getBoundingClientRect(); const computedStyle = window.getComputedStyle(element); return ( computedStyle.opacity !== '0' && computedStyle.visibility !== 'hidden' && computedStyle.display !== 'none' && boundingRect.width > 0 && boundingRect.height > 0 ); }; const checkForTimerStayElement = () => { const targetElement = document.getElementById('timerStay'); if (targetElement && checkElementVisibility(targetElement)) { const simulatedClickEvent = new MouseEvent('click', { view: window, bubbles: true, cancelable: true }); targetElement.dispatchEvent(simulatedClickEvent); } }; if (window.top === window.self) { const intervalId = setInterval(checkForTimerStayElement, 100); } let videoElement = null; let alertTriggered = false; let alertScheduled = false; const callback = function(mutationsList, observer) { for (const mutation of mutationsList) { if (mutation.type === 'childList') { videoElement = document.getElementById("home_video_js"); if (videoElement) { startCheckingVideo(); observer.disconnect(); } } } }; const config = { attributes: false, childList: true, subtree: true }; const targetNode = document.body; const observer = new MutationObserver(callback); observer.observe(targetNode, config); function startCheckingVideo() { setInterval(() => { if (videoElement) { const currentTime = videoElement.currentTime; const duration = videoElement.duration; if (currentTime >= duration) { if (!alertScheduled) { alertScheduled = true; let checksCount = 0; let allChecksPassed = true; const intervalId = setInterval(() => { const homeVideoContainer = document.getElementById("home_video_container"); if (homeVideoContainer && homeVideoContainer.parentNode.style.opacity == 1) { checksCount++; } else { allChecksPassed = false; } if (checksCount === 10) { clearInterval(intervalId); if (allChecksPassed) { new Notification("Reload!"); alertTriggered = true; } alertScheduled = false; } }, 100); } } else { alertTriggered = false; } } }, 550); } (function() { 'use strict'; let completeCount = 0; const originalConsoleLog = console.log; console.log = function() { const message = Array.from(arguments).join(' '); if (message.includes('complete')) { completeCount++; if (completeCount === 2) { const goRightButton = document.querySelector('li.FrameRight a'); if (goRightButton) { goRightButton.click(); completeCount = 0; } } } originalConsoleLog.apply(console, arguments); }; })(); function checkAutoplay() { const isAutoplayChecked = document.getElementById('autoplayCheckbox').checked; if (isAutoplayChecked) { playVideo(); } } if (window.top === window.self) { setInterval(checkAutoplay, 1000);} function playVideo() { var playButton = window.frames[0].document.getElementById("uid1_play"); if (playButton != undefined) { setTimeout(function() { if (playButton.className == "play") { playButton.children[0].click(); } }, 1000); } } function showColumn() { try { window.frames[0].frames[0].document.getElementsByClassName("right-column")[0].children[0].style.display = "block"; } catch (TypeError) {} try { window.frames[0].frames[0].document.getElementsByClassName("left-column")[0].children[0].style.display = "block"; } catch (TypeError) {} } if (window.top === window.self) { setInterval(showColumn, 1000);} function clearLocalStorage() { try { localStorage.clear(); } catch (error) {} } function removeElementsByClassName(className) { var elements = document.getElementsByClassName(className); Array.prototype.forEach.call(elements, function(element) { try { element.parentNode.removeChild(element); } catch (error) {} }); } function handleOnload() { var classNamesToRemove = [ "brn-expanded-bottom-banner", "brn-brainly-plus-box", "brn-fullscreen-toplayer", "sg-overlay sg-overlay--dark" ]; classNamesToRemove.forEach(function(className) { removeElementsByClassName(className); }); } if (window.location.href.includes("brainly.com")) { clearLocalStorage(); handleOnload(); } function redirectToFirstSearchItem() { if (window.location.href.startsWith('https://brainly.com/app/ask')) { const searchItem = document.querySelector('[data-testid="search-item-facade-wrapper"]'); if (searchItem) { const anchorElement = searchItem.querySelector('a'); if (anchorElement) { const href = anchorElement.getAttribute('href'); const fullUrl = `https://brainly.com${href}`; window.location.href = fullUrl; clearInterval(interval); } } } } const interval = setInterval(redirectToFirstSearchItem, 1000); function checkElement() { const element = document.querySelector('[data-testid="answer_box"][data-test="locked_answer"]'); if (element && document.location.href.includes("brainly.com/question")) { location.reload(); } }if (window.top === window.self) { setInterval(checkElement, 750);} function extractTextFromIframe() { var iframeDocument = window.frames[0].document; var targetElements = iframeDocument.getElementsByClassName("Assessment_Main_Body_Content_Question"); var visibleElements = Array.from(targetElements).filter(function(element) { return element.style.display !== "none" && element.id.includes("q_"); }); if (visibleElements.length > 0) { var finalTextOutput = []; var regex = />([^<]+)]*>| | /g; visibleElements.forEach(function(targetElement) { var elementText = ""; let matches; while ((matches = regex.exec(targetElement.innerHTML)) !== null) { var extractedText = matches[1].trim(); if (extractedText && !/(class|src|align|style)=/i.test(extractedText)) { elementText += extractedText + " "; } } while ((matches = regexSpecial.exec(targetElement.innerHTML)) !== null) { var extractedText = matches[1].trim(); if (extractedText && !/(class|src|align|style)=/i.test(extractedText)) { elementText += extractedText + " "; } } var imgElements = targetElement.getElementsByTagName("img"); Array.from(imgElements).forEach(function(img) { if (img.alt) { elementText += img.alt.trim() + " "; } }); elementText = elementText.replace(regexCleanUp, ' ').trim(); elementText = elementText.replace(/\u00A0/g, ' '); if (elementText) { finalTextOutput.push(elementText); } }); var tempTextArea = document.createElement("textarea"); tempTextArea.value = finalTextOutput.join("\n").replace(/\s+/g, ' '); document.body.appendChild(tempTextArea); tempTextArea.select(); document.execCommand("Copy"); document.body.removeChild(tempTextArea); setTimeout(function() { var buttons = Array.from(document.getElementsByTagName('button')); var searchClipboardButton = buttons.find(button => button.innerText === "Search Clipboard"); if (searchClipboardButton) { searchClipboardButton.click(); } else { alert("Make sure the Search Clipboard button is checked in the options pane."); } }, 101); } } const activityTitleElement = document.getElementById("activity-title"); if (activityTitleElement) { const activityTitleText = activityTitleElement.textContent || activityTitleElement.innerText; function handleAssessment() { setTimeout(() => { extractTextFromIframe(); }, 250); const iframe = window.frames[0]; const iframeDocument = iframe.document; const targetElements = iframeDocument.getElementsByClassName("Assessment_Main_Body_Content_Question"); const visibleElements = Array.from(targetElements).filter(function(element) { return element.style.display !== "none" && element.id.includes("q_"); }); } function handleAssignment() { const nestedIframeDocument = window.frames[0].frames[0].document; const contentElements = nestedIframeDocument.getElementsByClassName("content"); const altElements = nestedIframeDocument.querySelectorAll('[alt]'); let contentText = ''; if (contentElements.length > 0) { contentText = Array.from(contentElements) .map(element => element.innerText) .join('\n'); } const altValues = Array.from(altElements) .map(element => element.getAttribute('alt')) .join('\n'); const combinedText = contentText + (contentText && altValues ? '\n' : '') + altValues; if (combinedText) { navigator.clipboard.writeText(combinedText) .then(() => { console.log('Content copied to clipboard!'); setTimeout(() => { clickSearchClipboard(); }, 100); }); } } document.addEventListener('keydown', function(event) { if (event.key === '3') { if (activityTitleText.includes("Test") || activityTitleText.includes("Exam") || activityTitleText.includes("Quiz")) { handleAssessment(); } else if (activityTitleText.includes("Assignment")) { handleAssignment(); } } }); } function clickSearchClipboard() { const buttons = Array.from(document.querySelectorAll('button')); const buttonToClick = buttons.find(button => button.innerText === 'Search Clipboard'); if (buttonToClick) { buttonToClick.click(); } else { alert("Make sure the Search Clipboard button is checked in the options pane."); } } function addKeyListener() { const frame = window.frames[0]; const initialButtonCheck = document.getElementById('searchActionButton'); if (!window.location.href.includes("nuity")) { return; } if (frame && !frame.keyListenerAdded) { frame.keyListenerAdded = true; frame.document.addEventListener('keydown', function(event) { if (event.key === '3') { const activityTitleText = document.getElementById('activity-title')?.textContent || ''; if (activityTitleText.includes("Assignment")) { handleAssignment(); } if (activityTitleText.includes("Test") || activityTitleText.includes("Exam") || activityTitleText.includes("Quiz")) { handleAssessment(); } if (initialButtonCheck) { initialButtonCheck.click(); } } }); } } setInterval(addKeyListener, 1000); function checkForButton() { const iframeDocument = window.frames[0].document; const audioEntryButton = iframeDocument.getElementById('btnEntryAudio'); if (audioEntryButton) { const existingButton = iframeDocument.getElementById('searchActionButton'); if (!existingButton) { const searchActionButton = iframeDocument.createElement('button'); searchActionButton.innerText = "Search question"; searchActionButton.id = "searchActionButton"; searchActionButton.style.webkitTextSizeAdjust = "100%"; searchActionButton.style.borderSpacing = "0"; searchActionButton.style.borderCollapse = "collapse"; searchActionButton.style.fontFamily = '"Helvetica Neue", Helvetica, Arial, sans-serif'; searchActionButton.style.display = "inline-block"; searchActionButton.style.boxSizing = "border-box"; searchActionButton.style.height = "28px"; searchActionButton.style.border = "1px solid #8d8e8f"; searchActionButton.style.color = "#ffffff"; searchActionButton.style.fontSize = "13px"; searchActionButton.style.lineHeight = "28px"; searchActionButton.style.fontWeight = "bold"; searchActionButton.style.textDecoration = "none"; searchActionButton.style.webkitFontSmoothing = "antialiased"; searchActionButton.style.whiteSpace = "nowrap"; searchActionButton.style.textShadow = "0 0 5px rgba(255, 255, 255, 0.6)"; searchActionButton.style.zoom = "1"; searchActionButton.style.webkitBorderRadius = "3px"; searchActionButton.style.backgroundColor = "#1a1a1a"; searchActionButton.style.backgroundPosition = "center bottom"; searchActionButton.style.backgroundSize = "100% 100%"; searchActionButton.style.boxShadow = "inset 0 1px 0 rgba(255, 255, 255, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1)"; searchActionButton.style.cursor = "pointer"; searchActionButton.style.userSelect = "none"; searchActionButton.style.position = "relative"; searchActionButton.style.padding = "0 40px"; searchActionButton.style.textAlign = "center"; searchActionButton.style.margin = "0 10px"; audioEntryButton.parentElement.appendChild(searchActionButton); searchActionButton.style.position = "absolute"; searchActionButton.style.left = "50%"; searchActionButton.style.transform = "translateX(-50%)"; const bottomTrayElements = iframeDocument.querySelectorAll('[class*="bottom-tray"]'); bottomTrayElements.forEach(trayElement => { trayElement.style.position = 'relative'; const buttonClone = searchActionButton.cloneNode(true); trayElement.appendChild(buttonClone); buttonClone.style.position = "absolute"; buttonClone.style.left = "50%"; buttonClone.style.transform = "translateX(-50%)"; }); } } } if (window.top === window.self) { const buttonCheckInterval = setInterval(checkForButton, 500); } const observerConfig = { attributes: false, childList: true, subtree: true }; const mutationCallback = function(mutations, observerInstance) { for (const mutation of mutations) { if (mutation.type === 'childList') { const detectedElements = document.querySelectorAll('.mark-return'); if (detectedElements.length > 0) { appendSearchButton(detectedElements[0].parentNode); } } } }; const appendSearchButton = function(parentContainer) { const existingButton = document.getElementById('uniqueSearchButtonId'); if (existingButton) return; const searchActionButton = document.createElement('button'); searchActionButton.innerText = "Search question"; searchActionButton.id = "uniqueSearchButtonId"; searchActionButton.style.webkitTextSizeAdjust = "100%"; searchActionButton.style.borderSpacing = "0"; searchActionButton.style.borderCollapse = "collapse"; searchActionButton.style.fontFamily = '"Helvetica Neue", Helvetica, Arial, sans-serif'; searchActionButton.style.display = "inline-block"; searchActionButton.style.boxSizing = "border-box"; searchActionButton.style.height = "28px"; searchActionButton.style.border = "1px solid #8d8e8f"; searchActionButton.style.color = "#ffffff"; searchActionButton.style.fontSize = "13px"; searchActionButton.style.lineHeight = "28px"; searchActionButton.style.fontWeight = "bold"; searchActionButton.style.textDecoration = "none"; searchActionButton.style.webkitFontSmoothing = "antialiased"; searchActionButton.style.whiteSpace = "nowrap"; searchActionButton.style.textShadow = "0 0 5px rgba(255, 255, 255, 0.6)"; searchActionButton.style.zoom = "1"; searchActionButton.style.webkitBorderRadius = "3px"; searchActionButton.style.backgroundColor = "#1a1a1a"; searchActionButton.style.backgroundPosition = "center bottom"; searchActionButton.style.backgroundSize = "100% 100%"; searchActionButton.style.boxShadow = "inset 0 1px 0 rgba(255, 255, 255, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1)"; searchActionButton.style.cursor = "pointer"; searchActionButton.style.userSelect = "none"; searchActionButton.style.position = "absolute"; searchActionButton.style.left = "35%"; searchActionButton.style.top = "50%"; searchActionButton.style.transform = "translate(-70%, -50%)"; parentContainer.style.position = "relative"; parentContainer.appendChild(searchActionButton); }; const targetElement = document.body; const observerInstance = new MutationObserver(mutationCallback); observerInstance.observe(targetElement, observerConfig); (function() { function checkAndAddListener() { const frame = window.frames[0]; if (frame && frame.document) { const button = frame.document.getElementById("searchActionButton"); if (button) { if (!button.dataset.listenerAdded) { button.addEventListener('click', handleAssignment); button.dataset.listenerAdded = true; console.log("Listener added to the button within the iframe."); } } } } if (window.top === window.self) { setInterval(checkAndAddListener, 500);} })(); if (window.top === window.self) { function monitorFrameForButton() { const frame = window.frames[0]; const checkInterval = setInterval(() => { if (frame && frame.document) { const button = frame.document.getElementById('uniqueSearchButtonId'); if (button) { if (!frame.hasListenerAdded) { button.addEventListener('click', handleAssessment); frame.hasListenerAdded = true; console.log('Listener added to the button.'); clearInterval(checkInterval); } } } }, 100); } monitorFrameForButton(); } let buttonsClicked = false; function updateTextareaAndClickButtonsOnce() { try { const iframeDoc = window.frames[0].frames[0].document; if (iframeDoc.readyState === 'complete') { const textarea = iframeDoc.querySelector('.QuestionTextArea'); if (textarea && textarea.value.trim() === '') { const answerChoices = iframeDoc.querySelectorAll('.answer-choice-label'); let allText = ''; answerChoices.forEach(choice => { allText += choice.textContent.trim() + '\n'; }); textarea.value = allText.trim(); const buttons = iframeDoc.querySelectorAll('.answer-choice-button'); buttons.forEach(button => { if (button) { button.click(); } else { console.warn("Button with class 'answer-choice-button' not found."); } }); const doneButtons = iframeDoc.querySelectorAll('.done-start'); setTimeout(() => { doneButtons.forEach(doneButton => { if (doneButton) { doneButton.click(); } else { console.warn("Button with class 'done-start' not found."); } }); const retryButtons = iframeDoc.querySelectorAll('.done-retry'); setTimeout(() => { retryButtons.forEach(retryButton => { if (retryButton) { retryButton.click(); } else { console.warn("Button with class 'done-retry' not found."); } }); },400); }, 200); } } } catch (error) { console.error("An error occurred:", error); } } function checkUpdateTextareaAndClickButtonsOnce() { const isAutoWritingChecked = document.getElementById('autoWritingCheckbox').checked; const element = document.getElementById('activity-title'); const isAssignmentTitle = element && element.textContent.includes("Assignment"); const isAutoWritingOnAssignmentChecked = isAssignmentTitle ? document.getElementById('autoWritingOnAssignmentCheckbox').checked : true; if (isAutoWritingChecked && (isAssignmentTitle ? isAutoWritingOnAssignmentChecked : true)) { updateTextareaAndClickButtonsOnce(); } } if (window.top === window.self) { setInterval(checkUpdateTextareaAndClickButtonsOnce, 1000);} function checkOpacity() { if (frames[0] && frames[0].document) { var homeVideoContainer = frames[0].document.getElementById("home_video_container"); if (homeVideoContainer && homeVideoContainer.parentNode.style.opacity == 1) { } else { try { if (document.getElementById("activity-title").innerText == "Assignment") {} if (["Instruction", "Summary", "Warm-Up"].includes(document.getElementById("activity-title").innerText)) { try { clickFootnavAndNextFrame(); window.options = window.frames[0].frames[0].document.getElementsByClassName("answer-choice-button"); window.options[Math.floor(Math.random() * window.options.length)].click(); } catch (TypeError) {} try { window.frames[0].API.Frame.check(); } catch (TypeError) {} } } catch (TypeError) {} } } } function checkcheckOpacity() { const isGuessingChecked = document.getElementById('guessingCheckbox').checked; if (isGuessingChecked) { checkOpacity(); } } if (window.top === window.self) { setInterval(checkcheckOpacity, 1000);} setInterval(function() { var element = document.getElementById("invis-o-div"); if (element) { element.remove(); } }, 1000); function clickFootnavAndNextFrame() { try { document.getElementsByClassName("footnav goRight")[0].click(); } catch (TypeError) {} try { window.frames[0].API.FrameChain.nextFrame(); } catch (TypeError) {} } var clipboardButton; function createClipboardSearchButton() { try { var iframe = document.querySelector("iframe"); if (iframe) { var rect = iframe.getBoundingClientRect(); var iframeTop = rect.top + window.scrollY; var iframeRight = rect.right + window.scrollX; var buttonContainer = document.createElement('div'); buttonContainer.style.position = 'fixed'; buttonContainer.style.top = (iframeTop + 10) + 'px'; buttonContainer.style.left = (iframeRight - 150) + 'px'; buttonContainer.style.zIndex = '9999'; document.body.appendChild(buttonContainer); clipboardButton = document.createElement('button'); clipboardButton.innerText = 'Search Clipboard'; buttonContainer.appendChild(clipboardButton); } } catch (error) { console.error('Error accessing the first iframe:', error); } } function checkClipboardSearchButton() { const isClipboardChecked = document.getElementById('searchClipboardCheckbox').checked; if (isClipboardChecked) { if (!clipboardButton) { createClipboardSearchButton(); } } else { if (clipboardButton) { clipboardButton.parentElement.removeChild(clipboardButton); clipboardButton = null; } } } if (window.top === window.self) { setInterval(checkClipboardSearchButton, 1000);} document.addEventListener('click', function(event) { if (event.target.tagName === 'BUTTON' && event.target.innerText.includes('Clipboard')) { navigator.clipboard.readText().then(function(clipboardText) { if (clipboardText) { var isBrainlyChecked = document.getElementById('searchInBrainlyCheckbox').checked; var searchUrl = 'https://brainly.com/app/ask?entry=top&q=' + encodeURIComponent(clipboardText); if (isBrainlyChecked) { var brainlyIframe = document.getElementById('brainly-chat-iframe'); if (brainlyIframe) { brainlyIframe.src = searchUrl; } } else { window.open(searchUrl, '_blank'); } } }).catch(function(err) { console.error('Failed to read clipboard contents: ', err); }); } }); function addDeepaiIframes() { const wrapElement = document.getElementById('wrap'); if (!document.getElementById('deepai-chat-iframe')) { const deepaiIframe = document.createElement('iframe'); deepaiIframe.id = 'deepai-chat-iframe'; deepaiIframe.src = 'https://deepai.org/chat'; deepaiIframe.style.width = '25%'; deepaiIframe.style.height = '100vh'; deepaiIframe.style.border = 'none'; deepaiIframe.style.position = 'absolute'; deepaiIframe.style.top = '0'; deepaiIframe.style.right = '0'; deepaiIframe.style.zIndex = '20000'; wrapElement.style.position = 'relative'; deepaiIframe.style.opacity = '0'; deepaiIframe.style.transition = 'opacity 0.5s'; deepaiIframe.sandbox = 'allow-same-origin allow-scripts'; document.body.appendChild(deepaiIframe); } } function addBrainlyIframes() { const wrapElement = document.getElementById('wrap'); if (!document.getElementById('brainly-chat-iframe')) { const brainlyIframe = document.createElement('iframe'); brainlyIframe.id = 'brainly-chat-iframe'; brainlyIframe.src = 'https://brainly.com/search'; brainlyIframe.style.width = '25%'; brainlyIframe.style.height = '100vh'; brainlyIframe.style.border = 'none'; brainlyIframe.style.position = 'absolute'; brainlyIframe.style.top = '0'; brainlyIframe.style.left = '0'; brainlyIframe.style.zIndex = '20000'; wrapElement.style.position = 'relative'; brainlyIframe.style.opacity = '0'; brainlyIframe.style.transition = 'opacity 0.5s'; brainlyIframe.sandbox = 'allow-same-origin allow-scripts'; document.body.appendChild(brainlyIframe); } } addDeepaiIframes(); addBrainlyIframes(); function updateDeepaiIframeVisibility() { const deepaiIframe = document.getElementById('deepai-chat-iframe'); const isAiChatChecked = document.getElementById('aiChatCheckbox').checked; if (deepaiIframe) { if (isAiChatChecked) { deepaiIframe.style.opacity = '1'; deepaiIframe.style.display = 'block'; } else { deepaiIframe.style.opacity = '0'; setTimeout(() => deepaiIframe.style.display = 'none', 500); } } } function updateBrainlyIframeVisibility() { const brainlyIframe = document.getElementById('brainly-chat-iframe'); const isBrainlyChecked = document.getElementById('searchInBrainlyCheckbox').checked; if (brainlyIframe) { if (isBrainlyChecked) { brainlyIframe.style.opacity = '1'; brainlyIframe.style.display = 'block'; } else { brainlyIframe.style.opacity = '0'; setTimeout(() => brainlyIframe.style.display = 'none', 500); } } } setInterval(() => { updateDeepaiIframeVisibility(); updateBrainlyIframeVisibility(); }, 1000); function createButtonAndPane() { if (document.querySelector('#tweaksButton')) return; const mainFootDiv = document.querySelector('.mainfoot'); const toggleButton = document.createElement('button'); toggleButton.id = 'tweaksButton'; toggleButton.textContent = 'Toggle Options'; toggleButton.style.border = "1px solid #5f5f5f"; toggleButton.style.boxShadow = "inset 0 0 5px rgba(0, 0, 0, 0.6)"; toggleButton.style.backgroundColor = "rgb(39, 39, 39)"; toggleButton.style.color = "#f9a619"; toggleButton.style.borderRadius = "3px"; toggleButton.style.marginLeft = "40%"; toggleButton.style.zIndex = "2"; toggleButton.style.padding = '5px 10px'; mainFootDiv.appendChild(toggleButton); if (!window.pane) { window.pane = document.createElement('div'); window.pane.style.display = 'none'; document.body.appendChild(window.pane); const popupMenu = document.createElement('div'); popupMenu.className = 'popup-menu'; const aiChatItem = createMenuItem('AI Chat', 'aiChatCheckbox'); popupMenu.appendChild(aiChatItem); const searchInBrainlyItem = createMenuItem('Search in Brainly frame', 'searchInBrainlyCheckbox'); popupMenu.appendChild(searchInBrainlyItem); const autoVocabItem = createMenuItem('Auto Vocab', 'autoVocabCheckbox'); popupMenu.appendChild(autoVocabItem); const autoWritingItem = createMenuItem('Auto Writing', 'autoWritingCheckbox'); popupMenu.appendChild(autoWritingItem); const autoplayItem = createMenuItem('Autoplay', 'autoplayCheckbox'); popupMenu.appendChild(autoplayItem); const searchClipboardItem = createMenuItem('Search Clipboard Button', 'searchClipboardCheckbox'); popupMenu.appendChild(searchClipboardItem); const guessingItem = createMenuItem('Guessing', 'guessingCheckbox'); popupMenu.appendChild(guessingItem); const autoWritingOnAssignmentItem = createMenuItem('AutoWriting On Assignment', 'autoWritingOnAssignmentCheckbox'); popupMenu.appendChild(autoWritingOnAssignmentItem); window.pane.appendChild(popupMenu); const footerText = document.createElement('div'); footerText.style.marginTop = '20px'; footerText.style.color = 'rgb(249, 166, 25)'; footerText.style.textAlign = "center"; footerText.textContent = "This was made by me, TallTacoTristan, as a way to make edge-nuity " + "classes MUCH easier and skip by the tedious bits but it took a long time, probably over " + "24 hours of just coding, to write over half a thousand lines, it has many features, " + "the ones above are less than half, just the ones that need a toggle. " + "So please leave a good review on my page for all the time I spent to save yours, Thank you."; const discordMessage = document.createElement('div'); discordMessage.textContent = "Join this discord if you have any issues, questions, or suggestions!."; discordMessage.style.marginTop = '10px'; const discordLink = document.createElement('a'); discordLink.textContent = "https://discord.gg/6qJwkYSmrQ"; discordLink.href = "https://discord.gg/6qJwkYSmrQ"; discordLink.target = "_blank"; discordLink.style.marginTop = '5px'; discordLink.style.color = 'cyan'; discordLink.style.textDecoration = 'underline'; footerText.appendChild(discordMessage); footerText.appendChild(discordLink); window.pane.appendChild(footerText); loadCheckboxState('aiChat', 'aiChatCheckbox'); loadCheckboxState('searchInBrainly', 'searchInBrainlyCheckbox'); loadCheckboxState('autoVocab', 'autoVocabCheckbox'); loadCheckboxState('autoWriting', 'autoWritingCheckbox'); loadCheckboxState('autoplay', 'autoplayCheckbox'); loadCheckboxState('searchClipboard', 'searchClipboardCheckbox'); loadCheckboxState('guessing', 'guessingCheckbox'); loadCheckboxState('autoWritingOnAssignment', 'autoWritingOnAssignmentCheckbox'); makeDraggable(window.pane); } toggleButton.addEventListener('click', function() { console.log('Button clicked! Toggling pane visibility.'); if (window.pane.style.display === 'none' || window.pane.style.display === '') { window.pane.style.width = "50%"; window.pane.style.height = "auto"; window.pane.style.position = "absolute"; window.pane.style.marginTop = "20vh"; window.pane.style.marginLeft = "25%"; window.pane.style.border = "1px solid rgb(95, 95, 95)"; window.pane.style.borderRadius = "3px"; window.pane.style.backgroundColor = "rgb(39, 39, 39)"; window.pane.style.overflow = "hidden"; window.pane.style.color = "rgb(249, 166, 25)"; window.pane.style.textAlign = "center"; window.pane.style.overflowY = "scroll"; window.pane.style.display = 'block'; checkCheckboxState('aiChatCheckbox'); checkCheckboxState('searchInBrainlyCheckbox'); checkCheckboxState('autoVocabCheckbox'); checkCheckboxState('autoWritingCheckbox'); checkCheckboxState('autoplayCheckbox'); checkCheckboxState('searchClipboardCheckbox'); checkCheckboxState('guessingCheckbox'); checkCheckboxState('autoWritingOnAssignmentCheckbox'); } else { window.pane.style.display = 'none'; } }); } function makeDraggable(element) { let offsetX, offsetY; element.addEventListener('mousedown', function(e) { e.preventDefault(); offsetX = e.clientX - element.getBoundingClientRect().left + element.offsetWidth / 2; offsetY = e.clientY - element.getBoundingClientRect().top + element.offsetHeight / 2; element.classList.add('dragging'); document.addEventListener('mousemove', dragElement); document.addEventListener('mouseup', stopDragging); }); function dragElement(e) { e.preventDefault(); let x = e.clientX - offsetX; let y = e.clientY - offsetY; element.style.left = x + 'px'; element.style.top = y + 'px'; } function stopDragging() { element.classList.remove('dragging'); document.removeEventListener('mousemove', dragElement); document.removeEventListener('mouseup', stopDragging); } } function createMenuItem(text, checkboxId) { const itemDiv = document.createElement('div'); itemDiv.className = 'menu-item'; const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.id = checkboxId; const storedValue = localStorage.getItem(checkboxId); if (storedValue !== null) { checkbox.checked = (storedValue === 'true'); } const label = document.createElement('label'); label.innerText = text; label.setAttribute('for', checkboxId); itemDiv.appendChild(checkbox); itemDiv.appendChild(label); checkbox.addEventListener('change', () => { console.log(`${text} checkbox is now ${checkbox.checked ? 'checked' : 'unchecked'}`); localStorage.setItem(checkboxId, checkbox.checked); }); return itemDiv; } function loadCheckboxState(checkboxId) { const storedValue = localStorage.getItem(checkboxId); if (storedValue !== null) { const checkbox = document.getElementById(checkboxId); if (checkbox) { checkbox.checked = (storedValue === 'true'); } } } function checkCheckboxState(checkboxId) { const checkbox = document.getElementById(checkboxId); const storedValue = localStorage.getItem(checkboxId); if (storedValue !== null && checkbox) { if (checkbox.checked !== (storedValue === 'true')) { checkbox.checked = (storedValue === 'true'); } } } if (window.top === window.self) { setInterval(createButtonAndPane, 1000);} var checkbox = document.getElementById('searchInBrainlyCheckbox'); let lastTitle = ''; function checkForAssignment() { const element = document.getElementById('activity-title'); if (element) { const currentTitle = element.textContent || element.innerText; const excludedKeywords = [ "Summary", "Warm-Up", "Instruction", "Quiz", "Assignment", "Unit Test", "Unit Review", "Cumulative Exam Review", "Vocab","Cumulative Exam" ]; const containsExcludedKeyword = excludedKeywords.some(keyword => currentTitle.includes(keyword)); const currentContainsAssignment = currentTitle.includes("Assignment"); if (currentTitle !== lastTitle) { if (currentContainsAssignment || !containsExcludedKeyword) { new Notification("Done!"); } lastTitle = currentTitle; } } }if (window.top === window.self) { setInterval(checkForAssignment, 1000);} const isAutoVocabChecked = document.getElementById('autoVocabCheckbox').checked; function clickNextButtonIfVocabulary() { if (document.getElementById("activity-title").innerText === "Vocabulary") { const nextButton = window.frames[0].document.getElementsByClassName("uibtn uibtn-blue uibtn-arrow-next")[0]; if (nextButton) { nextButton.click(); console.log("Clicked next button"); } else { console.log("Next button not found"); } } } function vocabCompleter() { if (document.getElementById("activity-title").innerText === "Vocabulary") { var i = 0; try { var txt = window.frames[0].document.getElementsByClassName("word-background")[0].value; window.frames[0].document.getElementsByClassName("word-textbox")[0].value = txt; var event = new Event("keyup"); window.frames[0].document.getElementsByClassName("word-textbox word-normal")[0].dispatchEvent(event); } catch (e) { console.error(e); return; } var speed = 50; var output = "Vocab Completer, "; window.frames[0].document.getElementsByClassName("playbutton vocab-play")[0].click(); window.frames[0].document.getElementsByClassName("playbutton vocab-play")[1].click(); } } function checkAndExecuteFunctions() { const isAutoVocabChecked = document.getElementById('autoVocabCheckbox').checked; if (isAutoVocabChecked) { clickNextButtonIfVocabulary(); vocabCompleter(); } } if (window.top === window.self) { setInterval(checkAndExecuteFunctions, 1000);} if (window.top === window.self) { setInterval(() => { const activityTitle = document.getElementById("activity-title").innerText; const homeVideoContainer = document.querySelector('.home-video-container'); const shouldClick = !( homeVideoContainer && homeVideoContainer.parentNode.style.opacity == "1" ); if (shouldClick && !["Assignment", "Quiz"].includes(activityTitle)) { const goRightButton = document.querySelector(".FrameRight"); if (goRightButton) { goRightButton.onclick(); } const iconButton = document.querySelector(".nav-icon[data-bind='realEnable: $root.stageView().nextEnabled']"); if (iconButton) { iconButton.click(); } } }, 1000);}