"
).on(eBookCore.eventType.keyclick, function(key){
if(!eBookCore.eventType.isExcute(key)){return; }
if(0");
if (!children) return;
$.each(children, function(i, child) {
var $pTag = $("
" , {text: child.label});
var $spanTag = $("").text(child.index);
$("
").on(eBookCore.eventType.keyclick, function(key){
if(!eBookCore.eventType.isExcute(key)){return; }
if(0");
bookmarkListEl.append(listUl);
eBookCore.func.bookmarkListUpdate(listUl); // 북마크 자료 최초 1회 갱신
};
/** 섬네일 목록 생성 */
var thumbListCreate = function(thumbListEl) {
var blindEl = $("");
blindEl.on("click", function(){
eBookCore.func.wndHide(thumbListEl);
});
var contentsEl = $("
");
contentsEl.on("click", function(){
eBookCore.func.wndHide(thumbListEl);
});
thumbListEl.append(blindEl);
thumbListEl.append(contentsEl);
};
/** 인덱스탭 목록 생성 jr */
var indexTabListCreate = function(indextabListEl) {
if( eBookData.indexTabList[0]){
$(eBookData.indexTabList).each( function(i,e){
txcolor = '' + e.textColor;
txcolor = croTools.hexToRGBA(txcolor.substr(0,8).replace("0x","#"), txcolor.substr(9));
bgcolor = '' + e.backgroundColor;
bgcolor = croTools.hexToRGBA(bgcolor.substr(0,8).replace("0x","#"), bgcolor.substr(9));
if(!e){ return; }
var addEl = $(
"
"
+ e.text
+ "
"
).on(eBookCore.eventType.keyclick, function(key){
if(!eBookCore.eventType.isExcute(key)){return; }
if(0");
searchListEl.append(listUl);
listUl.append( // 검색 칸 삽입
$("
").html(
""
+ "
[result count]
"
)
);
var inputEl = listUl.find(".header input.search_text");
/** 검색 개수 문자열 갱신 */
this.updateResultCount = function(){
var _itemCnt = listUl.find("li.contents").length;
var _textLen = inputEl.val().trim/*for IE8*/ ? inputEl.val().trim().length : inputEl.val().length;
listUl.find(".header p.result_count").text("\u25BC"+eBookCore.getString("result") + (0<_textLen ? " : "+_itemCnt : "") );
};
updateResultCount(); // 최초 갱신
this.latestSearchPageNum = 1; // 마지막으로 검색한 페이지 번호
/** 검색 결과 추가 */
var addSearchContents = function(_stPageNum, _searchText){
listUl.find("li.more").detach(); // 더보기 버튼 제거
_searchText = _searchText.toLowerCase();
var addedCnt = 0;
for(var i=_stPageNum-1; i_searchIndex){ break; }
_searchIndex += _bodyIndex; // 탐색시 잘려진 텍스트 만큼 위치 수정
_bodyIndex = _searchIndex+1; // 다음 탐색 위치 설정
var _textLen = _bodyText.length;
var _maxLen = Math.min (50, _textLen);
var _searchLen = Math.min (_maxLen-1, _searchText.length);
var _marginLen = Math.max (0, parseInt( (_maxLen - _searchText.length)/2 ));
var _prevIndex = Math.max (0, _searchIndex-_marginLen );
var _prevLen = _searchIndex - _prevIndex;
var _nextIndex = Math.min (_textLen-1, _searchIndex+_searchLen );
var _nextLen = Math.min (_marginLen*2-_prevLen, (_textLen-1)-_nextIndex );
listUl.append($("")
.html(
""
+ ""+ (i+1) +""
+ "" + (0<_prevIndex?"\u00B7\u00B7\u00B7":"") + _bodyText.substr(_prevIndex, _prevLen) + ""
+ ""+ _bodyText.substr(_searchIndex, _searchLen) + ""
+ "" + _bodyText.substr(_nextIndex, _nextLen) + (_textLen-1 > _nextIndex+_nextLen?"\u00B7\u00B7\u00B7":"") + ""
).on(eBookCore.eventType.keyclick, function(e){ // 검색결과 클릭시 페이지 이동
eBookCore.eventType.isExcute(e) && eBookCore.func.gotoPage( parseInt( $(e.target).closest('li').find('.page').text() ) );
})
);
++addedCnt;
}
// 검색 더보기 버튼 추가
if( i
"+eBookCore.getString("search_more")+"
")
.on(eBookCore.eventType.keyclick, function(e){ // 마우스 클릭 이벤트에 추가로 엔터키 이벤트도 함께 등록함
return (eBookCore.eventType.isExcute(e) && addSearchContents(latestSearchPageNum, _searchText));
})
);
break;
}
}
updateResultCount(); // 검색 개수 문자열 갱신
};
this.latestSearchText = ''; // 최근 입력 검색어 보관
// 키 입력시 검색 이벤트 처리
inputEl.on("keyup", function(){
var _inputText = inputEl.val().trim();
if( latestSearchText === _inputText ){ return; }
latestSearchPageNum = 1;
latestSearchText = _inputText;
$.doTimeout('searchContents', 500, function(){
listUl.find("li.contents, li.more").detach(); // 기존 검색결과 제거
if(0"); // 창화면(div) 생성
break;
case "image" : addElem = $(""); // 이미지(img) 생성
addTabIndex(addElem, obj.tabindex);
break;
case "text" : addElem = $(""); // 텍스트(span) 생성
break;
case "input" : addElem = $(""); // 입력란(input) 생성
break;
/** 고유 속성 항목 */
case "pageview":addElem = $(""); // 페이지 출력 영역 생성
break;
case "pagenum": addElem = $(""); // 현재 페이지 번호 출력 칸 생성
break;
case "pagetotal": addElem = $(""+eBookData.totalPageNum+""); // 총 페이지 수 출력 칸 생성
break;
case "logo" : addElem = $(""); // 로고 이미지 생성
addTabIndex(addElem);
addOpenUrl(addElem, eBookData.logoUrl);
break;
case "home" : addElem = $(""); // 홈 링크 이미지 생성
addTabIndex(addElem);
addOpenUrl(addElem, eBookData.homeUrl);
break;
case "thumblist" : addElem = $(""); // 섬네일 리스트 생성
thumbListCreate(addElem);
break;
case "booklist" : if( eBookData.bookList[0] !== undefined) { // 지난호 보기 리스트 읽기 jr
addElem = $("");
bookListCreate(addElem);
}
break;
case "tablelist" : // 목차 리스트 읽기
if( eBookData.tableList[0] === undefined ||
(eBookData.tableList[0] !== undefined && eBookData.tableList[0].parent === undefined) ){ // previous mokcha
// addElem = $("");
addElem = $("");
}else{ // tree mokcha
addElem = $("");
}
tableListCreate(addElem);
break;
case "bookmarklist" : addElem = $(""); // 책갈피 리스트 읽기
bookmarkListCreate(addElem);
break;
case "searchlist" : addElem = $(""); // 검색 리스트 읽기
searchListCreate(addElem);
break;
case "indexTab" : addElem = $(""); // 우측 인덱스탭 생성 jr 20191224
indexTabListCreate(addElem);
break;
/* 잘못된 타입. 에러 로그 출력 */
default : croTools.log( "unknown type object : " + obj.type );
}
if(!addElem){ return; }
var usingHTML5 = false;
/* 객체 속성 추가 */
for(var _name in obj){
var _value = obj[_name];
switch( _name ){
/* 별도 처리 속성 패스 */
case "children" :
case "type" :
case "usable" :
case "visible" :
break;
/* 이벤트 등록 */
case "click" :
addElem.css("cursor", "pointer"); // 마우스 커서 버튼형으로 설정
// 동작 이벤트 함수 등록( 2개 이상 등록시 ; 로 구분 )
$(_value.split(";")).each(function(i, v){
if(/runPrint/.test(v) && !croTools.isMobile() && !$.print){
yepnope({ // 프린트 관련 스크립트 읽기
load : [ eBookCore.path.jquery + "print.js" ,
eBookCore.path.printview + "printview.js" ,
eBookCore.path.printview + "printview.css" ]
});
}else
if(/runSlideShow/.test(v) && !eBookCore.plugins.slideshow){
yepnope({ // 자동넘김 관련 스크립트 읽기
load : [ eBookCore.path.slideshow + "slideshow.js" ,
eBookCore.path.slideshow + "slideshow.css" ]
});
}else
if(/runDrawing/.test(v) && !eBookCore.plugins.drawing){
yepnope({ // 판서 관련 스크립트 읽기
load : [ eBookCore.path.drawing + "sketch.min.js" ,
eBookCore.path.drawing + "drawing.js" ,
eBookCore.path.drawing + "drawing.css" ]
});
useHTML5 = true; // HTML5 사용 확인 요청
}else
if(/runMemo/.test(v) && !window.pluginMemoOpen){
yepnope({ // 메모 관련 스크립트 읽기
load : [ eBookCore.path.memo + "memo.js" ,
eBookCore.path.memo + "memo.css" ]
});
}
addElem.on( eBookCore.eventType.keyclick, function(e){ // 마우스 클릭 이벤트에 추가로 엔터키 이벤트도 함께 등록함
return (eBookCore.eventType.isExcute(e) && eval(v));
});
});
break;
case "draggable": // 마우스 끌기 속성 부여
if(!_value){ break; }
addElem.draggable({ // 스크롤바가 생성되는 태그는 끌기에서 제외함
addClasses : false,
handle : ".draggable",
opacity : 0.9,
start : function(e,ui){
addElem.trigger(eBookCore.eventType.click); // z-index 수정 이벤트 동작
},
stop : function(e,ui){
eBookCore.func.moveWindowIntoView($(e.target)); // 드래그 완료시 창이 뷰를 벗어나면 강제로 안으로 이동
}
});
addElem.css("position","");
addElem.on(eBookCore.eventType.click, function(e){ // 클릭된 창이 앞에 나오도록 z-index 수정
var targetEl = addElem;
$(".draggable").parent().css('z-index', '');
var defaultZ = parseInt( targetEl.css('z-index') );
targetEl.css('z-index', defaultZ+1);
});
break;
case "resizable": // 마우스 사이즈조절 속성 부여
_value && addElem.resizable();
break;
case "text" : // text 타입일때 문자열 설정
addElem.text(_value);
break;
/* 기본 속성 : id, class, src, title, tabindex ... */
case "src" : // 이미지 상대 경로 수정
var colorfolder = "";
if (eBookskinData.iconColor == "2") // 검정색
{ colorfolder = "black"; }
else {
colorfolder = "white";
};
_value = eBookCore.path.skin + eBookSkin.path.image + colorfolder +"/" + _value; // ./assets/theme/ + images/ + _value.jpg
default :
addElem.attr(_name, _value);
}
}
/** 장치 호환성 옵션 체크( PC, Mobile ) */
var _usable = $(obj).attr("usable");
if( !!_usable
&& ( ( !croTools.isMobile() && !/pc/i.test(_usable) )
|| ( croTools.isMobile() && !/mobile/i.test(_usable) )
|| ( usingHTML5 && !croTools.canHTML5() ) )
){ // 호환되지 않는 객체 비활성화
addElem .css ("cursor", "" )
.css ("opacity", "0.25" )
.attr ("tabindex", "-1" )
.attr ("title", eBookCore.getString("unusable"))
.off (eBookCore.eventType.keyclick );
}
var _visible = $(obj).attr("visible");
if( !!_visible
&& ( ( !croTools.isMobile() && !/pc/i.test(_visible) )
||( croTools.isMobile() && !/mobile/i.test(_visible) ) )
){ // 호환되지 않는 객체 생성 취소
return;
}
/* 각 항목별 선택 유무 2018-05-03 정란*/
if(eBookskinData.MOKCHA == "false" ){
$("#menu_tablelist_btn").detach();
$("#tablelist_window").detach();
$("#menu_tablelist_btn_m").detach();
};
if(eBookskinData.BOOKMARK == "false" ){
$("#menu_bookmark_btn").detach();
$("#menu_bookmark_btn_m").detach();
};
if(eBookskinData.AUTOSKIP == "false" ){
$("#menu_slide_btn").detach();
$("#menu_slide_btn_m").detach();
};
if(eBookskinData.PRINT == "false" ){
$("#menu_print_btn").detach();
};
if(eBookskinData.SUMNAIL == "false" ){
$("#menu_thumb_btn").detach();
$("#thumbnail_window").detach();
$("#menu_thumb_btn_m").detach();
};
if(eBookskinData.SEARCH == "false" ){
$("#menu_searchlist_btn").detach();
$("#search_text_btn_m").detach();
};
if(eBookskinData.PDFDOWN == "false" ){
$("#menu_pdf_down").detach();
$("#pdf_down").detach();
$("#menu_pdf_down_m").detach();
};
if(eBookskinData.MEMO == "false" ){
$("#menu_memo_btn").detach();
$("menu_memo_btn_m").detach();
};
if(eBookskinData.SKETCH == "false" ){
$("#menu_draw_btn").detach();
$("menu_draw_btn_m").detach();
};
if(eBookskinData.TWITTER == "false" ){
$("#menu_twitter").detach();
$("#sns_twitter").detach();
};
if(eBookskinData.FACEBOOK == "false" ){
$("#menu_facebook").detach();
$("#sns_facebook").detach();
};
if(eBookskinData.FACEBOOK == "false" && eBookskinData.TWITTER == "false"){
$("#menu_category_sns").detach();
};
if(eBookskinData.KAKAOTALK == "false"){
$("#menu_kakaotalk").detach();
};
if(eBookskinData.SEARCH_INPUT == "false"){
$("#search_window").detach();
};
if(eBookskinData.SEARCH_PAGE == "false"){
$("#search_page").detach();
};
if(eBookskinData.FULLSCREEN == "false"){
$("#fullscreen_btn").detach();
};
if(eBookskinData.BTN_LR == "false"){
$("#page_prev_btn").detach();
$("#page_next_btn").detach();
};
if(eBookData.pagearea == "false" ){ // 페이지 좌우 넘김영역 jr
};
// DOM에 추가
addElem.appendTo( parent );
// 자식 객체 재귀호출
return obj.children && $.each( obj.children, function(i,e){ _obj2tag(e, addElem); });
}
return $.each(eBookSkin.objects, function(i,e) { _obj2tag(e, document.body); }); // ★ 처리 시작점
};
/** 페이지 이동( 성공시 페이지 번호 반환 )
**/
eBookCore.func.gotoPage = function(_pageNum){
if(isNaN(_pageNum)){ return croTools.log("invalid page number : "+ _pageNum); } // 숫자 값이 올바른지 체크
var _oldHash = location.hash;
// hash change
location.hash = "#page=" + ( _pageNum > -1 ? croTools.rangeValue( _pageNum, 1, eBookData.totalPageNum ) : eBookData.totalPageNum );
if(location.hash === _oldHash){ // 동일한 hash 값을 지정한 경우
eBookCore.func.componentsReset(); // 컴포넌트만 리셋
}
eBookCore.plugins.setPagePos();
eBookCore.pageTurn.resize();
//console.log( eBookCore.currentPageNum);
return _pageNum;
};
eBookCore.func.gotoPrev = function(){
// JH_ 20170415 페이지 스크롤 -1_msg.length){ return; }
if(isNaN(_elapsed)){ _elapsed = 1000; } // 기본값 1초
// 활성된 이전 팝업이 있으면 제거
$(".fb_flash_popup").stop().detach();
var _addPopup
= $("")
.attr({"class":"fb_flash_popup ui-corner-all"})
.css({
backgroundColor : "rgba(255,255,255,0.7)",
width : (_msg.length+1)+"em",
height : "2em",
lineHeight : "2em",
zIndex : croTools.zTopMost,
left : "0px",
top : "0px",
right : "0px",
bottom : "0px",
position : "absolute",
margin : "auto",
padding : "0px",
textAlign : "center",
borderWidth : "1px 2px 2px 1px",
borderStyle : "solid",
borderColor : "rgb(128,128,128)"
})
.html(_msg);
$(document.body).append(_addPopup);
_addPopup.fadeOut(_elapsed, function(){ $(".fb_flash_popup").detach(); });
}
/** 뷰 크기에 따른 현재 페이지 표시 방식 판단( single : TRUE )
**/
eBookCore.func.nowPageViewSingle = function(){
switch(eBookData.pageView.side.toLowerCase()){
case "single" : return true;
case "double" : return false;
}
// 설정값 auto 면 페이지뷰 비율로 판단하여 설정
var _viewport = $('.pageview');
if(!_viewport.length){
return croTools.log("viewport is empty");
}
return ( _viewport.height() * eBookCore.thumbRatio * 2 >= _viewport.width() );
};
/** 해시값에서 페이지 번호 추출하여 반환( 잘못된 값 : return NaN )
**/
eBookCore.func.getPageNumByHash = function(){
return parseInt( location.hash.replace("#page=","") );
};
/** 현재 페이지 번호 설정( 숫자 값이 올바르면 return TRUE )
**/
eBookCore.func.setCurrentPageNum = function(_num){
var _isNum = !isNaN(_num);
if(_isNum){ eBookCore.currentPageNum = croTools.rangeValue(_num, 1, eBookData.totalPageNum); }
location.hash = "#page="+eBookCore.currentPageNum;
return _isNum;
};
/** 전체화면 보기 토글
**/
eBookCore.func.fullscreenToggle = function(){
return croTools.toggleFullscreen(document.body);
};
/** 창, 오브젝트 켜고 끔
**/
eBookCore.func.wndToggle = function(_wnd){
$(_wnd).each(function(i,e){
$(e).is(":visible") ? eBookCore.func.wndHide(e) : eBookCore.func.wndShow(e);
});
};
eBookCore.func.wndShow = function(_wnd){
var wndEl = $(_wnd);
wndEl.each(function(i,e){
if( $(e).is(":animated") ){ return /* croTools.log("eBookCore.func.wndShow : now animating") */; }
$(e).fadeIn("fast");
});
if("thumblist"===wndEl.attr("class")){//if(0offsetLeft){ _wndEl.animate({"left":-childLeft}); }
else if(_viewSize.width < offsetLeft+10){ _wndEl.animate({"left":_viewSize.width-_wndEl.width()}); }
if(0>offsetTop) { _wndEl.animate({"top" :-childTop }); }
else if(_viewSize.height < offsetTop+10){ _wndEl.animate({"top":_viewSize.height-_wndEl.height()}); }
};
/** 메모기능 실행
**/
eBookCore.func.runMemo = function(){
eBookCore.plugins.memo(eBookCore.currentPageNum);
};
/** 책갈피 목록 갱신
**/
/* 쿠키이름 변경 2018-05-02 정란 - 랜덤값으로 쿠키이름 주기 */
var ebookmark2 = String(eBookData.RANDOM);
eBookCore.func.bookmarkListUpdate = function(listUl) {
if(!listUl){
listUl = $("div.bookmarklist ul");
if(1>listUl.length){ return; }
}
listUl.children().detach();
// JH_ 20170415 저장소 관련
var bookmarkPages = eBookCore.func.getCookie(ebookmark2);
if(!bookmarkPages){ return; }
for(var i=1; i<=eBookData.totalPageNum; ++i){
if(isNaN(bookmarkPages[i])){continue;}
var addEl = $("");
addEl.html(
""
+ ""+ i +""
+ "