<!-- 페이지로딩 -->
<script>
var ajaxRequest_write = null;
var ajaxRequest = null;
var ajaxRequest5 = null;
var ajaxRequest6 = null;
var ajaxRequest7 = null;
var isDisplaying = false;

$(document).ready(function(){	
    var loader = document.getElementById('loadingOverlay');
	if(loader)
		loader.style.display = 'none';
});
	
function generatePDF() {
	var workplace = '<?php echo $title_message; ?>';
	var deadline = '<?php echo $today; ?>';
	var deadlineDate = new Date(deadline);
	var formattedDate = "(" + String(deadlineDate.getFullYear()).slice(-2) + "." + ("0" + (deadlineDate.getMonth() + 1)).slice(-2) + "." + ("0" + deadlineDate.getDate()).slice(-2) + ")";
	var result = 'KD' + workplace +'_' + formattedDate + '.pdf';
    
    var element = document.getElementById('content-to-print');
    var opt = {
        margin: [10, 3, 12, 3], // Top, right, bottom, left margins
        filename: result,
        image: { type: 'jpeg', quality: 0.98 },
        html2canvas: { scale: 1 },
        jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
        pagebreak: { mode: [''] }
    };
    html2pdf().from(element).set(opt).save();
}

// 모달을 호출할 때 tr 요소를 저장하는 변수
var selectedRow;

// 결재 정보 업데이트 함수
function updateApprovalData(userName, date) {
    // 저장 로직을 위해 결재 정보 업데이트
    let approvalData = {
        writer: {
            name: $('#writer').text().trim(),
            date: '<?=$todayStr?>'
        },
        approver: {
            name: userName,
            date: date
        }
    };

    // 저장할 JSON 데이터 업데이트
    let formData = JSON.parse($('#iList').val() || '[]');
    const approvalIndex = formData.findIndex(item => item.approval);

    if (approvalIndex !== -1) {
        formData[approvalIndex].approval = approvalData;
    } else {
        formData.push({ approval: approvalData });
    }

    // JSON 문자열로 다시 저장
    $('#iList').val(JSON.stringify(formData));
}

function captureReturnKey(e) {
    if(e.keyCode==13 && e.srcElement.type != 'textarea')
    return false;
}

function recaptureReturnKey(e) {
    if(e.keyCode==13 && e.srcElement.type != 'textarea')
    return false;
}

// 날짜 포맷 변환 함수
function formatDateToFull(dateStr) {
    if (!dateStr) return ''; // 빈 값 처리

    // 입력 형식이 'yy/mm/dd'라고 가정
    const [yy, mm, dd] = dateStr.split('/');

    // 두 자리 연도를 네 자리 연도로 변환
    const fullYear = `20${yy}`;

    // 결과를 'yyyy.mm.dd' 형식으로 반환
    return `${fullYear}.${mm.padStart(2, '0')}.${dd.padStart(2, '0')}`;
}

// 초기 정보 로딩
$(document).ready(function () {
    const currentPage = parseInt($('#page').val()); // 현재 페이지, 숫자형

    if (iListData) {
        // 1. 공통 데이터 로드 (approval)
        const approval = iListData.approval || { writer: {}, approver: {} };

        // 공통 데이터 출력
        $('#writer').text(approval.writer?.name || '');
        $('#writerDate').text(approval.writer?.date || '');
        $('#approval').text(approval.approver?.name || '');
        $('#approvalDate').text(approval.approver?.date || '');
        $('#userNameInput').val(approval.writer?.name || '');
        const formattedDate = formatDateToFull(approval.writer?.date || '');
        $('#inspectionDate').val(formattedDate);

        // 2. 현재 페이지 데이터 확인
        const pageData = iListData.pages && iListData.pages[currentPage - 1]
            ? iListData.pages[currentPage - 1]
            : null;

        if (pageData) {
            const inputItems = pageData.inputItems || {};

            // 입력 항목 로드
            for (const [name, value] of Object.entries(inputItems)) {
                $(`.inputItem[name="${name}"]`).val(value || '');
            }

            if ($('#userNameInput').val() !== '') {
                $('#inspectionDivBtn').hide(); // 검사자가 있으면 숨기기
            }

            // 체크박스 데이터 로드
            const checkboxData = pageData.checkboxData || [];
            $('#mainTable tbody tr').each(function (index) {
                const rowData = checkboxData[index];
                if (rowData) {
                    $(this).find('.check-G').each(function (goodIndex) {
                        $(this).prop('checked', rowData.G[goodIndex] || false);
                    });
                    $(this).find('.check-B').each(function (badIndex) {
                        $(this).prop('checked', rowData.B[badIndex] || false);
                    });
                    $(this).find('.J').text(rowData.J || '');
                } else {
                    $(this).find('.check-G').prop('checked', false);
                    $(this).find('.check-B').prop('checked', false);
                    $(this).find('.J').text('');
                }
            });
        } else {
            console.warn('해당 페이지 데이터가 없습니다. 초기화 중입니다.');
            $('.inputItem').val('');
            $('#mainTable tbody tr').each(function () {
                $(this).find('.check-G').prop('checked', false);
                $(this).find('.check-B').prop('checked', false);
                $(this).find('.J').text('');
            });
        }
    }

    console.clear();
    console.log('초기로드 데이터 상태:', iListData);
});

$(document).ready(function () {


	$(document).on('click', '.saveData', function() {
		   saveData();
	});


	$(document).on('click', '.approvalBtn', function () {
		const userName = '<?=$user_name?>';
		const todayStr = '<?=$todayStr?>';

		$('#approval').text(userName);
		$('#approvalDate').html(todayStr + ' <i class="bi bi-x-circle remove-approval" style="cursor: pointer;"></i>');

		// 저장 로직
		// updateApprovalData(userName, todayStr);
		saveData();
	});


	$(document).on('click', '.remove-approval', function () {
		$('#approval').text('');
		$('#approvalDate').text('');

		// JSON 데이터에서 승인자 정보 제거
		let formData = JSON.parse($('#iList').val() || '[]');
		const approvalIndex = formData.findIndex(item => item.approval);
		if (approvalIndex !== -1) {
			formData[approvalIndex].approval.approver.name = '';
			formData[approvalIndex].approval.approver.date = ''; 
		}
		$('#iList').val(JSON.stringify(formData));

		Toastify({
			text: "승인 정보가 삭제되었습니다.",
			duration: 2000,
			close: true,
			gravity: "top",
			position: "center",
			style: { background: "linear-gradient(to right, #ff5f6d, #ffc371)" }
		}).showToast();

		saveData();
	});

});


    function saveData() {
	 const page = $('#page').val(); // 현재 페이지 값 가져오기
    const maxPage = parseInt($('#lotVolumn').val(), 10); // 최대 페이지 값 가져오기

    showMsgModal();

    // iListData 초기화 및 pages 배열 추가 (수정)
    if (!iListData || typeof iListData !== 'object') {
        console.warn('iListData가 유효하지 않습니다. 초기화합니다.');
        iListData = {
            approval: {},
            pages: [] // pages 배열 초기화
        };
    }

    // pages 배열이 없으면 생성 (수정)
    if (!iListData.pages) {
        iListData.pages = [];
    }

    // 페이지 데이터 초기화 (수정)
    for (let i = 1; i <= maxPage; i++) {
        if (!iListData.pages[i - 1]) {
            console.log(`페이지 ${i}가 존재하지 않습니다. 초기화합니다.`);
            iListData.pages[i - 1] = { // pages 배열은 0부터 시작
                page: i.toString(),
                inputItems: {},
                checkboxData: []
            };
        }
    }

    // 공통 데이터 저장 (수정)
    iListData.approval = {
        writer: {
            name: $('#writer').text().trim(),
            date: $('#writerDate').text().trim()
        },
        approver: {
            name: $('#approval').text().trim(),
            date: $('#approvalDate').text().trim()
        }
    };

    // 현재 페이지 데이터 생성 및 저장 (수정)
    const pageData = {
        page: page,
        inputItems: {},
        checkboxData: []
    };

    $('.inputItem').each(function () {
        const inputName = $(this).attr('name');
        pageData.inputItems[inputName] = $(this).val() || null;
    });

    $('#mainTable tbody tr').each(function () {
        const rowData = {
            G: [],
            B: [],
            J: $(this).find('.J').text() || null
        };
        $(this).find('.check-G').each(function () {
            rowData.G.push($(this).prop('checked') || null);
        });
        $(this).find('.check-B').each(function () {
            rowData.B.push($(this).prop('checked') || null);
        });
        pageData.checkboxData.push(rowData);
    });

    // 빈 값 제거 (수정)
    pageData.checkboxData = pageData.checkboxData.filter(row => {
        return row.J !== null && row.J !== "" ||
               row.G.some(val => val !== null && val !== undefined) ||
               row.B.some(val => val !== null && val !== undefined);
    });

    // pages 배열에 페이지 데이터 저장 (수정)
    iListData.pages[parseInt(page) - 1] = pageData;

        // 전체 페이지 검사 및 ACIdoneDate 업데이트 (수정)
		// 전체 페이지 검사 및 ACIdoneDate 업데이트 (수정)
		const allPagesJudgementsAreGood = iListData.pages.every(page =>
			page.checkboxData.every(row => row.J === '적')
		);

        if (allPagesJudgementsAreGood) {
            const today = new Date();
            const formattedDate = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;
            $("#ACIdoneDate").val(formattedDate);
        } else {
            $("#ACIdoneDate").val('');
        }

        // JSON 데이터로 변환 및 저장 (수정)
        console.log('JSON 데이터로 변환하여 저장 전 자료 iListData : ', iListData);
        try {
            const jsonString = JSON.stringify(iListData, null, 2);            
            $('#iList').val(jsonString);
            console.log('JSON 데이터로 변환하여 저장 전 자료 jsonString : ', jsonString);

            if (ajaxRequest) {
                ajaxRequest.abort();
                console.log('기존 AJAX 요청 중단.');
            }

            const num = $('#num').val();
            const ACIaskDate = $('#ACIaskDate').val();
            const ACIdoneDate = $('#ACIdoneDate').val();

            ajaxRequest = $.ajax({
                url: "insert_iList.php",
                type: "post",
                data: { num: num, ACIaskDate: ACIaskDate, ACIdoneDate: ACIdoneDate, iList: jsonString },
                dataType: "json",
                success: function (response) {
                    console.log('데이터 저장 성공:', response);
                    ajaxRequest = null;
                    Toastify({
                        text: "저장완료",
                        duration: 2000,
                        close: true,
                        gravity: "top",
                        position: "center",
                        style: {
                            background: "linear-gradient(to right, #00b09b, #96c93d)"
                        }
                    }).showToast();
                    hideMsgModal();
                },
                error: function (xhr, status, error) {
                    if (status !== 'abort') {
                        console.error('데이터 저장 실패:', error);
                        alert("저장 중 오류가 발생했습니다: " + error);
                    } else {
                        console.log('AJAX 요청이 중단되었습니다.');
                    }
                }
            });
        } catch (error) {
            console.error('JSON 직렬화 오류:', error);
            return;
        }
    }


</script>
  
<script>
$(document).ready(function() {
    $('#mainTable tbody tr').each(function() {
        var $row = $(this);
        var $judgementCell = $row.find('.J');
        var screenorslat = $('#screenorslat').val();
		
        function updateJudgement() {            
            var isValidWidth = true;
            var isValidHeight = true;
            var isValidhomegap = true;
            var isValidbottombargap = true;
            var gapTolerance = 30;
            			
			// 길이
			var pageWidth = parseFloat($("#pageWidth").text()) || 0;			
            $row.find('input[name="openWidth"]').each(function() {
                var value = parseFloat($(this).val());
                if (isNaN(value)) {
                    isValidWidth = false;
                    return false;
                }
                var lowerLimit = pageWidth - gapTolerance;
                var upperLimit = pageWidth + gapTolerance;
                if (value < lowerLimit || value > upperLimit) {
                    isValidWidth = false;
                }
				// console.log('openWidth : ', value);	
				// console.log('pageWidth : ', pageWidth);	
				// console.log('openWidth valid : ', isValidWidth);	
				judgeCheckbox($row, isValidWidth);
            });	
            			
			// 높이			
			var pageHeight = parseFloat($("#pageHeight").text()) || 0;
            $row.find('input[name="openHeight"]').each(function() {
                var value = parseFloat($(this).val());
                if (isNaN(value)) {
                    isValidHeight = false;
                    return false;
                }
                var lowerLimit = pageHeight - gapTolerance;
                var upperLimit = pageHeight + gapTolerance;
                if (value < lowerLimit || value > upperLimit) {
                    isValidHeight = false;
                }
				// console.log('openHeight : ', value);	
				// console.log('pageHeight : ', pageHeight);	
				// console.log('openHeight valid : ', isValidHeight);	
				judgeCheckbox($row, isValidHeight);
            });	
            		
			// 가이드레일 홈간격		
			if(screenorslat == '스크린')
			{
				var guiderailHolegapUpLimit = 10;
				var guiderailHolegapDownLimit = 5;
			}
			else
			{
				var guiderailHolegapUpLimit = 25;
				var guiderailHolegapDownLimit = 7;				
			}
            $row.find('input[name="homegap"]').each(function() {				
                var value = parseFloat($(this).val());
                if (isNaN(value)) {
                    isValidhomegap = false;
                    return false;
                }
                var lowerLimit = guiderailHolegapDownLimit;
                var upperLimit = guiderailHolegapUpLimit;
                if (value < lowerLimit || value > upperLimit) {
                    isValidhomegap = false;
                }
				// console.log('openHeight : ', value);	
				// console.log('pageHeight : ', pageHeight);	
				// console.log('openHeight valid : ', isValidhomegap);	
				judgeCheckbox($row, isValidhomegap);
            });	
            
            		
			// 하단마감재간격	
			var bottombarHolegapUpLimit = 25;;
            $row.find('input[name="bottombargap"]').each(function() {
                var value = parseFloat($(this).val());
                if (isNaN(value)) {
                    isValidbottombargap = false;
                    return false;
                }                
                var upperLimit = bottombarHolegapUpLimit;
                if (value >= upperLimit) {
                    isValidbottombargap = false;
                }
				// console.log('openHeight : ', value);	
				// console.log('pageHeight : ', pageHeight);	
				// console.log('openHeight valid : ', isValidbottombargap);	
				judgeCheckbox($row, isValidbottombargap);
            });	
            
			var allFieldsFilled = true;
			var allGood = true; // 모든 체크박스가 적합인지 확인
			var anyBad = false; // 부적합 체크박스가 하나라도 체크되었는지 확인

			// 현재 행이 rowspan의 첫 번째 행인지 확인
			var $goodChecks = $row.find('.check-G').filter(function () {
				return $(this).closest('tr').index() === $row.index();
			});

			var $badChecks = $row.find('.check-B').filter(function () {
				return $(this).closest('tr').index() === $row.index();
			});

			// 적합/부적합 체크박스 상태 확인
			var allGood = true;
			var anyBad = false;

			$goodChecks.each(function () {
				if (!$(this).is(':checked')) {
					allGood = false;
				}
			});

			$badChecks.each(function () {
				if ($(this).is(':checked')) {
					anyBad = true;
				}
			});

		// 디버깅용 로그
		// console.log('allGood:', allGood);
		// console.log('anyBad:', anyBad);
		// console.log('allFieldsFilled:', allFieldsFilled);			

		// 모든 필드가 채워지지 않았으면 공백으로 설정
		// 판정 업데이트
		if ( isValidWidth && isValidHeight && isValidhomegap && isValidbottombargap && allGood && !anyBad) {
			$judgementCell.text('적');
		} else {
			$judgementCell.text('부');
		}
	}        
        // 페이지 로드 시 초기 판단
        updateJudgement();

        // 체크박스 토글
        $row.find('td').each(function() {
            var $goodCheck = $(this).find('.check-G');
            var $badCheck = $(this).find('.check-B');

            $goodCheck.on('change', function() {
                if ($(this).is(':checked')) {
                    $badCheck.prop('checked', false);
                }
                updateJudgement();
				updateFinalJudgement();
            });

            $badCheck.on('change', function() {
                if ($(this).is(':checked')) {
                    $goodCheck.prop('checked', false);
                }
                updateJudgement();
                updateFinalJudgement();
            });
        });

        // input 값 변경 시 판정 업데이트
        $row.find('input').on('input', updateJudgement);
        $row.find('input').on('input', updateFinalJudgement);
    });

	   // 최종 종합 판정 업데이트 함수
	function updateFinalJudgement() {
		var allPass = true;
		var allJudged = true;

		$('#mainTable tbody tr .J').each(function() {
			var judgementText = $(this).text();

			if (judgementText === '') {
				allJudged = false;
			}

			if (judgementText === '부') {
				allPass = false;
				$(this).css('background-color', '#f8d7da');
			} else {
				$(this).css('background-color', '');
			}
		});

		if (allJudged) {
			if (allPass) {
				$('#resultJudgement').val('합격');	
				$('#resultJudgement').css('background-color', '#ffff');				
			} else {
				$('#resultJudgement').val('불합격');
				$('#resultJudgement').css('background-color', '#f8d7da');				
			}
		} else {
			$('#resultJudgement').val('');
		}
	}
	
   // 페이지 로드 시 최종 판정 업데이트
    updateFinalJudgement();
	
});

	function judgeCheckbox($row, isValidWidth) {
		var $goodCheck = $row.find('.check-G');
		var $badCheck = $row.find('.check-B');

		if (!isValidWidth) {
			$goodCheck.prop('checked', false); // 'G' 체크 해제
			$badCheck.prop('checked', true);  // 'B' 체크 활성화
		} else {
			$goodCheck.prop('checked', true);  // 'G' 체크 활성화
			$badCheck.prop('checked', false); // 'B' 체크 해제
		}
	}	

$(document).ready(function() {
    // 초기화 버튼 클릭 이벤트
    $('.initialBtn').on('click', function() {
        // 초기화 확인 알림
        Swal.fire({
            title: '초기화',
            text: "모든 데이터를 초기화하시겠습니까?",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: '예, 초기화합니다',
            cancelButtonText: '취소'
        }).then((result) => {
            if (result.isConfirmed) {
                // iList 값을 빈 배열로 초기화
                const initialData = JSON.stringify([]); // 빈 배열로 초기화
                
                // iList hidden input에 초기화된 데이터 설정
                $('#iList').val(initialData);
                
                // 초기화된 데이터 저장 요청
                $.ajax({
                    url: 'insert_iList.php', // 데이터를 저장할 PHP 파일 경로
                    type: 'POST',
                    data: { 
							num: $('#num').val() ,
							tablename: $('#tablename').val() ,
							update_log: $('#update_log').val() ,
							iList: initialData },
                    success: function(response) {
                        Swal.fire({
                            title: '초기화 완료',
                            text: "모든 데이터가 초기화되었습니다.",
                            icon: 'success',
                            confirmButtonText: '확인'
                        }).then(() => {							
                            // 페이지 새로고침
							setTimeout(function () {
								hideMsgModal();				
								location.reload();
							}, 1000); 
						});
                    },
                    error: function(jqxhr, status, error) {
                        Swal.fire({
                            title: '오류',
                            text: "초기화 중 오류가 발생했습니다.",
                            icon: 'error',
                            confirmButtonText: '확인'
                        });
                        console.log("AJAX Error: ", status, error);
                    }
                });
            }
        });
    });
});

$(document).ready(function() {
    // 'allclick' ID를 가진 요소를 클릭했을 때 실행
    $('#allclick').on('click', function() {
        // 1. 모든 체크박스를 체크 상태로 설정
        // $('.check-G').prop('checked', true);
		
		showMsgModal(3); // 파일처리중
        
        // 값 설정
        $('#openWidth').val($('#pageWidth').text());
        $('#openHeight').val($('#pageHeight').text());
		
		var screenorslat = $('#screenorslat').val();
		if(screenorslat == '스크린')
			$('#homegap').val('9');
		else
			$('#homegap').val('20');  // 철재인경우
		
        $('#bottombargap').val('23');

        // 3. 강제로 input 요소의 input/change 이벤트 발생
        $('input[name="openWidth"]').each(function() {
            $(this).trigger('input'); // 또는 'change' 이벤트
        });
		
		setTimeout(function () {
			$('.check-G').trigger('click');
			console.log('.check-G 요소가 클릭되었습니다.');
			hideMsgModal();				
		}, 1000); // 1초 후 실행

        // 저장 (주석 처리된 부분)
        // saveData();
    });    

});

// 부트스트랩 툴팁 
$(document).ready(function() {
	  var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
	  var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
		return new bootstrap.Tooltip(tooltipTriggerEl);
	  });    	  
});

  document.addEventListener('DOMContentLoaded', function() {
        const pageSelect = document.getElementById('pageSelect');
        const prevPageBtn = document.getElementById('prevPage');
        const nextPageBtn = document.getElementById('nextPage');
        let currentPage = $("#page").val();
        const totalPages = <?= $lotVolumn ?>;

        // Select 변경 시 페이지 이동
        pageSelect.addEventListener('change', function() {
            currentPage = parseInt(this.value, 10);
            updatePage(currentPage);
        });

        // 이전 페이지 버튼 클릭 이벤트
        prevPageBtn.addEventListener('click', function() {
            if (currentPage > 1) {
                currentPage--;
                updatePage(currentPage);
            }
        });

        // 다음 페이지 버튼 클릭 이벤트
        nextPageBtn.addEventListener('click', function() {
            if (currentPage < totalPages) {
                currentPage++;
                updatePage(currentPage);
            }
        });

        // 페이지 업데이트 함수
        function updatePage(page) {
            // 페이지 값 업데이트
            currentPage = page;
            pageSelect.value = page; // Select 요소의 값을 갱신            
			$("#page").val(page)
            // saveData(); // 주석 처리된 부분 (사용 시 활성화)
            $('#board_form').submit(); // 서버로 페이지 데이터 전송
        }

        // 초기 페이지 설정
        // updatePage(currentPage);
    });



$(document).ready(function () {
    displayFileLoad(); // 기존 파일 로드
    // displayImageLoad(); // 기존 이미지 로드
	var tablename = $("#drivetablename").val();
	var page = $("#page").val();

    // 드롭 영역 설정
    const dropArea = $("#dropArea");
    dropArea.on("dragover", function (e) {
        e.preventDefault();
        dropArea.css("border-color", "blue"); // 드래그 중 표시
    });

    dropArea.on("dragleave", function (e) {
        e.preventDefault();
        dropArea.css("border-color", "#ccc"); // 드래그 해제 시 원래대로
    });

    dropArea.on("drop", function (e) {
        e.preventDefault();
        dropArea.css("border-color", "#ccc"); // 드롭 시 원래대로

        const files = e.originalEvent.dataTransfer.files;
        if (files.length > 0) {
            processFiles(files, tablename, "attached", "upfile", page);
        }
    });

    // 파일 선택 이벤트 처리
    $("#upfile").change(function (e) {
        processFiles(this.files, tablename, "attached", "upfile", page);
    });

    // 파일 업로드 및 처리 함수
    function processFiles(files, tablename, item, upfilename, page) {
		var num = $("#num").val();
        if (!files || files.length === 0) {
            console.warn("파일이 선택되지 않았습니다.");
            return;
        }

		showMsgModal(3); // 파일처리중	
        const formData = new FormData();
        for (const file of files) {
            formData.append(upfilename + "[]", file);
        }

        // 추가 데이터 설정
        formData.append("tablename", tablename);
        formData.append("item", item);
        formData.append("upfilename", upfilename);
        formData.append("folderPath", "uploads");
        formData.append("DBtable", "picuploads");
        formData.append("num", num);
        formData.append("page", page);
        
        // AJAX 요청
        $.ajax({
            url: "/filedrive/GD_page.php",
            type: "POST",
            enctype: "multipart/form-data",
            processData: false,
            contentType: false,
            data: formData,
            success: function (response) {
                // console.log("응답 데이터:", response);

                let successCount = 0;
                let errorCount = 0;
                let errorMessages = [];

                response.forEach((item) => {
                    if (item.status === "success") {
                        successCount++;
                    } else if (item.status === "error") {
                        errorCount++;
                        errorMessages.push(`파일: ${item.file}, 메시지: ${item.message}`);
                    }
                });

                if (successCount > 0) {
                    Toastify({
                        text: `${successCount}개의 파일이 성공적으로 업로드되었습니다.`,
                        duration: 2000,
                        close: true,
                        gravity: "top",
                        position: "center",
                        backgroundColor: "#4fbe87",
                    }).showToast();
                }

                if (errorCount > 0) {
                    Toastify({
                        text: `오류 발생: ${errorCount}개의 파일 업로드 실패\n상세 오류: ${errorMessages.join("\n")}`,
                        duration: 5000,
                        close: true,
                        gravity: "top",
                        position: "center",
                        backgroundColor: "#f44336",
                    }).showToast();
                }

                setTimeout(function () {
                    hideMsgModal();	
                    if (item === "attached") displayFile();
                    if (item === "image") displayImage();
                }, 1000);
            },
            error: function (jqxhr, status, error) {
                console.error("업로드 실패:", jqxhr, status, error);
            },
        });
    }

    // 파일 불러오기
    function displayFile() {
        fetchFiles(tablename, "attached", "#displayFile");
    }

    // 이미지 불러오기
    function displayImage() {
        fetchFiles(tablename, "image", "#displayImage");
    }
// 파일/이미지 데이터 가져오기
function fetchFiles(tablename, item, targetSelector) {
	
	var tablename = $("#drivetablename").val();
	var page = $("#page").val();
    const params = $("#num").val();
	
    if (!params) {
        console.error("ID 값이 없습니다. 데이터를 불러올 수 없습니다.");
        return;
    }

    $.ajax({
        url: "/filedrive/GD_page.php",
        type: "GET",
        data: { num: params, tablename: tablename, item: item, folderPath: "uploads", page : page },
        dataType: "json",
        success: function (data) {
            // console.log("데이터:", data);
            $(targetSelector).html(""); // 기존 내용 초기화

            if (Array.isArray(data) && data.length > 0) {
                data.forEach(function (fileData, index) {
                    const realName = fileData.realname || "다운로드 파일";
                    const link = fileData.link || "#";
                    const fileId = fileData.fileId || null;

                    if (!fileId) {
                        console.error("fileId가 누락되었습니다. index: " + index, fileData);
                        $(targetSelector).append(
                            "<div class='text-danger'>파일 ID가 누락되었습니다.</div>"
                        );
                        return;
                    }

			   $(targetSelector).append(
				"<div class='row mt-1 mb-2'>" +
				"<div class='d-flex align-items-center justify-content-center'>" +
				"<span id='file" + index + "'>" +
				"<a href='#' onclick=\"popupCenter('" + link + "', 'filePopup', 800, 600); return false;\">" + realName + "</a>" +
				"</span> &nbsp;&nbsp;" +
				"<button type='button' class='btn btn-danger btn-sm' id='delFile" + index + "' onclick=\"deleteFile('" + index + "', '" + fileId + "', '" + tablename + "', '" + item + "')\">" +
				"<ion-icon name='trash-outline'></ion-icon>" +
				"</button>" +
				"</div>" +
				"</div>"
			);

										
                });
            } else {
                $(targetSelector).append(
                    ""
                );
            }
        },
        error: function (error) {
            console.error("파일 불러오기 오류:", error);
        },
    });
}

// 파일 삭제
window.deleteFile = function (index, fileId, tablename, item) {
    Swal.fire({
        title: "삭제 확인",
        text: "정말 삭제하시겠습니까?",
        icon: "warning",
        showCancelButton: true,
        confirmButtonText: "삭제",
        cancelButtonText: "취소",
        reverseButtons: true,
    }).then((result) => {
        if (result.isConfirmed) {
			showMsgModal(3); // 파일처리중	
            $.ajax({
                url: "/filedrive/GD_page.php",
                type: "DELETE",
                data: JSON.stringify({
                    fileId: fileId,
                    tablename: tablename,
                    item: item,
                    folderPath: "uploads",
                    DBtable: "picuploads",
                }),
                contentType: "application/json",
                dataType: "json",
                success: function (response) {					
					hideMsgModal();	
                    if (response.status === "success") {
                        // console.log("삭제 완료:", response);
                        $("#file" + index).remove();
                        $("#delFile" + index).remove();
                    }
                },
                error: function (error) {
                    console.error("삭제 실패:", error);
                },
            });
        }
    });
};

});
// 기존 파일 로드 함수
function displayFileLoad() {
    const data = <?php echo json_encode($savefilename_arr); ?>; // PHP에서 전달된 파일 배열
	var tablename = $("#drivetablename").val();
	
    $("#displayFile").html(""); // 기존 내용 초기화

    if (Array.isArray(data) && data.length > 0) {
        data.forEach(function (fileData, index) {
            const realName = fileData.realname || "다운로드 파일";
            const link = fileData.link || "#";
            const fileId = fileData.fileId || null;

            if (!fileId) {
                console.error("fileId가 누락되었습니다. index: " + index, fileData);
                $("#displayFile").append(
                    "<div class='text-danger'>파일 ID가 누락되었습니다.</div>"
                );
                return;
            }
			$("#displayFile").append(
				"<div class='row mt-1 mb-2'>" +
				"<div class='d-flex align-items-center justify-content-center'>" +
				"<span id='file" + index + "'>" +
				"<a href='#' onclick=\"popupCenter('" + link + "', 'filePopup', 800, 600); return false;\">" + realName + "</a>" +
				"</span> &nbsp;&nbsp;" +
				"<button type='button' class='btn btn-danger btn-sm' id='delFile" + index + "' onclick=\"deleteFile('" + index + "', '" + fileId + "', '" + tablename + "', 'attached')\">" +
				"<ion-icon name='trash-outline'></ion-icon>" +
				"</button>" +
				"</div>" +
				"</div>"
			);

			
        });
    } else {
        $("#displayFile").append(
            ""
        );
    }
}

// 기존 이미지 로드 함수
function displayImageLoad() {
    const data = <?php echo json_encode($saveimagename_arr); ?>; // PHP에서 전달된 이미지 배열
	var tablename = $("#drivetablename").val();
	
    $("#displayImage").html(""); // 기존 내용 초기화

    if (Array.isArray(data) && data.length > 0) {
        data.forEach(function (fileData, index) {
            const realName = fileData.realname || "다운로드 파일";
            const thumbnail = fileData.thumbnail || "/assets/default-thumbnail.png";
            const link = fileData.link || "#";
            const fileId = fileData.fileId || null;

            if (!fileId) {
                console.error("fileId가 누락되었습니다. index: " + index, fileData);
                $("#displayImage").append(
                    "<div class='text-danger'>파일 ID가 누락되었습니다.</div>"
                );
                return;
            }
            $("#displayImage").append(
                "<div class='row mb-3'>" +
                "<div class='d-flex align-items-center justify-content-center'>" +
                "<a href='#' onclick=\"popupCenter('" + link + "', 'imagePopup', 800, 600); return false;\">" +
                "<img id='image" + index + "' src='" + thumbnail + "' style='width:150px; height:auto;'>" +
                "</a> &nbsp;&nbsp;" +
                "<button type='button' class='btn btn-danger btn-sm' id='delImage" + index + "' onclick=\"deleteFile('" + index + "', '" + fileId + "', '" + tablename + "', 'image')\">" +
                "<ion-icon name='trash-outline'></ion-icon>" +
                "</button>" +
                "</div>" +
                "</div>"
            );
						
        });
    } else {
        $("#displayImage").append(
            ""
        );
    }
}
</script>

<script>
document.addEventListener('DOMContentLoaded', function () {
	function fetchMissingPages() {
	 var item = 'attached';
     var tablename = '인정검사사진';
	 var lotVolumn = $("#lotVolumn").val();
	 var num = $("#num").val();
    $.ajax({
        url: "/filedrive/GD_page.php",
        type: "GET",
        data: { tablename: tablename, num: num, action: "checkMissingPages", lotVolumn: lotVolumn , item : item },
        dataType: "json",
        success: function (data) {
            console.log("미완료 페이지 데이터 return값 :", data);
            const missingPagesButtons = document.getElementById("missingPagesButtons");
            missingPagesButtons.innerHTML = ""; // 기존 버튼 초기화

            if (Array.isArray(data) && data.length > 0) {
                data.forEach(function (page) {
                    const button = document.createElement("button");
                    button.className = "btn btn-warning btn-sm m-1";
                    button.textContent = `${page}`;
                    button.addEventListener("click", function () {
                        navigateToPage(page); 
                    });
                    missingPagesButtons.appendChild(button);
                });
            } else {
                missingPagesButtons.innerHTML =
                    "<span class='text-success'>모든 페이지가 등록되었습니다.</span>";
            }
        },
        error: function (error) {
            console.error("사진 등록 미완료 페이지 오류:", error);
        },
	  });
	}

	function navigateToPage(page) {
		// 페이지 이동 로직 (여기에서 서버 요청 또는 페이지 값 설정 가능)
		document.getElementById('pageSelect').value = page;
		$("#page").val(page);
		console.log(`페이지 ${page}로 이동합니다.`);
		// 예시로 페이지 폼 제출 (필요 시 활성화)
		$('#board_form').submit();
	}
	
	// 미완료 페이지 버튼 생성 호출
	fetchMissingPages();
});
</script>