calculator
This commit is contained in:
		
							parent
							
								
									737f3b3400
								
							
						
					
					
						commit
						d2970d42f4
					
				
							
								
								
									
										652
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										652
									
								
								index.html
									
									
									
									
									
								
							@ -3,7 +3,7 @@
 | 
				
			|||||||
<head>
 | 
					<head>
 | 
				
			||||||
    <meta charset="UTF-8">
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
    <title>Filesystem Calculator</title>
 | 
					    <title>Dateisystem-Offset-Rechner</title>
 | 
				
			||||||
    <style>
 | 
					    <style>
 | 
				
			||||||
        * {
 | 
					        * {
 | 
				
			||||||
            margin: 0;
 | 
					            margin: 0;
 | 
				
			||||||
@ -126,6 +126,198 @@
 | 
				
			|||||||
            display: block;
 | 
					            display: block;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Constants and Calculator Layout */
 | 
				
			||||||
 | 
					        .constants-calculator-container {
 | 
				
			||||||
 | 
					            display: grid;
 | 
				
			||||||
 | 
					            grid-template-columns: 1fr 1fr;
 | 
				
			||||||
 | 
					            gap: 20px;
 | 
				
			||||||
 | 
					            margin-bottom: 20px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @media (max-width: 1024px) {
 | 
				
			||||||
 | 
					            .constants-calculator-container {
 | 
				
			||||||
 | 
					                grid-template-columns: 1fr;
 | 
				
			||||||
 | 
					                gap: 15px;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Calculator Styles */
 | 
				
			||||||
 | 
					        .hex-calculator {
 | 
				
			||||||
 | 
					            background-color: #1a1a1a;
 | 
				
			||||||
 | 
					            min-height: fit-content;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calculator-container {
 | 
				
			||||||
 | 
					            display: flex;
 | 
				
			||||||
 | 
					            flex-direction: column;
 | 
				
			||||||
 | 
					            gap: 15px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-display {
 | 
				
			||||||
 | 
					            background-color: #111111;
 | 
				
			||||||
 | 
					            border: 1px solid #404040;
 | 
				
			||||||
 | 
					            border-radius: 6px;
 | 
				
			||||||
 | 
					            padding: 15px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-input input {
 | 
				
			||||||
 | 
					            width: 100%;
 | 
				
			||||||
 | 
					            background-color: #2a2a2a;
 | 
				
			||||||
 | 
					            border: 1px solid #555555;
 | 
				
			||||||
 | 
					            border-radius: 4px;
 | 
				
			||||||
 | 
					            color: #ffffff;
 | 
				
			||||||
 | 
					            font-family: 'Consolas', monospace;
 | 
				
			||||||
 | 
					            font-size: 18px;
 | 
				
			||||||
 | 
					            font-weight: bold;
 | 
				
			||||||
 | 
					            padding: 12px;
 | 
				
			||||||
 | 
					            text-align: right;
 | 
				
			||||||
 | 
					            margin-bottom: 12px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-conversions {
 | 
				
			||||||
 | 
					            display: flex;
 | 
				
			||||||
 | 
					            flex-direction: column;
 | 
				
			||||||
 | 
					            gap: 8px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .conversion-row {
 | 
				
			||||||
 | 
					            display: flex;
 | 
				
			||||||
 | 
					            justify-content: space-between;
 | 
				
			||||||
 | 
					            align-items: center;
 | 
				
			||||||
 | 
					            padding: 6px 0;
 | 
				
			||||||
 | 
					            border-bottom: 1px solid #333333;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .conversion-row:last-child {
 | 
				
			||||||
 | 
					            border-bottom: none;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .conv-label {
 | 
				
			||||||
 | 
					            color: #888888;
 | 
				
			||||||
 | 
					            font-weight: bold;
 | 
				
			||||||
 | 
					            font-size: 0.9em;
 | 
				
			||||||
 | 
					            min-width: 40px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .conv-value {
 | 
				
			||||||
 | 
					            color: #cccccc;
 | 
				
			||||||
 | 
					            font-family: 'Consolas', monospace;
 | 
				
			||||||
 | 
					            font-size: 0.9em;
 | 
				
			||||||
 | 
					            word-break: break-all;
 | 
				
			||||||
 | 
					            text-align: right;
 | 
				
			||||||
 | 
					            flex: 1;
 | 
				
			||||||
 | 
					            margin-left: 10px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-buttons {
 | 
				
			||||||
 | 
					            display: flex;
 | 
				
			||||||
 | 
					            flex-direction: column;
 | 
				
			||||||
 | 
					            gap: 8px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-row {
 | 
				
			||||||
 | 
					            display: grid;
 | 
				
			||||||
 | 
					            grid-template-columns: repeat(5, 1fr);
 | 
				
			||||||
 | 
					            gap: 6px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn {
 | 
				
			||||||
 | 
					            background-color: #2a2a2a;
 | 
				
			||||||
 | 
					            border: 1px solid #4a4a4a;
 | 
				
			||||||
 | 
					            border-radius: 4px;
 | 
				
			||||||
 | 
					            color: #ffffff;
 | 
				
			||||||
 | 
					            cursor: pointer;
 | 
				
			||||||
 | 
					            font-family: 'Consolas', monospace;
 | 
				
			||||||
 | 
					            font-size: 0.85em;
 | 
				
			||||||
 | 
					            font-weight: bold;
 | 
				
			||||||
 | 
					            min-height: 40px;
 | 
				
			||||||
 | 
					            padding: 8px;
 | 
				
			||||||
 | 
					            text-align: center;
 | 
				
			||||||
 | 
					            transition: all 0.2s;
 | 
				
			||||||
 | 
					            user-select: none;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn:hover {
 | 
				
			||||||
 | 
					            background-color: #3a3a3a;
 | 
				
			||||||
 | 
					            border-color: #666666;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn:active {
 | 
				
			||||||
 | 
					            background-color: #444444;
 | 
				
			||||||
 | 
					            transform: translateY(1px);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.number {
 | 
				
			||||||
 | 
					            background-color: #333333;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.number:hover {
 | 
				
			||||||
 | 
					            background-color: #444444;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.operation {
 | 
				
			||||||
 | 
					            background-color: #2a4a2a;
 | 
				
			||||||
 | 
					            color: #88cc88;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.operation:hover {
 | 
				
			||||||
 | 
					            background-color: #3a5a3a;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.memory {
 | 
				
			||||||
 | 
					            background-color: #4a2a2a;
 | 
				
			||||||
 | 
					            color: #cc8888;
 | 
				
			||||||
 | 
					            font-size: 0.75em;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.memory:hover {
 | 
				
			||||||
 | 
					            background-color: #5a3a3a;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.clear {
 | 
				
			||||||
 | 
					            background-color: #4a2a4a;
 | 
				
			||||||
 | 
					            color: #cc88cc;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.clear:hover {
 | 
				
			||||||
 | 
					            background-color: #5a3a5a;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.equals {
 | 
				
			||||||
 | 
					            background-color: #2a2a4a;
 | 
				
			||||||
 | 
					            color: #8888cc;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.equals:hover {
 | 
				
			||||||
 | 
					            background-color: #3a3a5a;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.backspace {
 | 
				
			||||||
 | 
					            background-color: #4a4a2a;
 | 
				
			||||||
 | 
					            color: #cccc88;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.backspace:hover {
 | 
				
			||||||
 | 
					            background-color: #5a5a3a;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        .calc-btn.wide {
 | 
				
			||||||
 | 
					            grid-column: span 2;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @media (max-width: 768px) {
 | 
				
			||||||
 | 
					            .calc-btn {
 | 
				
			||||||
 | 
					                min-height: 35px;
 | 
				
			||||||
 | 
					                font-size: 0.8em;
 | 
				
			||||||
 | 
					                padding: 6px;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            .calc-input input {
 | 
				
			||||||
 | 
					                font-size: 16px;
 | 
				
			||||||
 | 
					                padding: 10px;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Sections */
 | 
					        /* Sections */
 | 
				
			||||||
        .section {
 | 
					        .section {
 | 
				
			||||||
            background-color: #252525;
 | 
					            background-color: #252525;
 | 
				
			||||||
@ -410,7 +602,7 @@
 | 
				
			|||||||
            <div class="logo">Dateisystem-Offset-Rechner</div>
 | 
					            <div class="logo">Dateisystem-Offset-Rechner</div>
 | 
				
			||||||
            <nav class="nav">
 | 
					            <nav class="nav">
 | 
				
			||||||
                <a href="#home">Home</a>
 | 
					                <a href="#home">Home</a>
 | 
				
			||||||
                <a href="mailto:mstoeck3@hs-mittweida.de">Kontakt</a>
 | 
					                <a href="mailto:mstoeck3@hs-mittweida.de">Contact</a>
 | 
				
			||||||
            </nav>
 | 
					            </nav>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </header>
 | 
					    </header>
 | 
				
			||||||
@ -426,16 +618,93 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            <!-- FAT12/16 Tab -->
 | 
					            <!-- FAT12/16 Tab -->
 | 
				
			||||||
            <div class="tab-content active" id="fat1216">
 | 
					            <div class="tab-content active" id="fat1216">
 | 
				
			||||||
                <div class="section constants">
 | 
					                <div class="constants-calculator-container">
 | 
				
			||||||
                    <h2>Konstanten</h2>
 | 
					                    <div class="section constants">
 | 
				
			||||||
                    <div class="input-grid">
 | 
					                        <h2>Konstanten</h2>
 | 
				
			||||||
                        <div class="input-group">
 | 
					                        <div class="input-grid">
 | 
				
			||||||
                            <label for="baseOffset1216">Partitions-Offset <span class="unit-indicator">(Bytes)</span>:</label>
 | 
					                            <div class="input-group">
 | 
				
			||||||
                            <input type="text" id="baseOffset1216" value="0x0" placeholder="0x0">
 | 
					                                <label for="baseOffset1216">Base Offset <span class="unit-indicator">(Bytes)</span>:</label>
 | 
				
			||||||
 | 
					                                <input type="text" id="baseOffset1216" value="0x0" placeholder="0x0">
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="input-group">
 | 
				
			||||||
 | 
					                                <label for="sectorSize1216">Größe eines Sektors <span class="unit-indicator">(Bytes)</span>:</label>
 | 
				
			||||||
 | 
					                                <input type="text" id="sectorSize1216" value="0x200" placeholder="0x200">
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="input-group">
 | 
					                    </div>
 | 
				
			||||||
                            <label for="sectorSize1216">Größe eines Sektors <span class="unit-indicator">(Bytes)</span>:</label>
 | 
					
 | 
				
			||||||
                            <input type="text" id="sectorSize1216" value="0x200" placeholder="0x200">
 | 
					                    <div class="section hex-calculator">
 | 
				
			||||||
 | 
					                        <h2>Hex Calculator</h2>
 | 
				
			||||||
 | 
					                        <div class="calculator-container">
 | 
				
			||||||
 | 
					                            <div class="calc-display">
 | 
				
			||||||
 | 
					                                <div class="calc-input">
 | 
				
			||||||
 | 
					                                    <input type="text" id="calcInput" placeholder="0x0" readonly>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-conversions">
 | 
				
			||||||
 | 
					                                    <div class="conversion-row">
 | 
				
			||||||
 | 
					                                        <span class="conv-label">HEX:</span>
 | 
				
			||||||
 | 
					                                        <span class="conv-value" id="hexValue">0x0</span>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="conversion-row">
 | 
				
			||||||
 | 
					                                        <span class="conv-label">DEC:</span>
 | 
				
			||||||
 | 
					                                        <span class="conv-value" id="decValue">0</span>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="conversion-row">
 | 
				
			||||||
 | 
					                                        <span class="conv-label">BIN:</span>
 | 
				
			||||||
 | 
					                                        <span class="conv-value" id="binValue">0b0</span>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="calc-buttons">
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('MC')">MC</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('MR')">MR</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('M+')">M+</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('M-')">M-</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn clear" onclick="calcClear()">C</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('A')">A</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('B')">B</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('C')">C</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('D')">D</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('<<')"><<</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('E')">E</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('F')">F</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('7')">7</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('8')">8</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('>>')">>></button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('AND')">AND</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('OR')">OR</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('9')">9</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('/')">/</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('MOD')">MOD</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('XOR')">XOR</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('NOT')">NOT</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('4')">4</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('5')">5</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('6')">6</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('*')">*</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('1')">1</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('2')">2</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('3')">3</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('-')">-</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('+')">+</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number wide" onclick="calcInput('0')">0</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn backspace" onclick="calcBackspace()">⌫</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn equals" onclick="calcEquals()">=</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
@ -561,16 +830,93 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            <!-- FAT32 Tab -->
 | 
					            <!-- FAT32 Tab -->
 | 
				
			||||||
            <div class="tab-content" id="fat32">
 | 
					            <div class="tab-content" id="fat32">
 | 
				
			||||||
                <div class="section constants">
 | 
					                <div class="constants-calculator-container">
 | 
				
			||||||
                    <h2>Konstanten</h2>
 | 
					                    <div class="section constants">
 | 
				
			||||||
                    <div class="input-grid">
 | 
					                        <h2>Konstanten</h2>
 | 
				
			||||||
                        <div class="input-group">
 | 
					                        <div class="input-grid">
 | 
				
			||||||
                            <label for="baseOffset32">Base Offset <span class="unit-indicator">(Bytes)</span>:</label>
 | 
					                            <div class="input-group">
 | 
				
			||||||
                            <input type="text" id="baseOffset32" value="0x0" placeholder="0x0">
 | 
					                                <label for="baseOffset32">Base Offset <span class="unit-indicator">(Bytes)</span>:</label>
 | 
				
			||||||
 | 
					                                <input type="text" id="baseOffset32" value="0x0" placeholder="0x0">
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="input-group">
 | 
				
			||||||
 | 
					                                <label for="sectorSize32">Größe eines Sektors <span class="unit-indicator">(Bytes)</span>:</label>
 | 
				
			||||||
 | 
					                                <input type="text" id="sectorSize32" value="0x200" placeholder="0x200">
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                        <div class="input-group">
 | 
					                    </div>
 | 
				
			||||||
                            <label for="sectorSize32">Größe eines Sektors <span class="unit-indicator">(Bytes)</span>:</label>
 | 
					
 | 
				
			||||||
                            <input type="text" id="sectorSize32" value="0x200" placeholder="0x200">
 | 
					                    <div class="section hex-calculator">
 | 
				
			||||||
 | 
					                        <h2>Hex Calculator</h2>
 | 
				
			||||||
 | 
					                        <div class="calculator-container">
 | 
				
			||||||
 | 
					                            <div class="calc-display">
 | 
				
			||||||
 | 
					                                <div class="calc-input">
 | 
				
			||||||
 | 
					                                    <input type="text" id="calcInput32" placeholder="0x0" readonly>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-conversions">
 | 
				
			||||||
 | 
					                                    <div class="conversion-row">
 | 
				
			||||||
 | 
					                                        <span class="conv-label">HEX:</span>
 | 
				
			||||||
 | 
					                                        <span class="conv-value" id="hexValue32">0x0</span>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="conversion-row">
 | 
				
			||||||
 | 
					                                        <span class="conv-label">DEC:</span>
 | 
				
			||||||
 | 
					                                        <span class="conv-value" id="decValue32">0</span>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                    <div class="conversion-row">
 | 
				
			||||||
 | 
					                                        <span class="conv-label">BIN:</span>
 | 
				
			||||||
 | 
					                                        <span class="conv-value" id="binValue32">0b0</span>
 | 
				
			||||||
 | 
					                                    </div>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="calc-buttons">
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('MC', 'fat32')">MC</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('MR', 'fat32')">MR</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('M+', 'fat32')">M+</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn memory" onclick="calcMemory('M-', 'fat32')">M-</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn clear" onclick="calcClear('fat32')">C</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('A', 'fat32')">A</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('B', 'fat32')">B</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('C', 'fat32')">C</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('D', 'fat32')">D</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('<<', 'fat32')"><<</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('E', 'fat32')">E</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('F', 'fat32')">F</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('7', 'fat32')">7</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('8', 'fat32')">8</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('>>', 'fat32')">>></button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('AND', 'fat32')">AND</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('OR', 'fat32')">OR</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('9', 'fat32')">9</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('/', 'fat32')">/</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('MOD', 'fat32')">MOD</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('XOR', 'fat32')">XOR</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('NOT', 'fat32')">NOT</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('4', 'fat32')">4</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('5', 'fat32')">5</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('6', 'fat32')">6</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('*', 'fat32')">*</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('1', 'fat32')">1</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('2', 'fat32')">2</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number" onclick="calcInput('3', 'fat32')">3</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('-', 'fat32')">-</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                                <div class="calc-row">
 | 
				
			||||||
 | 
					                                    <button class="calc-btn operation" onclick="calcOperation('+', 'fat32')">+</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn number wide" onclick="calcInput('0', 'fat32')">0</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn backspace" onclick="calcBackspace('fat32')">⌫</button>
 | 
				
			||||||
 | 
					                                    <button class="calc-btn equals" onclick="calcEquals('fat32')">=</button>
 | 
				
			||||||
 | 
					                                </div>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
@ -700,7 +1046,7 @@
 | 
				
			|||||||
        <div class="footer-content">
 | 
					        <div class="footer-content">
 | 
				
			||||||
            <div class="footer-section">
 | 
					            <div class="footer-section">
 | 
				
			||||||
                <h3>About</h3>
 | 
					                <h3>About</h3>
 | 
				
			||||||
                <p>Filesystem calculator for educational and forensic purposes.</p>
 | 
					                <p>Offset calculator for educational and forensic purposes.</p>
 | 
				
			||||||
                <p>Version 0.2.0</p>
 | 
					                <p>Version 0.2.0</p>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="footer-section">
 | 
					            <div class="footer-section">
 | 
				
			||||||
@ -718,7 +1064,7 @@
 | 
				
			|||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div class="footer-bottom">
 | 
					        <div class="footer-bottom">
 | 
				
			||||||
            <p>© 2025 Filesystem Calculator. All rights reserved. | Built with ❤️ for it-forensics education.</p>
 | 
					            <p>© 2025 Offset Calculator. All rights reserved. | Built with ❤️ for computer science education.</p>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </footer>
 | 
					    </footer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -726,6 +1072,213 @@
 | 
				
			|||||||
        // Global tooltip element
 | 
					        // Global tooltip element
 | 
				
			||||||
        let tooltip = null;
 | 
					        let tooltip = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Calculator state
 | 
				
			||||||
 | 
					        const calculatorState = {
 | 
				
			||||||
 | 
					            fat1216: {
 | 
				
			||||||
 | 
					                currentValue: 0,
 | 
				
			||||||
 | 
					                previousValue: 0,
 | 
				
			||||||
 | 
					                operation: null,
 | 
				
			||||||
 | 
					                waitingForOperand: false,
 | 
				
			||||||
 | 
					                memory: 0
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            fat32: {
 | 
				
			||||||
 | 
					                currentValue: 0,
 | 
				
			||||||
 | 
					                previousValue: 0,
 | 
				
			||||||
 | 
					                operation: null,
 | 
				
			||||||
 | 
					                waitingForOperand: false,
 | 
				
			||||||
 | 
					                memory: 0
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function getCurrentTab() {
 | 
				
			||||||
 | 
					            const activeTab = document.querySelector('.tab-content.active');
 | 
				
			||||||
 | 
					            return activeTab.id === 'fat32' ? 'fat32' : 'fat1216';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function getCalculatorState(tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            return currentTab === 'fat32' ? calculatorState.fat32 : calculatorState.fat1216;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function updateCalculatorDisplay(tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            const suffix = currentTab === 'fat32' ? '32' : '';
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            const inputElement = document.getElementById(`calcInput${suffix}`);
 | 
				
			||||||
 | 
					            const hexElement = document.getElementById(`hexValue${suffix}`);
 | 
				
			||||||
 | 
					            const decElement = document.getElementById(`decValue${suffix}`);
 | 
				
			||||||
 | 
					            const binElement = document.getElementById(`binValue${suffix}`);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Ensure value is within JavaScript's safe integer range
 | 
				
			||||||
 | 
					            const value = Math.max(0, Math.min(state.currentValue, Number.MAX_SAFE_INTEGER));
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            const hexStr = '0x' + value.toString(16).toUpperCase();
 | 
				
			||||||
 | 
					            const decStr = value.toString(10);
 | 
				
			||||||
 | 
					            const binStr = '0b' + value.toString(2);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            inputElement.value = hexStr;
 | 
				
			||||||
 | 
					            hexElement.textContent = hexStr;
 | 
				
			||||||
 | 
					            decElement.textContent = decStr;
 | 
				
			||||||
 | 
					            binElement.textContent = binStr;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function calcInput(digit, tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (state.waitingForOperand) {
 | 
				
			||||||
 | 
					                state.currentValue = 0;
 | 
				
			||||||
 | 
					                state.waitingForOperand = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Convert hex digit to number
 | 
				
			||||||
 | 
					            const digitValue = parseInt(digit, 16);
 | 
				
			||||||
 | 
					            if (isNaN(digitValue)) return;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Prevent overflow by limiting to a reasonable hex value
 | 
				
			||||||
 | 
					            const newValue = state.currentValue * 16 + digitValue;
 | 
				
			||||||
 | 
					            if (newValue <= 0xFFFFFFFFFFFFFF) { // Limit to 56 bits for safety
 | 
				
			||||||
 | 
					                state.currentValue = newValue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            updateCalculatorDisplay(currentTab);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function calcOperation(operation, tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (operation === 'NOT') {
 | 
				
			||||||
 | 
					                // Unary operation - apply immediately
 | 
				
			||||||
 | 
					                state.currentValue = (~state.currentValue) >>> 0; // Use unsigned 32-bit
 | 
				
			||||||
 | 
					                updateCalculatorDisplay(currentTab);
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (state.previousValue !== 0 && !state.waitingForOperand) {
 | 
				
			||||||
 | 
					                calcEquals(currentTab, false);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            state.previousValue = state.currentValue;
 | 
				
			||||||
 | 
					            state.operation = operation;
 | 
				
			||||||
 | 
					            state.waitingForOperand = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function calcEquals(tab = null, updateDisplay = true) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (state.operation && state.previousValue !== null) {
 | 
				
			||||||
 | 
					                const prev = state.previousValue;
 | 
				
			||||||
 | 
					                const curr = state.currentValue;
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    switch (state.operation) {
 | 
				
			||||||
 | 
					                        case '+':
 | 
				
			||||||
 | 
					                            state.currentValue = prev + curr;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case '-':
 | 
				
			||||||
 | 
					                            state.currentValue = prev - curr;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case '*':
 | 
				
			||||||
 | 
					                            state.currentValue = prev * curr;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case '/':
 | 
				
			||||||
 | 
					                            if (curr === 0) {
 | 
				
			||||||
 | 
					                                alert('Division by zero!');
 | 
				
			||||||
 | 
					                                return;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            state.currentValue = Math.floor(prev / curr);
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case 'MOD':
 | 
				
			||||||
 | 
					                            if (curr === 0) {
 | 
				
			||||||
 | 
					                                alert('Modulo by zero!');
 | 
				
			||||||
 | 
					                                return;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            state.currentValue = prev % curr;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case 'AND':
 | 
				
			||||||
 | 
					                            state.currentValue = (prev & curr) >>> 0;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case 'OR':
 | 
				
			||||||
 | 
					                            state.currentValue = (prev | curr) >>> 0;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case 'XOR':
 | 
				
			||||||
 | 
					                            state.currentValue = (prev ^ curr) >>> 0;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case '<<':
 | 
				
			||||||
 | 
					                            state.currentValue = (prev << curr) >>> 0;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case '>>':
 | 
				
			||||||
 | 
					                            state.currentValue = (prev >> curr) >>> 0;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    // Ensure positive value
 | 
				
			||||||
 | 
					                    if (state.currentValue < 0) {
 | 
				
			||||||
 | 
					                        state.currentValue = 0;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                } catch (error) {
 | 
				
			||||||
 | 
					                    alert('Calculation error: ' + error.message);
 | 
				
			||||||
 | 
					                    state.currentValue = 0;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                state.operation = null;
 | 
				
			||||||
 | 
					                state.previousValue = 0;
 | 
				
			||||||
 | 
					                state.waitingForOperand = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (updateDisplay) {
 | 
				
			||||||
 | 
					                updateCalculatorDisplay(currentTab);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function calcClear(tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            state.currentValue = 0;
 | 
				
			||||||
 | 
					            state.previousValue = 0;
 | 
				
			||||||
 | 
					            state.operation = null;
 | 
				
			||||||
 | 
					            state.waitingForOperand = false;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            updateCalculatorDisplay(currentTab);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function calcBackspace(tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (!state.waitingForOperand) {
 | 
				
			||||||
 | 
					                state.currentValue = Math.floor(state.currentValue / 16);
 | 
				
			||||||
 | 
					                updateCalculatorDisplay(currentTab);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function calcMemory(operation, tab = null) {
 | 
				
			||||||
 | 
					            const currentTab = tab || getCurrentTab();
 | 
				
			||||||
 | 
					            const state = getCalculatorState(currentTab);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            switch (operation) {
 | 
				
			||||||
 | 
					                case 'MC':
 | 
				
			||||||
 | 
					                    state.memory = 0;
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 'MR':
 | 
				
			||||||
 | 
					                    state.currentValue = state.memory;
 | 
				
			||||||
 | 
					                    state.waitingForOperand = false;
 | 
				
			||||||
 | 
					                    updateCalculatorDisplay(currentTab);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 'M+':
 | 
				
			||||||
 | 
					                    state.memory += state.currentValue;
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 'M-':
 | 
				
			||||||
 | 
					                    state.memory -= state.currentValue;
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Create tooltip element
 | 
					        // Create tooltip element
 | 
				
			||||||
        function createTooltip() {
 | 
					        function createTooltip() {
 | 
				
			||||||
            if (!tooltip) {
 | 
					            if (!tooltip) {
 | 
				
			||||||
@ -905,6 +1458,9 @@
 | 
				
			|||||||
            
 | 
					            
 | 
				
			||||||
            document.getElementById(tabId).classList.add('active');
 | 
					            document.getElementById(tabId).classList.add('active');
 | 
				
			||||||
            event.target.classList.add('active');
 | 
					            event.target.classList.add('active');
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            // Update calculator display when switching tabs
 | 
				
			||||||
 | 
					            updateCalculatorDisplay(tabId);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        function calculate(fsType) {
 | 
					        function calculate(fsType) {
 | 
				
			||||||
@ -961,37 +1517,12 @@
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        function clearAll(fsType) {
 | 
					 | 
				
			||||||
            const fs = filesystems[fsType];
 | 
					 | 
				
			||||||
            if (!fs) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            fs.requiredFields.forEach(fieldId => {
 | 
					 | 
				
			||||||
                const element = document.getElementById(fieldId);
 | 
					 | 
				
			||||||
                if (element) element.value = '';
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            const clusterField = document.getElementById(`clusterNumber${fsType === 'fat1216' ? '1216' : '32'}`);
 | 
					 | 
				
			||||||
            if (clusterField) clusterField.value = '';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (fsType === 'fat1216') {
 | 
					 | 
				
			||||||
                const resultElements = ['fatStart1216', 'fatSize1216', 'fatEnd1216', 'rootDirSize1216', 'dataStart1216', 'dataSize1216', 'clusterSize1216', 'numClusters1216', 'clusterStart1216'];
 | 
					 | 
				
			||||||
                resultElements.forEach(id => {
 | 
					 | 
				
			||||||
                    const element = document.getElementById(id);
 | 
					 | 
				
			||||||
                    element.innerHTML = '-';
 | 
					 | 
				
			||||||
                    element.setAttribute('data-result-formula', '');
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            } else if (fsType === 'fat32') {
 | 
					 | 
				
			||||||
                const resultElements = ['fatStart32', 'fatSize32', 'fatEnd32', 'dataStart32', 'dataSize32', 'clusterSize32', 'numClusters32', 'clusterStart32', 'rootDirPos32'];
 | 
					 | 
				
			||||||
                resultElements.forEach(id => {
 | 
					 | 
				
			||||||
                    const element = document.getElementById(id);
 | 
					 | 
				
			||||||
                    element.innerHTML = '-';
 | 
					 | 
				
			||||||
                    element.setAttribute('data-result-formula', '');
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Add event listeners
 | 
					        // Add event listeners
 | 
				
			||||||
        document.addEventListener('DOMContentLoaded', function() {
 | 
					        document.addEventListener('DOMContentLoaded', function() {
 | 
				
			||||||
 | 
					            // Initialize calculator displays
 | 
				
			||||||
 | 
					            updateCalculatorDisplay('fat1216');
 | 
				
			||||||
 | 
					            updateCalculatorDisplay('fat32');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Real-time calculation
 | 
					            // Real-time calculation
 | 
				
			||||||
            Object.keys(filesystems).forEach(fsType => {
 | 
					            Object.keys(filesystems).forEach(fsType => {
 | 
				
			||||||
                const fs = filesystems[fsType];
 | 
					                const fs = filesystems[fsType];
 | 
				
			||||||
@ -1010,12 +1541,29 @@
 | 
				
			|||||||
                });
 | 
					                });
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Add separate listeners for cluster number fields (optional but affect results)
 | 
				
			||||||
 | 
					            ['clusterNumber1216', 'clusterNumber32'].forEach(fieldId => {
 | 
				
			||||||
 | 
					                const input = document.getElementById(fieldId);
 | 
				
			||||||
 | 
					                if (input) {
 | 
				
			||||||
 | 
					                    input.addEventListener('input', function() {
 | 
				
			||||||
 | 
					                        const fsType = fieldId.includes('32') ? 'fat32' : 'fat1216';
 | 
				
			||||||
 | 
					                        const fs = filesystems[fsType];
 | 
				
			||||||
 | 
					                        const allFilled = fs.requiredFields.every(id => 
 | 
				
			||||||
 | 
					                            document.getElementById(id).value.trim() !== ''
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					                        if (allFilled) {
 | 
				
			||||||
 | 
					                            calculate(fsType);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Tooltip event listeners
 | 
					            // Tooltip event listeners
 | 
				
			||||||
            document.addEventListener('mouseover', function(e) {
 | 
					            document.addEventListener('mouseover', function(e) {
 | 
				
			||||||
                if (e.target.classList.contains('result-label')) {
 | 
					                if (e.target.classList.contains('result-label')) {
 | 
				
			||||||
                    const formula = e.target.getAttribute('data-formula');
 | 
					                    const formula = e.target.getAttribute('data-formula');
 | 
				
			||||||
                    if (formula) {
 | 
					                    if (formula) {
 | 
				
			||||||
                        showTooltip(e.target, `Formel: ${formula}`);
 | 
					                        showTooltip(e.target, `Formula: ${formula}`);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                } else if (e.target.classList.contains('result-value')) {
 | 
					                } else if (e.target.classList.contains('result-value')) {
 | 
				
			||||||
                    const formula = e.target.getAttribute('data-result-formula');
 | 
					                    const formula = e.target.getAttribute('data-result-formula');
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user