
function QuestionPaperPreview(jsonData){
    // The provided JSON data
    // console.log(jsonData)
    
// start Remove <p> tag 
    var jsonDat = jsonData;
    // Remove <p> tags only with <br> tags
    function removeEmptyPTags(htmlString) {
        var tempdiv = document.createElement('div');
        tempdiv.innerHTML = htmlString;
        var paragraphs = tempdiv.querySelectorAll('p');
    
        paragraphs.forEach(function(paragraph) {
            if (paragraph.innerHTML.trim() === '<br>') {
                paragraph.remove();
            }
        });
    
        return tempdiv.innerHTML;
    }
    // Recursive function to modify HTML content in an object
    function modifyHTMLProperties(obj) {
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                if (typeof obj[key] === 'string') {
                    // If the property is a string, modify it
                    obj[key] = removeEmptyPTags(obj[key]);
                } else if (typeof obj[key] === 'object') {
                    // If the property is an object, recursively modify its properties
                    modifyHTMLProperties(obj[key]);
                }
            }
        }
    }
    modifyHTMLProperties(jsonDat);
    
//end Remove <p> tag
    
    
    function convertToLatex(text, mathstatus) {
        // Parse mathstatus into a boolean
        const mathStatusBoolean = JSON.parse(mathstatus); 
        // Check if the text contains <p> tags
        if (!/<p>|<\/p>/i.test(text)) {
            if (mathStatusBoolean) {
                // Use MathJax to convert the text to LaTeX
                const cov = MathJax.tex2chtml(text).outerHTML;
                return cov;
            } else {
                // Return the text as-is
                return text;
            }
        } else {
            // Return the text as-is
            return text;
        }
    }
    // Initialize the formatted question paper string
    let questionPaper = "";
    
    
   
    
    
    // Function to recursively convert JSON to a formatted question paper
    function convertJSONToQuestionPaper(data, depth = 0, sectionIndex , questionIndex = 1) {
        const sections = data.sections;
        const questionPaperTitle = data.question_paper_title;
        const questionPaperDescription = data.question_paper_description;
    
           var title = removeHtmlTags(questionPaperTitle)
    
        // Wrap the heading elements in <div> elements with CSS for centering
        questionPaper += `<div style="text-align: center; font-weight: bolder; "><h1>${title}</h1></div>`;
        questionPaper += `<div style="text-align: center;"><h5>${questionPaperDescription}</h5></div>`;
        // questionPaper += "<br><br><br>"; // Add a newline for separation
    
        // Process each section
        sections.forEach((section, sectionIndex) => {
            depth2=0
            description_align =28;
            // console.log(sectionIndex);
           

            const sectionTitle = section.section_title;
            const modifiedSectionTitle = sectionTitle.replaceAll('<p>', '<p id="sectionTitle">');//add the id for Section Title
            // console.log(section.section_attempt_any);
            if (section.section_attempt_any) {
                var sectionAttempt = `<p id="sectionAttempt">Attempt Any : ${section.section_attempt_any}</p>`;

            } else {
                var sectionAttempt = `<p id="sectionAttempt">  </p>`;

            }
            if (section.section_marks == 0 || section.section_marks == '') {
                var sectionMark = `<p id="sectionMark">  </p>`;
            } else {
                var sectionMark = `<p id="sectionMark">Marks: ${section.section_marks}</p>`;

            }
            const sectionDescriptio = section.section_description;
            const sectionDescription = sectionDescriptio.replaceAll('<p>', '<p class="section-Description">');
            // const questions = section.questions;
            // Add appropriate indentation for nested sections
            const indentation = "  ".repeat(depth);
            // if (section.section_attempt_any === '') {
            //     sectionAttempt = sectionAttempt.replace('<p id="sectionAttempt">', '<p id="sectionAttempt" hidden>')
            // } 

            // if (section.section_marks === '') {
            //     sectionMark = sectionMark.replace('<p id="sectionMark">', '<p id="sectionMark" hidden>')
            // }
            questionPaper += `${indentation}<hr id="horizontal">${modifiedSectionTitle}${sectionMark}${sectionAttempt}${indentation}${sectionDescription}`;
            displayQuestions(section)

        });
        // Return the formatted question paper
        // console.log(questionPaper);
        return questionPaper;
    }
    var depth2 =0
    var description_align =25;
    function displayQuestions(data,parentSno =''){ 
        var questionIndentation = "  ".repeat(depth2);
        var dataa =data.questions;
        dataa.forEach((question, index) =>{
            var currentSno = parentSno + (index + 1) + '.';
            var temp_sno= currentSno.slice(0,-1)

            var  currentSno_length =currentSno.length-(currentSno.length/2)
          if (currentSno_length == 1) {
            description_align =17
          } else if (currentSno_length == 2) {
            description_align =33
          }else if(currentSno_length == 3){
            description_align =48
          }else if(currentSno_length == 4) {
            description_align =64
          }
          else if(currentSno_length == 5) {
            description_align =78
          }

                 if (question.group_title) {
                    const questionGroupSetP = `${question.group_title}`;
                    const questionGroupmodify =questionGroupSetP.replaceAll('<p>', `<p id="question-Group-Id" style="padding-left:${description_align}px">`)
                    if (question.group_attempt_any) {
                        var  questionGroupAttempt = `<p id="group_attempt_any" class="GroupAttempAny">Attempt Any : ${question.group_attempt_any} </p>`

                    }else{
                        var  questionGroupAttempt = `<p id="group_attempt_any" class="GroupAttempAny"> </p>`

                    }
                    if (question.group_marks === 0 || question.group_marks === '') {
                        var  questionGroupMark = `<p id="group_marks">  </p>`
                    }else{
                        var  questionGroupMark = `<p id="group_marks">Marks : ${question.group_marks} </p>`

                    }
                    const questionGroupDescriptio = question.group_description;
                    const questionGroupDescription = questionGroupDescriptio.replaceAll('<p>', '<p class="question-Group-Description">')
                    
                    // if (question.group_attempt_any === '') {
                    //     questionGroupAttempt = questionGroupAttempt.replace('<p id="group_attempt_any">', '<p id="group_attempt_any" hidden>')
                    // } 
        
                    // if (question.group_marks === '') {
                    //     questionGroupMark = questionGroupMark.replace('<p id="group_marks">', '<p id="group_marks" hidden>')
                    // }
                    
                    questionPaper += `<div class="text-group-align" style="margin-left:-1px;">${temp_sno})${questionGroupmodify}</div>`

                    questionPaper += `<div class="group_marks_attmpt">${questionGroupAttempt}${questionGroupMark}</div>`;
                    // questionPaper += `<div class="group_attempt_any">${questionGroupAttempt}</div>`;
                   
                    questionPaper += `<div class="group-descrip" style="margin-left:${description_align}px">${questionGroupDescription}</div>`;
                    depth2++
                } else if (question.question) {
                    const questionTex = question.question;
                    const questionText = questionTex.replaceAll('<p>', `<p class="question_Text" style="margin-left:${description_align}px">`);
                    // console.log(questionText);
                    const questionDescriptio = question.question_description;
                    const questionDescription = questionDescriptio.replaceAll('<p>', '<p class="question-Description">')
                    const mathstatus = question.is_math_enabled;
                    if (question.marks == 0 || question.marks == '') {
                        var questionMark = `<p id="question-mark"> </p>`;
                    } else {
                        var questionMark = `<p id="question-mark">Marks :${question.marks}</p>`;

                    }
                    
                    // console.log(questionMark);
                    const multipleAnswer =question.question_sub_type; 
                    if (question.marks == '') {
                        questionMark = questionMark.replace('<p id="question-mark">', '<p id="question-mark" hidden>')
                    }



                    questionPaper += `<div  id="parent" class="text-qus-align">${temp_sno})${convertToLatex(questionText, mathstatus)}</div>${questionMark}<div class="text-des align-right" style="margin-left:${description_align}px">${convertToLatex(questionDescription, mathstatus)}</div>`;
               
                    if (question.question_type === "group") {
                        var answers = question.answers;
                        var choisealgin =25
                        var  currentSno_length1 =currentSno.length-(currentSno.length/2)
                         if (currentSno_length1 == 1) {
                            choisealgin =26
                            } else if (currentSno_length1 == 2) {
                                choisealgin =40
                        }else if(currentSno_length1 == 3){
                            choisealgin =55
                        }else if(currentSno_length1 == 4) {
                            choisealgin =70
                        }
                        else if(currentSno_length1 == 5) {
                            choisealgin =84
                        }
                    
                        const alphabetOptions = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // Define the alphabet options
                        for (let i = 0; i < answers.length; i++) { // change the i +=2 aadhavan
                            const optionA = alphabetOptions[i];
                            // const optionB = alphabetOptions[i + 1]; 

                            var math =  answers[i].is_math_enabled;
                            // var choice_name_set =answers[i].choice_name.replace('<p>','<p class="Choise_Question_Align">')
                            
                            const answerA = answers[i] ? `${optionA}. ${convertToLatex(answers[i].choice_name, math)}` : '';
                            // const answerB = answers[i + 1] ? `${optionB}. ${convertToLatex(answers[i + 1].choice_name, mathstatus)}` : '';
                            if (multipleAnswer == 'false') {
                                questionPaper += `<div class="text-option-align" style="margin-left:${choisealgin}px"><input type="radio" name="answer" value="A"> ${answerA.padEnd(10)}</div>`;
                            }else{
                                questionPaper += `<div class="text-option-align" style="margin-left:${choisealgin}px"><input type="checkbox" name="answer" value="A">    ${answerA.padEnd(10)}</div>`;
                            }
                        }
                    }
            
            }
      
                if (question.questions) {
                displayQuestions(question, currentSno);
                 }

            })
    }

    // Call the function and display the formatted question paper
    const formattedQuestionPaper = convertJSONToQuestionPaper(jsonData, 0, 1, 1);
    const questionPaperElement = document.getElementById("questionPaper");
    questionPaperElement.innerHTML = formattedQuestionPaper; // Use innerHTML here
    }

function removeHtmlTags(inputString) {

    const cheerio = require('cheerio');
    const $ = cheerio.load(inputString);
    const text = $.text();
    
    return text;
    }