/* 페이징 관련 변수 */
let webTreatmentPetitTotalCount   = 0;
let webTreatmentPetitTotalPages   = 0;

/*aggird*/
let webTreatmentPetitAgGridData = [];

let delList = [];

/****************************************************************************
 * 검색 날짜 설정
 //(A:오늘, B:3일, C:7일, D:최근30일, E:최근90일, F:이번달, G:올해, H:지난주, I:지난달)
 ****************************************************************************/
function fn_webTreatmentPetitSetDate(param){
    if("A"==param){
        // 오늘
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchStartDate = year+'-'+month+'-'+day;
        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;
    }
    else if("B"==param){
        // 3일
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        toDate.setDate(toDate.getDate() - 3);
        year  = toDate.getFullYear();
        month = toDate.getMonth() + 1;
        day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchStartDate = year+'-'+month+'-'+day;
    }
    else if("C"==param){
        // 이번주
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        toDate.setDate(toDate.getDate() - 7);
        year  = toDate.getFullYear();
        month = toDate.getMonth() + 1;
        day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchStartDate = year+'-'+month+'-'+day;
    }
    else if("D"==param){
        // 최근30일
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        //최근30일
        toDate.setDate(toDate.getDate() - 30);
        startYear  = toDate.getFullYear();
        startMonth = toDate.getMonth() + 1;
        startDay   = toDate.getDate();

        if(startMonth < 10) startMonth = "0" + startMonth;
        if(startDay < 10) startDay = "0" + startDay;

        webTreatmentPetitSearchStartDate = startYear+'-'+startMonth+'-'+startDay;
        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

    }
    else if("E"==param){
        // 최근90일
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        toDate.setDate(toDate.getDate() - 90);
        year  = toDate.getFullYear();
        month = toDate.getMonth() + 1;
        day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchStartDate = year+'-'+month+'-'+day;
    }
    else if("F"==param){
        //F:이번달
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        webTreatmentPetitSearchStartDate = year+'-'+month+'-01';
    }
    else if("G"==param){
        // G:올해
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        webTreatmentPetitSearchStartDate = year+'-01-01';
    }
    else if("H"==param){
        // H:지난주, I:지난달
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        webTreatmentPetitSearchStartDate = year+'-01-01';
    }
    else if("I"==param){
        // I:지난달
        // 검색 종료일자
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        let day   = toDate.getDate();

        if(month < 10) month = "0" + month;
        if(day < 10) day = "0" + day;

        webTreatmentPetitSearchEndDate   = year+'-'+month+'-'+day;

        // 검색 시작일자
        webTreatmentPetitSearchStartDate = year+'-01-01';
    }

    $("#webTreatmentPetitSearchStartDate").val(webTreatmentPetitSearchStartDate).trigger("change");
    $("#webTreatmentPetitSearchEndDate").val(webTreatmentPetitSearchEndDate).trigger("change");
}


/****************************************************************************
 * 이벤트 정보 리스트 조회
 ****************************************************************************/
function fn_selectListWebTreatmentPetitJson(){
    let formData = new FormData();
    formData.append("menuClass", menuClass);
	formData.append("categoryDivCd", categoryDivCd);
    formData.append("webTreatmentPetitSearchKeywordParam0", webTreatmentPetitSearchKeywordParam0);
	formData.append("webTreatmentPetitSearchKeywordParam1", webTreatmentPetitSearchKeywordParam1);
	formData.append("webTreatmentPetitSearchKeywordParam2", webTreatmentPetitSearchKeywordParam2);
	formData.append("webTreatmentPetitSearchKeywordParam3", webTreatmentPetitSearchKeywordParam3);
    formData.append("webTreatmentPetitSort", webTreatmentPetitSort);
    formData.append("webTreatmentPetitDir", webTreatmentPetitDir);
    formData.append("webTreatmentPetitStart", webTreatmentPetitStart);
    formData.append("webTreatmentPetitLimit", webTreatmentPetitLimit);
    formData.append("webTreatmentPetitSearchStartDate", webTreatmentPetitSearchStartDate);
    formData.append("webTreatmentPetitSearchEndDate", webTreatmentPetitSearchEndDate);
    formData.append("webTreatmentPetitSearchDateType", webTreatmentPetitSearchDateType);

    $.ajax({
        url: encodeURI('/contentsBbs/getContentsBbsList.do'),
        data: formData,
        dataType: "json",
        processData: false,
        contentType: false,
        type: 'POST',
        async: true,
        success: function(data){
            if('0'==data.msgCode){
                // 페이징 처리
                webTreatmentPetitTotalCount  = data.totalCount;
                //$("#txt_noticeTotalCount").text(noticeTotalCount);

                webTreatmentPetitTotalPages = Math.ceil(webTreatmentPetitTotalCount/webTreatmentPetitLimit);

                // 리스트 조회
                webTreatmentPetitAgGridData = data.rows;
                webTreatmentPetitGridOptions.api.setRowData(webTreatmentPetitAgGridData);

                if(0<data.rows.length){
                    //페이징 처리
                    window.pagObj = $('#webTreatmentPetitPagination').twbsPagination({
                        startPage    : ((webTreatmentPetitStart/webTreatmentPetitLimit)+1),
                        totalPages   : (webTreatmentPetitTotalPages==0)?1:webTreatmentPetitTotalPages,
                        visiblePages : 10,
                        initiateStartPageClick: false,
                        prev         : '<img src="/image/web/page_navigation_arrow.svg" alt="prev"/>',
                        next         : '<img src="/image/web/page_navigation_arrow.svg" alt="next"/>',
                        first        : '',
                        last         : '',
                        onPageClick: function (treatmentpetit, page) {
                            fn_webTreatmentPetitPagination(page);
                        }
                    }).on('page', function (treatmentpetit, page) {
                        //console.info(page + ' (from treatmentpetit listening)');
                    });
                }
                else{

                }
            }
            else{
                modalEvent.danger("조회 오류", data.msgDesc);
            }
        },
        error : function(xhr, status, error) {
            modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
        },
        beforeSend:function(){
            // 로딩열기
            webTreatmentPetitGridOptions.api.showLoadingOverlay();
        },
        complete:function(){

        }
    });
}

/****************************************************************************
 * 검색하기
 ****************************************************************************/
function fn_webTreatmentPetitSearch(param){
    if("A"!=param && "Y"!=selectUseYn){
        modalEvent.warning("", "조회 권한이 없습니다.");
        return false;
    }

    fn_webTreatmentPetitPaginReset();

    webTreatmentPetitSearchKeywordParam0 = $("#webTreatmentPetitSearchKeyword0").val();
	webTreatmentPetitSearchKeywordParam1 = $("#webTreatmentPetitSearchKeyword1").val();
	webTreatmentPetitSearchKeywordParam2 = $("#webTreatmentPetitSearchKeyword2").val();
	webTreatmentPetitSearchKeywordParam3 = $("#webTreatmentPetitSearchKeyword3").val();

    webTreatmentPetitSearchDateType  = $("#webTreatmentPetitSearchDateType").val();
    webTreatmentPetitSearchStartDate = $("#webTreatmentPetitSearchStartDate").val();
    webTreatmentPetitSearchEndDate   = $("#webTreatmentPetitSearchEndDate").val();

    fn_selectListWebTreatmentPetitJson();
}


/****************************************************************************
 * 초기화하기
 ****************************************************************************/
function fn_webTreatmentPetitReset(){
    fn_webTreatmentPetitSetDate('D');
    $("#webTreatmentPetitSearchDateType option:eq(0)").prop("selected", true);

    $("#webTreatmentPetitSearchKeyword0").val("");
	$("#webTreatmentPetitSearchKeyword1").val("");
	$("#webTreatmentPetitSearchKeyword2").val("");
	$("#webTreatmentPetitSearchKeyword3").val("");

    fn_webTreatmentPetitSearch();
}

/****************************************************************************
 * 페이징 처리
 ****************************************************************************/
function fn_webTreatmentPetitPagination(param){
    webTreatmentPetitStart = (parseInt(param)-1)*webTreatmentPetitLimit;

    fn_selectListWebTreatmentPetitJson();
}

/****************************************************************************
 * 페이징 리셋
 ****************************************************************************/
function fn_webTreatmentPetitPaginReset(){
    webTreatmentPetitSearchKeywordParam0 = '';
	webTreatmentPetitSearchKeywordParam1 = '';
	webTreatmentPetitSearchKeywordParam2 = '';
	webTreatmentPetitSearchKeywordParam3 = '';

    webTreatmentPetitStart        = 0;
    webTreatmentPetitLimit        = 100;
    webTreatmentPetitTotalCount   = 0;
    webTreatmentPetitTotalPages   = 0;

    //페이징 초기화
    if($("#webTreatmentPetitPagination").data("twbs-pagination")){
        $("#webTreatmentPetitPagination").twbsPagination("destroy");
    }
}

/****************************************************************************
 * 이벤트 삭제
 ****************************************************************************/
function fn_deleteWebTreatmentPetit(){
    if("Y"!=deleteUseYn){
        modalEvent.warning("", "삭제 권한이 없습니다.");
        return false;
    }

    if(!delList){
        modalEvent.warning("", "삭제할 대상을 선택하세요.");
        return false;
    }
	
    modalEvent.info("삭제", "선택한 이벤트 정보를 삭제하시겠습니까?", function(){
        /*let formData = new FormData();
        formData.append("menuClass", menuClass);
        formData.append("delList", delList);*/
		
		let data = {
			menuClass: menuClass,
			categoryDivCd: categoryDivCd,
			delList: delList
		};

        $.ajax({
            url: encodeURI('/contentsBbs/delContentsBbs.do'),
            data: JSON.stringify(data),
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            type: 'POST',
            async: true,
            success: function(data){
                if('0'==data.msgCode){
                    modalEvent.success("삭제 성공", data.msgDesc, function(){
                        fn_webTreatmentPetitOk();
                    });
                }
                else{
                    modalEvent.danger("삭제 오류", data.msgDesc);
                }
            },
            error : function(xhr, status, error) {
                modalEvent.danger("삭제 오류", "삭제 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
            },
            beforeSend:function(){

            },
            complete:function(){

            }
        });
    });
}

/****************************************************************************
 * 검색 엔터 이벤트
 ****************************************************************************/
function fn_webTreatmentPetitEnter(e){
    if(e.which){
        // 파이어폭스
        if(13 == e.which) {
            //로그인 액션 스크립트
            fn_webTreatmentPetitSearch();
        }
    }
    else{
        // 윈도우, 사파리, 크롬
        if(13 == treatmentpetit.keyCode) {
            //로그인 액션 스크립트
            fn_webTreatmentPetitSearch();
        }
    }
}

/****************************************************************************
 * 정렬 이벤트
 ****************************************************************************/
function fn_alignTreatmentPetit(param, param2){
    let align = "";

    if("A"==param){
        align = "오늘";

        fn_webTreatmentPetitSetDate('A');
    }
    else if("B"==param){
        align = "최근30일";

        fn_webTreatmentPetitSetDate('D');
    }
    else if("C"==param){
        align = "최근90일";

        fn_webTreatmentPetitSetDate('E');
    }
    else if("D"==param){
        align = "이번주";

        fn_webTreatmentPetitSetDate('C');
    }
    else if("E"==param){
        align = "이번달";

        fn_webTreatmentPetitSetDate('F');
    }
    else if("F"==param){
        align = "올해";

        fn_webTreatmentPetitSetDate('G');
    }
    else if("G"==param){
        align = "지난주";

        fn_webTreatmentPetitSetDate('H');
    }
    else if("H"==param){
        align = "지난달";

        fn_webTreatmentPetitSetDate('I');
    }
    else{
        align = "";
    }
    $("#webTreatmentPetitSearchDateType").val(param);
    $("#webTreatmentPetitSearchDateType").siblings("button").text(align);
}

/****************************************************************************
 * 완료
 ****************************************************************************/
function fn_webTreatmentPetitOk(){
    fn_webTreatmentPetitReset();
}

/****************************************************************************
 * 등록 화면으로 이동.
 ****************************************************************************/
function fn_insertWebTreatmentPetitIntro(){
    if("Y"==insertUseYn){
        let pagingParam = "?menuClass="+menuClass;
		pagingParam    += "&categoryDivCd="+categoryDivCd;
        fn_leftFormAction("/contentsBbs/moveRegContentsBbs.do"+pagingParam);
    }else{
        modalEvent.warning("", "등록 권한이 없습니다.");
        return false;
    }

}

/****************************************************************************
 * 수정 화면으로 이동.
 ****************************************************************************/
function fn_updateWebTreatmentPetitIntro(postNo, categoryNo){
    if("Y"==updateUseYn){
        let pagingParam = "?menuClass="+menuClass;
		pagingParam    += "&categoryDivCd="+categoryDivCd;
		pagingParam    += "&postNo="+postNo;
		pagingParam    += "&categoryNo="+categoryNo;
        fn_leftFormAction("/contentsBbs/moveContentsBbs.do"+pagingParam);
    }else{
        modalEvent.warning("", "수정 권한이 없습니다.");
        return false;
    }
}


let webTreatmentPetitColumnDefs = [
    {field: "checkbox", headerName:"", minWidth:55, maxWidth:55, headerCheckboxSelection: true, checkboxSelection: true},    
    {field: "rowNum", headerName:"번호", minWidth:60, maxWidth:60,sortable: false, cellStyle:{textAlign: 'center'}},
	{field: "categoryNm", headerName:"카테고리", minWidth:60},
    {field: "title", headerName:"제목", minWidth:150, cellStyle:{cursor: 'pointer', color:'#3985EA'}},    
	{field: "content", headerName:"내용요약", minWidth:150},
	{field: "hashtag", headerName:"해시태그", minWidth:150},
    {field: "regDt", headerName:"등록일",minWidth:100, maxWidth:150},
    {field: "regNm", headerName:"작성자",minWidth:100, maxWidth:150},
];

// let the grid know which columns and what data to use
let webTreatmentPetitGridOptions = {
    suppressRowTransform: true,
    columnDefs: webTreatmentPetitColumnDefs,
    defaultColDef: {		// 리스트 기본 설정
        flex: 1,
        sortable: true,		//정렬 여부
        resizable: true,	//리사이즈
        editable: true,	// 그리드에서 데이터 수정
        cellStyle:{textAlign:'left',fontSize:'14px',padding:'0'},
        //suppressSizeToFit:true,		//자동 맞춤
        //enableRowGroup: true,		// 그룹 묶음
        enablePivot: true,
        enableValue : true
    },
    //suppressMultiSort:true,  //단일솔트 true가 단일, false가 다중 shift + sort 시
    headerHeight : 41, // header 높이
    rowHeight : 41, // row 높이
    rowData : webTreatmentPetitAgGridData,
    suppressRowClickSelection : true, // 로우 클릭시 체크박스 선택 true no, false yes
    localeText : {
        noRowsToShow : '조회 결과가 없습니다.'
    }, //데이터 없을 시 나오는 문구
    rowSelection : 'multiple', // row 다중 선택
    debug : false,
    onCellClicked: function(cell){ //셀 클릭 이벤트\
		
        /* alert(treatmentpetit.column.colId); */
        if( 'title' == cell.column.colId ){
            fn_updateWebTreatmentPetitIntro(cell.data.postNo, cell.data.categoryNo);
        }
    },
    onSelectionChanged: function(treatmentpetit){ //체크박스 선택
        delList = treatmentpetit.api.getSelectedRows();
		console.log(delList);
		/*let selectRows = [];
        selectRows = treatmentpetit.api.getSelectedRows();
		console.log(selectRows);
        webTreatmentPetitSelectId = '';
        for(let i=0; i<selectRows.length; i++){
            webTreatmentPetitSelectId += selectRows[i].muWebTreatmentPetitId + ",";
        }
        webTreatmentPetitSelectId = webTreatmentPetitSelectId.substring(0, webTreatmentPetitSelectId.lastIndexOf(','));*/
    },
    onSortChanged: function(treatmentpetit){
        //정렬
        webTreatmentPetitSort = ''; //기존 정렬 초기화
        let columnArr = treatmentpetit.columnApi.getColumnState();
        if(0<columnArr.length){
            //sort index 순으로 재정렬
            columnArr.sort(function(a,b){
                return a.sortIndex - b.sortIndex;
            });

            let nullCnt = 0;
            for(let i=0; i<columnArr.length; i++){
                let gridSortModel = columnArr[i].colId;
                let gridSort = columnArr[i].sort;

                if(gridSort != null){
                    webTreatmentPetitStart = 0;
                    webTreatmentPetitSort += gridSortModel+' '+ gridSort + ',';
                }
                else{
                    nullCnt++;
                    if(nullCnt == columnArr.length){
                        webTreatmentPetitSort = '';
                        webTreatmentPetitDir = '';
                        webTreatmentPetitStart = 0;
                    }
                }
            }
        }
        webTreatmentPetitSort = webTreatmentPetitSort.substring(0,webTreatmentPetitSort.lastIndexOf( ",")); //맨끝 콤마 지우기

        fn_webTreatmentPetitSearch();
    }
};

// lookup the container we want the Grid to use
let webTreatmentPetitGridDiv = document.querySelector('#webTreatmentPetitGrid');

// create the grid passing in the div to use together with the columns & data we want to use
new agGrid.Grid(webTreatmentPetitGridDiv, webTreatmentPetitGridOptions);





/****************************************************************************
 * 페이지 init
 ****************************************************************************/
function fn_pageInit(){
    // 날짜 datepicker
    fn_searchDatePicker("#divWebTreatmentPetitSearchStartDate", "#divWebTreatmentPetitSearchEndDate");

    if(!webTreatmentPetitSearchStartDate&&!webTreatmentPetitSearchEndDate){
        // 검색 오늘날짜 셋팅
        fn_webTreatmentPetitSetDate('D');
    }else{
        $("#webTreatmentPetitSearchStartDate").val(webTreatmentPetitSearchStartDate).trigger("change");
        $("#webTreatmentPetitSearchEndDate").val(webTreatmentPetitSearchEndDate).trigger("change");
    }

    // 초기 페이징 처리
    $("#webTreatmentPetitSearchKeyword0").val(webTreatmentPetitSearchKeywordParam0);
	$("#webTreatmentPetitSearchKeyword1").val(webTreatmentPetitSearchKeywordParam1);
	$("#webTreatmentPetitSearchKeyword2").val(webTreatmentPetitSearchKeywordParam2);
	$("#webTreatmentPetitSearchKeyword3").val(webTreatmentPetitSearchKeywordParam3);

    fn_webTreatmentPetitSearch("A");
}

/****************************************************************************
 * 페이지 treatmentpetit
 ****************************************************************************/
function fn_pageTreatmentPetit(){
    // 검색 input
    $(document).on('keypress', '#webTreatmentPetitSearchKeyword0', function(e) {
        fn_webTreatmentPetitEnter(e);
    });
	// 검색 input
    $(document).on('keypress', '#webTreatmentPetitSearchKeyword1', function(e) {
        fn_webTreatmentPetitEnter(e);
    });
	// 검색 input
    $(document).on('keypress', '#webTreatmentPetitSearchKeyword2', function(e) {
        fn_webTreatmentPetitEnter(e);
    });
	// 검색 input
    $(document).on('keypress', '#webTreatmentPetitSearchKeyword3', function(e) {
        fn_webTreatmentPetitEnter(e);
    });

    // 검색 조회 버튼
    $("#btnSearchWebTreatmentPetit").click(function () {
        fn_webTreatmentPetitSearch();
    });

    // 이벤트 등록 팝업 버튼
    $("#btnInsertWebTreatmentPetit").click(function () {
        fn_insertWebTreatmentPetitIntro();
    });

    // 이벤트 삭제 버튼
    $("#btnDeleteWebTreatmentPetit").click(function () {
        fn_deleteWebTreatmentPetit();
    });

    // 기간 선택 콤보 이벤트
    const target = $("#webTreatmentPetitSearchDateType").siblings("ul.select_option_list");
    target.find("li.option_list_item").click(function () {
        let selectIdArr = $(this).prop("id").split('_');
        let selectId    = selectIdArr[1];
        let selectName  = $(this).text();

        $(this).parent().siblings("button").text(selectName);
        $(this).parent().siblings("input").val(selectId);

        fn_alignTreatmentPetit(selectId);
    });
}

$(function(){
    // 페이지 init
    fn_pageInit();

    // 페이지 treatmentpetit
    fn_pageTreatmentPetit();
});