var list   = false;
var single = false;
// this script from http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/008/sample1/xmlhttp.js// HTTP通信用、共通関数function createXMLHttpRequest(cbFunc){    var XMLhttpObject = null;    try{    XMLhttpObject = new XMLHttpRequest();  } catch(e){    try{      XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");    } catch(e){      try{        XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");      }catch(e){        return null;      }    }  }    if (XMLhttpObject) XMLhttpObject.onreadystatechange = cbFunc;  return XMLhttpObject;  }j$(document).ready(function(){
  
  var offset, num, url, insertPoint;
  
  makeShadowBox();
  registerLightbox();
  
  // init
  if (single){
    showBookmark();
    convertPDFLinks();
    setFavicon();
  } else if (list){
    init_autopager();
    watch_scroll();
  }
  
});

// シャドウ生成ボックスを生成
function makeShadowBox(){
  
  // Script for Internet Explorer
  var wrapper1 = document.createElement("div"),
      wrapper2 = document.createElement("div"),
      body = document.getElementById('page');
  
  wrapper1.id = "wrapper1";
  wrapper2.id = "wrapper2";
  while(body.lastChild) wrapper1.insertBefore(body.lastChild, wrapper1.firstChild);
  body.appendChild(wrapper1);
  while(body.lastChild) wrapper2.insertBefore(body.lastChild, wrapper2.firstChild);
  body.appendChild(wrapper2);
  
  /*
  // Script for DOM Range compatible browser
  var range1 = document.createRange(),
      range2 = document.createRange(),
      wrapper1 = document.createElement("div"),
      wrapper2 = document.createElement("div");
  
  wrapper1.id = "wrapper1";
  wrapper2.id = "wrapper2";
  range1.selectNodeContents(document.getElementById('page'));
  range1.surroundContents(wrapper1);
  range2.selectNodeContents(document.getElementById('page'));
  range2.surroundContents(wrapper2);
  */
  
}

// SexyLightboxを起動
function registerLightbox(){
  
  new SexyLightBox({
    find: 'lightbox',
    OverlayStyles: {'background-color':'black'},
    captionColor: '#FFF'
  });
  
}

// コメントなし かつ はてなブコメ 1以上なら 後者を優先表示
function showBookmark(){
  
  if (($id("type-comment").firstChild.nodeValue == 0) &&
      ($id("type-bookmark").firstChild.nodeValue != 0)){
    showComments("bookmark");
  }
  
}

// 関連URLのfaviconを設定
function setFavicon(){
  
  var itms = $id("related-out").lastChild.childNodes;
  
  if (itms[0].tagName == "LI"){
    for (var i=0; i<itms.length; i++){
      var url = itms[i].lastChild.href;
      var favicon_url = "http://favicon.aruko.net/m/e/" + url;
      itms[i].style.listStyleImage = "url("+ favicon_url + ")";
    }
  }
  
}

// PDFのリンクをオンラインPDFリーダへ差し替える
function convertPDFLinks(){
  var links = document.getElementsByTagName("a");
  var regex = new RegExp('\\.pdf$','i');
  for (var i in links){
    var link = links[i].href;
    if (regex.test(link) && link.indexOf("pdf.openvista.jp") == -1){
      links[i].href = 'http://pdf.openvista.jp/view/' + link;
    }
  }
}

// 一覧ページでの自動継ぎ足し
function watch_scroll(){
  
  try{
    var sh = document.documentElement.scrollHeight;
    var sc = document.documentElement.scrollTop || document.body.scrollTop;
    var remain = (sh - sc);
    //window.status = [sh,sc];
    if(remain < 1600){
      do_request();
    }
  } catch(e){
  
  }
  
  var self = arguments.callee;
  setTimeout(self,100);
  
}

function do_request(){
  
  if (this.requested == offset){
    return;
  } else{
    this.requested = offset;
  }
  
  var xmlhttp;
  try{
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch(e){
    xmlhttp = new XMLHttpRequest();
  }
  
  xmlhttp.onreadystatechange = function(){
    //alert(xmlhttp.readyState);
    //alert(xmlhttp.status);
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)){
      var insertPoint = $id("content").lastChild; // comment
      var v = xmlhttp.responseText;
      var end_flag = 0;
      //alert(v.length);
      var start = v.indexOf('<!-- START ITEMS -->');
      var end   = v.indexOf('<!-- END ITEMS -->');
      //alert([start,end]);
      //alert(v.length);
      if (v.indexOf('class="next-page"') == -1){
        end_flag = 1;
      }
      
      v = v.slice(start,end);
      var div = document.createElement("div");
      div.innerHTML = ["", v, ""].join("");
      insertPoint.parentNode.insertBefore(div, insertPoint);
      
      if (!end_flag){
        window.status = offset +"ページ目を読み込みました";
        offset += num;
      } else{
        window.status = "最後のページを読み込みました";
      }
    }
  };
  
  url = url.replace(/\/page\/\d/, "/page/" + offset);
  xmlhttp.open("GET", url, true);
  window.status = offset +"ページ目を読み込んでいます..";
  xmlhttp.send(null);
  
}

function init_autopager(){
  
  // find next link
  var ol    = document.getElementsByTagName("ol");
  var len   = (ol.length < 2) ? 2 : ol.length ;
  var lists = ol[(len-2)].childNodes;
  var len   = lists.length;
  
  for (var i=0; i<len; i++){
    if (lists[i].className == "next-page"){
      var href = lists[i].firstChild.href;
    }
  }
  
  if (href){
    url = href;
  } else{
    return;
  }
  
  offset = (url.match(/\/page\/(\d*)\//))[1] - 0; // set as int
  num = 1;
  
}

function addArticles(){
  
  div = $id("content");
  
  if (document.createElement){
    node_div = document.createElement("div");
    div.appendChild(node_div);
  }
  
  httpObj = createXMLHttpRequest(displayData);
  
  if (httpObj){
    httpObj.open("GET","/readmore/",true);
    httpObj.send(null);
  }
  
}

function displayData(){
  
  div = $id("content").lastChild;
  
  if ((httpObj.readyState == 4) && (httpObj.status == 200)){
    txt = httpObj.responseText;
    start = txt.indexOf('<!-- START ITEMS -->');
    end   = txt.indexOf('<!-- END ITEMS -->');
    txt = txt.slice(start,end);
    div.innerHTML = txt;
  } else{
    div.innerHTML = '<p class="center"><img src="/wp-content/themes/cielo/images/loading.gif" width="24" height="24" /> 読み込んでいます..</p>';
  }
}

function hideShow(id, obj){
  
  if ($id(id).style.display == "block"){
    $id(id).style.display = "none";
    obj.value = "この項を表示する";
  } else{
    $id(id).style.display = "block";
    obj.value = "この項を折りたたむ";
  }
  
}

function setFormData(){
  
  switch ($id("author").value){
    case "":
    case "お名前（任意）": $id("author").value = "名無しさん"; break;
    case "お名前（必須）": $id("author").value = ""; break;
  }
  
  switch ($id("email").value){
    case "":
    case "メールアドレス（任意）": $id("email").value = "mail@anonymous.com"; break;
    case "メールアドレス（必須）": $id("email").value = ""; break;
  }
  
  if ($id("url").value == "URL（任意）"){
    $id("url").value = "";
  }
  
}

function showComments(type){
  
  switch (type){
    case "comment"  : widthAdjust = "0px";    break;
    case "bookmark" : widthAdjust = "-111px"; break;
    case "trackback": widthAdjust = "-222px"; break;
  }
  
  var statuses         = $id("form-select").childNodes,
      comment_list     = $id("comments-list"),
      bookmark_list    = $id("bookmarks-list"),
      trackback_list   = $id("trackbacks-list");
  
  comment_list.style.display   = (type == "comment")   ? "block" : "none";
  bookmark_list.style.display  = (type == "bookmark")  ? "block" : "none";
  trackback_list.style.display = (type == "trackback") ? "block" : "none";
  
  for (i=0; i<statuses.length; i++){
    
    if (statuses[i].tagName != null){
      
      var status = statuses[i].getElementsByTagName("p")[0];
      
      if (statuses[i].id == type + 's-column'){
        
        status.style.backgroundPosition = ((status.className == "status on") ? "-200px" : "-300px") + ' ' + widthAdjust;
        
      } else{
        
        switch (statuses[i].id){
          case "comments-column"  : widthAdjust2 = "0px";    break;
          case "bookmarks-column" : widthAdjust2 = "-111px"; break;
          case "trackbacks-column": widthAdjust2 = "-222px"; break;
        }
        
        status.style.backgroundPosition = ((status.className == "status on") ? "0px" : "-100px") + ' ' + widthAdjust2;
        
      }
      
    }
    
  }
  
}

/*** iPhone + iPod touch 用 ***/

function updateOrientation(){
  var o = window.orientation;
  
  switch (o){
    case -90:
    case 90 : document.documentElement.id = "landscape"; break;
    default : document.documentElement.id = "portrait";  break;
  }
}

function hideURLBar(){
  // スクロール済みの場合はスルー
  if (document.documentElement.scrollTop < 50){
    window.scrollTo(0,1);
  }
}

function initTouch(){
  updateOrientation();
  hideURLBar();
  watch();
}

function $id(id){
  
  return document.getElementById(id);
  
}

window.onorientationchange = initTouch;