// ==UserScript==
// @name Hex Math Panel
// @namespace http://tampermonkey.net/
// @version 1.0.0.
// @license MIT
// @description Calculator for math websites add ur own if urs isnt here.
// @author Hex Developments
// @match https://gmm.getmoremath.com/*
// @match https://khanacademy.org/*
// @match https://ixl.com/math/*
// @match https://desmos.com/*
// @match https://mathway.com/*
// @match https://wolframalpha.com/*
// @match https://mathletics.com/*
// @match https://brilliant.org/*
// @match https://coolmathgames.com/*
// @match https://purplemath.com/*
// @match https://artofproblemsolving.com/*
// @match https://nrich.maths.org/*
// @match https://math.com/*
// @match https://algebrator.com/*
// @match https://mathhelp.com/*
// @match https://xtramath.org/*
// @match https://edmodo.com/*
// @match https://geogebra.org/*
// @match https://cimt.org.uk/*
// @match https://shmoop.com/*
// @match https://socratic.org/*
// @match https://mathsisfun.com/*
// @match https://study.com/*
// @match https://hippocampus.org/*
// @match https://learnzillion.com/*
// @match https://getmoremath.com/*
// @grant GM_addStyle
// @run-at document-end
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
// Create the draggable container
const container = document.createElement('div');
container.id = 'advancedCalculator';
container.innerHTML = `
`;
document.body.appendChild(container);
// Add CSS styles
GM_addStyle(`
#advancedCalculator {
position: fixed;
top: 10px;
left: 10px;
width: 260px;
background: #1e1e1e;
border: 1px solid #444;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 0, 0.5);
z-index: 10000;
font-family: 'Courier New', Courier, monospace;
transition: height 0.3s ease;
}
#header {
background: #00ff00;
color: #000;
padding: 10px;
display: flex;
justify-content: space-between;
align-items: center;
cursor: move;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
font-size: 18px;
font-weight: bold;
}
#header button {
background: #333;
color: #00ff00;
border: none;
padding: 5px 10px;
border-radius: 5px;
cursor: pointer;
}
#header button:hover {
background: #555;
}
#header button:active {
background: #00ff00;
color: #000;
}
#content {
padding: 10px;
overflow: hidden;
}
#display {
width: 100%;
margin-bottom: 10px;
font-size: 22px;
text-align: right;
background: #000;
color: #00f; /* Blue color for text */
border: 1px solid #333;
border-radius: 5px;
padding: 10px;
box-sizing: border-box;
}
#buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 5px;
}
#buttons button {
background: #222;
color: #00ff00;
padding: 15px;
font-size: 16px;
border: 1px solid #444;
border-radius: 5px;
cursor: pointer;
transition: background 0.3s ease;
}
#buttons button:hover {
background: #333;
}
#buttons button:active {
background: #00ff00;
color: #000;
}
`);
// Make the container draggable
let header = document.getElementById('header');
let isDragging = false;
let offsetX, offsetY;
header.onmousedown = function(e) {
isDragging = true;
offsetX = e.clientX - container.getBoundingClientRect().left;
offsetY = e.clientY - container.getBoundingClientRect().top;
};
document.onmousemove = function(e) {
if (isDragging) {
container.style.left = (e.clientX - offsetX) + 'px';
container.style.top = (e.clientY - offsetY) + 'px';
}
};
document.onmouseup = function() {
isDragging = false;
};
// Event listeners for buttons
document.querySelectorAll('#buttons button').forEach(button => {
button.addEventListener('click', function() {
const value = this.getAttribute('data-value');
if (value) {
appendNumber(value);
}
});
});
// Specific button event listeners
document.getElementById('fraction').addEventListener('click', appendFraction);
document.getElementById('calculate').addEventListener('click', calculate);
document.getElementById('clear').addEventListener('click', clearDisplay);
document.getElementById('collapseToggle').addEventListener('click', toggleCollapse);
// Calculator functions
function appendNumber(num) {
let display = document.getElementById('display');
display.value += num;
}
function appendOperator(op) {
let display = document.getElementById('display');
display.value += ' ' + op + ' ';
}
function appendFraction() {
let display = document.getElementById('display');
let value = display.value.trim();
if (value) {
display.value = '1 / (' + value + ')';
}
}
function calculate() {
let display = document.getElementById('display');
let expression = display.value;
// Replace 'x' with '*' for multiplication
expression = expression.replace(/x/g, '*');
try {
// Evaluate the expression safely
let result = Function('"use strict";return (' + expression + ')')();
display.value = result;
} catch (e) {
display.value = 'Error';
setTimeout(() => {
display.value = ''; // Clear the display after showing 'Error'
}, 1000);
console.error('Calculation error:', e);
}
// Clear display after calculation
setTimeout(clearDisplay, 1000);
}
function clearDisplay() {
document.getElementById('display').value = '';
}
function toggleCollapse() {
const content = document.getElementById('content');
const collapseButton = document.getElementById('collapseToggle');
if (content.style.display === 'none') {
content.style.display = 'block';
collapseButton.textContent = '-';
} else {
content.style.display = 'none';
collapseButton.textContent = '+';
}
}
// Handle Enter key for calculation
document.addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // Prevent form submission if inside a form
calculate();
}
});
})();