var activeTab;

// ajax 중복처리를 위한 구문
var ajaxReq = null;
var ajaxReq1 = null;
var ajaxReq2 = null;  
var ajaxReq3 = null;  
var ajaxReq4 = null;  
var ajaxReq5 = null;  

var isModalOpen = false; // 모달 창 상태를 추적하는 전역 변수

var Eworks_dataTable; // DataTables 인스턴스 전역 변수
var Eworks_pageNumber; // 현재 페이지 번호 저장을 위한 전역 변수

$(document).ready(function() {  
	if ($('#myEworks_Table').length) {          
	  // DataTables 초기 설정
  	  Eworks_dataTable = $('#myEworks_Table').DataTable({
        "paging": true,
        "ordering": true,
        "searching": false,
        "pageLength": 50,
        "lengthMenu": [25, 50, 100, 200, 500, 1000],
        "language": {
            "lengthMenu": "Show _MENU_ entries",
            "search": "Live Search:"
        },
        "columns": [
            { "data": "checkbox", "orderable": false },   // 첫 번째 열 (체크박스)
            { "data": "type" },                           // 두 번째 열 (구분)
            { "data": "date" },                           // 세 번째 열 (작성일시)
            { "data": "author" },                           
            { "data": "state" },                           
            { "data": "progress" },                           
            { "data": "refer" },                           
            { "data": "title" }, 
            {
                "data": "optionalColumn",
                "visible": false       // 초기 상태에서 열의 가시성 설정				
            }
        ],
        // 기타 설정
    });

    // 페이지 번호 복원 (초기 로드 시)
    var savedPageNumber = getCookie('Eworks_pageNumber');
    if (savedPageNumber) {
        Eworks_dataTable.page(parseInt(savedPageNumber) - 1).draw(false);
    }

    // 페이지 변경 이벤트 리스너
    Eworks_dataTable.on('page.dt', function() {
        var pageNumber = Eworks_dataTable.page.info().page + 1;
        setCookie('Eworks_pageNumber', pageNumber, 10); // 쿠키에 페이지 번호 저장
    });

    // 페이지 길이 셀렉트 박스 변경 이벤트 처리
    $('#myEworks_Table_length select').on('change', function() {
        var selectedValue = $(this).val();
        Eworks_dataTable.page.len(selectedValue).draw(); // 페이지 길이 변경

        // 변경 후 현재 페이지 번호 복원
        savedPageNumber = getCookie('Eworks_pageNumber');
        if (savedPageNumber) {
            Eworks_dataTable.page(parseInt(savedPageNumber) - 1).draw(false);
        }
    });
	}
});

function Eworks_restorePageNumber() {
    var savedPageNumber = getCookie('Eworks_pageNumber');
    if (savedPageNumber) {
        Eworks_dataTable.page(parseInt(savedPageNumber) - 1).draw('page');
    }
}
	

$(document).ready(function () {	
	// 전자결재를 위해 띄우는 창	

	if ($(".sideBanner").length > 0) {
	  var floatPosition = parseInt($(".sideBanner").css('top'));
	  // 이제 floatPosition을 사용하거나 다른 작업을 수행할 수 있습니다.
	} else {
	  // "sideBanner" 클래스가 존재하지 않는 경우에 대한 처리를 여기에 추가할 수 있습니다.
	}


	if ($(".sideBanner").length > 0) {
	  $(window).scroll(function() {
		// 모바일에선 나타나지 않게 하기

		// 현재 스크롤 위치
		var currentTop = $(window).scrollTop();
		var bannerTop = currentTop + floatPosition + "px";

		//이동 애니메이션
		$(".sideBanner").stop().animate({
		  "top" : bannerTop
		}, 500);

	  }).scroll();
	}

	// 전자결재 알림을 위해 띄우는 창
	// 기본 위치(top)값

	if ($(".sideEworksBanner").length > 0) {
	  var eworks_floatPosition = parseInt($(".sideEworksBanner").css('top'));
	  // 이제 floatPosition을 사용하거나 다른 작업을 수행할 수 있습니다.
	} else {
	  // "sideEworksBanner" 클래스가 존재하지 않는 경우에 대한 처리를 여기에 추가할 수 있습니다.
	}


	if ($(".sideEworksBanner").length > 0) {
	  $(window).scroll(function() {
		// 모바일에선 나타나지 않게 하기

		// 현재 스크롤 위치
		var currentTop = $(window).scrollTop();
		var bannerTop = currentTop + eworks_floatPosition + "px";

		//이동 애니메이션
		$(".sideEworksBanner").stop().animate({
		  "top" : bannerTop
		}, 500);

	  }).scroll();
	}


	var sideEworksBanners = document.getElementsByClassName('sideEworksBanner');
	if (sideEworksBanners.length > 0) {
		Array.from(sideEworksBanners).forEach(function(sideEworksBanner) {
			sideEworksBanner.addEventListener('click', function() {
				seltab(3); // 원래의 기능 실행
				this.style.display = 'none'; // .sideEworksBanner 요소를 숨김
			});
		});
	}

	 var spinner = document.getElementById('spinner');
	 if(spinner)
		$("#spinner").hide();
	
      var dropdownVisible = false; // 드롭다운 메뉴 상태 변수
	  
			 // #home-menu 요소가 존재할 때만 이벤트 리스너 추가
		if ($("#home-menu").length > 0) {
		  // 드롭다운 메뉴를 표시하는 이벤트 리스너
		  $("#home-menu").hover(
			function () {
			  // 드롭다운 메뉴를 표시하고 상태를 true로 변경
			  $(".sitemap-dropdown").css("display", "block");
			  dropdownVisible = true;
			},
			function () {
			  // 마우스가 벗어날 때 상태를 유지하도록 조건을 추가
			  if (!dropdownVisible) {
				$(".sitemap-dropdown").css("display", "none");
			  }
			}
		  );

		  // .sitemap-dropdown 요소에 호버하는 이벤트 리스너 추가
		  $(".sitemap-dropdown").hover(
			function () {
			  // 드롭다운 메뉴 내부에 있을 때 상태를 true로 변경
			  dropdownVisible = true;
			},
			function () {
			  // 드롭다운 메뉴를 떠날 때 상태를 false로 변경
			  dropdownVisible = false;
			  $(".sitemap-dropdown").css("display", "none");
			}
		  );

		  // 다른 nav li에 호버하는 이벤트 리스너 추가
		  $("nav-item div").not("#home-menu").hover(
			function () {
			  // 다른 nav li에 호버되면 .sitemap-dropdown를 숨김
			  dropdownVisible = false;
			  $(".sitemap-dropdown").css("display", "none");
			}
		  );
		}
		
   });
   
$(document).ready(function(){
	
    // showdate 요소와 showframe 요소가 페이지에 존재하는지 확인
    var showdate = document.getElementById('showdate');
    var showframe = document.getElementById('showframe');
    
    // 요소가 존재하지 않으면 나머지 코드는 실행하지 않음
    if (!showdate || !showframe) {
        return;
    }

    var hideTimeout; // 프레임을 숨기기 위한 타이머 변수

    // 요소가 존재한다면 이벤트 리스너를 추가
    showdate.addEventListener('mouseenter', function(event) {
        clearTimeout(hideTimeout);  // 이미 설정된 타이머가 있다면 취소
        showframe.style.top = (showdate.offsetTop + showdate.offsetHeight) + 'px';
        showframe.style.left = showdate.offsetLeft + 'px';
        showframe.style.display = 'block';
    });

    showdate.addEventListener('mouseleave', startHideTimer);

    showframe.addEventListener('mouseenter', function() {
        clearTimeout(hideTimeout);  // 이미 설정된 타이머가 있다면 취소
    });

    showframe.addEventListener('mouseleave', startHideTimer);

    // 타이머를 시작하는 함수
    function startHideTimer() {
        hideTimeout = setTimeout(function() {
            showframe.style.display = 'none';
        }, 50);  // 300ms 후에 프레임을 숨깁니다.
    }
});	
	
$(document).ready(function(){		
    // showalign 요소와 showalignframe 요소가 페이지에 존재하는지 확인
    var showalign = document.getElementById('showalign');
    var showalignframe = document.getElementById('showalignframe');
    
    // 요소가 존재하지 않으면 나머지 코드는 실행하지 않음
    if (!showalign || !showalignframe) {
        return;
    }

    var hideTimeoutAlign; // 프레임을 숨기기 위한 타이머 변수

    // 요소가 존재한다면 이벤트 리스너를 추가
    showalign.addEventListener('mouseenter', function(event) {
        clearTimeout(hideTimeoutAlign);  // 이미 설정된 타이머가 있다면 취소
        showalignframe.style.top = (showalign.offsetTop + showalign.offsetHeight) + 'px';
        showalignframe.style.left = showalign.offsetLeft + 'px';
        showalignframe.style.display = 'block';
    });

    showalign.addEventListener('mouseleave', startAlignHideTimer);

    showalignframe.addEventListener('mouseenter', function() {
        clearTimeout(hideTimeoutAlign);  // 이미 설정된 타이머가 있다면 취소
    });

    showalignframe.addEventListener('mouseleave', startAlignHideTimer);

    // 타이머를 시작하는 함수
    function startAlignHideTimer() {
        hideTimeoutAlign = setTimeout(function() {
            showalignframe.style.display = 'none';
        }, 50);  // 300ms 후에 프레임을 숨깁니다.
    }
	
});	

$(document).ready(function(){	
	
    // showextract 요소와 showextractframe 요소가 페이지에 존재하는지 확인
    var showextract = document.getElementById('showextract');
    var showextractframe = document.getElementById('showextractframe');
    
    // 요소가 존재하지 않으면 나머지 코드는 실행하지 않음
    if (!showextract || !showextractframe) {
        return;
    }

    var hideTimeoutextract; // 프레임을 숨기기 위한 타이머 변수 

    // 요소가 존재한다면 이벤트 리스너를 추가
    showextract.addEventListener('mouseenter', function(event) {
        clearTimeout(hideTimeoutextract);  // 이미 설정된 타이머가 있다면 취소
        showextractframe.style.top = (showextract.offsetTop + showextract.offsetHeight) + 'px';
        showextractframe.style.left = showextract.offsetLeft + 'px';
        showextractframe.style.display = 'block';
    });

    showextract.addEventListener('mouseleave', startextractHideTimer);

    showextractframe.addEventListener('mouseenter', function() {
        clearTimeout(hideTimeoutextract);  // 이미 설정된 타이머가 있다면 취소
    });

    showextractframe.addEventListener('mouseleave', startextractHideTimer);

    // 타이머를 시작하는 함수
    function startextractHideTimer() {
        hideTimeoutextract = setTimeout(function() {
            showextractframe.style.display = 'none';
        }, 50);  // 300ms 후에 프레임을 숨깁니다.
    }
	
});

$(document).ready(function(){	
    // showsearchtool 요소와 showsearchtoolframe 요소가 페이지에 존재하는지 확인
    var showsearchtool = document.getElementById('showsearchtool');
    var showsearchtoolframe = document.getElementById('showsearchtoolframe');
    
    // 요소가 존재하지 않으면 나머지 코드는 실행하지 않음
    if (!showsearchtool || !showsearchtoolframe) {
        return;
    }

    var hideTimeoutextract; // 프레임을 숨기기 위한 타이머 변수

    // 요소가 존재한다면 이벤트 리스너를 추가
    showsearchtool.addEventListener('mouseenter', function(event) {
        clearTimeout(hideTimeoutextract);  // 이미 설정된 타이머가 있다면 취소
        showsearchtoolframe.style.top = (showsearchtool.offsetTop + showsearchtool.offsetHeight) + 'px';
        showsearchtoolframe.style.left = showsearchtool.offsetLeft + 'px';
        showsearchtoolframe.style.display = 'block';
    });

    showsearchtool.addEventListener('mouseleave', startextractHideTimer);

    showsearchtoolframe.addEventListener('mouseenter', function() {
        clearTimeout(hideTimeoutextract);  // 이미 설정된 타이머가 있다면 취소
    });

    showsearchtoolframe.addEventListener('mouseleave', startextractHideTimer);
	
    // 타이머를 시작하는 함수
    function startextractHideTimer() {
        hideTimeoutextract = setTimeout(function() {
            showsearchtoolframe.style.display = 'none';
        }, 50);  // 300ms 후에 프레임을 숨깁니다.
    }	
});
	
$(document).ready(function(){		

/////////////////////////////////////////////// 전자 결재관련
			
	$("#closeModalxBtn, #closeEworksBtn").click(function() { 
		$('#eworks_form').modal('hide'); // 모달 숨김

		// .sideEworksBanner 요소가 존재하면 해당 요소를 보이게 설정
		if ($('.sideEworksBanner').length > 0) {
			$('.sideEworksBanner').css('display', 'block');
		}
	});

	$("#closeModaldetailBtn", "#closesecondModalBtn", ".close_eworksview").click(function(){ 	    
		$('#eworks_viewmodal').modal('hide');					
	});
	
	 
	// eworks 전자결재 창에서 작성창 실행	
	$("#eworks_WindowBtn").click( function() {	
        $('#status').val('draft');	
		viewEworks_detail('',1);			  
	});		// end of click function	

// 홈페이지에서 전자결재를 클릭하면 최초 실행되는 것	
// 전자결재를 클릭하면 최초 실행되는 것		
// 전자결채 클릭하면 나오는 첫 화면 (조회/등록 등) 전자결재 초기
viewEworks_detail = function(e_num, eworksPage)
{
	
   $("#eworksPage").val(eworksPage); 
   
	// 화면 초기화 작업 contents의 내용 초기화
	initializeContents();   

  if(e_num=='' || e_num==null)
    {
       $('#status').val('draft');		  
       $('#e_num').val('');		  
	}
	
	console.log(e_num);
	id= e_num;
		
	// 뒷배경 누를때 안닫히게
	$('#eworks_viewmodal').modal( {
	backdrop: 'static', keyboard : false });
			
	var btnClear = document.querySelectorAll('.btnClear');
			btnClear.forEach(function(btn){
				btn.addEventListener('click', function(e){
					btn.parentNode.querySelector('input').value = "";
					e.preventDefault(); // 기본 이벤트 동작 막기
				})
			})		
	
		$('#e_num').val(id); 
		
		 e_num = Number(id);
			
			// console.log('클릭된 순번 : ');
			// console.log(e_num);
			
			// 서버에 저장하는 방식이 아닌 자바스크립트로 input hidden 스타일로 넣어야 기억한다.
			// 서버에 저장하고 php에서 불러오면 계속 지난 정보를 갖고 있다. 주의하자
					

		  var URL =	"/eworks/load_listone.php";	  // 1개만 로드함
		  // 중복호출 금지	
		  if (ajaxReq3 !== null) {
			ajaxReq3.abort(); 
		  }		   
		 // data 전송해서 php 값을 넣기 위해 필요한 구문
		ajaxReq3 = $.ajax({
				url: URL,
				type: "post",		
				data: $("#eworks_board_form").serialize(),
				dataType:"json",	
				success : function(data){	
		
				// console.log('data result: ');
				// console.log( data);
				// 거래처 납기일 등 기록하기		
						
			  e_title= data["e_title"];
			  eworks_item= data["eworks_item"];
			  contents= data["contents"];
			  registdate= data["registdate"];
			  status= data["status"];
			  e_line= data["e_line"];
			  e_line_id= data["e_line_id"];
			  e_confirm = data["e_confirm"];
			  e_confirm_id = data["e_confirm_id"];
			  r_line= data["r_line"];
			  r_line_id= data["r_line_id"];
			  recordtime= data["recordtime"];
			  author= data["author"];		
			  author_id= data["author_id"];		
			  done= data["done"];	

		// 결재 테이블 생성 및 추가
        createApprovalTable(data.e_line, data.e_confirm);				
			  
			  $('#status').val(status); 

				switch (status) {					
					   case 'draft' :
						  statusStr = "작성";
					   break;					
					   case 'send' :
						  statusStr = "요청";
					   break;					
					   case 'noend' :
						  statusStr = "미결";						  
					   break;					
					   case 'ing' :
						  statusStr = "진행";						  
					   break;									
					   case 'end' :
						  statusStr = "결재완료";
					   break;
					   case 'reject' :
						  statusStr = "반려";
					   break;
					   case 'wait' :
						  statusStr = "보류";
					   break;
					   case 'refer' :
						  statusStr = "참조";
					   break;
					   default :
						  statusStr = "작성";
					   break;	
					}
									
				// if (typeof e_line !== 'undefined') 
				// console.log(typeof e_line);
				// console.log(typeof e_confirm);
				// console.log('여기까지');
				
				// 결재라인은 1차결재를 한사람은 결재권한을 잃고 버튼이 나오지 않게 만든다.
				
				var searchresult = 0;
				console.log('e_line_id' , e_line_id);
				if (e_line_id !== null && e_line_id !== '') {
				var searchname = e_line_id.split("!");  // 결재인

					// 'searchname' 배열이 비어 있지 않고 유효한 데이터를 포함하는 경우
					if (searchname.length > 0 && searchname[0] !== '') {
						for (var i = 0; i < searchname.length; i++) {
							if (checkString(searchname[i], $('#user_id').val())) {
								searchresult = 1;
								// console.log('searchresult = 1');
							}
						}
					} else {
						// 'searchname' 배열이 비어 있거나 유효한 데이터가 없는 경우
						console.log('No valid data in searchname array');
					}
				}

				
				
				// 2) 결재시간에 결재가 된 것이 있는지 찾는다.
				
				//	 var e_confirm= '최장중 부장 2023-01-23 18:10:10 : 김봉민 대표 2023-01-23 18:10:10 ';
				//	 var e_time = e_confirm.split(":");   // 결재시간	
				name_var = '';			
				if(!isNull(e_confirm))
					{
					
					var e_name = e_line_id.split("!");  // 결재인
					var e_time = e_confirm_id.split("!");   // 결재시간	
					// console.log('e_name.length');				 
					// console.log(e_name.length);		
					
					for (var i = 0; i < e_name.length; i++) {
							// console.log('변수변화 점검');
						
						
						if (searchresult = 1 && checkString(e_name[i], $('#user_id').val()) && (typeof e_time[i] === 'undefined'  || e_time[i] === '') ) {
					//		console.log('결재라인이 있는데 결재시간이 없습니다. 결재가능 상태');
							// name_var를 지정하면 결재가 가능한 상태입니다.
							name_var = $('#user_id').val();
							break;
						}
					}
					
				// 마지막으로 이름이 포함되어 있으면 결재권을 박탈한다.						
					for (var i = 0; i < e_time.length; i++) {
						if(checkString(e_time[i], $('#user_id').val()))							
							name_var = '';
							break;
					  }
		        
				}
				else
				{
					if(searchresult == 1 )
						name_var = $('#user_id').val();
				}
					
				if(isNull(e_confirm))
					e_confirm="";
				
				e_prograss = "(" + statusStr + ") " + e_confirm ;		
							
				// 화면 초기화
				$('#registdate').val(''); 	
				$('#e_title').val(''); 					
				$('#contents').val(''); 	
				$('#e_line').val(''); 	
				$('#e_line_id').val(''); 	
				$('#r_line').val(''); 	
				$('#r_line_id').val(''); 		
				$('#e_prograss').val(''); 	
				$('#done').val(''); 	
				$('#author_id').val(''); 	
				$('#author').val(''); 	
							
				if(eworks_item==='연차')
				{
				var textarea = document.getElementById("contents");
				if (textarea) {
					textarea.style.display = "none";
					var jsonContent = JSON.parse(contents); // Assuming 'contents' is a JSON string
					var htmlContainer = document.getElementById('htmlContainer');

					// Create a mapping of keys to Korean
					var keyMapping = {																		
						"author" : "신청인",
						"al_askdatefrom": "신청일 시작",
						"al_askdateto": "신청일 종료",
						"al_usedday": "신청 기간 산출",
						"al_content": "신청 사유"						
					};

					var tableHtml = '<div class="d-flex justify-content-center">  <table class="table table-bordered" style="width:40%;">  <tbody>';					
					// Iterate over the jsonContent to create table rows
					for (var key in jsonContent) {
						if (jsonContent.hasOwnProperty(key) && keyMapping[key]) { // Check if key is in the mapping
							tableHtml += '<tr>';							
							tableHtml += '<td class="text-center fw-bold" >' + keyMapping[key] + '</td>'; // Use the Korean mapping
							tableHtml += '<td class="text-start  text-dark" >' + (jsonContent[key] === null ? '' : jsonContent[key]) + '</td>';
							tableHtml += '</tr>';
						}
					}					
					tableHtml += '</tbody> </table> </div> ';

					htmlContainer.innerHTML = tableHtml;

					// Set all input elements inside htmlContainer to readonly
					var inputs = htmlContainer.querySelectorAll('input, textarea, select');
					inputs.forEach(function(input) {
						if (input.tagName === 'SELECT') {
							input.setAttribute('disabled', true);
						} else {
							input.setAttribute('readonly', true);
						}
					});
				}
					
				}
				else if (eworks_item === '원자재구매') {
					var textarea = document.getElementById("contents");
					if (textarea) {
						textarea.style.display = "none";
						var jsonContent = JSON.parse(contents); // Assuming 'contents' is a JSON string
						var htmlContainer = document.getElementById('htmlContainer');

						// Create a mapping of keys to Korean
						var keyMapping = {																		
							"outworkplace": "현장명",
							"company": "사급업체명",
							"supplier": "공급업체명",
							"steel_item": "철판종류",
							"spec": "규격(사이즈)",
							"steelnum": "수량",
							"request_comment": "비고"						
						};

						var tableHtml = '<table class="table table-bordered" style="width:60%;">  <tbody>';

						// Iterate over the jsonContent to create table rows
						for (var key in jsonContent) {
							if (jsonContent.hasOwnProperty(key) && keyMapping[key]) { // Check if key is in the mapping
								tableHtml += '<tr>';
								tableHtml += '<td class="text-center" >' + keyMapping[key] + '</td>'; // Use the Korean mapping
								tableHtml += '<td class="text-start  text-primary" >' + (jsonContent[key] === null ? '' : jsonContent[key]) + '</td>';
								tableHtml += '</tr>';
							}
						}

						tableHtml += '</tbody> </table>';

						htmlContainer.innerHTML = tableHtml;

						// Set all input elements inside htmlContainer to readonly
						var inputs = htmlContainer.querySelectorAll('input, textarea, select');
						inputs.forEach(function(input) {
							if (input.tagName === 'SELECT') {
								input.setAttribute('disabled', true);
							} else {
								input.setAttribute('readonly', true);
							}
						});
					}
				}
			else if (eworks_item === '부자재구매') {
				var textarea = document.getElementById("contents");
				if (textarea) {
					textarea.style.display = "none";
					var jsonContent = JSON.parse(contents); // Assuming 'contents' is a JSON string
					var htmlContainer = document.getElementById('htmlContainer');

					// Create a mapping of keys to Korean
					var keyMapping = {																		
						"outworkplace": "물품명",						
						"supplier": "공급업체명",						
						"spec": "규격",
						"steelnum": "수량",
						"payment": "구매방식",
						"request_comment": "비고"						
					};

					var tableHtml = '<table class="table table-bordered" style="width:60%;">  <tbody>';

					// Iterate over the jsonContent to create table rows
					for (var key in jsonContent) {
						if (jsonContent.hasOwnProperty(key) && keyMapping[key]) { // Check if key is in the mapping
							tableHtml += '<tr>';
							tableHtml += '<td class="text-center" >' + keyMapping[key] + '</td>'; // Use the Korean mapping
							tableHtml += '<td class="text-start  text-primary" >' + (jsonContent[key] === null ? '' : jsonContent[key]) + '</td>';
							tableHtml += '</tr>';
						}
					}

					tableHtml += '</tbody> </table>';

					htmlContainer.innerHTML = tableHtml;

					// Set all input elements inside htmlContainer to readonly
					var inputs = htmlContainer.querySelectorAll('input, textarea, select');
					inputs.forEach(function(input) {
						if (input.tagName === 'SELECT') {
							input.setAttribute('disabled', true);
						} else {
							input.setAttribute('readonly', true);
						}
					});
				}
			}
			else if (eworks_item === '부자재구매') {
						var textarea = document.getElementById("contents");
						if (textarea) {
							textarea.style.display = "none";
							var jsonContent = JSON.parse(contents); // Assuming 'contents' is a JSON string
							var htmlContainer = document.getElementById('htmlContainer');

							// Create a mapping of keys to Korean
							var keyMapping = {																		
								"outworkplace": "물품명",						
								"supplier": "공급업체명",						
								"spec": "규격",
								"steelnum": "수량",
								"payment": "구매방식",
								"request_comment": "비고"						
							};

							var tableHtml = '<table class="table table-bordered" style="width:60%;">  <tbody>';

							// Iterate over the jsonContent to create table rows
							for (var key in jsonContent) {
								if (jsonContent.hasOwnProperty(key) && keyMapping[key]) { // Check if key is in the mapping
									tableHtml += '<tr>';
									tableHtml += '<td class="text-center" >' + keyMapping[key] + '</td>'; // Use the Korean mapping
									tableHtml += '<td class="text-start  text-primary" >' + (jsonContent[key] === null ? '' : jsonContent[key]) + '</td>';
									tableHtml += '</tr>';
								}
							}

							tableHtml += '</tbody> </table>';

							htmlContainer.innerHTML = tableHtml;

							// Set all input elements inside htmlContainer to readonly
							var inputs = htmlContainer.querySelectorAll('input, textarea, select');
							inputs.forEach(function(input) {
								if (input.tagName === 'SELECT') {
									input.setAttribute('disabled', true);
								} else {
									input.setAttribute('readonly', true);
								}
							});
						}
					}
	
			else if (eworks_item === '지출결의서') {
				var textarea = document.getElementById("contents");
				if (textarea) {
					textarea.style.display = "none";
					var jsonContent = JSON.parse(contents); // 'contents'는 JSON 문자열이라고 가정
					var htmlContainer = document.getElementById('htmlContainer');

					// 키→한글 매핑
					var keyMapping = {
						"e_title": "지출결의서",
						"indate": "작성일",
						"author": "기안자",
						"paymentdate": "결재일",
						"requestpaymentdate": "지출요청일",
						"expense_data": "지출결의서 내용",
						"suppliercost": "결재 금액 합계",
						"companyCard": "법인카드"
					};

					// 원하는 순서대로 키 나열
					var orderedKeys = [
						"e_title",
						"indate",
						"author",
						"paymentdate",
						"requestpaymentdate",
						"expense_data",
						"companyCard",
						"suppliercost"
					];

					var tableHtml = '<table class="table table-bordered" style="width:100%;"><tbody>';

					orderedKeys.forEach(function(key) {
						if (!jsonContent.hasOwnProperty(key)) return;  // 해당 키 값이 없으면 건너뛰기

						tableHtml += '<tr>';
						// 제목 셀
						var title = keyMapping[key];
						if (key === "suppliercost") {
							tableHtml += '<td class="text-center text-danger fw-bold" style="width:20%;">' + title + '</td>';
						} else {
							tableHtml += '<td class="text-center fw-bold" style="width:20%;">' + title + '</td>';
						}

						// 값 셀
						var value = jsonContent[key];
						if (key === "expense_data" && Array.isArray(value)) {
							console.log('expense_data', value);
							// 지출 데이터는 중첩 테이블로 표시
							var expenseTable = ''
							+ '<table class="table table-sm table-bordered">'
							+   '<thead><tr>'
							+     '<th>적요</th><th>금액</th><th>비고</th>'
							+   '</tr></thead>'
							+   '<tbody>';

							value.forEach(function(item) {
								expenseTable += '<tr>'
											+   '<td>' + (item.expense_item  || '') + '</td>'
											+   '<td class="text-end">' 
											+     (item.expense_amount 
													? parseInt(item.expense_amount).toLocaleString() + ' 원' 
													: '') 
											+   '</td>'
											+   '<td>' + (item.expense_note  || '') + '</td>'
											+ '</tr>';
							});

							expenseTable += '</tbody></table>';
							value = expenseTable;
						}  else {
							// 일반 필드: 개행문자 → <br>
							value = value == null ? '' : String(value).replace(/\n/g, "<br>");
						}

						if (key === "suppliercost") {
							tableHtml += '<td class="text-start text-danger fw-bold">' + value + ' 원</td>';
						} else {
							tableHtml += '<td class="text-start">' + value + '</td>';
						}

						tableHtml += '</tr>';
					});

					tableHtml += '</tbody></table>';
					htmlContainer.innerHTML = tableHtml;

					// 입력 요소 readonly/disabled 처리
					htmlContainer.querySelectorAll('input, textarea, select').forEach(function(input) {
						if (input.tagName === 'SELECT') input.setAttribute('disabled', true);
						else input.setAttribute('readonly', true);
					});
				}
			}
		
			else if (eworks_item === '품의서') {
				var textarea = document.getElementById("contents");
				if (textarea) {
					textarea.style.display = "none";
					var jsonContent = JSON.parse(contents); // Assuming 'contents' is a JSON string
					var htmlContainer = document.getElementById('htmlContainer');

					// Create a mapping of keys to Korean
					var keyMapping = {																		
						"e_title": "품의서",						
						"indate": "작성일",						
						"outdate": "결재집행일",						
						"author": "기안자",						
						"outworkplace": "품의서 제목",	
						"al_content": "품의서 내역",	
						"request_comment": "품의 사유",						
						"suppliercost": "예상 비용"						
					};

					var tableHtml = '<table class="table table-bordered" style="width:100%;">  <tbody>';

					// Iterate over the jsonContent to create table rows
					for (var key in jsonContent) {
						if (jsonContent.hasOwnProperty(key) && keyMapping[key]) { // Check if key is in the mapping
							tableHtml += '<tr>';
							if (key  == "suppliercost")
								tableHtml += '<td class="text-center text-danger fw-bold" style="width:20%;" >' + keyMapping[key] + '</td>'; // Use the Korean mapping
							else
								tableHtml += '<td class="text-center fw-bold" style="width:20%;" >' + keyMapping[key] + '</td>'; // Use the Korean mapping
							
							// 개행 문자를 <br> 태그로 변환하여 td 요소에 삽입
							var value = jsonContent[key] === null ? '' : jsonContent[key].replace(/\n/g, "<br>");
							if (key == "suppliercost")
								tableHtml += '<td class="text-start text-danger fw-bold">' + value + ' 원 </td>';
							else
								tableHtml += '<td class="text-start">' + value + '</td>';

							tableHtml += '</tr>';
						}
					}
					
					tableHtml += '</tbody> </table>';
					htmlContainer.innerHTML = tableHtml;

					// Set all input elements inside htmlContainer to readonly
					var inputs = htmlContainer.querySelectorAll('input, textarea, select');
					inputs.forEach(function(input) {
						if (input.tagName === 'SELECT') {
							input.setAttribute('disabled', true);
						} else {
							input.setAttribute('readonly', true);
						}
					});
				}
			}					
					
		 else if (eworks_item === '일일지출내역서') {
			var textarea = document.getElementById("contents");
			if (!textarea) return;
			textarea.style.display = "none";
		
			var jsonContent = JSON.parse(contents);
			var htmlContainer = document.getElementById('htmlContainer');
		
			var keyMapping = {
				e_title:      "제목",
				indate:       "작성일",
				author:       "기안자",
				expense_data: "지출내역"
			};
		
			var orderedKeys = [
				"e_title",
				"indate",
				"author",
				"expense_data"
			];
		
			var tableHtml = '<table class="table table-bordered" style="width:100%;"><tbody>';
		
			orderedKeys.forEach(function(key) {
				if (!jsonContent.hasOwnProperty(key)) return;
		
				tableHtml += '<tr>';
				tableHtml += '<td class="text-center fw-bold" style="width:20%;">'
						  +   keyMapping[key]
						  + '</td>';
		
				if (key === 'expense_data' && Array.isArray(jsonContent[key])) {
					// 중첩 테이블: 지출내역 + 합계
					var nested = ''
						+ '<table class="table table-sm table-bordered mb-0" style="margin:0;">'
						+   '<thead><tr>'
						+     '<th>적요</th>'
						+     '<th class="text-end">금액</th>'
						+     '<th>예상지급일</th>'
						+   '</tr></thead>'
						+   '<tbody>';
		
					var totalAmount = 0;
					jsonContent[key].forEach(function(item) {
						var amt = item.amount || 0;
						totalAmount += amt;
						nested += '<tr>'
								+   '<td class="text-start" style="padding-left: 50px;">' + (item.content || '') + '</td>'
								+   '<td class="text-end">' 
								+     Number(amt).toLocaleString() + ' 원'
								+   '</td>'
								+   '<td>' + (item.payDate || '') + '</td>'
								+ '</tr>';
					});
		
					// 합계 행
					nested += '<tr>'
							+   '<td class="fw-bold">합계</td>'
							+   '<td class="text-end text-danger fw-bold">' 
							+     totalAmount.toLocaleString() + ' 원'
							+   '</td>'
							+   '<td></td>'
							+ '</tr>';
		
					nested += '</tbody></table>';
					tableHtml += '<td class="p-0">' + nested + '</td>';
		
				} else {
					var value = jsonContent[key];
					if (value == null) value = '';
					value = String(value).replace(/\n/g, '<br>');
					tableHtml += '<td class="text-start">' + value + '</td>';
				}
		
				tableHtml += '</tr>';
			});
		
			tableHtml += '</tbody></table>';
			htmlContainer.innerHTML = tableHtml;
		
			htmlContainer.querySelectorAll('input, textarea, select').forEach(function(el) {
				if (el.tagName === 'SELECT') el.disabled = true;
				else el.readOnly = true;
			});
		}
					

			
			if(isNull(eworks_item))
				eworks_item = '일반';
											
				function safeTrim(value) {
					return (value !== null && value !== undefined) ? String(value).trim() : '';
				}

				$('#registdate').val(safeTrim(registdate)); 				
				$('#e_title').val(safeTrim(e_title)); 	
				$('#eworks_item').val(safeTrim(eworks_item)); 
				$('#contents').val(safeTrim(contents)); 					
				$('#author').val(safeTrim(author)); 	
				$('#author_id').val(safeTrim(author_id)); 	
				// $('#author').val(safeTrim(author)); 	
				// $('#author_id').val(safeTrim(author_id)); 	
				$('#e_line').val(safeTrim(e_line)); 	
				$('#e_line_id').val(safeTrim(e_line_id)); 	
				$('#r_line').val(safeTrim(r_line)); 	
				$('#r_line_id').val(safeTrim(r_line_id)); 	
				$('#e_confirm').val(safeTrim(e_confirm)); 	
				$('#e_confirm_id').val(safeTrim(e_confirm_id)); 	
				$('#e_prograss').val(safeTrim(e_prograss)); 	
				$('#done').val(safeTrim(done)); 					
				$('#numdisplay').text(safeTrim(e_num)); // 자료번호 화면에 출력
			
				// console.log(" 조회창 버튼 readonly 속성 부여");
				// console.log("status", status);
								
				// 모달 내의 input, textarea, button 요소에 대한 속성 변경을 처리하는 함수
				function setModalElementsReadonly(readonly) {
					var modalInputs = document.querySelectorAll('#eworks_viewmodal input');					
					var modalTextareas = document.querySelectorAll('#eworks_viewmodal textarea');
					var modalButtons = document.querySelectorAll('#eworks_viewmodal button');

					// 예외로 처리할 버튼 ID 목록
					var excludeButtonIds = ['closeModaldetailBtn', 'closesecondModalBtn', 'eworks_saveBtn', 'eworks_approvalBtn', 'eworks_delBtn', 'eworks_sendBtn', 'eworks_recallBtn', 'eworks_rejectBtn', 'eworks_waitBtn'];

					// input과 textarea 요소 처리
					[...modalInputs, ...modalTextareas].forEach(function(element) {
						element.readOnly = readonly;
					});

					// button 요소 처리
					modalButtons.forEach(function(button) {
						if (!excludeButtonIds.includes(button.id)) {
							button.disabled = readonly;
						}
					});
				}


			if(id==='') 		 
				 {	 	
					$('#registdate').val(getCurrentDateTime()); 	
					$('#e_title').val(''); 						
					$('#contents').val(''); 						
					$('#e_line').val(''); 	
					$('#e_line_id').val(''); 	
					$('#r_line').val(''); 	
					$('#r_line_id').val(''); 						
					$('#status').val('draft'); 	
					status = 'draft';
					
				   }	
			
				// 상태에 따라 함수 호출
				if(status !== null && status !== 'draft' && status !== '' ) {
					setModalElementsReadonly(true);
				} else {
					setModalElementsReadonly(false);
				}

			 console.log('status');
			 console.log(status);			
								
			// 결재권자이면 버튼을 다르게 부여한다. 승인/거절/보류   
			// 결재권자에 해당되면 버튼을 다르게 띄워준다.
			let str = $("#user_id").val();
			 
			let url = "/eworks/eworksBtn.php";				 

			if (ajaxReq2 !== null) {
					ajaxReq2.abort();
				}

				 // ajax 요청 생성
			ajaxReq2 =$.ajax({
				  url:  url ,
				  type: 'POST',
				  data: $("#eworks_board_form").serialize() ,
				  success: function(response) {					  	
				  
				  $('#eworksBtn').html(response);												
					// console.log(response);		


					// show로 보여주고	
					setTimeout(function(){ 
						$("#eworks_viewmodal").modal("show");							
					 }, 1000); //중복 방지를 위해 타임아웃 설정    

					$("#eworks_viewmodal").on("shown.bs.modal", function () {
						// 모달에 대해 shown.bs.modal 가동하고										
						isModalOpen = true; // 모달이 열리면 true로 설정
						$('.sideEworksBanner').css('display', 'none'); // sideEworksBanner 숨김
						
						 
						  // 모달창에서 
						  $('#eworks_delBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });	
						  
						  $('#eworks_viewExceptBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });						  
						  $('#eworks_approvalviewExceptBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });	
						  // 모달창에서 결재요청
						  $('#eworks_sendBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });		
						  // 모달창에서 회신
						  $('#eworks_recallBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });	
						  // 모달창에서 
						  $('#eworks_approvalBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });	
						  // 모달창에서 
						  $('#eworks_closeviewBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });	
						  // 모달창에서 
						  $('#eworks_rejectBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });		
						  // 모달창에서 
						  $('#eworks_waitBtn').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });		
						  // 모달창에서 버튼 이벤트 막기 처리 행추가
						  $('.btnClear').on('click', function(e) {
								e.preventDefault(); // 기본 이벤트 동작 막기
							// 클릭 이벤트 처리 로직    
						  });				

					
					$("#closeModaldetailBtn").click(function(){ 	    
						$('#eworks_viewmodal').modal('hide');					
					});					

					// eworks 저장버튼 실행	(임시저장 의미) 결재 요청전
				$("#eworks_saveBtn").click( function() {
					
						
						 if($("#e_line").val() == '')
						 {
							  Toastify({
									text: "결재라인은 반드시 있어야 합니다.",
									duration: 3000,
									close:true,
									gravity:"top",
									position: "center",
									style: {
										background: "linear-gradient(to right, #00b09b, #96c93d)"
									},
								}).showToast();	
							 
							 return false;
							 
						 }
						
						 if($("#e_title").val() == '')
						 {
							  Toastify({
									text: "제목은 반드시 있어야 합니다.",
									duration: 3000,
									close:true,
									gravity:"top",
									position: "center",
									style: {
										background: "linear-gradient(to right, #00b09b, #96c93d)"
									},
								}).showToast();	
							 
							 return false;
							 
						 }
									
					
						// 버튼 비활성화
						var btn = $(this);
						if(btn.prop('disabled')) return false;
						btn.prop('disabled', true);
					 
					 // 저장버튼 일시적으로 끝냄
					 // $('#orderSaveBtn').off('click');		
						   
						   if( $("#e_title").val() == '')
							 {
							   alert("제목은 필수항목입니다. 확인해주세요.");	
							   btn.prop('disabled', false);
							   return;
							 }	
								
							var e_num =  $("#e_num").val();
							
							 // console.log('e_num saveBtn 변화 관찰 : ' + $("#e_num").val()	);							   
							if(Number(e_num)!= 0 )  // 레코드 번호로 수정과 삽입을 구분함.
									  $("#SelectWork").val('update');  // 저장이 수정버튼의 역할을 함/ 파일 추가업로드시도 동작.
									else
										$("#SelectWork").val('insert');
									
							// 폼데이터 전송시 사용함 Get form         
							var form = $('#eworks_board_form')[0];  	    
							// Create an FormData object          
							var orderdata = new FormData(form); 	

							// console.log(orderdata);				

						if (ajaxReq !== null) {
								ajaxReq.abort();
							}

							 // ajax 요청 생성
						 ajaxReq = $.ajax({					
								url: "/eworks/process.php",
								enctype: 'multipart/form-data',    // file을 서버에 전송하려면 이렇게 해야 함 주의										
								processData: false,    
								contentType: false,      
								cache: false,           
								timeout: 30000, 
								type: "post",		
								data: orderdata,		
								dataType: 'json',
								success : function(data){									
									//성공했을때 동작해야될 코드
									
										// console.log('data ' + data ) ;
																								 
										 // 신규로 하면 수정모드로 변경해 준다.
										 $("#e_num").val( data["e_num"]);  // 번호를 기억해 준다.
										 $("#SelectWork").val('update');  // 저장이 수정버튼의 역할을 함/ 파일 추가업로드시도 동작.
									 
										// console.log('저장된 e_num ' + data["e_num"] ) ;
										
										 Toastify({
												text: "파일 저장 완료!",
												duration: 2000,
												close:true,
												gravity:"top",
												position: "center",
												style: {
													background: "linear-gradient(to right, #00b09b, #96c93d)"
												},
											}).showToast();									

											  btn.prop('disabled', false); // 버튼 다시 활성화시킴						
									   

								}  ,
								error : function( jqxhr , status , error ){
									console.log( jqxhr , status , error );
											} 			      		
							   });		

					});		
				
				// 전자결재 삭제 실행	
				$("#eworks_delBtn").click( function() {

				// 버튼 비활성화
				var btn = $(this);
				if(btn.prop('disabled')) return false;
				btn.prop('disabled', true);
				
				// 삭제할 레코드 번호를 e_num에 넣어야 합니다.
				
					// 레코드 번호를 저장한다.
					const id = $("#e_num").val();
					const status = $("#status").val();
					
					if(id !==null || id!=='')
						  e_num = Number(id);
					 
				 // console.log('e_num');
				 // console.log(e_num);
				 
				 if( status === 'noend' || status === 'end' || status === 'ing' )
				 {
						
						Toastify({
									text: "삭제불가 결재중이거나 결재완료는 삭제가 안됩니다.",
									duration: 3000,
									close:true,
									gravity:"top",
									position: "center",
									style: {
										background: "linear-gradient(to right, #00b09b, #96c93d)"
									},
								}).showToast();						
							   

							setTimeout(function() {							
									}, 4000);				   
							   
				 }
					else
						{
						// DATA 삭제버튼 클릭시
							Swal.fire({ 
								   title: '전자결제 삭제', 
								   text: " 삭제는 신중! '\n 정말 삭제 하시겠습니까?", 
								   icon: 'warning', 
								   showCancelButton: true, 
								   confirmButtonColor: '#3085d6', 
								   cancelButtonColor: '#d33', 
								   confirmButtonText: '삭제', 
								   cancelButtonText: '취소' })
								   .then((result) => { if (result.isConfirmed) { 
								   
									$("#SelectWork").val('deldata');
									
								if (ajaxReq !== null) {
										ajaxReq.abort();
									}

									 // ajax 요청 생성
								 ajaxReq = $.ajax({	
												url: "/eworks/process.php",
												type: "post",		
												data: $("#eworks_board_form").serialize(),
												dataType:"json",  // json형태로 보냄
												success : function( data ){															
														// console.log('저장된 e_num ' + $("#e_num").val()) ;													
														 Toastify({
																text: "파일 삭제 완료!",
																duration: 3000,
																close:true,
																gravity:"top",
																position: "center",
																style: {
																	background: "linear-gradient(to right, #00b09b, #96c93d)"
																},
															}).showToast();									
													
													btn.prop('disabled', false); // 버튼 다시 활성화시킴
																															
													  setTimeout(function() {
																  // 모달창 닫기
																 $("#eworks_viewmodal").modal("hide");
															   }, 1000);
															   
														setTimeout(function(){ 
																refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
														 }, 1000); //중복 방지를 위해 타임아웃 설정   
																	
													},
													error : function( jqxhr , status , error ){
														console.log( jqxhr , status , error );
												} 			      		
											   });												
								   } });	

							}

					btn.prop('disabled', false);  // 버튼 활성화
					
					}); // end of Del function			
												
				
										
				// 전자메일 결제회수	(작성자만 사용함)
				$("#eworks_recallBtn").click( function() {

				// 저장하고 전송하는것까지 실행
				
				 if($("#e_line").val() == '')
				 {
					  Toastify({
							text: "결재라인은 반드시 있어야 합니다.",
							duration: 3000,
							close:true,
							gravity:"top",
							position: "center",
							style: {
								background: "linear-gradient(to right, #00b09b, #96c93d)"
							},
						}).showToast();	
					 
					 return false;
					 
				 }
				
				 if($("#e_title").val() == '')
				 {
					  Toastify({
							text: "제목은 반드시 있어야 합니다.",
							duration: 3000,
							close:true,
							gravity:"top",
							position: "center",
							style: {
								background: "linear-gradient(to right, #00b09b, #96c93d)"
							},
						}).showToast();	
					 
					 return false;
					 
				 }
				
					// 레코드 번호를 저장한다.
					const id = $("#e_num").val();
					if(id !==null || id!=='')
						  e_num = Number(id);
					  
					Swal.fire({ 
						   title: '결재회신', 
						   text: " 결재회신! '\n 정말 회수 하시겠어요?", 
						   icon: 'info', 
						   showCancelButton: true, 
						   confirmButtonColor: '#3085d6', 
						   cancelButtonColor: '#d33', 
						   confirmButtonText: '결재회수', 
						   cancelButtonText: '취소' })
						   .then((result) => { if (result.isConfirmed) { 
						   
						   
						   // 저장하고 전송하기	
						
							e_num =  $("#e_num").val();					
							   
							$("#SelectWork").val('recall');
						   
									
							// 폼데이터 전송시 사용함 Get form         
							var form = $('#eworks_board_form')[0];  	    
							// Create an FormData object          
							var orderdata = new FormData(form); 	

					if($("#SelectWork").val() == 'recall')
					 {
						 
						if (ajaxReq2 !== null) {
								ajaxReq2.abort();
							}

					 // ajax 요청 생성
							 ajaxReq2 = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄	
										success : function(data){									
						   
										$("#SelectWork").val('draft');
										
									if (ajaxReq1 !== null) {
											ajaxReq1.abort();
										}

										 // ajax 요청 생성
									 ajaxReq1 = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄
										success : function( data ){															
												// console.log('결재올린 e_num ' + $("#e_num").val()) ;													
												 Toastify({
														text: "결재회수 완료!",
														duration: 3000,
														close:true,
														gravity:"top",
														position: "center",
														style: {
															background: "linear-gradient(to right, #00b09b, #96c93d)"
														},
													}).showToast();									
											
											 // $("#eworksel").val('send'); 	
											 
											  setTimeout(function() {
														  // 모달창 닫기
												 $("#eworks_viewmodal").modal("hide");
											   }, 1000);
											   
												setTimeout(function(){ 
														refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
												 }, 1000); //중복 방지를 위해 타임아웃 설정   
															
											},
											error : function( jqxhr , status , error ){
												console.log( jqxhr , status , error );
										} 			      		
									   });												
									   
								}  ,
								error : function( jqxhr , status , error ){
									console.log( jqxhr , status , error );
											} 			      		
							   });		
							}  // end of insert 일때
							
						   

							 } });		 // end of swal function
						
					}); // end of function			
				
															
				// 전자메일 결재요청	(작성자만 사용함)
				$("#eworks_sendBtn").click( function() {

				// 저장하고 전송하는것까지 실행
				
				 if($("#e_line").val() == '')
				 {
					  Toastify({
							text: "결재라인은 반드시 있어야 합니다.",
							duration: 3000,
							close:true,
							gravity:"top",
							position: "center",
							style: {
								background: "linear-gradient(to right, #00b09b, #96c93d)"
							},
						}).showToast();	
					 
					 return false;
					 
				 }
				
				 if($("#e_title").val() == '')
				 {
					  Toastify({
							text: "제목은 반드시 있어야 합니다.",
							duration: 3000,
							close:true,
							gravity:"top",
							position: "center",
							style: {
								background: "linear-gradient(to right, #00b09b, #96c93d)"
							},
						}).showToast();	
					 
					 return false;
					 
				 }
				
					// 레코드 번호를 저장한다.
					const id = $("#e_num").val();
					if(id !==null || id!=='')
						  e_num = Number(id);
					  
					Swal.fire({ 
						   title: '저장 후 결재요청', 
						   text: " 결재요청! '\n 정말 결재를 올리시겠어요?", 
						   icon: 'info', 
						   showCancelButton: true, 
						   confirmButtonColor: '#3085d6', 
						   cancelButtonColor: '#d33', 
						   confirmButtonText: '결재요청', 
						   cancelButtonText: '취소' })
						   .then((result) => { if (result.isConfirmed) { 
						   
						   
						   // 저장하고 전송하기	
						
							e_num =  $("#e_num").val();					
							   
							if(Number(e_num)!= 0 )  // 레코드 번호로 수정과 삽입을 구분함.
									  $("#SelectWork").val('update');  // 저장이 수정버튼의 역할을 함/ 파일 추가업로드시도 동작.
									else
										$("#SelectWork").val('insert');
						   
									
							// 폼데이터 전송시 사용함 Get form         
							var form = $('#eworks_board_form')[0];  	    
							// Create an FormData object          
							var orderdata = new FormData(form); 	

					if($("#SelectWork").val() == 'insert')
					 {
						 
						if (ajaxReq2 !== null) {
								ajaxReq2.abort();
							}

					 // ajax 요청 생성
							 ajaxReq2 = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄	
										success : function(data){									
						   
										$("#SelectWork").val('send');
										
									if (ajaxReq1 !== null) {
											ajaxReq1.abort();
										}

										 // ajax 요청 생성
									 ajaxReq1 = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄
										success : function( data ){															
												// console.log('결재올린 e_num ' + $("#e_num").val()) ;													
												 Toastify({
														text: "결재요청 완료!",
														duration: 3000,
														close:true,
														gravity:"top",
														position: "center",
														style: {
															background: "linear-gradient(to right, #00b09b, #96c93d)"
														},
													}).showToast();									
											
											 // $("#eworksel").val('send'); 	
											 
											  setTimeout(function() {
														  // 모달창 닫기
												 $("#eworks_viewmodal").modal("hide");
											   }, 1000);
											   
												setTimeout(function(){ 
														refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
												 }, 1000); //중복 방지를 위해 타임아웃 설정   
															
											},
											error : function( jqxhr , status , error ){
												console.log( jqxhr , status , error );
										} 			      		
									   });												
									   
								}  ,
								error : function( jqxhr , status , error ){
									console.log( jqxhr , status , error );
											} 			      		
							   });		
							}  // end of insert 일때
							
						else {  // insert가 아닐때

							// ajax 요청 생성
								$("#SelectWork").val('send');
										
									if (ajaxReq1 !== null) {
											ajaxReq1.abort();
										}

										 // ajax 요청 생성
									 ajaxReq1 = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄
										success : function( data ){															
											// 	console.log('결재올린 e_num ' + $("#e_num").val()) ;													
												 Toastify({
														text: "결재요청 완료!",
														duration: 3000,
														close:true,
														gravity:"top",
														position: "center",
														style: {
															background: "linear-gradient(to right, #00b09b, #96c93d)"
														},
													}).showToast();									
											
											 // $("#eworksel").val('send'); 	
											 
											  setTimeout(function() {
														  // 모달창 닫기
												 $("#eworks_viewmodal").modal("hide");
											   }, 1000);
																		   
												setTimeout(function(){ 
														refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
												 }, 1000); //중복 방지를 위해 타임아웃 설정   
															
											},
											error : function( jqxhr , status , error ){
												console.log( jqxhr , status , error );
										} 			      		
									   });												
							
							 }										
						   
						   

							 } });		 // end of swal function
						
					}); // end of function			
				
					
				 // 전자메일 닫기	
				$("#eworks_closeviewBtn").click( function() {
					 $("#eworks_viewmodal").modal("hide");
				});
				
				 // 전자메일 결재승인	
				$("#eworks_approvalBtn").click( function() {

				
				// 삭제할 레코드 번호를 num에 넣어야 합니다.
				
				// 레코드 번호를 저장한다.
				const id = $("#e_num").val();
				if(id !==null || id!=='')
					  e_num = Number(id);
		
				// DATA 삭제버튼 클릭시
					Swal.fire({ 
						   title: '전자결재 처리', 
						   text: " 결재승인! '\n 정말 결재를 진행하시겠어요?", 
						   icon: 'info', 
						   showCancelButton: true, 
						   confirmButtonColor: '#3085d6', 
						   cancelButtonColor: '#d33', 
						   confirmButtonText: '결재승인', 
						   cancelButtonText: '취소' })
						   .then((result) => { if (result.isConfirmed) { 						   
								$("#SelectWork").val('approval');
								
						if (ajaxReq !== null) {
								ajaxReq.abort();
							}

							 // ajax 요청 생성
						 ajaxReq = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄
										success : function( data ){															
												// console.log('결재올린 e_num ' + $("#e_num").val()) ;													
												 Toastify({
														text: "결재처리 완료!",
														duration: 3000,
														close:true,
														gravity:"top",
														position: "center",
														style: {
															background: "linear-gradient(to right, #00b09b, #96c93d)"
														},
													}).showToast();									
											
											 // $("#eworksel").val('send'); 	
											 
											  setTimeout(function() {
														  // 모달창 닫기
												 $("#eworks_viewmodal").modal("hide");
											   }, 1000);
											   
												setTimeout(function(){ 
														refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
												 }, 1000); //중복 방지를 위해 타임아웃 설정   
															
											},
											error : function( jqxhr , status , error ){
												console.log( jqxhr , status , error );
										} 			      		
									   });												
						   } });	

					}); 		
				
					
				 // 전자결재 반려	
				$("#eworks_rejectBtn").click( function() {
					
				// 레코드 번호를 저장한다.
				const id = $("#e_num").val();
				if(id !==null || id!=='')
					  e_num = Number(id);
			 
				 // console.log('e_num');
				 // console.log(e_num);

				// DATA 삭제버튼 클릭시
					Swal.fire({ 
						   title: '전자결재 반려처리', 
						   text: " 결재반려! '\n 정말 결재를 반려하시겠어요?", 
						   icon: 'warning', 
						   showCancelButton: true, 
						   confirmButtonColor: '#3085d6', 
						   cancelButtonColor: '#d33', 
						   confirmButtonText: '결재반려', 
						   cancelButtonText: '취소' })
						   .then((result) => { if (result.isConfirmed) { 
						   
							$("#SelectWork").val('reject');
							
							
							
						if (ajaxReq !== null) {
								ajaxReq.abort();
							}

							 // ajax 요청 생성
						 ajaxReq = $.ajax({	
										url: "/eworks/process.php",
										type: "post",		
										data: $("#eworks_board_form").serialize(),
										dataType:"json",  // json형태로 보냄
										success : function( data ){															
											// 	console.log('결재올린 e_num ' + $("#e_num").val()) ;													
												 Toastify({
														text: "결재반려 완료!",
														duration: 3000,
														close:true,
														gravity:"top",
														position: "center",
														style: {
																background: "linear-gradient(to right, #00b09b, #96c93d)"
															},
													}).showToast();									
											
											 // $("#eworksel").val('send'); 	
											 
											  setTimeout(function() {
														  // 모달창 닫기
												 $("#eworks_viewmodal").modal("hide");
											   }, 1000);
											   
												setTimeout(function(){ 
														refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
												 }, 1000); //중복 방지를 위해 타임아웃 설정   
															
											},
											error : function( jqxhr , status , error ){
												console.log( jqxhr , status , error );
										} 			      		
									   });												
						   } });	

					}); 		
				
						
				 // 전자메일  보류	
				$("#eworks_waitBtn").click( function() {

				
				// 삭제할 레코드 번호를 num에 넣어야 합니다.
				
				// 레코드 번호를 저장한다.
				const id = $("#e_num").val();
				if(id !==null || id!=='')
					  e_num = Number(id);

			// DATA 삭제버튼 클릭시
				Swal.fire({ 
					   title: '전자결재 보류처리', 
					   text: " 결재보류! '\n 정말 결재를 보류하시겠어요?", 
					   icon: 'warning', 
					   showCancelButton: true, 
					   confirmButtonColor: '#3085d6', 
					   cancelButtonColor: '#d33', 
					   confirmButtonText: '결재보류', 
					   cancelButtonText: '취소' })
					   .then((result) => { if (result.isConfirmed) { 
					   
						$("#SelectWork").val('wait');
						
					if (ajaxReq !== null) {
							ajaxReq.abort();
						}

						 // ajax 요청 생성
					 ajaxReq = $.ajax({	
									url: "/eworks/process.php",
									type: "post",		
									data: $("#eworks_board_form").serialize(),
									dataType:"json",  // json형태로 보냄
									success : function( data ){															
			//							console.log('결재올린 e_num ' + $("#e_num").val()) ;													
										 Toastify({
												text: "결재보류 완료!",
												duration: 3000,
												close:true,
												gravity:"top",
												position: "center",
												style: {
													background: "linear-gradient(to right, #00b09b, #96c93d)"
												},
											}).showToast();									
									
									 // $("#eworksel").val('send'); 	
										 
										  setTimeout(function() {
													  // 모달창 닫기
											 $("#eworks_viewmodal").modal("hide");
										   }, 1000);
										   
											setTimeout(function(){ 
													refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
											 }, 1000); //중복 방지를 위해 타임아웃 설정   
														
										},
										error : function( jqxhr , status , error ){
											console.log( jqxhr , status , error );
									} 			      		
								   });												
					   } });	

				}); 			
			
			
	

			
			});  // end of shown modal


           // ajax 비동기 방식은 결과값을 주는 시간이 일정하지 않아서 그 시간을 그 시간을 보장하지 않고 코딩을 하면....
		   // 절대로 맞는 결과값을 받을 수 없다. 이번 프로젝트를 통해서 많은 시간을 허비하면서 실전으로 배웠다.
		   // ajax를 쓰는 경우는 반드시 리턴값을 받고 또 그 리턴값으로 수정하고 또 리턴을 받을때 중복으로 처리하지 않으면
		   // 엄청난 에러에 직면한다.
		   // ajax는 모달을 사용하거나 비동기 방식으로 UI를 꾸밀때 필수요소인데, 정말 많은 시간을 허비하면서 배웠다.
		   // 잊지말자 이 것이 바로 ajax의 면모인 것을....

				}  ,
				error : function( jqxhr , status , error ){
					console.log( jqxhr , status , error );
							} 			      		
			   });	// 2번 ajax문장
		
			}  ,
	error : function( jqxhr , status , error ){
		console.log( jqxhr , status , error );
				} 			      		
   });	 // 첫번째 ajax문장		
		
}  // end of viewEworks_detail

// 의견 삭제	
eworks_delete_ripple = function (ripple_num)
{
	var btn = $(this); // 현재 버튼 참조 저장
	if (btn.prop('disabled')) return false;
			
	// 레코드 번호를 저장한다.
	$("#ripple_num").val(ripple_num);

	// DATA 삭제버튼 클릭시
		Swal.fire({ 
			   title: '의견 삭제', 
			   text: " 삭제! '\n 정말 삭제 하시겠습니까?", 
			   icon: 'warning', 
			   showCancelButton: true, 
			   confirmButtonColor: '#3085d6', 
			   cancelButtonColor: '#d33', 
			   confirmButtonText: '삭제', 
			   cancelButtonText: '취소' })
			   .then((result) => { if (result.isConfirmed) {

				// AJAX 요청 성공 또는 실패 후에 버튼을 다시 활성화
				ajaxReq.always(function() {
					btn.prop('disabled', false);
				});			   
			   
				$("#SelectWork").val('delete_ripple');
					
				if (ajaxReq !== null) {
						ajaxReq.abort();
					}

					 // ajax 요청 생성
				 ajaxReq = $.ajax({	
								url: "/eworks/process.php",
								type: "post",		
								data: $("#eworks_board_form").serialize(),
								dataType:"json",  // json형태로 보냄
								success : function( data ){															
										console.log('저장된 e_num ' + $("#e_num").val()) ;													
										 Toastify({
												text: "의견 삭제 완료!",
												duration: 3000,
												close:true,
												gravity:"top",
												position: "center",
												style: {
													background: "linear-gradient(to right, #00b09b, #96c93d)"
												},
											}).showToast();									
																					
									// console.log(data);
									
									 $("#ripple-" + ripple_num).remove(); // 댓글 요소 제거
																										   
									// refresheworks();
													
									},
									error : function( jqxhr , status , error ){
										console.log( jqxhr , status , error );
										// 사용자가 취소를 클릭한 경우, 버튼을 다시 활성화
										btn.prop('disabled', false);									
								} 			      		
							   });												
			   } 	})
		
}	

function createApprovalTable(e_line, e_confirm) {
    // e_line이 null이나 빈 문자열이 아닐 때만 실행
    if (e_line && e_line.trim() !== '') {
		// '!' 기준으로 문자열 분리
		var approvalNames = e_line.split('!');
		var approvalDates = e_confirm.split('!');

		// 테이블 요소 생성
		var table = $('<table>').addClass('table table-bordered');
		var thead = $('<thead>');
		var tbody = $('<tbody>');
		var nameRow = $('<tr>');
		var dateRow = $('<tr>');

		// 헤더 셀 추가
		thead.append($('<tr>').append($('<th>').attr('colspan', approvalNames.length).addClass('text-center fs-6').text('결재')));

		// 각 결재자 이름과 날짜를 행에 추가
		$.each(approvalNames, function(index, name) {
			nameRow.append($('<td>').addClass('text-center fs-6').css('height', '60px').text(name));
			dateRow.append($('<td>').addClass('text-center').text(approvalDates[index]));
		});

		// 테이블 구성
		tbody.append(nameRow).append(dateRow);
		table.append(thead).append(tbody);

		// 결과를 id="approvalTable"인 요소에 추가
		$('#approvalTable').empty().append(table);
	}
}
	

// 댓글 추가	
eworks_insert_ripple = function (e_num) {
    var btn = $(this);
    if (btn.prop('disabled')) return false;

    $("#ripple_num").val(ripple_num);

    ajaxReq.always(function() {
        btn.prop('disabled', false);
    });

    $("#SelectWork").val('insert_ripple');

    if (ajaxReq !== null) {
        ajaxReq.abort();
    }

    ajaxReq = $.ajax({    
        url: "/eworks/process.php",
        type: "post",        
        data: $("#eworks_board_form").serialize(),
        dataType: "json",
        success: function(data) {
            console.log('저장된 e_num ' + $("#e_num").val());
            Toastify({
                text: "의견 추가!",
                duration: 2000,
                close: true,
                gravity: "top",
                position: "center",
                style: {
                    background: "linear-gradient(to right, #00b09b, #96c93d)"
                },
            }).showToast();

			// Check if the user has delete permissions (set this variable appropriately in your PHP code)
			var canDelete = true;

			// Construct the new comment HTML
			var newCommentHtml = '<div class="card ripple-item" id="ripple-' + data.num + '" style="width:80%">' +
								 '<div class="row justify-content-center">' +
								 '<div class="card-body">' +
								 '<span class="mt-1 mb-2"> ▶&nbsp;&nbsp;' + data.content + ' ✔&nbsp;&nbsp;작성자: ' + data.author + ' | ' + data.regist_day;

			// Add delete button if the user can delete
			if (canDelete) {
				newCommentHtml += ' <a href="#" class="text-danger" onclick="eworks_delete_ripple(\'' + data.num + '\')"><ion-icon name="trash-outline"></ion-icon></a>';
			}

			// Close the span and div tags
			newCommentHtml += '</span></div></div></div>';

			// Append the new comment to the comments container
			$('#comments-container').append(newCommentHtml);


            // Optional: Clear the input field if needed
            // $('#your-input-field-id').val('');
        },
        error: function(jqxhr, status, error) {
            console.log(jqxhr, status, error);
            btn.prop('disabled', false);                                    
        }                   
    });
}
	
// 전자결재 restore	
restore = function (e_num, eworksPage)
{
	var btn = $(this); // 현재 버튼 참조 저장
	if (btn.prop('disabled')) return false;
			
	// 레코드 번호를 저장한다.
	$("#e_num").val(e_num);

	// DATA 삭제버튼 클릭시
		Swal.fire({ 
			   title: '전자결제 삭제 복구', 
			   text: " 복구! '\n 정말 복구 하시겠습니까?", 
			   icon: 'warning', 
			   showCancelButton: true, 
			   confirmButtonColor: '#3085d6', 
			   cancelButtonColor: '#d33', 
			   confirmButtonText: '복구', 
			   cancelButtonText: '취소' })
			   .then((result) => { if (result.isConfirmed) {

				// AJAX 요청 성공 또는 실패 후에 버튼을 다시 활성화
				ajaxReq.always(function() {
					btn.prop('disabled', false);
				});			   
			   
				$("#SelectWork").val('restore');
					
				if (ajaxReq !== null) {
						ajaxReq.abort();
					}

					 // ajax 요청 생성
				 ajaxReq = $.ajax({	
								url: "/eworks/process.php",
								type: "post",		
								data: $("#eworks_board_form").serialize(),
								dataType:"json",  // json형태로 보냄
								success : function( data ){															
										console.log('저장된 e_num ' + $("#e_num").val()) ;													
										 Toastify({
												text: "파일 복구 완료!",
												duration: 3000,
												close:true,
												gravity:"top",
												position: "center",
												style: {
													background: "linear-gradient(to right, #00b09b, #96c93d)"
												},
											}).showToast();									
																					
										setTimeout(function(){ 
												refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
										 }, 1000); //중복 방지를 위해 타임아웃 설정   
													
									},
									error : function( jqxhr , status , error ){
										console.log( jqxhr , status , error );
										// 사용자가 취소를 클릭한 경우, 버튼을 다시 활성화
										btn.prop('disabled', false);									
								} 			      		
							   });												
			   } 	})
		
}		
				
// 전자결재 처리 후 화면에서 제외	
approvalviewExcept = function (e_num, eworksPage)
{
	var btn = $(this); // 현재 버튼 참조 저장
	if (btn.prop('disabled')) return false;
	
    var selectedEworks = [];
	// 레코드 번호를 저장한다.	
	selectedEworks.push(e_num);  // date-id의 값을 가져와서 고유의 번호를 기억한다.

		Swal.fire({ 
			   title: '전자결재 처리', 
			   text: " 결재승인! '\n 정말 결재를 진행하시겠어요?", 
			   icon: 'info', 
			   showCancelButton: true, 
			   confirmButtonColor: '#3085d6', 
			   cancelButtonColor: '#d33', 
			   confirmButtonText: '결재승인', 
			   cancelButtonText: '취소' })
			   .then((result) => { if (result.isConfirmed) { 						   					
					
			if (ajaxReq !== null) {
					ajaxReq.abort();
				}
     
			 ajaxReq = $.ajax({		
                url: "/eworks/approvalSelected.php",
                type: "post",		
                data: { selectedIds: selectedEworks },
                dataType: "json",
                success: function(data) {
					console.log('전달된 data');
					console.log(data);
					
                    Toastify({
                        text: "선택 결재 완료!",
                        duration: 3000,
                        close: true,
                        gravity: "top",
                        position: "center",
                        style: {
                            background: "linear-gradient(to right, #00b09b, #96c93d)"
                        },
                    }).showToast();
					setTimeout(function(){ 
							refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
					 }, 1000); //중복 방지를 위해 타임아웃 설정    					

                },
                error: function(jqxhr, status, error) {
                    console.error(jqxhr, status, error);								
                }
            });
        }
    });
}		
					
// 전자결재 제외 실행	
viewExcept = function (e_num, eworksPage)
{
	var btn = $(this); // 현재 버튼 참조 저장
	if (btn.prop('disabled')) return false;
			
	// 레코드 번호를 저장한다.
	$("#e_num").val(e_num);

	// DATA 삭제버튼 클릭시
		Swal.fire({ 
			   title: '전자결제 삭제', 
			   text: " 삭제! '\n 정말 삭제 하시겠습니까?", 
			   icon: 'warning', 
			   showCancelButton: true, 
			   confirmButtonColor: '#3085d6', 
			   cancelButtonColor: '#d33', 
			   confirmButtonText: '삭제', 
			   cancelButtonText: '취소' })
			   .then((result) => { if (result.isConfirmed) {

				// AJAX 요청 성공 또는 실패 후에 버튼을 다시 활성화
				ajaxReq.always(function() {
					btn.prop('disabled', false);
				});			   
			   
				$("#SelectWork").val('except');
					
				if (ajaxReq !== null) {
						ajaxReq.abort();
					}

					 // ajax 요청 생성
				 ajaxReq = $.ajax({	
								url: "/eworks/process.php",
								type: "post",		
								data: $("#eworks_board_form").serialize(),
								dataType:"json",  // json형태로 보냄
								success : function( data ){															
									console.log('저장된 e_num ' + $("#e_num").val()) ;													
									 Toastify({
											text: "파일 삭제 완료!",
											duration: 3000,
											close:true,
											gravity:"top",
											position: "center",
											style: {
												background: "linear-gradient(to right, #00b09b, #96c93d)"
											},
										}).showToast();									
																					
									setTimeout(function(){ 
											refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
									 }, 1000); //중복 방지를 위해 타임아웃 설정   
													
									},
									error : function( jqxhr , status , error ){
										console.log( jqxhr , status , error );
										// 사용자가 취소를 클릭한 경우, 버튼을 다시 활성화
										btn.prop('disabled', false);									
								} 			      		
							   });												
			   } 	})
		
}		
				
// 선택된 항목들을 결재하는 함수
approvalSelectedEworks = function () 
{
    var selectedEworks = [];
    $('.checkItem:checked').each(function() {
        selectedEworks.push($(this).data('id'));  // date-id의 값을 가져와서 고유의 번호를 기억한다.
    });

    if (selectedEworks.length === 0) {
        alert('결재할 항목을 선택해주세요.');
        return;
    }

    console.log(selectedEworks);
    Swal.fire({ 
        title: '일괄결재', 
        text: "항목을 결재하시겠습니까?", 
        icon: 'info', 
        showCancelButton: true, 
        confirmButtonColor: '#3085d6', 
        cancelButtonColor: '#d33', 
        confirmButtonText: '승인', 
        cancelButtonText: '취소'
    }).then((result) => {
        if (result.isConfirmed) {

	   
			if (ajaxReq !== null) {
					ajaxReq.abort();
				}						
            
			 ajaxReq = $.ajax({		
                url: "/eworks/approvalSelected.php",
                type: "post",		
                data: { selectedIds: selectedEworks },
                dataType: "json",
                success: function(data) {
					console.log(data);
					
                    Toastify({
                        text: "선택 결재 완료!",
                        duration: 3000,
                        close: true,
                        gravity: "top",
                        position: "center",
                        style: {
                            background: "linear-gradient(to right, #00b09b, #96c93d)"
                        },
                    }).showToast();
					setTimeout(function(){ 
							refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
					 }, 1000); //중복 방지를 위해 타임아웃 설정    					

                },
                error: function(jqxhr, status, error) {
                    console.error(jqxhr, status, error);								
                }
            });
        }
    });
}

// 선택된 항목들을 삭제하는 함수
deleteSelectedEworks = function () 
{
    var selectedEworks = [];
    $('.checkItem:checked').each(function() {
        selectedEworks.push($(this).data('id'));  // date-id의 값을 가져와서 고유의 번호를 기억한다.
    });

    if (selectedEworks.length === 0) {
        alert('삭제할 항목을 선택해주세요.');
        return;
    }


    console.log(selectedEworks);
    Swal.fire({ 
        title: '선택 삭제', 
        text: "선택된 항목을 삭제하시겠습니까?", 
        icon: 'warning', 
        showCancelButton: true, 
        confirmButtonColor: '#3085d6', 
        cancelButtonColor: '#d33', 
        confirmButtonText: '삭제', 
        cancelButtonText: '취소'
    }).then((result) => {
        if (result.isConfirmed) {

	   
			if (ajaxReq !== null) {
					ajaxReq.abort();
				}		
							
            // 예시: selectedEworks 배열을 서버에 전송하여 삭제 처리
			 ajaxReq = $.ajax({		
                url: "/eworks/deleteSelected.php",
                type: "post",		
                data: { selectedIds: selectedEworks },
                dataType: "json",
                success: function(data) {
					console.log(data);
					
                    Toastify({
                        text: "선택된 항목 삭제 완료!",
                        duration: 3000,
                        close: true,
                        gravity: "top",
                        position: "center",
                        style: {
                            background: "linear-gradient(to right, #00b09b, #96c93d)"
                        },
                    }).showToast();
					setTimeout(function(){ 
							refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
					 }, 1000); //중복 방지를 위해 타임아웃 설정    					

                },
                error: function(jqxhr, status, error) {
                    console.error(jqxhr, status, error);								
                }
            });
        }
    });
}

	// PHP에서 세션 변수 'level' 읽기
	var level = "<?php echo isset($_SESSION['level']) ? $_SESSION['level'] : ''; ?>";

	// level 변수가 비어있지 않으면 함수 실행
	if (level !== '') {
		// 화면에 결재관련 숫자 표현
			// load_eworkslist();
	}


});
		
// 신규작성이며 삭제버튼 막기			
function eworks_movetoPage(eworksPage) 
{ 	  
			$("#eworksPage").val(eworksPage); 

			let url = '/eworks/list.php';

			if (ajaxReq !== null) {
				ajaxReq.abort();
			}

			 // ajax 요청 생성
			 ajaxReq =$.ajax({
				  url:  url ,
				  type: 'POST',
				  data: $("#eworks_board_form").serialize() ,
				  success: function(response) {				  	
							$('#eworks_list').html(response);							
							
					    // css active 속성주기 (선택된 것 표현)
				        const val = Number($("#choice").val());
                      	$(".nav-link").eq(val - 1).addClass("active");
					//  console.log('mevetoPage :');
					// console.log(response);
				  }
				});	  
}	 // end of movetoPage	

// 전자결재를 클릭하면 최초 실행되는 것	
// 전자결재를 클릭하면 최초 실행되는 것	
function eworksList()
{	
   if ($('#eworks_board_form').length) {
	 var URL =	"/eworks/load_list.php";	
		   
		if (ajaxReq !== null) {
			ajaxReq.abort();
		}

	 // ajax 요청 생성
	 ajaxReq = $.ajax({
		url: URL,
		type: "post",		
		data: $("#eworks_board_form").serialize(),
		dataType:"json",	
		success : function(data){	

			console.log('data result: ');
			console.log(data);
			// 거래처 납기일 등 기록하기		
				
			let num_arr= data["num_arr"];
			let e_title_arr= data["e_title_arr"];
			let contents_arr= data["contents_arr"];
			let registdate_arr= data["registdate_arr"];
			let status_arr= data["status_arr"];
			let e_line_arr= data["e_line_arr"];
			let e_line_id_arr= data["e_line_id_arr"];
			let e_confirm_arr= data["e_confirm_arr"];
			let r_line_arr= data["r_line_arr"];
			let r_line_id_arr= data["r_line_id_arr"];
			let recordtime_arr= data["recordtime_arr"];
			let author_arr= data["author_arr"];
			let author_id_arr= data["author_id_arr"];

			// input으로 레코드 번호 저장		
			
			// 화면 초기화
			$('#registdate').val(''); 	
			$('#e_title').val(''); 				
			$('#contents').val(''); 	
			$('#author').val(''); 	
			$('#e_line').val(''); 	
			$('#r_line').val(''); 		
			$('#author_id').val(''); 	
			$('#e_line_id').val(''); 	
			$('#r_line_id').val(''); 			
			
			$('#registdate').val(registdate_arr[e_num]); 				
			$('#e_title').val(e_title_arr[e_num]); 	
			$('#contents').val(contents_arr[e_num]); 	
			$('#author_id').val(author_id_arr[e_num]); 	
			$('#e_line_id').val(e_line_id_arr[e_num]); 	
			$('#r_line_id').val(r_line_id_arr[e_num]); 	
			$('#author').val(author_arr[e_num]); 	
			$('#e_line').val(e_line_arr[e_num]); 	
			$('#r_line').val(r_line_arr[e_num]); 	
				 
			 // console.log('선택된 배열속 진짜 e_num');
			 // console.log($('#e_num').val());
			},
		error : function( jqxhr , status , error ){
			console.log( jqxhr , status , error );
					} 			      		
	   });	

	// option은 데이터 복사를 위해서 사용한다.			
	// 레코드 번호를 저장한다.

	// 뒷배경 누를때 안닫히게
	$('#eworks_form').modal( {
	backdrop: 'static', keyboard : false });	

		  // 모달창에서 버튼 이벤트 막기 처리 행추가
	  $('#E_searchBtn').on('click', function(e) {
			e.preventDefault(); // 기본 이벤트 동작 막기
		// 클릭 이벤트 처리 로직    
	  });			
	  					  
///////////////////// input 필드 값 옆에 X 마크 띄우기 
///////////////////// input 필드 값 옆에 X 마크 띄우기 

		var btnClear = document.querySelectorAll('.btnClear');
		btnClear.forEach(function(btn){
		btn.addEventListener('click', function(e){
		btn.parentNode.querySelector('input').value = "";
		e.preventDefault(); // 기본 이벤트 동작 막기
		})
		})		  
	  
				
	setTimeout(function(){ 
		$("#eworks_form").modal("show");
	 }, 800); //중복 방지를 위해 타임아웃 설정    

	$("#eworks_form").on("shown.bs.modal", function () {
		isModalOpen = true; // 모달이 열리면 true로 설정
		$('.sideEworksBanner').css('display', 'none'); // sideEworksBanner 숨김
			  
	  // 뒷배경 누를때 안닫히게
		$('#eworks_form').modal( {
			backdrop: 'static', keyboard : false });		

			  // 모달창에서 버튼 이벤트 막기 처리 행추가
		  $('#E_searchBtn').on('click', function(e) {
				e.preventDefault(); // 기본 이벤트 동작 막기
			// 클릭 이벤트 처리 로직    
		  });	  
		  
		  // 모달창에서 버튼 이벤트 막기 처리 행추가
		  $('.btnClear').on('click', function(e) {
				e.preventDefault(); // 기본 이벤트 동작 막기
			// 클릭 이벤트 처리 로직    
		  });				  
			  
		 enterkey = function() {
			 
			 let url = '/eworks/list.php';
			 
				if (ajaxReq1 !== null) {
					ajaxReq1.abort();
				}

					 // ajax 요청 생성
				 ajaxReq1 =$.ajax({
					  url:  url ,
					  type: 'POST',
					  data: $("#eworks_board_form").serialize() ,
					  success: function(response) {					  
								$('#eworks_list').html(response);						
					},
				error : function( jqxhr , status , error ){
					console.log( jqxhr , status , error );
							} 
				 });					
			}	

			// search all
			$("#E_searchAllBtn").click( function() {
					
				$('#search').val(''); 	
					enterkey();
					
				});		
	
	});	  // end of shown modal
	
	$("#eworks_form").on("hidden.bs.modal", function () {
		// 여기에 모달이 닫힐 때 실행할 함수를 작성하세요
		isModalOpen = false; // 모달이 닫히면 false로 설정
		load_eworkslist();
	});	
  }
}  // end of eworksList
	
function update_eworks_nav() 
{
	$.ajax({
		url: "/eworks/eworks_nav.php?selnum=" + activeTab, 
		type: "GET", // 또는 POST, 데이터를 전송해야 하는 경우
		success: function(response) {
			// 서버에서 받은 HTML을 웹 페이지의 특정 부분에 삽입
			// 예를 들어, 탭을 표시할 부분의 ID가 "eworksNavContainer"라고 가정
			$("#eworksNavContainer").html(response);
		},
		error: function(xhr, status, error) {
			console.error("An error occurred: " + error);
		}
	});
}

function initializeContents() 
{
	var defaultContent = '<div id="htmlContainer">' +
						 '    <textarea id="contents" class="form-control" name="contents" rows="10">' +                    
						 '    </textarea>' +
						 '</div>';

    var divElement = document.getElementById("htmlContainer");
    if (divElement) {
        divElement.innerHTML = defaultContent;
    }
}
	
function setLine()
{
	// 결재라인 지정
	val = $("#e_line_id").val();
	popupCenter("/eworks/setline.php?e_line_id=" + val , '결재라인 지정', 600, 500);	  
}
  
function setRef()
{
	// 참조라인 지정
	val = $("#r_line_id").val();	
	popupCenter("/eworks/setRef.php?r_line_id=" + val , '참조인 지정', 600, 900);			
}

// 전자결재 각 항목별 해당 숫자 읽기
function load_eworkslist()
{	

   if ($('#eworks_board_form').length) {
	
	let url = '/eworks/load_eworks.php';
	if (ajaxReq4 !== null) {
			ajaxReq4.abort();
	}

	 // ajax 요청 생성
	 ajaxReq4 = $.ajax({
				  url:  url ,
				  type: 'POST',
				  data: $("#eworks_board_form").serialize() ,
				  dataType:"json",	  
				  success : function(data){	
				  
				             console.log('data result:  추적 ');
				             console.log(data);
													 
							if ($('#badge1').length > 0) {
								$('#badge1').text(data["val0"] === 0 ? '' : data["val0"]);
							}
							if ($('#badge2').length > 0) {
								$('#badge2').text(data["val1"] === 0 ? '' : data["val1"]);
							}
							if ($('#badge3').length > 0) {
								$('#badge3').text(data["val2"] === 0 ? '' : data["val2"]);
							}
							if ($('#badge4').length > 0) {
								$('#badge4').text(data["val3"] === 0 ? '' : data["val3"]);
							}
							if ($('#badge5').length > 0) {
								$('#badge5').text(data["val4"] === 0 ? '' : data["val4"]);
							}
							if ($('#badge6').length > 0) {
								$('#badge6').text(data["val5"] === 0 ? '' : data["val5"]);
							}
							if ($('#badge7').length > 0) {
								$('#badge7').text(data["val6"] === 0 ? '' : data["val6"]);
							}

														
							// 종 아이콘 및 "알림" 버튼 처리
							var bellIcon = document.getElementById('bellIcon');
							var alertEworks = document.getElementById('alert_eworks_bell');
							var badgeElement = document.getElementById('badge3');
							if (badgeElement) {								
								var badgeCount = parseInt(badgeElement.innerText);
								console.log('badgeCount');
								console.log(badgeCount);

								if (!isNaN(badgeCount) && badgeCount > 0) {
									bellIcon.style.display = 'inline';
									bellIcon.classList.add('blink');
									alertEworks.style.display = 'inline';
									alertEworks.classList.add('blink');
								} else {
									if(bellIcon) {
										bellIcon.style.display = 'none';
										bellIcon.classList.remove('blink');
										alertEworks.style.display = 'none';
										alertEworks.classList.remove('blink');
									}
								}
							}

							
							// $('#displaytmp').text(data["sql"]); // sql
				 
					},
					error : function( jqxhr , status , error ){
						console.log( jqxhr , status , error );
				} 			      		
			   });			   				
    }
}

function seltab(e_num) 
{
	
    $("#search").val('');  	
    activeTab = e_num;
	
	showLoadingIndicator(); // 로딩 시작
	

    // 여기에 해당 탭을 클릭했을 때 수행할 동작 추가
    // 예: 해당 탭에 대한 콘텐츠를 표시하거나 다른 동작 수행	

    // 탭에 따라 form의 hidden input 값 설정
    switch (e_num) {
        case 1:
            $('#choice').val(e_num);   
            $('#eworksel').val('draft');   
            break;
        case 2:
            $('#choice').val(e_num);   
            $('#eworksel').val('send');   
            break;
        case 3:
            $('#choice').val(e_num);   
            $('#eworksel').val('noend');   
            break;
        case 4:
            $('#choice').val(e_num);   
            $('#eworksel').val('ing');   
            break;
        case 5:
            $('#choice').val(e_num);   
            $('#eworksel').val('end');   
            break;
        case 6:
            $('#choice').val(e_num);   
            $('#eworksel').val('reject');   
            break;
        case 7:
            $('#choice').val(e_num);   
            $('#eworksel').val('wait');   
            break;
        case 8:
            $('#choice').val(e_num);   
            $('#eworksel').val('refer');   
            break;
        case 9:
            $('#choice').val(e_num);   
            $('#eworksel').val('trash');   
            break;
    }
	
	setTimeout(function(){ 
			refresheworks(); // 페이지 새로고침 또는 데이터 테이블 재로드
	 }, 1000); //중복 방지를 위해 타임아웃 설정   	
	 
	hideLoadingIndicator(); // 로딩 완료 
}

function refresheworks() {	
    update_eworks_nav();
	eworksList();	
	var eworksPage = document.getElementById('eworksPage');
	if(eworksPage)
		eworks_movetoPage($('#eworksPage').val());	
		
	console.log('activeTab');
	console.log(activeTab);	
}

// 전자결재 각 항목별 해당 숫자 읽기
function alert_eworkslist() {
	
  if ($('#eworks_board_form').length) {
    let url = '/eworks/load_eworks.php';
    
    if (ajaxReq3 !== null) {
        ajaxReq3.abort();
    }

    ajaxReq3 = $.ajax({
        url: url,
        type: 'POST',
        data: $("#eworks_board_form").serialize(),
        dataType: "json",
        success: function(data) {
            console.log(data);
            
            // 기존 '미결' 처리 (예: val2)
            var badge3 = data["val2"] === 0 ? '' : data["val2"];
            var alertEworks = document.getElementById('alert_eworks_bell');
            if (alertEworks) {
                if (Number(badge3) > 0) {
                    alertEworks.style.display = 'inline';
                    alertEworks.classList.add('blink');
                    if (!isModalOpen)
                        $('.sideEworksBanner').css('display', 'block'); // 미결 문서가 있으면 sideEworksBanner 벨표시
                } else {
                    alertEworks.style.display = 'none';
                    alertEworks.classList.remove('blink');
                    $('.sideEworksBanner').css('display', 'none'); // 미결 문서가 없으면 sideEworksBanner 벨표시 숨김
                }
            }
            
            // 추가: 각 탭의 배지 업데이트
            // load_eworks.php 에서 리턴한 데이터의 키는 "val0", "val1", ... 식으로 되어 있고,
            // index.php의 sideBanner에서 각 버튼의 배지 span id는 "badge" + tabId 입니다.
            Object.keys(data).forEach(function(key) {
                if (key.startsWith("val")) {
                    // "val" 뒤의 숫자를 tabId로 사용
                    let tabId = Number(key.substring(3)) + 1 ;
                    let badgeElement = document.getElementById('badge' + tabId);
                    if (badgeElement) {
                        let count = data[key];
                        // count가 0이면 빈 문자열, 0보다 크면 숫자를 표시
                        badgeElement.textContent = (Number(count) >= 0 ? count : '');
                    }
                }
            });
        },
        error: function(jqxhr, status, error) {
            console.log(jqxhr, status, error);
        }
    });
  }
}


function eworksItemChanged(selectElement) {
	var value = selectElement.value;
	var status = $("#status").val();

	if (value === "연차" && ( status=== "" || status=== null || status=== 'draft' ) ) {
			// '연차' 선택 시 수행할 작업
			openAnnualLeaveWindow();
		}
}

function openAnnualLeaveWindow() {
	// 연차 관련 작업 수행
	 popupCenter('/annualleave/write_form_ask.php', '등록/수정/삭제', 420, 720);

}


$(document).ready(function () {	
	
	 $(document).on('change', '#checkAll', function(e) {
        var checkboxes = document.querySelectorAll('.checkItem');
        for (var i = 0; i < checkboxes.length; i++) {
            checkboxes[i].checked = e.target.checked;
        }
    });

  	
});

$(document).ready(function () {			
	///////////////////// input 필드 값 옆에 X 마크 띄우기 
	///////////////////// input 필드 값 옆에 X 마크 띄우기 

	var btnClear = document.querySelectorAll('.btnClear');
	if(btnClear)
	{
		btnClear.forEach(function(btn){
			btn.addEventListener('click', function(e){
				btn.parentNode.querySelector('input').value = "";			
				e.preventDefault(); // 기본 이벤트 동작 막기
			  // 포커스 얻기
			  btn.parentNode.querySelector('input').focus();
			})
		})	
  	}
	
	$("#searchBtn").click(function(){  document.getElementById('board_form').submit();   });	

});
  
function SearchEnter(){
    if(event.keyCode == 13){
	 var page = document.getElementById('page');
	 if(page)
		$("#page").val('1');		
	
	document.getElementById('board_form').submit(); 
    }
}  	
	
	
// 특정 문자열이 포함되어 있는지 여부를 알려주는 함수	
function checkString(str, subStr) {
    if (str.includes(subStr)) {
        return true;
    } else {
        return false;
    }
}

// object가 null 여부를 판단해서 true, false 반환하는 함수
function isNull(obj) {
    if (obj === null || obj === '') {
        return true;
    } else {
        return false;
    }
}
	
$(document).ready(function() {
    // change_dateRange 클래스를 가진 버튼에 대한 클릭 이벤트 핸들러
    $('.change_dateRange').on('click', function() {
        setCookie('dateRange', '직접설정', 30);  
    });
});
	
	
function showLoadingIndicator() {
    document.getElementById('loadingIndicator').style.display = 'flex';
}

function hideLoadingIndicator() {
    document.getElementById('loadingIndicator').style.display = 'none';
}


// 작업 완료 후 오버레이 숨기기 예제
function hideOverlay() {
	$("#overlay").hide(); // 오버레이 숨기기
	$("button").prop("disabled", false); // 모든 버튼 활성화
}	

// 작업 완료 후 오버레이 숨기기 예제
function pagestartOverlay() {
	$("#overlay").show(); // 오버레이 표시
	$("button").prop("disabled", true); // 모든 버튼 비활성화		
			
	Toastify({
			text: "화면을 불러오는 중입니다. 잠시만 기다려주세요. ",
			duration: 5000,
			close:true,
			gravity:"top",
			position: "center",
			style: {
				background: "linear-gradient(to right, #00b09b, #96c93d)"
			},
		}).showToast();	
}	

