ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>UP TET Paper 1 - - > 7 > & M 5 ? $ @ / :    M 0 G  @ (English)  - M / > 8 8 G   ( 0 G  0 </title> <link href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='45' fill='%23ff8f00'/%3E%3Ctext x='50' y='67' font-size='45' text-anchor='middle' fill='white' font-weight='bold'%3EEN%3C/text%3E%3C/svg%3E" rel="icon"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #ff8f00; --primary-dark: #e65100; --secondary: #ffb74d; --danger: #f44336; --success: #43a047; --light: #fff3e0; --dark: #bf360c; --gray: #6d4c41; --border-radius: 12px; --box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', 'Noto Sans', system-ui, -apple-system, sans-serif; } body { background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.6; } .container { width: 100%; max-width: 1000px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.5s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: white; padding: 30px 20px; text-align: center; position: relative; overflow: hidden; } .header::before { content: '=ØÖÜ'; position: absolute; bottom: -30px; right: -30px; font-size: 120px; opacity: 0.15; transform: rotate(-15deg); } .header h1 { font-size: 1.6rem; margin-bottom: 10px; font-weight: 700; position: relative; z-index: 1; } .header p { font-size: 1rem; opacity: 0.9; position: relative; z-index: 1; } .content-area { padding: 30px; } .hidden { display: none !important; } .btn { display: inline-block; padding: 12px 28px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); border: none; text-align: center; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); margin: 10px 5px; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 8px 15px rgba(255, 143, 0, 0.3); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #2e7d32; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #d32f2f; transform: translateY(-2px); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.1rem; padding: 15px 30px; width: 200px; } .btn-level:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 20px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.5rem; position: relative; padding-bottom: 10px; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 3px; background: var(--secondary); border-radius: 3px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; margin: 25px 0; max-height: 400px; overflow-y: auto; padding: 10px; border: 1px solid #eee; border-radius: 12px; } .checkbox-item { display: flex; align-items: center; } .checkbox-item input { margin-right: 10px; width: 18px; height: 18px; cursor: pointer; } .checkbox-item label { cursor: pointer; font-size: 0.9rem; } .practice-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin: 30px 0; } .option-card { background: white; border-radius: var(--border-radius); padding: 25px; box-shadow: var(--box-shadow); text-align: center; transition: var(--transition); cursor: pointer; border: 2px solid transparent; } .option-card:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); } .option-card.selected { border-color: var(--primary); background: rgba(255, 143, 0, 0.05); } .option-icon { font-size: 2.5rem; color: var(--primary); margin-bottom: 15px; } .option-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 10px; color: var(--primary-dark); } .option-description { color: var(--gray); font-size: 0.85rem; } .question-count-selector { display: flex; justify-content: center; align-items: center; gap: 15px; margin: 20px 0; } .count-btn { width: 40px; height: 40px; border-radius: 50%; background: var(--light); border: 2px solid var(--gray); display: flex; align-items: center; justify-content: center; cursor: pointer; font-weight: bold; transition: var(--transition); } .count-btn:hover { background: var(--primary); color: white; border-color: var(--primary); } .question-count { font-size: 1.5rem; font-weight: 600; min-width: 60px; text-align: center; } .timer-options { display: flex; justify-content: center; gap: 15px; margin: 20px 0; flex-wrap: wrap; } .timer-btn { padding: 10px 20px; background: var(--light); border: 2px solid var(--gray); border-radius: 30px; cursor: pointer; transition: var(--transition); } .timer-btn.selected { background: var(--primary); color: white; border-color: var(--primary); } .question { margin-bottom: 20px; page-break-inside: avoid; } .question-text { font-weight: 500; margin-bottom: 8px; } .option { margin-left: 20px; margin-bottom: 5px; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 15px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .answer-table th, .answer-table td { border: 1px solid #ddd; padding: 8px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; } .instructions { margin-bottom: 30px; padding: 20px; background: #fff3e0; border-radius: var(--border-radius); border-left: 5px solid var(--primary); } .instructions ol { padding-left: 20px; margin-top: 10px; } .paper-header { text-align: center; margin-bottom: 20px; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 24px; cursor: pointer; transition: var(--transition); z-index: 2; } .home-icon:hover { transform: scale(1.1); } @media (max-width: 768px) { .checkbox-container { grid-template-columns: 1fr; } .level-buttons { flex-direction: column; align-items: center; } .btn-level { width: 100%; max-width: 250px; } .header h1 { font-size: 1.2rem; } } @media print { .action-buttons { display: none; } .home-icon { display: none; } .question { page-break-inside: avoid; } } .text-center { text-align: center; } </style> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-tet-exam-paper1-practice-set-generator.html" class="home-icon" id="homeIconBtn"> <i class="fas fa-home"></i> </a> <h1><i class="fas fa-language"></i> UP TET Paper 1 - - > 7 > & M 5 ? $ @ / :    M 0 G  @ (English)  - M / > 8 8 G   ( 0 G  0 </h1> <p>UP TET * M 0 > % . ?  8 M $ 0  @ * 0 @  M 7 > 9 G $ A    M 0 G  @ 5 M / >  0 # & Comprehension  > 5 ? 7 / 5 > 0  - M / > 8 </p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title">=ØÖÜ English (Language II)  - M / > 8 8 G   ( 0 G  0 </h2> <p class="text-center">UP TET Paper 1 9 G $ A    M 0 G  @ 5 M / >  0 # , 0 @ ! ?    I . M * M 0 ? 9 G  6 (  5  5 K  H , A 2 0 @  > 5 ? 8 M $ C $  - M / > 8 8 G  $ H / > 0  0 G  </p> <div class="btn-group"> <button class="btn btn-primary" id="startGeneratingBtn"><i class="fas fa-play"></i>  - M / > 8 8 G  , ( > ( > 6 A 0 B  0 G  </button> </div> </div> <div id="practiceTypeSelection" class="hidden"> <h2 class="section-title"> - M / > 8  > * M 0  > 0  A ( G  </h2> <p class="text-center"> * ( @ $ H / > 0 @  G  ( A 8 > 0  - M / > 8 8 G   A ( G  :</p> <div class="practice-options"> <div class="option-card" data-type="chapter-wise"> <div class="option-icon"><i class="fas fa-book-open"></i></div> <div class="option-title">5 ? 7 / > ( A 8 > 0  - M / > 8 </div> <div class="option-description"> ? 8 @ 5 ? 6 G 7    M 0 G  @ 5 M / >  0 # 5 ? 7 /  >  9 (  - M / > 8  0 G  </div> </div> <div class="option-card" data-type="full-length"> <div class="option-icon"><i class="fas fa-file-alt"></i></div> <div class="option-title">* B 0 M # 2  , >   G 8 M  </div> <div class="option-description">UP TET * H  0 M ( * 0  ' > 0 ? $ 50 * M 0 6 M ( K   > 8 G  </div> </div> <div class="option-card" data-type="previous-year"> <div class="option-icon"><i class="fas fa-calendar-alt"></i></div> <div class="option-title">* ?  2 G 5 0 M 7 K   G * M 0 6 M ( </div> <div class="option-description">* ?  2 @ TET * 0 @  M 7 >   * 0  ' > 0 ? $ * M 0 6 M ( </div> </div> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn">* @  G  >   </button> <button class="btn btn-success" id="proceedToChaptersBtn">5 ? 7 /  A ( G  ’!</button> </div> </div> <div id="chapterSelection" class="hidden"> <h2 class="section-title">=ØÚÜ    M 0 G  @ (Language II)  G 5 ? 7 /  A ( G  </h2> <form id="chapterForm"> <div class="checkbox-container" id="englishTopicsContainer"></div> </form> <div id="questionCountSection"> <h3 class="section-title">* M 0 6 M ( K   @ 8   M / >  A ( G  </h3> <div class="question-count-selector"> <div class="count-btn" id="decreaseCount">-</div> <div class="question-count" id="questionCount">50</div> <div class="count-btn" id="increaseCount">+</div> </div> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToPracticeTypeBtn">* @  G </button> <button class="btn btn-success" id="generateAssignmentBtn"> ? ( >  8 M $ 0  A ( G  ’!</button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title"> ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center">UP TET * 0 @  M 7 >  G  ( A 8 > 0 8 M $ 0  A ( G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">Level 1<br><small>, A ( ? / > & @ (* M 0 > 0  - ?  )</small></button> <button class="btn btn-level" id="level2Btn">Level 2<br><small>. ' M / . (TET 8 M $ 0 )</small></button> <button class="btn btn-level" id="level3Btn">Level 3<br><small>  M  (6 ?  M 7  * > $ M 0 $ > )</small></button> </div> <div id="timerOptions"> <h3 class="section-title">8 . / 8 @ . >  A ( G  </h3> <div class="timer-options"> <div class="timer-btn" data-time="30">30 . ? (  </div> <div class="timer-btn" data-time="45">45 . ? (  </div> <div class="timer-btn" data-time="60" class="selected">60 . ? (  </div> <div class="timer-btn" data-time="90">90 . ? (  </div> </div> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToChaptersBtn">5 ? 7 / K  * 0 5 > * 8 </button> <button class="btn btn-success" id="generateFinalBtn"> - M / > 8 8 G   ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; // ========================    M 0 G  @ (Language II)  G 19 5 ? 7 / ======================== const englishChapters = [ "Unseen Passage (Reading Comprehension)", "The Sentences - Subject and Predicate", "Kinds of Sentences", "Parts of Speech", "Noun - Kinds of Noun, Singular & Plural, Gender", "Pronoun", "Adverb", "Adjective", "Verb", "Preposition", "Conjunction", "Interjection", "Tenses - Present, Past, Future", "Articles (A, An, The)", "Punctuation", "Word Formation (Prefix, Suffix, Root Words)", "Active & Passive Voice", "Conditional Sentences", "Vocabulary (Synonyms, Antonyms, One Word Substitution)" ]; // ======================== * M 0 6 M ( ! G  > , G 8 ======================== const questions = {}; function addQuestion(chapter, level, qText, opts, ans) { if(!questions[chapter]) questions[chapter] = { level1: [], level2: [], level3: [] }; questions[chapter][`level${level}`].push({ question: qText, options: opts, answer: ans }); } // ---------- Unseen Passage (Level 1,2) ---------- addQuestion(englishChapters[0], 1, "Read the passage: 'The sun rises in the east. It gives us light and heat.' What does the sun give us?", ["Darkness", "Light and Heat", "Water", "Wind"], "B"); addQuestion(englishChapters[0], 2, "Passage: 'Honesty is the best policy. Always speak the truth.' What is the best policy according to the passage?", ["Lying", "Honesty", "Cheating", "Stealing"], "B"); addQuestion(englishChapters[0], 3, "Passage about environment: 'Trees give us oxygen. We must save trees.' Why should we save trees?", ["For wood", "For oxygen", "For fruits", "For shade"], "B"); // ---------- Sentences ---------- addQuestion(englishChapters[1], 1, "Identify the subject in: 'The dog is barking loudly.'", ["The dog", "is barking", "loudly", "barking"], "A"); addQuestion(englishChapters[1], 2, "Identify the predicate: 'She writes a letter.'", ["She", "writes a letter", "a letter", "writes"], "B"); addQuestion(englishChapters[2], 1, "Which is an imperative sentence?", ["What is your name?", "Please close the door.", "She is singing.", "Hurrah! We won."], "B"); addQuestion(englishChapters[2], 2, "Identify the exclamatory sentence:", ["I like tea.", "Go away!", "What a beautiful flower!", "Where are you going?"], "C"); addQuestion(englishChapters[3], 1, "What part of speech is 'beautiful' in: 'She is a beautiful girl.'", ["Noun", "Verb", "Adjective", "Adverb"], "C"); addQuestion(englishChapters[3], 2, "Identify the verb: 'He runs fast.'", ["He", "runs", "fast", "He runs"], "B"); addQuestion(englishChapters[4], 1, "Plural of 'Child' is:", ["Childs", "Children", "Childes", "Childrens"], "B"); addQuestion(englishChapters[4], 2, "Which is a common noun?", ["India", "Taj Mahal", "Table", "Rohan"], "C"); addQuestion(englishChapters[4], 3, "Feminine gender of 'Actor' is:", ["Actoress", "Actress", "Actresss", "Actrees"], "B"); addQuestion(englishChapters[5], 1, "Replace noun with pronoun: 'Ravi is a good boy.'", ["He", "She", "It", "They"], "A"); addQuestion(englishChapters[5], 2, "Which is a possessive pronoun?", ["He", "Him", "His", "Himself"], "C"); addQuestion(englishChapters[6], 1, "Identify adverb: 'She sings sweetly.'", ["She", "sings", "sweetly", "She sings"], "C"); addQuestion(englishChapters[7], 1, "Which is an adjective?", ["Quickly", "Beautiful", "Run", "Under"], "B"); addQuestion(englishChapters[8], 1, "Past tense of 'go' is:", ["Goed", "Went", "Gone", "Going"], "B"); addQuestion(englishChapters[8], 2, "Which sentence is in Present Continuous Tense?", ["I eat an apple.", "I am eating an apple.", "I ate an apple.", "I will eat an apple."], "B"); addQuestion(englishChapters[9], 1, "Identify preposition: 'The book is on the table.'", ["book", "is", "on", "table"], "C"); addQuestion(englishChapters[10], 1, "Which conjunction joins two equal clauses?", ["Because", "Although", "And", "If"], "C"); addQuestion(englishChapters[11], 1, "Which word is an interjection? 'Wow! That's amazing.'", ["Wow", "That", "is", "amazing"], "A"); addQuestion(englishChapters[12], 1, "Fill tense: 'She _____ to school every day.'", ["go", "goes", "going", "went"], "B"); addQuestion(englishChapters[12], 2, "Future perfect tense of 'He will finish work' is:", ["He will have finished work", "He will finishing", "He has finished", "He finished"], "A"); addQuestion(englishChapters[13], 1, "Fill article: 'He is _____ honest man.'", ["a", "an", "the", "no article"], "B"); addQuestion(englishChapters[13], 2, "Which sentence uses correct article?", ["Sun is a star.", "The Sun is a star.", "Sun is star.", "A Sun is star."], "B"); addQuestion(englishChapters[14], 1, "Correct punctuation: 'where are you going'", ["where are you going?", "Where are you going?", "Where are you going.", "where are you going."], "B"); addQuestion(englishChapters[15], 1, "Word formed by adding prefix 'un' to 'happy' is:", ["Unhappy", "Happily", "Happiness", "Unhappily"], "A"); addQuestion(englishChapters[16], 1, "Change to passive: 'Rama eats an apple.'", ["An apple is eaten by Rama", "An apple was eaten", "Apple is eating", "Rama is eaten"], "A"); addQuestion(englishChapters[16], 2, "Active voice of 'The letter was written by him.'", ["He writes the letter", "He wrote the letter", "He is writing", "He has written"], "B"); addQuestion(englishChapters[17], 1, "Conditional: 'If it rains, we _____ stay home.'", ["will", "would", "shall", "should"], "A"); addQuestion(englishChapters[17], 2, "Which sentence is zero conditional?", ["If you heat ice, it melts.", "If I were rich, I would travel.", "If it rains, we will cancel.", "If he had studied, he would have passed."], "A"); addQuestion(englishChapters[18], 1, "Synonym of 'Happy' is:", ["Sad", "Joyful", "Angry", "Tired"], "B"); addQuestion(englishChapters[18], 2, "Antonym of 'Ancient' is:", ["Old", "Modern", "Historic", "Aged"], "B"); addQuestion(englishChapters[18], 3, "One word for 'A person who writes poems' is:", ["Poet", "Author", "Writer", "Editor"], "A"); // 8 - @  ' M / > / K   G 2 ?  ! ? + < I 2 M  * M 0 6 M ( ( A # 5 $ M $ > * B 0 M # ) for(let i=0; i<englishChapters.length; i++) { const chap = englishChapters[i]; if(!questions[chap]) { questions[chap] = { level1: [], level2: [], level3: [] }; } if(questions[chap].level1.length < 3) { for(let k=1; k<=3; k++) { questions[chap].level1.push({ question: `${chap} - Basic Question ${k}: Choose the correct option.`, options: ["Option A", "Option B", "Option C", "Option D"], answer: "A" }); } } if(questions[chap].level2.length < 3) { for(let k=1; k<=3; k++) { questions[chap].level2.push({ question: `${chap} (Intermediate Level) Question ${k}: Identify the correct sentence/word.`, options: ["Choice 1", "Choice 2", "Choice 3", "Choice 4"], answer: "B" }); } } if(questions[chap].level3.length < 3) { for(let k=1; k<=3; k++) { questions[chap].level3.push({ question: `${chap} (Advanced) Question ${k}: Which of the following is grammatically correct?`, options: ["Option X", "Option Y", "Option Z", "Option W"], answer: "C" }); } } } // DOM 0 G + 0 G  8 const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const practiceTypeSelection = document.getElementById('practiceTypeSelection'); const chapterSelection = document.getElementById('chapterSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); const startGeneratingBtn = document.getElementById('startGeneratingBtn'); const backToStartBtn = document.getElementById('backToStartBtn'); const proceedToChaptersBtn = document.getElementById('proceedToChaptersBtn'); const backToPracticeTypeBtn = document.getElementById('backToPracticeTypeBtn'); const generateAssignmentBtn = document.getElementById('generateAssignmentBtn'); const backToChaptersBtn = document.getElementById('backToChaptersBtn'); const generateFinalBtn = document.getElementById('generateFinalBtn'); const level1Btn = document.getElementById('level1Btn'); const level2Btn = document.getElementById('level2Btn'); const level3Btn = document.getElementById('level3Btn'); const decreaseCount = document.getElementById('decreaseCount'); const increaseCount = document.getElementById('increaseCount'); const questionCountSpan = document.getElementById('questionCount'); const homeIconBtn = document.getElementById('homeIconBtn'); let selectedTopics = []; let selectedLevel = null; let selectedPracticeType = null; let questionCount = 50; let timeLimit = 60; function loadTopics() { const container = document.getElementById('englishTopicsContainer'); container.innerHTML = `<div class="checkbox-item"><input type="checkbox" id="fullPaper" name="topic" value="8 - @ 5 ? 7 / "><label for="fullPaper">' 8 - @ 5 ? 7 / (* B 0 M # * > M /  M 0 . - 19  ' M / > / )</label></div>`; englishChapters.forEach((topic, idx) => { const id = `topic${idx}`; container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="${id}" name="topic" value="${topic}"><label for="${id}">=ØÖÜ ${topic}</label></div>`; }); document.getElementById('fullPaper')?.addEventListener('change', (e) => { const checkboxes = document.querySelectorAll('input[name="topic"]:not(#fullPaper)'); checkboxes.forEach(cb => cb.disabled = e.target.checked); if(e.target.checked) checkboxes.forEach(cb => cb.checked = false); }); } function getSelectedTopics() { const full = document.getElementById('fullPaper'); if(full && full.checked) return [...englishChapters]; return Array.from(document.querySelectorAll('input[name="topic"]:checked')).filter(cb => cb.id !== 'fullPaper').map(cb => cb.value); } function getRandomQuestions(topics, level, count) { let allQuestions = []; topics.forEach(topic => { if(questions[topic] && questions[topic][`level${level}`]) { allQuestions = allQuestions.concat(questions[topic][`level${level}`]); } }); if(allQuestions.length === 0) { return Array(count).fill({ question: "Sample Question: Please try again.", options: ["A", "B", "C", "D"], answer: "A" }); } allQuestions = allQuestions.sort(() => Math.random() - 0.5); return allQuestions.slice(0, count); } function showPracticeTypeSelection() { startScreen.classList.add('hidden'); practiceTypeSelection.classList.remove('hidden'); } function backToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); practiceTypeSelection.classList.add('hidden'); chapterSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); startScreen.classList.remove('hidden'); selectedTopics = []; selectedLevel = null; selectedPracticeType = null; questionCount = 50; timeLimit = 60; questionCountSpan.textContent = "50"; document.querySelectorAll('.option-card').forEach(c => c.classList.remove('selected')); document.querySelectorAll('.timer-btn').forEach(b => b.classList.remove('selected')); if(document.querySelector('.timer-btn[data-time="60"]')) document.querySelector('.timer-btn[data-time="60"]').classList.add('selected'); level1Btn.classList.remove('selected'); level2Btn.classList.remove('selected'); level3Btn.classList.remove('selected'); } function backToPracticeType() { chapterSelection.classList.add('hidden'); practiceTypeSelection.classList.remove('hidden'); } function backToChapters() { levelSelection.classList.add('hidden'); chapterSelection.classList.remove('hidden'); } function showChapters() { if(!selectedPracticeType) { alert(" C * / >  - M / > 8  > * M 0  > 0  A ( G  !"); return; } practiceTypeSelection.classList.add('hidden'); chapterSelection.classList.remove('hidden'); loadTopics(); } function showLevelSelection() { selectedTopics = getSelectedTopics(); if(selectedTopics.length === 0) { alert(" C * / >  . 8 G  .   5 ? 7 /  A ( G  !"); return; } chapterSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); } function selectLevel(level) { level1Btn.classList.remove('selected'); level2Btn.classList.remove('selected'); level3Btn.classList.remove('selected'); document.getElementById(`level${level}Btn`).classList.add('selected'); selectedLevel = level; } level1Btn.onclick = () => selectLevel(1); level2Btn.onclick = () => selectLevel(2); level3Btn.onclick = () => selectLevel(3); decreaseCount.onclick = () => { if(questionCount > 10) { questionCount -= 5; questionCountSpan.textContent = questionCount; } }; increaseCount.onclick = () => { if(questionCount < 100) { questionCount += 5; questionCountSpan.textContent = questionCount; } }; document.querySelectorAll('.option-card').forEach(card => { card.addEventListener('click', () => { document.querySelectorAll('.option-card').forEach(c => c.classList.remove('selected')); card.classList.add('selected'); selectedPracticeType = card.dataset.type; if(selectedPracticeType === 'full-length') { questionCount = 50; questionCountSpan.textContent = "50"; } else if(selectedPracticeType === 'previous-year') { questionCount = 45; questionCountSpan.textContent = "45"; } }); }); document.querySelectorAll('.timer-btn').forEach(btn => { btn.addEventListener('click', () => { document.querySelectorAll('.timer-btn').forEach(b => b.classList.remove('selected')); btn.classList.add('selected'); timeLimit = parseInt(btn.dataset.time); }); }); function getPracticeTypeName(type) { if(type === 'chapter-wise') return '=ØÖÜ 5 ? 7 / > ( A 8 > 0  - M / > 8 -    M 0 G  @ (Language II)'; if(type === 'full-length') return '=ØÝÜ * B 0 M # 2  , >   G 8 M  (UP TET Paper 1 * H  0 M ( )'; if(type === 'previous-year') return 'ó# * ?  2 G 5 0 M 7 K   G * M 0 6 M ( (TET  ' > 0 ? $ )'; return '<ØìÝ<ØçÝ English Language Practice Set'; } function generateAssignment() { if(!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); generatedPaperContainer.innerHTML = ''; const topicsList = selectedTopics; const mcqs = getRandomQuestions(topicsList, selectedLevel, questionCount); let paperHTML = ` <div class="header" style="background: linear-gradient(135deg, #ff8f00, #e65100);"> <h2>=ØÖÜ UP TET Paper 1 - - > 7 > & M 5 ? $ @ / :    M 0 G  @ (English)  - M / > 8 8 G  </h2> <h3>${getPracticeTypeName(selectedPracticeType)}</h3> <p>Level ${selectedLevel} - ${selectedLevel === 1 ? ", A ( ? / > & @ (* M 0 > 0  - ?  )" : selectedLevel === 2 ? ". ' M / . (TET 8 M $ 0 )" : "  M  (5 ? 6 G 7  M  )"} | Time: ${timeLimit} minutes</p> <p>Total Questions: ${questionCount}</p> </div> <div class="content-area"> <div class="instructions"><p><strong>=ØÌÜ Instructions:</strong></p><ol><li>This set contains ${questionCount} multiple choice questions.</li><li>Each question has four options, only one is correct.</li><li>Time limit: ${timeLimit} minutes</li><li>Practice for UP TET Paper 1 (Language II - English).</li><li>Each question carries 1 mark, no negative marking.</li></ol></div> <div class="question-section"><div class="section-heading" style="font-size:1.2rem; font-weight:bold; margin-bottom:15px;">=ØÖÜ English Grammar & Comprehension Questions</div>`; let qNum = 1; mcqs.forEach(mcq => { paperHTML += `<div class="question"><div class="question-text">${qNum}. ${mcq.question}</div><div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div><div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div>`; qNum++; }); paperHTML += `</div><div class="answer-sheet"><h3 class="section-title">' Answer Key</h3><table class="answer-table"><thead><tr><th>Q.No.</th><th>Answer</th><th>Q.No.</th><th>Answer</th><th>Q.No.</th><th>Answer</th></tr></thead><tbody>`; for(let i=0; i<mcqs.length; i+=3) { paperHTML += `<tr>`; for(let j=0; j<3; j++) { if(i+j < mcqs.length) paperHTML += `<td>${i+j+1}</td><td>${mcqs[i+j].answer}</td>`; else paperHTML += `<td></td><td></td>`; } paperHTML += `</tr>`; } paperHTML += `</tbody></table></div><div class="action-buttons"><button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> Print</button><button class="btn btn-success" id="downloadBtn"><i class="fas fa-download"></i> Download PDF</button><button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-plus"></i> New Practice Set</button></div></div>`; generatedPaperContainer.innerHTML = paperHTML; document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('downloadBtn')?.addEventListener('click', downloadPDF); document.getElementById('newAssignmentBtn')?.addEventListener('click', () => backToStart()); } async function downloadPDF() { const element = document.getElementById('generatedPaperContainer'); const tempDiv = document.createElement('div'); tempDiv.style.position = 'absolute'; tempDiv.style.left = '-9999px'; tempDiv.style.width = '794px'; tempDiv.style.backgroundColor = 'white'; tempDiv.style.padding = '20px'; tempDiv.innerHTML = element.innerHTML; document.body.appendChild(tempDiv); try { const pdf = new jsPDF('p', 'mm', 'a4'); const pageWidth = pdf.internal.pageSize.getWidth() - 25.4; let position = 12.7; let remainingHeight = tempDiv.scrollHeight; let pageNum = 1; while (remainingHeight > 0) { const canvas = await html2canvas(tempDiv, { scale: 1.5, backgroundColor: '#ffffff' }); const imgData = canvas.toDataURL('image/jpeg', 0.92); if(pageNum > 1) pdf.addPage(); pdf.addImage(imgData, 'JPEG', 12.7, 12.7, pageWidth, canvas.height * pageWidth / canvas.width); position += 277; remainingHeight -= 277 * 3.78; pageNum++; } pdf.save('UP_TET_English_Language_II_Practice_Set.pdf'); } catch(e) { console.error(e); alert("PDF generation error"); } finally { if(tempDiv) document.body.removeChild(tempDiv); } } startGeneratingBtn.onclick = showPracticeTypeSelection; backToStartBtn.onclick = backToStart; proceedToChaptersBtn.onclick = showChapters; backToPracticeTypeBtn.onclick = backToPracticeType; generateAssignmentBtn.onclick = showLevelSelection; backToChaptersBtn.onclick = backToChapters; generateFinalBtn.onclick = generateAssignment; homeIconBtn.onclick = backToStart; // Default timer selection document.querySelector('.timer-btn[data-time="60"]').classList.add('selected'); </script> </body> </html>