
/*
 *
 * NLIB 공통 JavaScript 
 *
 *
 */

var CONTEXT_PATH = "";

// 팝업으로 비밀번호를 입력받아서 콜백함수에 전달한다.
function fn_promptPassword(msg, placeholder, callbackFucName) {
	var options = "top=200, left=200, width=300, height=200, status=no, menubar=no, toolbar=yes, resizable=no";
	var thePrompt = window.open("", "_NLIB_POMPT_PASSWORD", options);
    var theHTML = "<html><head><title>" + placeholder + "</title><style type='text/css'> body { background-color: #ffd; } button { margin: 10px; }</style></head><body>";

    theHTML += "<p>" + msg + "</p>";
    theHTML += "<br/>";
    theHTML += "비밀번호: <input type='text' id='thePass' placeholder='" + placeholder + "'/>";
    theHTML += "&nbsp;<br />";
    theHTML += "&nbsp;<br />";
    theHTML += "<button title='확인' id='thePromptOk' onclick='opener.parent." + callbackFucName + "(" 
    	       + "document.getElementById(\"thePass\").value); window.close();'>확인</button>";
    theHTML += "<button title='취소' id='thePromptClose' onclick='window.close();'>취소</button>";
    theHTML += "</body></html>";
    
    thePrompt.document.body.innerHTML = theHTML;
}

/**
 * ID를 name 으로 하는 객체의 값을 숫자(10진수)로 변환하여 리턴한다. 
 * 값이 적절하지 않은 경우, defaultValue를 리턴한다.
 * 
 * @param name
 * @param defaultValue
 * @returns
 */
function fn_getIntValue(name, defaultValue) {
	var val = $("#" + name).val();
	try {
		return parseInt(val, 10);
	} catch(error) {
		console.error(error);
		return defaultValue;
	}
}


const POPUP_DEFAULT_WIDTH = 600; // 팝업 기본 창 가로 크기 
const POPUP_DEFAULT_HEIGHT = 600; // 팝업 기본 창 세로 크기 

/**
 * 팝업을 생성하고 해당 URL로 접속한다.
 * 
 * @param url
 * @param popName
 * @param width 생략 시 POPUP_DEFAULT_WIDTH
 * @param height 생략 시 POPUP_DEFAULT_HEIGHT
 * @returns
 */
function openPopup(url, popName, width, height) {
    var options = "top=10, left=10, width=" + (width?width:POPUP_DEFAULT_WIDTH) + ", height=" + (height?height:POPUP_DEFAULT_HEIGHT) + ", status=no, menubar=no, toolbar=yes, resizable=no";
    window.open(url, popName, options);
}

function validEmail(email) {
	if(!email) return false;
	const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
}

function fn_openLayerPopup(title, content, linkName, linkUrl) {
	
	var layerPopupHtml = 
			"<h2>" + title + "</h2><br/>" +
			"<div>" + content + "</div><br/>" +
			"<br/>&nbsp;" +
			"<div style='text-align:center;'><a href='#' onclick='fn_closeLayerPopup()'>[확인]</a>";
	
	if(linkUrl != null) {
		layerPopupHtml += "&nbsp;&nbsp;&nbsp;&nbsp;<a href='" + linkUrl + "'>[" + linkName + "]</a>";
	}
	layerPopupHtml += "</div>";
	$(layerPopupHtml).appendTo("#NLIB_LAYER_POPUP");
	$("#NLIB_LAYER_POPUP").show();
	console.log(layerPopupHtml);
}

function fn_closeLayerPopup() {
	$("#NLB_LAYER_POPUP").html("");
	$("#NLIB_LAYER_POPUP").hide();

}

function fn_myAlert(newAlertNum) {
	if(newAlertNum == "undefined" || newAlertNum == null || newAlertNum < 1) {
		return;
	}
	
	fn_openLayerPopup("알림", "아직 확인하지 않은 새로운 알림이 " + newAlertNum + "건 있습니다", "알림 목록으로", CONTEXT_PATH + "/cmm/listNotifications.do");
}

function fn_layerPop(url) {
    $("#NLIB_LAYER_POPUP").load(url);
	$("#NLIB_LAYER_POPUP").show();
}

function fn_showLayerPop() {
	$("#NLIB_LAYER_POPUP").show();
}

function fn_layerPopFormSubmit(formName, display) {
	var dataList = $("#" + formName).serialize();
	var url = $("#" + formName).attr('action');
	
	if(display) $("#NLIB_LAYER_POPUP").show();
	else $("#NLIB_LAYER_POPUP").hide();
	
    $.ajax({
        type: "post",
        url: url,
        data: dataList
    }).done(function(response){
    	$("#NLIB_LAYER_POPUP").html(response);
    });
}

function fn_isEmpty(value) {
	if(value == null) return true;
	if(typeof value == "undefined") return true;
	if(typeof value == "string" && value == "") return true;
	if(Array.isArray(value) && value.length < 1) return true;
	
	return false;
}

function fn_unescapeHtml(escapedStr) {
    var doc = new DOMParser().parseFromString(escapedStr, "text/html");
    return doc.documentElement.textContent;
}

function fn_lengthBytes(s) {
	if(s != undefined && s != "") {
		for(b=i=0;c=s.charCodeAt(i++);b+=c>>11?3:c>>7?2:1);
		return b;
	} else {
		return 0;
	}
}

function fn_extractContentText(html) {
    return new DOMParser().parseFromString(html, "text/html").documentElement.textContent;
}

function risShow(risId){
	var tag = document.createElement("div");

	tag.class="popup pop-user-set pop-export";
	tag.id = "export-data";
	tag.style="style='display: none;'";
	
	document.body.prepend(tag);

	document.getElementById("export-data").className="popup pop-user-set pop-export";

	var html="";
	html+='<div class="pop-wrap">';
	html+='<div class="pop-inner-wrap">';
	html+='<h1>서지정보 내보내기 (Export)</h1>';
	html+='<div class="guide export first">';
	html+='<div class="guide-title underline">서지정보 내보내기 안내</div>';
	html+='<div class="guide-contents">';
	html+='<p>지역N문화 포털은 콘텐츠 생산자 및 연구자들을 위해 서지정보 내보내기 기능을 제공하고 있습니다.</p>';
	html+='<ul class="dot-list type1 blank-type2">';
	html+='<li>서지정보 내용<br>: 형식, 제목, 저자, 시리즈, 언어, URL, 태그</li>';
	html+='<li>제공 포멧<br>: RIS : Search Information System (*.ris)</li>';
	html+='<li>RIS 지원 서지관리 프로그램<br>: EndNote, Mendeley, Zotero) 외</li>';
	html+='</ul>';
	html+='</div>';
	html+='</div>';
	html+='<div class="guide program next">';
	html+='<div class="guide-title underline">서지관리 프로그램 안내</div>';
	html+='<div class="guide-contents">';
	html+='<p>서지관리 프로그램은 문헌 및 온라인 콘텐츠 등 자료를 관리하고 공유하는데 사용됩니다.</p>';
	html+='<p class="caution">※ 해당 프로그램은 소속기관 또는 개인 가입이 필요할 수 있으며, 지역N문화 포털은 링크만 제공하고 직접 서비스를 제공하지 않습니다.</p>';
	html+='<ul class="dot-list type1 blank-type1">';
	html+='<li>Zotero (www.zotero.com) / 한글 메뉴 지원 (o), 300MB 용량 무료 (초과 유료)</li>';
	html+='<li>EndNote (www.endnote.com) / 한글 메뉴 지원 (x) , 2G 용량 무료 (초과유료)</li>';
	html+='<li>Mendeley (www.mendeley.com) / 한글 메뉴 지원 (x), 2G 용량 무료 (초과유료)</li>';
	html+='</ul>';
	html+='</div>';
	html+='</div>';
	html+='<div class="btn-wrap">';
	html+='<button class="btn btn-color" id="risExport" onclick="risDownload(\''+risId+'\');">내보내기</button>';
	html+='<button class="btn btn-gray" onclick="risClose();">닫기</button>';
	html+='</div>';
	html+='</div>';
	html+='<div class="week-no-show">';
	html+='<div class="check"><input type="checkbox" id="e-week-no"><label for="e-week-no">일주일간 보지 않기</label></div>';
	html+='</div>';
	html+='</div>';
	
	$("#export-data").append(html);
}

function risClose(){
	$("#export-data").remove();
}

function risDownload(risId){
	$("#masterId").val(risId);
	
	document.interestsForm.action="/ris/risDownload.do";
	document.interestsForm.submit();
}

function insertInterest(masterId){
	$.ajax({
        type: "post",
        url: "/interest/insertInterest.ajax",
        data: {"masterId" : masterId}
    }).done(function(result){
    	alert(result);
    });
}

function paging(pageVO)
{
	$("#paging *").remove();
	
	var html="";
	var startPage = pageVO.startPage;
	var endPage = pageVO.endPage;
	if(pageVO.totalCount != 0)
	{
		
		if(pageVO.pageIndex != 1 ){
			html+="<a href=\"#\" onclick=\"fn_search_article("+ 1 +"); return false;\">\<\<</a>  "
			html+="<a href=\"#\" onclick=\"fn_search_article("+ (pageVO.pageIndex*1 -1) +"); return false;\">\<</a>	";
		}else{
			html+="<a>\<\<</a>  "
			html+="<a>\<</a>		";
		}
		
		for(startPage; startPage <= endPage; startPage++ )
		{
			if(startPage != pageVO.pageIndex)
			{
				html+= "<a href=\"#\" onclick=\"fn_search_article("+ startPage +"); return false;\">" + startPage + "</a> "
			}else{
				html+= "<a>" + startPage + "</a> "
			}
		}
		
		if(pageVO.pageIndex != pageVO.lastPage){
			html+="<a href=\"#\" onclick=\"fn_search_article("+ (pageVO.pageIndex*1 +1) +"); return false;\">\></a>	"
			html+="<a href=\"#\" onclick=\"fn_search_article("+ pageVO.lastPage +"); return false;\">\>\></a>	 ";
		}else{
			html+="<a>\></a>  "
			html+="<a>\>\></a>";
		}
	}else{
		html+= "데이터가 없습니다.";
	}
	
	
	$("#paging").append(html);
}

