NEET Mock Test - AK Vision Zone
Rotate Your Device
Please switch to landscape mode to start or continue the exam. The CBT interface requires a wider screen.
AK
AK VISION ZONE
NEET Computer Based Test Portal
Connecting to Server...
AK VISION ZONE
Excellence in Assessment
MOCK TEST MODE
Candidate Name:
Exam Name: NEET MOCK TEST
Subject Name: BIOLOGY
Remaining Time: 00:00:00
0 Not Visited
0 Not Answered
0
Answered & Marked
(Considered for evaluation)
Total Qs: 0
Review Incorrect Answers
Rotate Your Device
Please switch to landscape mode to start or continue the exam. The CBT interface requires a wider screen.
AK
AK VISION ZONE
NEET Computer Based Test Portal
Connecting to Server...
AK VISION ZONE
Excellence in Assessment
MOCK TEST MODE
Candidate Name:
Exam Name: NEET MOCK TEST
Subject Name: BIOLOGY
Remaining Time: 00:00:00
0 Not Visited
0 Not Answered
0
Answered & Marked
(Considered for evaluation)
Total Qs: 0
Review Incorrect Answers
";
let examData = [];
let currentQ = 0;
let qStatus = [];
let selectedAnswers = [];
let examTimer;
let totalSeconds = 0; // Will be set dynamically based on total questions
let detailedStats = {
'OVERALL': { total:0, correct:0, incorrect:0, unattempted:0, marks:0, wrongQs: [] },
'BIOLOGY': { total:0, correct:0, incorrect:0, unattempted:0, marks:0, wrongQs: [] },
'PHYSICS': { total:0, correct:0, incorrect:0, unattempted:0, marks:0, wrongQs: [] },
'CHEMISTRY': { total:0, correct:0, incorrect:0, unattempted:0, marks:0, wrongQs: [] }
};
window.onload = function() {
if(GOOGLE_SHEET_CSV_URL.includes("YOUR_GOOGLE_SHEET") || GOOGLE_SHEET_CSV_URL === "") {
loadDummyData();
} else {
Papa.parse(GOOGLE_SHEET_CSV_URL, {
download: true, header: true, skipEmptyLines: true,
complete: function(results) {
if(results.data && results.data.length > 0) {
processSheetData(results.data);
} else {
loadDummyData();
}
},
error: function(err) { alert("Data fetch error. Loading offline mock paper."); loadDummyData(); }
});
}
};
function processSheetData(data) {
examData = [];
data.forEach((row, index) => {
let subj = row['Subject'] || 'BIOLOGY';
let q = row['Question'] || '';
let o1 = row['Option 1'] || '';
let o2 = row['Option 2'] || '';
let o3 = row['Option 3'] || '';
let o4 = row['Option 4'] || '';
let ans = row['Correct Option'] || '1';
examData.push([(index + 1).toString().padStart(2, '0'), subj.toUpperCase().trim(), q, o1, o2, o3, o4, ans.toString().trim()]);
});
finalizeLoading();
}
function loadDummyData() {
examData = [
["01", "PHYSICS", "The de-Broglie wavelength of a neutron in thermal equilibrium with heavy water at a temperature T (Kelvin) and mass m, is:", "λ / √(mkT)", "λ / √(3mkT)", "2λ / √(3mkT)", "2λ / √(mkT)", "3"],
["02", "BIOLOGY", "Which of the following is the most abundant protein in the biosphere?", "Collagen", "RuBisCO", "Trypsin", "Insulin", "2"],
["03", "PHYSICS", "A car accelerates uniformly from rest to a speed of 10 m/s in 5s. Find acceleration.", "2 m/s²", "5 m/s²", "10 m/s²", "50 m/s²", "1"],
["04", "CHEMISTRY", "What is the pH of a neutral solution at 25°C?", "0", "7", "14", "1", "2"]
];
finalizeLoading();
}
function finalizeLoading() {
qStatus = new Array(examData.length).fill(0);
selectedAnswers = new Array(examData.length).fill(null);
// DYNAMIC TIMER SETUP: 1 Question = 1 Minute (60 seconds)
totalSeconds = examData.length > 0 ? (examData.length * 60) : 300;
let startBtn = document.getElementById('startBtn');
startBtn.innerText = "LOGIN & START EXAM";
startBtn.disabled = false;
document.getElementById('loadingText').style.display = 'none';
}
function updateTimerDisplay() {
let h = Math.floor(totalSeconds / 3600);
let m = Math.floor((totalSeconds % 3600) / 60);
let s = totalSeconds % 60;
document.getElementById('time-left').innerText =
(h < 10 ? "0"+h : h) + ":" + (m < 10 ? "0"+m : m) + ":" + (s < 10 ? "0"+s : s);
}
function initiateExam() {
let name = document.getElementById('studentName').value.trim();
if(name === "") { alert("Please enter Candidate Name!"); return; }
document.getElementById('display-name').innerText = name.toUpperCase();
document.getElementById('login-page').style.display = 'none';
document.getElementById('cbt-main').style.display = 'flex';
updateTimerDisplay(); // Display accurate time before timer ticks
startTimer();
loadQuestion(0);
}
function startTimer() {
examTimer = setInterval(function() {
if(totalSeconds <= 0) {
clearInterval(examTimer);
autoSubmit();
return;
}
totalSeconds--;
updateTimerDisplay();
}, 1000);
}
function formatContent(content) {
if (!content) return "";
let text = String(content);
const urlRegex = /(https?:\/\/[^\s]+)/g;
text = text.replace(urlRegex, function(url) {
if(url.match(/\.(jpeg|jpg|gif|png)$/i) || url.includes("i.ibb.co") || url.includes("drive.google.com/uc") || url.includes("ibb.co")) {
return `

`;
}
return url;
});
text = text.replace(/\n/g, '
');
return text;
}
function loadQuestion(index) {
currentQ = index;
const q = examData[index];
document.getElementById('q-no').innerText = "Question " + parseInt(q[0]) + ":";
document.getElementById('top-subject').innerText = q[1];
document.getElementById('palette-subject-header').innerText = q[1];
document.getElementById('q-text').innerHTML = formatContent(q[2]);
document.getElementById('q-options-text').innerHTML = `
(A) ${formatContent(q[3])}
(B) ${formatContent(q[4])}
(C) ${formatContent(q[5])}
(D) ${formatContent(q[6])}
`;
const radios = document.getElementsByName('opt');
radios.forEach(radio => radio.checked = false);
if(selectedAnswers[index] !== null) {
document.querySelector(`input[name="opt"][value="${selectedAnswers[index]}"]`).checked = true;
}
if (qStatus[index] === 0) qStatus[index] = 1;
renderPalette();
updateLegendCounts();
}
function renderPalette() {
let grid = document.getElementById('palette-grid');
grid.innerHTML = "";
for(let i=0; i
${examData[i][0]}`;
}
}
function updateLegendCounts() {
const counts = [0, 0, 0, 0, 0];
qStatus.forEach(status => counts[status]++);
const legendItems = document.querySelectorAll('.status-legend .shape');
for(let i=0; i<5; i++) legendItems[i].innerText = counts[i];
}
function saveCurrentSelection() {
const checkedRadio = document.querySelector('input[name="opt"]:checked');
let selected = checkedRadio ? checkedRadio.value : null;
selectedAnswers[currentQ] = selected;
return selected;
}
function jumpTo(index) { saveCurrentSelection(); loadQuestion(index); }
function saveAndNext() { let s = saveCurrentSelection(); qStatus[currentQ] = s ? 2 : 1; goToNext(); }
function clearResponse() { selectedAnswers[currentQ] = null; document.getElementsByName('opt').forEach(r => r.checked = false); qStatus[currentQ] = 1; renderPalette(); updateLegendCounts(); }
function saveAndMark() { let s = saveCurrentSelection(); qStatus[currentQ] = s ? 4 : 3; goToNext(); }
function markAndNext() { saveCurrentSelection(); qStatus[currentQ] = 3; goToNext(); }
function nextQuestion() { saveCurrentSelection(); goToNext(); }
function prevQuestion() { saveCurrentSelection(); if(currentQ > 0) loadQuestion(currentQ - 1); }
function goToNext() { if(currentQ < examData.length - 1) loadQuestion(currentQ + 1); else { renderPalette(); updateLegendCounts(); } }
function submitExamConfirmation() {
if(confirm("Are you sure you want to submit the exam? You cannot change answers after submission.")) autoSubmit();
}
function autoSubmit() {
clearInterval(examTimer);
saveCurrentSelection();
document.getElementById('cbt-main').style.display = 'none';
document.getElementById('result-page').style.display = 'block';
calculateResult();
}
function getOptionText(qIndex, optVal) {
if(!optVal) return "Not Attempted";
let prefix = ["(A)", "(B)", "(C)", "(D)"][parseInt(optVal)-1];
return `${prefix} ${formatContent(examData[qIndex][2 + parseInt(optVal)])}`;
}
function calculateResult() {
for (let key in detailedStats) {
detailedStats[key] = { total:0, correct:0, incorrect:0, unattempted:0, marks:0, wrongQs: [] };
}
for(let i=0; iNo questions found for ${filter}`;
document.getElementById('incorrect-list').innerHTML = "";
return;
}
document.getElementById('dynamic-stats').innerHTML = `
Correct (+4)
${stats.correct}
Incorrect (-1)
${stats.incorrect}
Unattempted (0)
${stats.unattempted}
Marks in ${filter}
${stats.marks}
`;
let errorHtml = "";
if(stats.wrongQs.length === 0) {
errorHtml = `Perfect! No incorrect answers in ${filter}.
`;
} else {
stats.wrongQs.forEach(wq => {
errorHtml += `
Q${wq.qNum}. ${formatContent(wq.qText)}
Your Answer: ${wq.uAnsText}
Correct Answer: ${wq.cAnsText}
`;
});
}
document.getElementById('incorrect-list').innerHTML = errorHtml;
}
let isListVisible = false;
function toggleIncorrectList() {
isListVisible = !isListVisible;
document.getElementById('incorrect-list').style.display = isListVisible ? 'block' : 'none';
document.getElementById('toggleBtn').innerText = isListVisible ? 'Hide Details' : 'Show Details';
}