var _APP_ = "mybook";

// ---------------------------------------------------------------------------
// frame 
// ---------------------------------------------------------------------------
function initKeyEvent() {
  var kl = new YAHOO.util.KeyListener(
      document,
      { keys:27 },
      { fn: closeAllPannel},
      "keydown" );
  kl.enable();
}

function closeAllPannel() {
  var dialog = YAHOO.mybook.container.dialog;
  dialog.hide();

  var scroll_dialog = YAHOO.mybook.container.scroll_dialog;
  scroll_dialog.hide();

}

function setPng24(obj) {
  obj.width=obj.height=1;
  obj.className=obj.className.replace(/\bpng24\b/i,'');
  obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src+"',sizingMethod='image');"
  obj.src=''; 
  return '';
}




// ---------------------------------------------------------------------------
// main
// ---------------------------------------------------------------------------
function rss() {
  location.href = "/mybook/rss/index";
}

function author(nickname, isHangul) {
  if (isHangul) {
    location.href = "http://"+nickname+".wikidocs.net";
  }else {
    location.href = "http://wikidocs.net/mybook/bookshelf/nick?name="+nickname;
  }
}

function book_rss(bookid) {
  location.href = "/mybook/rss/book?bookid="+bookid;
}

function main_enterkey_search(event) {
  if (event.keyCode == 13) {
    main_search();
  }
}

function main_search() {
  if (!$("_kw").value) {
    alert("검색어를 입력하세요");
    $("_kw").focus();
    return;
  }
  var frm = $("mainSearchForm");
  frm.kw.value = $("_kw").value;
  frm.submit();
}

function init_search() {
  $("_kw").focus();
}

function go_popular(group) {
  location.href = "/mybook/more_popular?popular_group="+group;
}




// ---------------------------------------------------------------------------
// bookshelf 
// ---------------------------------------------------------------------------
function create_book_dialog() {
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/bookshelf/create_book_dialog", // request url
    "",   // parameter
    "400px", // width
    "440px",  // height
    "새로운 책 만들기",  // title
    bookshelf_dialog_callback
    );  
}

function bookshelf_dialog_callback() {
  $("book_name").focus();
}


function create_book() {
  var frm = $("create_book_form");
  if (!frm.book_name.value) {
    alert("책 이름을 입력하세요");
    frm.book_name.focus();
    return;
  }
  frm.submit();
}

function edit_book_dialog(pageid) {
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/bookshelf/edit_book_dialog", // request url
    "pageid="+pageid,   // parameter
    "400px", // width
    "440px",  // height
    "책 수정하기",  // title
    bookshelf_dialog_callback
    );
}

function html_backup(pageid) {
  location.href = "/mybook/bookshelf/backup?pageid="+pageid;
}

var before_imgobj = null;
function select_theme(imgobj, theme_no) {
  if(before_imgobj) {
    before_imgobj.style.borderStyle = "solid";
    before_imgobj.style.borderColor = "#fff";
    before_imgobj.style.borderWidth = "1px";
  }  
  imgobj.style.borderStyle = "solid";
  imgobj.style.borderColor = "#2D11AC";
  imgobj.style.borderWidth = "1px";
  before_imgobj = imgobj;
  $("theme_type").value = theme_no;
}

function book_remove(bookid) {
  if (confirm("정말로 책을 삭제하시겠습니까?\n삭제 후 복구할 수 없습니다!")) {
    location.href = "/mybook/bookshelf/remove?bookid="+bookid;
  }
}

function book_cache(pageid) {
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/bookshelf/cache_dialog", // request url
    "pageid="+pageid,   // parameter
    "300px", // width
    "150px",  // height
    "캐시를 생성합니다",  // title
    book_cache_callback // callback_func
  );
}

function book_cache_callback(res) {
  var json = getJsonResult(res);
  var pageid = json.pageid;
  var req = new Object;
  req.url = "/mybook/bookshelf/make_cache";
  req.pars = "pageid="+pageid;
  req.method = 'post';
  req.callback = cache_make_callback;

  request(req);
}

function cache_make_callback(req) {
  var json = getJsonResult(req);
  if (json.result != "1") {
    alert("캐시 생성에 실패했습니다");
  }
  closeAllPannel();
}




// ---------------------------------------------------------------------------
// handle comment & trackback 
// ---------------------------------------------------------------------------
function navi(page) {
  var frm = $('recentCommentForm');
  frm.curpage.value = page;
  frm.submit();
}

function comment_remove(pageid, seq) {
  if(confirm("정말로 삭제하시겠습니까?")) {
    var frm = $('recentCommentForm');
    frm.pageid.value = pageid;
    frm.seq.value = seq;
    frm.action = "/mybook/comment/remove";
    frm.submit();
  }
}

function change_book(bookid) {
  var frm = $('recentCommentForm');
  frm.action = "/mybook/comment/index?comment_bookid="+bookid;
  frm.submit();
}

function navi_tb(page) {
  var frm = $('recentTrackbackForm');
  frm.curpage.value = page;
  frm.submit();
}

function trackback_remove(pageid, seq) {
  if(confirm("정말로 삭제하시겠습니까?")) {
    var frm = $('recentTrackbackForm');
    frm.pageid.value = pageid;
    frm.seq.value = seq;
    frm.action = "/mybook/tb/remove";
    frm.submit();
  }
}

function change_book_tb(bookid) {
  var frm = $('recentTrackbackForm');
  frm.action = "/mybook/tb/index?trackback_bookid="+bookid;
  frm.submit();
}




// ---------------------------------------------------------------------------
// configure
// ---------------------------------------------------------------------------
function config_modify() {
  //$('message').innerHTML = "처리중입니다";

  var mytodo_yn = "";
  var rss_yn = "";
  var adsense_gb = "";

  if ($("rss_yn").checked) {
    rss_yn = "Y";
  }

  var blog_yn = "N";
  if($('blog_yn_y').checked) {
    blog_yn = "Y";
  }

  var blog_publish = "Y";
  if($('blog_publish_n').checked) {
    blog_publish = "N";
  }

  if ($("mytodo_yn").checked) {
    mytodo_yn = "Y";
    if(!$F("mytodo_key")) {
      alert("마이투두 사용자키를 입력하세요!");
      $('mytodo_key').focus();
      return;
    }
  }

  if($('adsense_gb_1').checked) {
    adsense_gb = "1";
  }else if($('adsense_gb_2').checked) {
    adsense_gb = "2";
  }else if($('adsense_gb_3').checked) {
    adsense_gb = "3";
  }else if($('adsense_gb_4').checked) {
    adsense_gb = "4";
  }

  if (adsense_gb != "1" && !$F("adsense_script")) {
    alert("구글 애드센스 스크립트를 입력하세요!");
    $('adsense_script').focus();
    return;
  }
  
  var frm = $("configureForm");
  frm.mytodo_yn.value = mytodo_yn;
  frm.rss_yn.value = rss_yn;
  frm.adsense_gb.value = adsense_gb;
  frm.blog_yn.value = blog_yn;
  frm.blog_publish.value = blog_publish;
  frm.submit();

}

function change_blog_type(blog_type) {  
  var blog_api = $('blog_api').value;
  if(blog_type=="01") { // 이글루스
    $('blog_api').value = "https://rpc.egloos.com/rpc1";
    $('blog_id').value = "";
    $('blog_username').value = "<egloos userid>";
    $('blog_passwd').value = "";
  }else if(blog_type=="02") {
    $('blog_api').value = "http://<userid>.tistory.com/api";
    $('blog_id').value = "<tistory blog id>";
    $('blog_username').value = "<tistory user email>";
    $('blog_passwd').value = "";
  }
}


function genkey() {
  var req = new Object;
  req.url = "/mybook/configure/genkey";
  req.pars = ""; 
  req.method = 'post';
  req.callback = callback_genkey;
  request(req);
}

function callback_genkey(req) {
  var json = getJsonResult(req);
  $('usr_key').value = json.usr_key;
}

// ---------------------------------------------------------------------------
// editor
// ---------------------------------------------------------------------------
var treeData;
var tree; //will hold our TreeView instance
var write_pageid;

function save_page() {
  var frm = $("editForm");
  frm.page_content.value = xed.getCurrentContent();
  frm.ajax.value = "0";
  frm.submit();
  
}
function delete_page() {
  if(confirm("정말로 삭제하시겠습니까?\n삭제 후 복구할 수 없습니다.")) {
    var frm = $("editForm");
    frm.action = "/mybook/edit/delete_page";
    frm.submit();
  }
}

function history_page() {
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/edit/history", // request url
    "pageid="+write_pageid,   // parameter
    "300px", // width
    "200px",  // height
    "최근 History 목록"  // title
    );
}

function history_view(pageid, seq) {
  closeAllPannel();
  show_dialog(
    YAHOO.mybook.container.scroll_dialog, // dialog name
    "/mybook/edit/history_view", // request url
    "pageid="+pageid+"&seq="+seq,   // parameter
    "900px", // width
    "500px",  // height
    "히스토리 내용 보기"  // title
    );
}

function history_rollback() {
  var pageid = $("historyForm").pageid.value;
  var seq = $("historyForm").seq.value;
  location.href = "/mybook/edit/history_rollback?pageid="+pageid+"&seq="+seq;
}


function openyn() {
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/edit/openyn_dialog", // request url
    //"code_data="+code_data,   // parameter
    "pageid="+write_pageid,
    "320px", // width
    "150px",  // height
    "페이지 권한 변경하기"  // title
    );
}

function openyn_save() {
  var frm = $("openynForm");
  frm.pageid.value = write_pageid;
  frm.submit();
}

function blog() {
  if (confirm("블로그로 전송하시겠습니까?")) {
    var req = new Object;
    req.url = "/mybook/edit/blog";
    req.pars = "ajax=1&pageid="+write_pageid;
    req.method = 'post';
    req.callback = callback_blog;
    request(req);
  }
}


function pdf() {
  var frm = $("editForm");
  frm.action = "/mybook/pdf/page";
  frm.submit();
}


function callback_blog(req) {
  var json = getJsonResult(req);
  alert(json.message);
}

function help() {
  window.open("http://wikidocs.net/mybook/27");
}

function gomenu2(methodname) {
  //togleothermenu();
  $("menuselect2").value = "0";
  if(methodname=="0" || methodname=="") return;
  eval(methodname+"()");

}

function trackback() {
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/edit/trackback_dialog", // request url
    //"code_data="+code_data,   // parameter
    "pageid="+write_pageid,
    "320px", // width
    "80px",  // height
    "트랙백 주소를 입력하세요"  // title
    );
}


function trackback_ping() {
  var trackback_url = $E("trackback_url");
  if(!trackback_url) {
    alert("트랙백 주소를 입력하세요");
    return;
  }
  var req = new Object;
  req.url = "/mybook/edit/trackback_ping";
  req.pars = "ajax=1&pageid="+write_pageid+"&trackback_url="+trackback_url;
  req.method = 'post';
  req.callback = callback_trackback_ping;
  request(req);
}

function callback_trackback_ping(req) {
  var json = getJsonResult(req);
  alert(json.message);
  closeAllPannel();
}

function twitter() {
    show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/edit/twitter_dialog", // request url
    "pageid="+write_pageid,
    "320px", // width
    "175px",  // height
    "트위터로 전송"  // title
    );
}

function twit_get_subject() {
  var twit_form = $("twit_form");
  // frm.page_content.value = xed.getCurrentContent();
  twit_form.twit_content.value = $("page_name").value;
}

function twit_get_content() {
  var twit_form = $("twit_form");
  // frm.page_content.value = xed.getCurrentContent();
  twit_form.twit_content.value = xed.getCurrentContent();
}

function post_twit() {
  $('twit_form').action = "/mybook/edit/twitter_post";
  $('twit_form').submit();
}


function edit_complete() {
  save_page();
}


function openyn_image(openyn) {
  var img = "";
  if (openyn=="W") {
    img = "<img src='/apps/mybook/www/img/wlock.gif' style='border:0' /> ";
  }else if(openyn=="Y") {
  }else if(openyn=="N") {
    img = "<img src='/apps/mybook/www/img/lock.gif' style='border:0' /> ";
  }
  return img;
}


function edit_tree(pageid) {
  if(!pageid) {
    pageid = write_pageid;
  }
  location.href = "/mybook/tree/index?pageid="+pageid;
}

function initKeyEventWrite() {
  var kl = new YAHOO.util.KeyListener(
      document,
      { keys:27 },
      { fn: closeAllPannel},
      "keydown" );
  kl.enable();

  var k2 = new YAHOO.util.KeyListener(
    document, 
    { keys:113 },
    { fn: toc}, 
    "keyup" ); 

  k2.enable();
}
function toc() {
  var dialogPannel = YAHOO.mybook.container.scroll_dialog;
  dialogPannel.body.style.width = "450px";
  dialogPannel.body.style.height = "300px";
  var titlename = "목차이동 (F2)";
  dialogPannel.setHeader(titlename);
  dialogPannel.cfg.setProperty("underlay","none");
  dialogPannel.show();
  treeInit();
}

function treeInit() {
  var tmpnode;
  tree = new YAHOO.widget.TreeView("scroll_dialog_content");
  buildTree(tree.getRoot(), treeData, true);
  tree.draw();
  
  //handler for expanding all nodes
  YAHOO.util.Event.on("expand", "click", function(e) {
    tree.expandAll();
    YAHOO.util.Event.preventDefault(e);
  });
  
  //handler for collapsing all nodes
  YAHOO.util.Event.on("collapse", "click", function(e) {
    tree.collapseAll();
    YAHOO.util.Event.preventDefault(e);
  });
}
function buildTree(node, branchData, isLabel) {
  for (var i=0; i<branchData.length; i++) {
    if(typeof(branchData[i])=="string") {
      var nodename = branchData[i];
      var t = nodename.split("_", -1);
      var pageid = t[t.length-1];
      var pagename = nodename.substring(0, nodename.lastIndexOf("_"))
      
      var openyn = pagename.substring(0, 1);
      pagename = pagename.substring(2);

      tmpnode = new YAHOO.widget.TextNode(pagename, node, true);
      tmpnode.href = "/mybook/edit/index?pageid="+pageid;
      

      if(isLabel && pageid==write_pageid) {
        tmpnode.label = openyn_image(openyn)+"<strong><u>"+pagename+"</u></strong>";
      }else {
        tmpnode.label = openyn_image(openyn)+pagename;
      }

      tmpnode.labelStyle = "tree-label";

    }else {
      buildTree(tmpnode, branchData[i], isLabel);
    }
  }
}

function create_child() {
  if(!$("subpage_name").value) {
    alert("하위페이지명을 입력하세요");
    $("subpage_name").focus();
    return;
  }
  var frm = $("editForm");
  frm.action = "/mybook/edit/create_subpage";
  frm.submit();
}


function edit_history(pageid) {
  location.href = "/mybook/edit/history?pageid="+pageid;
}


function history_diff(cnt, pageid) {

  var result = [];
  for(i=0; i<=cnt; i++) {
    if($("history_seq_"+i).checked) {
      result.push($("history_seq_"+i).value);
    }
  }

  if(result.length != 2) {
    alert("비교를 위해서는 2개의 글을 선택하세요");
    return;
  }
  
  show_dialog(
    YAHOO.mybook.container.scroll_dialog, // dialog name
    "/mybook/history/diff_history", // request url
    "pageid="+pageid+"&seq="+result.join(","),   // parameter
    "900px", // width
    "500px",  // height
    "변경사항 보기"  // title
    );
}



// ---------------------------------------------------------------------------
// tree editor
// ---------------------------------------------------------------------------
var g_fr_seq;
var g_to_seq;
var edit_tree_pageid;

function initDragList(listcnt) {
  YAHOO.example.DDApp.init(listcnt);
  g_fr_seq = "";
  g_to_seq = "";
}

function loadtree() {
  var req = new Object;
  req.url = "/mybook/tree/loadtree";
  req.pars = "pageid="+edit_tree_pageid;
  req.method = 'post';
  req.callback = callback_loadtree;
  request(req);
}

function callback_loadtree(req) {
  var json = getJsonResult(req);
  if (json.gourl) {
    location.href = json.gourl;
  }else if(json.script) {
    eval(json.script);
  }else {
    $('editdiv').innerHTML = json.tree;
    initDragList(json.pagecnt);
  }
}

function req_change() {
  var req = new Object;
  req.url = "/mybook/tree/change";
  req.pars = "pageid="+edit_tree_pageid+"&fr="+(g_fr_seq-1)+"&to="+(g_to_seq-1);
  req.method = 'post';
  req.callback = callback_loadtree;
  request(req);

}

var g_pageid = "";
var g_pagename = "";
function popmenu(pageid, pagename, e) {
  var x = e.clientX;
  var y = e.clientY;
  g_pageid = pageid;
  g_pagename = pagename;
  var myspan = $("menuspan");
  if(myspan.style.display == "none") {
    myspan.style.display = "";
    myspan.style.left=x-20+"px";
    myspan.style.top=y+getScrollTop()-10+"px";
  }else if(myspan.style.display!="none"){
    myspan.style.display = "none";
  }
}

function gopage() {
  location.href = "/mybook/edit/index?pageid="+g_pageid;
}

function read_page() {
  top.location.href = "/mybook/"+g_pageid;
}

function getScrollTop() {
  var theTop = 0;
  if (document.documentElement && document.documentElement.scrollTop) {
    theTop = document.documentElement.scrollTop;
  } else if (document.body) {
    theTop = document.body.scrollTop;
  }
  return theTop;
}

function show_popmenu(event, spanid) {
  if (spanid) g_pageid = spanid;
  var myspan = $("menuspan");
  myspan.style.display = "";
  try{
    myspan.style.left=event.clientX-30;
    myspan.style.top=event.clientY+document.documentElement.scrollTop-100;
  }catch(e) {
  }
}

function hide_popupmenu() {
  var myspan = $("menuspan");
  myspan.style.display = "none";
}

function show_rename() {
  hide_popupmenu();
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/tree/rename_dialog", // request url
    "",   // parameter
    "200px", // width
    "50px",  // height
    "페이지명 수정",  // title
    dialog_callback_edit_tree
    );
}

function show_subpage() {
  hide_popupmenu();
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/tree/subpage_dialog", // request url
    "",   // parameter
    "200px", // width
    "50px",  // height
    "하위페이지 추가",  // title
    dialog_callback_edit_tree
    );
}

function show_openyn() {
  hide_popupmenu();
  show_dialog(
    YAHOO.mybook.container.dialog, // dialog name
    "/mybook/tree/openyn_dialog", // request url
    //"code_data="+code_data,   // parameter
    "pageid="+g_pageid,
    "200px", // width
    "150px",  // height
    "페이지 권한 변경하기",  // title
    dialog_callback_edit_tree
    );
}

function dialog_callback_edit_tree(req) {
  try{
    $("rename_dialog_pagename").value = g_pagename;
    $("rename_dialog_pagename").focus();
  }catch(e) {}
  try {
    $("subpage_dialog_pagename").focus();
  }catch (e){}
}

function rename_page() {
  if(!$E("rename_dialog_pagename")) {
    alert("페이지명을 입력하세요.");
    $("rename_dialog_pagename").focus();
    return;
  }
  var req = new Object;
  req.url = "/mybook/tree/rename";
  req.pars = "pageid="+g_pageid+"&pagename="+$E("rename_dialog_pagename");
  req.method = 'post';
  req.callback = callback_loadtree;
  request(req);  
  closeAllPannel();
}

function subpage() {
  var req = new Object;
    req.url = "/mybook/tree/subpage";
    req.pars = "pageid="+g_pageid+"&pagename="+$E("subpage_dialog_pagename");
    req.method = 'post';
    req.callback = callback_loadtree;
    request(req);
    closeAllPannel();
}

function chkEnterRename(keyCode) {
  if(keyCode == 13) {
    rename_page();
  }
}

function chkEnterSubpage(keyCode) {
  if(keyCode == 13) {
    subpage();
  }
}

function remove_page() {
  if(confirm("["+g_pagename+"]을(를) 정말로 삭제하시겠습니까?\n삭제 후 복구할 수 없습니다.")) {
    var req = new Object;
    req.url = "/mybook/tree/remove";
    req.pars = "pageid="+g_pageid;
    req.method = 'post';
    req.callback = callback_loadtree;
    request(req);
  }
  closeAllPannel();
}

function tree_openyn_save() {
  var frm = $("openynForm");

  var openyn = "Y";
  if ($("openyn_Y").checked) {
    openyn = "Y";
  }else if ($("openyn_W").checked) {
    openyn = "W";
  }else if ($("openyn_N").checked) {
    openyn = "N";
  }

  var subpageyn = "N";
  if ($("subpageyn").checked) {
    subpageyn = "Y"
  }
  
  var req = new Object;
  req.url = "/mybook/tree/openyn_save";
  req.pars = "pageid="+g_pageid+"&openyn="+openyn+"&subpageyn="+subpageyn;
  req.method = 'post';
  req.callback = callback_loadtree;
  request(req);
  closeAllPannel();
}


function tree_complete() {
  location.href = "/mybook/edit/index?pageid="+edit_tree_pageid;
}

function initTree() {
  loadtree();
}





// ---------------------------------------------------------------------------
// recent modify history
// ---------------------------------------------------------------------------
function diff(pageid) {
  show_dialog(
    YAHOO.mybook.container.scroll_dialog, // dialog name
    "/mybook/history/diff", // request url
    "pageid="+pageid,   // parameter
    "900px", // width
    "500px",  // height
    "변경사항 보기"  // title
    );
}

function change_book_recent(bookid) {
  location.href = "/mybook/history/index?bookid="+bookid;
}