ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>UP TET * G * 0 -1 | , > 2 5 ?  > 8  5  6 ?  M 7 # 5 ? ' ? / >  | & H ( ?   - M / > 8  ( 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='%232b5e3b'/%3E%3Ctext x='50' y='68' font-size='48' text-anchor='middle' fill='white' font-weight='bold'%3EC%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: #2b5e3b; --primary-dark: #1e3a2f; --secondary: #38a169; --danger: #e53e3e; --success: #38a169; --light: #f0fff4; --dark: #1a202c; --gray: #4a5568; --border-radius: 12px; --box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', 'Poppins', system-ui, sans-serif; } body { background: linear-gradient(135deg, #e9f5ec 0%, #c6e0d2 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.5; } .container { width: 100%; max-width: 1100px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.4s 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: 28px 20px; text-align: center; position: relative; } .header::before { content: '=ØÚÜ'; position: absolute; bottom: 10px; right: 20px; font-size: 70px; opacity: 0.1; } .header h1 { font-size: 1.9rem; margin-bottom: 8px; font-weight: 700; letter-spacing: -0.5px; } .header p { font-size: 1rem; opacity: 0.9; } .content-area { padding: 28px; } .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 8px rgba(0,0,0,0.05); margin: 8px 5px; font-size: 0.95rem; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 10px 20px -5px var(--primary); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #2c7a4a; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #c53030; transform: translateY(-2px); } .btn-level { background: white; color: var(--dark); border: 2px solid #cbd5e0; font-size: 1.1rem; padding: 14px 28px; width: 190px; font-weight: 600; transition: all 0.2s; } .btn-level:hover { transform: translateY(-4px); background: #f7fafc; border-color: var(--primary); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); box-shadow: 0 8px 16px -4px rgba(43,94,59,0.4); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 25px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.7rem; position: relative; padding-bottom: 12px; font-weight: 600; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 4px; background: var(--secondary); border-radius: 4px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; margin: 25px 0; max-height: 520px; overflow-y: auto; padding: 15px; border: 1px solid #e2e8f0; border-radius: 18px; background: #fafef7; } .checkbox-item { display: flex; align-items: center; background: white; padding: 8px 12px; border-radius: 40px; transition: all 0.2s; border: 1px solid #e9ecef; } .checkbox-item:hover { background: #e6f7ec; transform: translateX(3px); } .checkbox-item input { margin-right: 12px; width: 18px; height: 18px; cursor: pointer; accent-color: var(--primary); } .checkbox-item label { cursor: pointer; font-size: 0.9rem; font-weight: 500; } .question { margin-bottom: 25px; page-break-inside: avoid; background: #ffffff; padding: 15px; border-radius: 16px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); border-left: 4px solid var(--secondary); } .question-text { font-weight: 700; margin-bottom: 12px; font-size: 1.05rem; color: #2d3748; } .option { margin-left: 24px; margin-bottom: 6px; color: #4a5568; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 18px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f0faf4; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; border-radius: 12px; overflow: hidden; } .answer-table th, .answer-table td { border: 1px solid #cbd5e0; padding: 10px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; font-weight: 600; } .streak-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; gap: 20px; flex-wrap: wrap; } .streak-counter { background: #ff9100; color: white; padding: 10px 20px; border-radius: 60px; font-weight: bold; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .date-display { font-size: 1rem; font-weight: 600; background: #e2e8f0; padding: 8px 18px; border-radius: 40px; color: var(--primary-dark); } .progress-container { margin: 20px 0; background: #edf2f7; padding: 20px; border-radius: 28px; } .progress-bar { height: 12px; background: #cbd5e0; border-radius: 20px; overflow: hidden; margin-top: 12px; } .progress-fill { height: 100%; background: var(--success); border-radius: 20px; transition: width 0.5s ease; } .problem-of-day { background: linear-gradient(115deg, #fff6e5, #ffedd5); border-left: 5px solid var(--danger); padding: 20px; margin: 20px 0; border-radius: 24px; } .daily-summary { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin: 20px 0; } .summary-card { flex: 1; min-width: 110px; background: white; padding: 15px; border-radius: 20px; box-shadow: 0 8px 20px rgba(0,0,0,0.05); text-align: center; border: 1px solid #e2e8f0; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 26px; cursor: pointer; transition: transform 0.2s; z-index: 5; background: rgba(0,0,0,0.2); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .home-icon:hover { transform: scale(1.08); background: rgba(0,0,0,0.4); } .instructions { margin-bottom: 30px; padding: 18px 22px; background: #f7fafc; border-radius: 24px; border: 1px solid #e2e8f0; } @media (max-width: 680px) { .header h1 { font-size: 1.3rem; } .btn-level { width: 140px; font-size: 0.9rem; padding: 12px 16px; } .checkbox-container { grid-template-columns: 1fr; } } @media print { .action-buttons, .streak-container, .progress-container, .problem-of-day, .daily-summary, .home-icon { display: none; } .question { break-inside: avoid; } } .topic-badge { background: var(--secondary); color: white; font-size: 0.7rem; border-radius: 20px; padding: 2px 10px; display: inline-block; margin-bottom: 8px; } </style> </head> <body> <div class="container" id="startContainer"> <div class="header"> <a href="up-tet-exam-paper1-daily-practice-problem-generator.html" class="home-icon" ><i class="fas fa-chalkboard-user"></i></a> <h1><i class="fas fa-child"></i> UP TET * G * 0 -1</h1> <p>, > 2 5 ?  > 8  5  6 ?  M 7 # 5 ? ' ? / >  | & H ( ?   - M / > 8 8 . 8 M / >  ( 0 G  0 (9 ?  & @ . G  )</p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title">=ØÖÜ , > 2 5 ?  > 8  5  6 ?  M 7 > 6 > 8 M $ M 0 </h2> <div class="streak-container"> <div class="streak-counter"><i class="fas fa-fire"></i> 2  > $ > 0 : <span id="streakDays">0</span> & ? ( </div> <div class="date-display" id="currentDate"></div> </div> <div class="progress-container"> <h3><i class="fas fa-chart-line"></i>  *  @ * M 0  $ ? </h3> <div class="progress-bar"><div class="progress-fill" id="progressFill" style="width: 0%"></div></div> <p id="progressText" style="margin-top: 8px;">0% * B 0 M # </p> </div> <div class="btn-group"> <button class="btn btn-primary" id="problemOfDayBtn"><i class="fas fa-calendar-day"></i> & ? (  @ 8 . 8 M / > </button> <button class="btn btn-success" id="customPracticeBtn"><i class="fas fa-pen-ruler"></i>  8 M  .  - M / > 8 </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title"><Ø¯ß 5 ? 7 /  / ( </h2> <div class="btn-group"><button class="btn btn-primary" id="selectCDPBtn"><i class="fas fa-brain"></i> , > 2 5 ?  > 8  5  6 ?  M 7 # 5 ? ' ? / >  </button></div> </div> <div id="topicSelection" class="hidden"> <h2 class="section-title">=ØÚÜ  ' M / > / K   >  / (  0 G  (42  ' M / > / )</h2> <form id="topicForm"> <div class="checkbox-container" id="topicsContainer"></div> </form> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn"><i class="fas fa-arrow-left"></i> * M 0 > 0  - * 0 5 > * 8 </button> <button class="btn btn-success" id="generateAssignmentBtn"><i class="fas fa-cogs"></i>  - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title">¡&  ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center" style="text-align:center; margin-bottom:10px;"> * ( G TET 8 M $ 0  G  ( A 8 > 0  A ( G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1 <br><small>, G 8 ?  / TET  ' > 0 </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2 <br><small>. ' M / . (UP TET . > (  )</small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3 <br><small> ( M ( $ (* 0 M / > * M $ 5 ? 6 M 2 G 7 # > $ M .  )</small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToTopicsBtn">5 ? 7 / K  * 0 5 > * 8 </button> <button class="btn btn-success" id="generateFinalBtn"> - M / > 8 * M 0 6 M (  G ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const topicSelection = document.getElementById('topicSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); // ============ 42  ' M / > / (* 0 ? 6 A & M ' 0 B * 8 G ( ? 0 M & ? 7 M  ) ============ const chaptersList = [ ", > 2 5 ?  > 8 :  0 M % ,  5 6 M /  $ > ,  M 7 G $ M 0  5   5 8 M % >   ", "6 ?  M 7 >  5  . ( K 5 ?  M  > ( ", "6 ?  M 7 > . ( K 5 ?  M  > ( ", ", > 2 5 ?  > 8  G  ' > 0  5  (  K * M 0 - > 5 ? $  0 ( G 5 > 2 G  > 0  ", "5 C & M ' ?  5  5 ?  > 8 ", "5 ?  > 8  @  5 8 M % >   ", "5  6 > ( A  M 0 .  5  5 > $ > 5 0 # ", "8 > . >  @  0 # ", "8 . >  ( ? 0 M . > # . G  2 H   ?  . A & M & G ", "( H $ ?   5  8 > . >  ?  5 ?  > 8 ", "8   M  > ( > $ M .  5 ?  > 8 ", "8  5 G  > $ M .  5 ?  > 8 ", ", A & M ' ?  5 ' > 0 # >  5  8 ? & M ' >  $ ", ", A & M ' ? . > * (  5  * 0 @  M 7 # ", "- > 7 >  0 5 ?  > 0 ", ", > 2  G  & M 0 ? $  5  * M 0  $ ? 6 @ 2 6 ?  M 7 # ", "5 M /  M $ ? $ M 5  5 ' > 0 # >  5  8 ? & M ' >  $ ", "5 M /  M $ ? $ M 5 . > * (  5  * 0 @  M 7 # ", "5 H /  M $ ?  5 ? - ? ( M ( $ > ", " ?  $ ( , $ 0 M  ,  2 M * ( > ", "8 . 8 M / > 8 . > ' > ( ", "8 C  ( > $ M .  $ > ", "6 H  M 7 ?  . > * (  5  . B 2 M / >   ( ", " * 2 , M ' ? * 0 @  M 7 #  5  * M 0 6 M ( * $ M 0 ( ? 0 M . > # ", " ' ?  . :  5 ' > 0 # >  5  * M 0  M 0 ? / > ", " ' ?  . : ( ? / .  5  8 ? & M ' >  $ ", "6 ?  M 7 #  5  6 ?  M 7 # 5 ? ' >   ", "8 . > 5 G 6 @ 6 ?  M 7 > ", "5 ? 6 ? 7 M   5 6 M /  $ > 5 > 2 G , > 2  ", ", > 2  / ,  M  G  H 8 G 8 K  $ G  5  8 @  $ G 9 H  ?", " ' ?  .  @ 5 H  2 M * ?   5 ' > 0 # >   ", "6 ?  M 7 # :  0 M % , & M & G 6 M / , 8 B $ M 0  5  8 ? & M ' > ( M $ ", "6 ?  M 7 #  @ * M 0 5 ? ' ? / >   5  ( 5 @ ( 5 ? ' >   ", "6 ?  M 7 #  5   ' ?  .  @ . B 2 - B $ * M 0  M 0 ? / >   ", "6 H  M 7 ?  8 . > 5 G 6 ( ", "8 . > 5 G 6 ( : *  0 # , $  ( @   5  5 ? ' ? / >  ", "* 0 > . 0 M 6 . G  8 9 / K  & G ( G 5 > 2 G 5 ? - >  /8  8 M % > ( ", "6 H  M 7 ?  ( ? 0 M & G 6 (  5  * 0 > . 0 M 6 ", "  8 . 8 M / > -8 . > ' > (  0 M $ >  0 5 H  M  > ( ?   ( M 5 G 7   G 0 B * . G  , > 2  ", ", > 2  K  . G  5 H  2 M * ?  8   2 M * ( > ", ", K '  5  8  5 G & ( >   ", " - ? * M 0 G 0 # > (* M 0 G 0 # > )  5   ' ?  . " ]; // ===============  ' M / > / 5 > 0 * M 0 6 M ( 8  0  ( > (8 . C & M ' ! G  > , G 8 ) =============== const questions = {}; // * M 0 $ M / G   ' M / > /  G 2 ?  * M 0 6 M ( (8 M $ 0 1,2,3) - 5 ? 8 M $ C $  5  / B * @  @   @  ( A  B 2 //  ' M / > / 1: , > 2 5 ?  > 8 :  0 M % ,  5 6 M /  $ > ,  M 7 G $ M 0  5   5 8 M % >   questions[", > 2 5 ?  > 8 :  0 M % ,  5 6 M /  $ > ,  M 7 G $ M 0  5   5 8 M % >   "] = { level1: [ { question: ", > 2 5 ?  > 8  >  ' M / / ( . A  M / $   ? 8 8 G 8  ,  ' ? $ 9 H ?", options: [", > 2  K   G 6 > 0 @ 0 ?  , . > ( 8 ?   5  8 > . >  ?  * 0 ? 5 0 M $ ( ", " G 5 2 6 H  M 7 # ?  * M 0 & 0 M 6 ( ", "5 ? & M / > 2 / * M 0 ,  ' ( ", "6 ?  M 7  * M 0 6 ?  M 7 # "], answer: "A" }, { question: ", > 2 M / > 5 8 M % >  @ * M 0 > 0  - ?   5 ' ?  ? 8  / A 8 @ . > . G  . > ( @  > $ @ 9 H ?", options: [" ( M . 8 G 2 5 0 M 7 ", "2-6 5 0 M 7 ", "6-12 5 0 M 7 ", "12-18 5 0 M 7 "], answer: "B" }, { question: ", > 2 5 ?  > 8  G  M 7 G $ M 0  ? $ ( G 9 K $ G 9 H  ?", options: ["$ @ ( (6 > 0 @ 0 ?  , 8   M  > ( > $ M .  , - > 5 > $ M .  )", "& K ", " > 0 ", "* >   "], answer: "A" } ], level2: [ { question: ", > 2 5 ?  > 8  @  5 6 M /  $ >  M / K  9 H ? (UP TET * 0 ? * M 0 G  M 7 M / )", options: [", > 2   @ * M 0  C $ ?  K 8 .   0 * M 0 - > 5 @ 6 ?  M 7 # 9 G $ A ", " - ? - > 5  K   K ( ? /  $ M 0 ? $  0 ( G 9 G $ A ", "* 0 @  M 7 > . G    M  G    2 > ( G 9 G $ A ", "8 M  B 2  ( A 6 > 8 ( 9 G $ A "], answer: "A" }, { question: "5 ?  > 8  @  ? 6 K 0 > 5 8 M % >  @ * M 0 . A  5 ? 6 G 7 $ >  M / > 9 H ?", options: ["* 9  > ( 8     5  $ @ 5 M 0 * 0 ? 5 0 M $ ( ", "' @ . @ 5 C & M ' ? ", "- > 7 > 5 ?  > 8 ", ". B 0 M $  ?  $ ( "], answer: "A" } ], level3: [ { question: ", > 2 5 ?  > 8  G 8 ? & M ' >  $ K  . G  8 G  L ( 8 > 8 ? & M ' >  $ 5  6 > ( A  M 0 .  0 5 > $ > 5 0 #  G 8  / K   K 0 G  >   ? $  0 $ > 9 H ?", options: ["  $   M 0 ? / > 8 ? & M ' >  $ ", "* 0 ? *  M 5 $ > 8 ? & M ' >  $ ", "5 M / 5 9 > 0 5 > & ", "8   M  > ( > $ M .  8 ? & M ' >  $ "], answer: "A" } ] }; //  ' M / > / 2: 6 ?  M 7 >  5  . ( K 5 ?  M  > ( questions["6 ?  M 7 >  5  . ( K 5 ?  M  > ( "] = { level1: [ { question: "6 ?  M 7 > . ( K 5 ?  M  > (  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["6 ?  M 7 # - ' ?  . * M 0  M 0 ? / >  K 8 .  ( >  5  8 A ' > 0 ( > ", " > $ M 0 K   > . B 2 M / >   (  0 ( > ", "6 ?  M 7  K   > * M 0 6 ?  M 7 # & G ( > ", "* > M /  M 0 . , ( > ( > "], answer: "A" }, { question: ". ( K 5 ?  M  > (  @  ? 8 6 >  >  > 8  ,  ' 6 ?  M 7 # 8 G 8 @ ' > 9 H ?", options: ["6 H  M 7 ?  . ( K 5 ?  M  > ( ", " ?  ? $ M 8 > . ( K 5 ?  M  > ( ", " * 0 > ' . ( K 5 ?  M  > ( ", " & M / K  ?  . ( K 5 ?  M  > ( "], answer: "A" } ], level2: [ { question: "6 ?  M 7 > . ( K 5 ?  M  > (  G  (   L ( . > ( G  > $ G 9 H  ?", options: [" .  2 . % > 0 M ( ! >   ", " I ( ! @ 5 @ ", "8 ?  .  ! + M 0 > / ! ", " @ ( * ? / >  G "], answer: "A" } ], level3: [ { question: "6 ?  M 7 > . ( K 5 ?  M  > ( . G   G 8 8 M  ! @ 5 ? ' ?  ? 8 & M & G 6 M / 8 G * M 0 / K   @  > $ @ 9 H ?", options: ["5 M /  M $ ?  $   $ 0  9 0 >  8 G  > ( ( G ", "8 >   M / ?  @ /    ! < G  A  > ( G ", "* M 0 / K  6 > 2 >  ( A 8  ' > ( ", "8 . B 9 5 M / 5 9 > 0 . > * ( "], answer: "A" } ] }; //  ' M / > / 3: 6 ?  M 7 > . ( K 5 ?  M  > ( ( $ ? 0 ?  M $ ) questions["6 ?  M 7 > . ( K 5 ?  M  > ( "] = { level1: [ { question: " ' ?  .  G 8 ? & M ' >  $ '* M 0 / > 8  5  $ M 0 A  ? '  G * M 0 8 M $ K $ >  L ( 9 H  ?", options: ["% > 0 M ( ! >   ", "* ? / >  G ", " K 9 2 , 0 M  ", ",  ! A 0 > "], answer: "A" } ], level2: [ { question: "* M 0 $ ? , ?  , ? $  ?  $ ( (reflective thinking)  K  ? 8 ( G * M 0 . A  $ > & @ ?", options: ["! @ 5 @ ", "8 M  ? ( 0 ", "* > 5 2 5 ", ". H 8 M 2 K "], answer: "A" } ], level3: [ { question: "6 ?  M 7 > . ( K 5 ?  M  > ( . G  ( ? 0 M . ? $ ? 5 > & (Constructivism)  G * M 0 5 0 M $   L ( 9 H  ?", options: [" @ ( * ? / >  G  0 5 ?  K $ M 8 M  @ ", ", @ . + . 8 M  ? ( 0 ", " I ( 5 >  8 ( ", " 5 > ( * > 5 2 5 "], answer: "A" } ] }; // 8   M  > ( > $ M .  5 ?  > 8  ' M / > / 11 questions["8   M  > ( > $ M .  5 ?  > 8 "] = { level1: [ { question: "* ? / >  G  G 8   M  > ( > $ M .  5 ?  > 8 8 ? & M ' >  $ . G  '* B 0 M 5 -8   M 0 ? / > $ M .   5 8 M % > '  @  / A  M / > 9 H ?", options: ["2-7 5 0 M 7 ", "0-2 5 0 M 7 ", "7-11 5 0 M 7 ", "11+ 5 0 M 7 "], answer: "A" } ], level2: [ { question: "5 ?  K $ M 8 M  @  > '8 . @ * 8 M % 5 ?  > 8  M 7 G $ M 0 ' (ZPD)  M / > 9 H ?", options: ["8 @  ( G  @ 5 9 8 @ . >  9 >  . > 0 M  & 0 M 6 (  5 6 M /  ", "* 0 ? *  M 5 $ >  @ 8 @ . > ", "* 0 @  M 7 >    K   @ 8 @ . > ", "* > M /  M 0 .  @ 8 @ . > "], answer: "A" } ], level3: [ { question: "* ? / >  G  G  ( A 8 > 0 '8  0  M 7 #  @  5 ' > 0 # > '  ? 8  5 8 M % > . G  5 ?  8 ? $ 9 K $ @ 9 H ?", options: [". B 0 M $ -8   M 0 ? / > $ M .   5 8 M % > ", "8  5 G & @ - > .  ", "* B 0 M 5 -8   M 0 ? / > $ M .  ", " *  > 0 ?  8   M 0 ? / > $ M .  "], answer: "A" } ] }; //  - ? * M 0 G 0 # >  ' M / > / 42 questions[" - ? * M 0 G 0 # > (* M 0 G 0 # > )  5   ' ?  . "] = { level1: [ { question: ". > 8 M 2 K  G  5 6 M /  $ > * ? 0 > . ? ! . G  8 , 8 G , A ( ? / > & @  5 6 M /  $ >  M / > 9 H ?", options: ["6 > 0 @ 0 ?   5 6 M /  $ >   ", "8 A 0  M 7 > ", "8 . M . > ( ", " $ M . , K ' "], answer: "A" } ], level2: [ { question: "  $ 0 ?  * M 0 G 0 # >  > & > 9 0 #  L ( 8 > 9 H ?", options: ["8 M 5 /   @  ?  M  > 8 >  5  0 A  ? ", "* A 0 8 M  > 0 * > ( > ", "&  ! 8 G ,  ( > ", "* M 0 $ ? / K  ? $ >  @ $ ( > "], answer: "A" } ], level3: [ { question: "5 @ .   . 5 B .  > * M 0 $ M / > 6 > 8 ? & M ' >  $  ? 8 8 G 8  ,  ' ? $ 9 H ?", options: [" > 0 M / 8 G  A ! < @  * G  M 7 >    5  * M 0 G 0 # > ", ", A & M ' ? . > * ( ", "5 M /  M $ ? $ M 5 ", " ' ?  . 8 M % > ( >  $ 0 # "], answer: "A" } ] }; // 8 . > 5 G 6 @ 6 ?  M 7 >  ' M / > / 28 questions["8 . > 5 G 6 @ 6 ?  M 7 > "] = { level1: [ { question: "8 . > 5 G 6 @ 6 ?  M 7 >  > . B 2 8 ? & M ' >  $  M / > 9 H ?", options: ["8 - @ ,  M  K   K 8 > . > ( M /   M 7 > . G  6 ?  M 7 > ", "5 ? 6 G 7 5 ? & M / > 2 / , ( > ( > ", " G 5 2 & ? 5 M / >   ,  M  K   K 6 ?  M 7 > ", "* M 0 $ ? - > 6 > 2 @ ,  M  K   K  2   0 ( > "], answer: "A" } ], level2: [ { question: "8 . > 5 G 6 @   M 7 > . G  6 ?  M 7   K 8 , 8 G * 9 2 G  M / >  0 ( >  > 9 ?  ?", options: ["5 H /  M $ ?   5 6 M /  $ >    K * 9  > ( ( > ", "8 . > ( * > / K  ( > , ( > ( > ", "$ M 5 0 ? $ 6 ?  M 7 # ", "8  M $  ( A 6 > 8 ( "], answer: "A" } ], level3: [ { question: "RPWD  ' ? ( ? / . 2016  G  ( A 8 > 0 '5 ? 6 ? 7 M   ' ?  .   M 7 . $ > '  ? 8 G . > ( >  > $ > 9 H ?", options: ["! ? 8 M 2 G  M 8 ? / > , ! ? 8 M  M 0 > + ? / > , ! ? 8 M  G 2  A 2 ? / > ", ", L & M ' ?    M 7 . $ > ", "& C 7 M  ? , > ' ? $ > ", "6 M 0 5 # , > ' ? $ > "], answer: "A" } ] }; // , A & M ' ?  5 ' > 0 # > ( ' M / > / 13) questions[", A & M ' ?  5 ' > 0 # >  5  8 ? & M ' >  $ "] = { level1: [ { question: " > 0 M ! ( 0  G , 9 A -, A & M ' ? 8 ? & M ' >  $ . G   ? $ ( @ , A & M ' ? / >  9 H  ?", options: ["8", "7", "9", "6"], answer: "A" } ], level2: [ { question: "& M 0 5 , A & M ' ? (Fluid intelligence)  ? 8 8 G 8  ,  ' ? $ 9 H ?", options: ["8 . 8 M / > 8 . > ' > (  M 7 . $ >  5  (   @  G  8 @  ( > ", "8   ? $  M  > ( ", "- > 7 >  / K  M / $ > ", "8 M % > ( ?   M 7 . $ > "], answer: "A" } ], level3: [ { question: "8 M  0 M ( , 0 M   > $ M 0 ? $  $ M 0 @ / , A & M ' ? 8 ? & M ' >  $  G $ @ (     M / > 9 H  ?", options: ["5 ? 6 M 2 G 7 # > $ M .  , 8 C  ( > $ M .  , 5 M / > 5 9 > 0 ?  ", "- > 7 >  , $ > 0 M  ?  , 8 M % > ( ?  ", "8   @ $ > $ M .  ,   $ 0 M 5 H /  M $ ?  , * M 0  C $ ? 5 > & @ ", " . B 0 M $ , / >  $ M 0 ?  , 8 > . >  ?  "], answer: "A" } ] }; //  ( M / 8 - @  ' M / > / K   G 2 ?  ! ? + < I 2 M  0 B * 8 G 8 M . > 0 M  * M 0 6 M ( (! > / ( > . ?  , H   * ) chaptersList.forEach(chap => { if (!questions[chap]) { questions[chap] = { level1: [ { question: `${chap}  G 8  & 0 M - . G  , > 2 5 ?  > 8  > . B 2 & M & G 6 M /  M / > 9 H ?`, options: ["8 .  M 0 5 ?  > 8  K , " < > 5 > & G ( > ", " G 5 2 6 H  M 7 # ?  * 2 , M ' ? ", " ( A 6 > 8 ( 8 M % > * ? $  0 ( > ", "* M 0 $ ? / K  ? $ > $ H / > 0  0 ( > "], answer: "A" }, { question: `UP TET  G  ( A 8 > 0 ${chap} . G   L ( 8 > * 9 2 B 8 0 M 5 > ' ?  . 9 $ M 5 * B 0 M # 9 H ?`, options: [", > 2  G ( M & M 0 ? $ 6 ?  M 7 # ", "0  ( G  @ 5 ? ' ? ", " K 0 * 0 @  M 7 # ", "* > M /  M 0 . $ M 5 0 # "], answer: "A" } ], level2: [ { question: `${chap}  K * M 0 - > 5 @ , ( > ( G  G 2 ?  6 ?  M 7   K  ? 8 * 0 ' M / > ( & G ( >  > 9 ?  ?`, options: ["5 M /  M $ ?  $ - ? ( M ( $ >   ", "8 - @  K 8 . > ( 0  ( > ", ", > 0 -, > 0 * 0 @  M 7 > 2 G ( > ", " C 9  > 0 M / , " < > ( > "], answer: "A" } ], level3: [ { question: `${chap} . G  5 ? 6 M 2 G 7 # > $ M .  & C 7 M  ?  K #  * ( > ( G 8 G  M / > 2 > - 9 H ?`, options: [" 9 ( 8 .   5  8 . 8 M / > 8 . > ' > ( ", "8 M . 0 # 6  M $ ?  > , " < ( > ", "2 ?  > 5  . G  8 A ' > 0 ", " $ ? , " < > ( > "], answer: "A" } ] }; } }); let selectedTopics = []; let selectedLevel = null; let userProgress = { streak: 0, lastPracticeDate: null, totalProblemsSolved: 0, topicsCompleted: 0, totalTopics: chaptersList.length }; function loadUserProgress() { const saved = localStorage.getItem('upTetCDPProgress'); if (saved) userProgress = JSON.parse(saved); const today = new Date().toDateString(); if (userProgress.lastPracticeDate !== today) { const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); if (userProgress.lastPracticeDate === yesterday.toDateString()) userProgress.streak++; else userProgress.streak = 1; userProgress.lastPracticeDate = today; saveUserProgress(); } updateUI(); } function saveUserProgress() { localStorage.setItem('upTetCDPProgress', JSON.stringify(userProgress)); } function updateUI() { document.getElementById('streakDays').textContent = userProgress.streak; const today = new Date(); document.getElementById('currentDate').textContent = today.toLocaleDateString('hi-IN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const percent = Math.min(100, Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)); document.getElementById('progressFill').style.width = `${percent}%`; document.getElementById('progressText').textContent = `${percent}% * B 0 M # (${userProgress.topicsCompleted}/${userProgress.totalTopics}  ' M / > / )`; } function getRandomQuestions(topicsArray, level, count) { let allQs = []; topicsArray.forEach(topic => { const topicData = questions[topic]; if (topicData && topicData[`level${level}`]) { allQs = allQs.concat(topicData[`level${level}`]); } }); if(allQs.length === 0) return [{ question: ", > 2 5 ?  > 8  >  ' > 0 - B $ 8 ? & M ' >  $  M / > 9 H ?", options: ["5 C & M ' ?  5  * 0 ? *  M 5 $ > ", " G 5 2  ( A 5 >  6 ?  $ > ", " G 5 2 5 > $ > 5 0 # ", "6 ?  M 7   > * M 0 - > 5 "], answer: "A" }]; allQs = allQs.sort(() => Math.random() - 0.5); return allQs.slice(0, count); } function renderTopics() { const container = document.getElementById('topicsContainer'); container.innerHTML = `<div class="checkbox-item" style="background:#e9f5ec;"><input type="checkbox" id="fullSyllabus" value="full"><label for="fullSyllabus"><strong>' 8  * B 0 M # * > M /  M 0 . (8 - @ 42  ' M / > / )</strong></label></div>`; chaptersList.forEach(topic => { const id = `topic_${topic.replace(/[\s,?]/g, '_').substring(0, 30)}`; container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="${id}" name="topic" value="${topic}"><label for="${id}">${topic}</label></div>`; }); document.getElementById('fullSyllabus')?.addEventListener('change', (e) => { const allCheckboxes = document.querySelectorAll('input[name="topic"]'); allCheckboxes.forEach(cb => cb.disabled = e.target.checked); if(e.target.checked) allCheckboxes.forEach(cb => cb.checked = false); }); } // DOM Elements & Event listeners document.getElementById('customPracticeBtn').addEventListener('click', () => { document.getElementById('startScreen').classList.add('hidden'); document.getElementById('subjectSelection').classList.remove('hidden'); }); document.getElementById('selectCDPBtn').addEventListener('click', () => { renderTopics(); document.getElementById('subjectSelection').classList.add('hidden'); document.getElementById('topicSelection').classList.remove('hidden'); }); document.getElementById('backToStartBtn').addEventListener('click', () => { document.getElementById('topicSelection').classList.add('hidden'); startContainer.classList.remove('hidden'); document.getElementById('startScreen').classList.remove('hidden'); updateUI(); }); document.getElementById('generateAssignmentBtn').addEventListener('click', () => { const full = document.getElementById('fullSyllabus')?.checked; if (full) selectedTopics = [...chaptersList]; else selectedTopics = Array.from(document.querySelectorAll('input[name="topic"]:checked')).map(cb => cb.value); if (selectedTopics.length === 0) { alert(" C * / >  . 8 G  .    ' M / > /  A ( G  !"); return; } document.getElementById('topicSelection').classList.add('hidden'); document.getElementById('levelSelection').classList.remove('hidden'); }); document.getElementById('backToTopicsBtn').addEventListener('click', () => { document.getElementById('levelSelection').classList.add('hidden'); document.getElementById('topicSelection').classList.remove('hidden'); }); document.getElementById('level1Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level1Btn').classList.add('selected'); selectedLevel = 1; }); document.getElementById('level2Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level2Btn').classList.add('selected'); selectedLevel = 2; }); document.getElementById('level3Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level3Btn').classList.add('selected'); selectedLevel = 3; }); document.getElementById('generateFinalBtn').addEventListener('click', () => { if (!selectedLevel) { alert(" C * / >  ? ( >  8 M $ 0  A ( G  !"); return; } generateAssignment(); }); document.getElementById('homeIconBtn').addEventListener('click', (e) => { e.preventDefault(); backToStart(); }); document.getElementById('problemOfDayBtn').addEventListener('click', generateProblemOfDay); function generateAssignment() { startContainer.classList.add('hidden'); document.getElementById('levelSelection').classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const topicNames = selectedTopics.length > 5 ? selectedTopics.slice(0,5).join(", ")+" ..." : selectedTopics.join(", "); const mcqs = getRandomQuestions(selectedTopics, selectedLevel, 10); let paperContent = `<div class="header"><h2>=ØØÜ UP TET * G * 0 -1 (, > 2 5 ?  > 8  5  6 ?  M 7 # 5 ? ' ? / >  )</h2><h3>=ØÌÜ ${selectedTopics.length === chaptersList.length ? "8 . M * B 0 M # * > M /  M 0 . (42  ' M / > / )" : topicNames.substring(0, 85)}</h3><p>¡&  ? ( >  8 M $ 0 ${selectedLevel}  ${selectedLevel === 1 ? ", G 8 ?  " : selectedLevel === 2 ? ". ' M / . (UP TET . > (  )" : " ( M ( $ "}</p></div><div class="content-area"><div class="instructions"><p><strong>( ? 0 M & G 6 (CDP  - M / > 8 ):</strong></p><ol><li>10 , 9 A 5 ?  2 M * @ * M 0 6 M ( , * M 0 $ M / G  , > 2 5 ?  > 8 /6 ?  M 7 # 6 > 8 M $ M 0 * 0  ' > 0 ? $ d </li><li>15 . ? (  . G  9 2  0 G  , $ M $ 0  A   @ 8 G . ? 2 >   d </li></ol></div><div class="question-section"><div style="font-size:1.4rem; margin-bottom:20px; font-weight:bold;">'þ  - M / > 8 * M 0 6 M ( </div>`; let qNum = 1; mcqs.forEach(mcq => { paperContent += `<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++; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title">=ØÝ $ M $ 0  A   @ </h3><table class="answer-table"><thead><tr><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th><th>* M 0 6 M ( 8  .</th><th> $ M $ 0 </th></tr></thead><tbody>`; for (let i = 0; i < mcqs.length; i += 2) { paperContent += `<tr><td>${i+1}</td><td><strong>${mcqs[i].answer}</strong></td>`; if (i+1 < mcqs.length) paperContent += `<td>${i+2}</td><td><strong>${mcqs[i+1].answer}</strong></td>`; else paperContent += `<td></td><td></td>`; paperContent += `</tr>`; } paperContent += `</tbody></table></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check-circle"></i> * B 0 M #  ? 9 M ( ? $  0 G  </button><button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> * M 0 ?   / PDF</button><button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-undo-alt"></i> ( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = paperContent; document.getElementById('markCompleteBtn')?.addEventListener('click', markPracticeComplete); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function markPracticeComplete() { userProgress.totalProblemsSolved += 10; let newlyCompleted = 0; selectedTopics.forEach(t => { if (!userProgress[`comp_${t}`]) { userProgress[`comp_${t}`] = true; newlyCompleted++; } }); userProgress.topicsCompleted = Math.min(userProgress.totalTopics, userProgress.topicsCompleted + newlyCompleted); saveUserProgress(); updateUI(); alert("<Ø‰ß 6 > ( & > 0 !  - M / > 8 * B 0 M # 9 A  d * M 0  $ ? 8 9 G  @   d "); backToStart(); } function generateProblemOfDay() { const randomTopic = chaptersList[Math.floor(Math.random() * chaptersList.length)]; const randomLevel = Math.floor(Math.random() * 3) + 1; selectedTopics = [randomTopic]; selectedLevel = randomLevel; startContainer.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); const mcq = getRandomQuestions(selectedTopics, selectedLevel, 1)[0]; let content = `<div class="header"><h2><Øß & ? (  @  A ( L $ @ (CDP)</h2><h3><Ø¯ß ${randomTopic}</h3><p>8 M $ 0 ${randomLevel}</p></div><div class="content-area"><div class="problem-of-day"><h3><i class="fas fa-star-of-life"></i>    >  - M / > 8 * M 0 6 M ( </h3><p> * ( @ learning streak , ( >  0  G  !</p></div><div class="daily-summary"><div class="summary-card"><h4>=Ø%Ý 2  > $ > 0 </h4><p>${userProgress.streak} & ? ( </p></div><div class="summary-card"><h4>' 9 2 * M 0 6 M ( </h4><p>${userProgress.totalProblemsSolved}</p></div><div class="summary-card"><h4>=ØÚÜ * M 0  $ ? </h4><p>${Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)}%</p></div></div><div class="question"><div class="question-text">${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><div class="answer-sheet"><h3>=ØÌÜ 8 . > ' > ( </h3><p><strong>8 9 @ $ M $ 0 :</strong> ${mcq.answer}</p><p><strong>5 M / >  M / > :</strong> UP TET , > 2 5 ?  > 8  5 ' > 0 # >  G  ( A 8 > 0 </p></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteDailyBtn"><i class="fas fa-check"></i> * B 0 M #  ? / > </button><button class="btn btn-primary" id="printBtn">* M 0 ?    0 G  </button><button class="btn btn-danger" id="newAssignmentBtn">( / >  - M / > 8 </button></div></div>`; generatedPaperContainer.innerHTML = content; document.getElementById('markCompleteDailyBtn')?.addEventListener('click', () => { userProgress.totalProblemsSolved++; saveUserProgress(); updateUI(); alert(", ' >  9 K ! & ? (  @ 8 . 8 M / > 9 2 9 A  d "); backToStart(); }); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function backToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); document.getElementById('topicSelection').classList.add('hidden'); document.getElementById('levelSelection').classList.add('hidden'); document.getElementById('subjectSelection').classList.add('hidden'); document.getElementById('startScreen').classList.remove('hidden'); updateUI(); } document.addEventListener('DOMContentLoaded', () => { loadUserProgress(); }); </script> </body> </html>