/*
 JavaScript lib.js by martin $ 2010/08/26 18:48:13
*/
var d = document, DE = d.documentElement, UD = 'undefined';

var client = oParts.client;
var toolTip, ed, loadingImg, loadingAni, loaderAni, expandImg, unexpandImg, screenBack, closeButton;
var ImagePath = 'Images/';
var baseURL = oParts.baseURL;
var ONAME, ADMIN, AUTO_LOGIN, SOLO, OADMIN, UNAME;

var toolTipOptions = {
 arrow:"bottom",
 shadow:true,
 width:"auto",
 borderWidth:3,
 borderColor:"#cccc00",
 borderRadius:5,
 background:"#ffffe5",
 shadowRadius:10,
 arrowOffset:"auto",
 arrowSize:12,
 maxWidth:280,
 textAlign:"left",
 font:"500 13px/1.5 メイリオ, Arial"
};

function googleIt(query){
 window.open(encodeURI("http://www.google.com/search?hl=ja&ie=UTF-8&oe=UTF-8&q="+query));
}
function wikipediaIt(query){
 window.open("http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Search?search="+encodeURIComponent(query));
}

function my_confirm(text){
 text += "削除しますか？";
 if(!confirm(text)) return false; else return true;
}

function readMore(self){
 var s, ob; self = o(self); ob = self.sib(1);
 if(!ob.visible()){
  self.title('記事をたたむ').html('&laquo;やっぱり隠す').css('background-position:0 100%'); s = ob.html();
  if(/corner\-play/.test(s)) cornerPlay(ob.$);
  if(/photo\-effect/.test(s)){
   if(typeof photoEffect != UD) photoEffect.init(ob.$);
  }
  ob.show();
 } else {
  self.title('続きをよむ').html('&raquo;続きを読む').css('background-position:0 0');
  ob.hide();
 }
}

function toggleBox(self, target){
 if(!target) return;
 var tv = target.visible();
 if(tv) target.rollUp(); else target.rollOut();
 self.css('background-position:' + ['0 0', '0 100%'][tv]);
 self.title(['閉じます', '展 開！'][tv]);
 oParts.cookie.set('PPBLOG_SIDEBAR_'+self.parent(2).id.toUpperCase()+'_STATE', ['-', '+'][tv]);
}

var Caret = { // マウスで指定したポイントあるいは文字列に要素を挿入
 getArea : function(){
  if(typeof ed == UD){
   if(o('#Page1')) ed = o('#Page1');
   else if(o('#c_com')) ed = o('#c_com');
   else ed = o('textarea').item(0);
  }
  return ed || ed.$;
 },
 selection : '',
 get : function(){
  var area = Caret.getArea();
  if(client.MSIE){
   if(!document.selection.createRange()) area.focus();
   Caret.range =  document.selection.createRange().duplicate();
   return Caret.selection = Caret.range.text;
  } else {
   return Caret.selection = area.value.substring(area.selectionStart, area.selectionEnd);
  }
 },
 set : function(string){
  var area = Caret.getArea();
  if(client.MSIE){
   if(Caret.selection.length > 0){
    Caret.range.text = string;
    Caret.range.select();
   } else {
    area.focus();
    Caret.range = document.selection.createRange().duplicate();
    Caret.range.text = string;
   }
  } else {
   if(Caret.selection.length >= 0 && area.selectionStart >= 0){
    var s = area.selectionStart, scrollTop = area.scrollTop;
    area.value = area.value.slice(0, s) + area.value.slice(s).replace(Caret.selection, string);
    area.setSelectionRange(eval(s + string.length), eval(s + string.length));
    area.scrollTop = scrollTop; // Firefoxでカーソルがトップに戻らないための処理
    area.focus();
   } else area.value += string;
  }
 }
};

function loadComments(uid){
 var commentsDiv = o('#responses-' + uid);
 var tar = oParts.target(), ownerDiv = o('#UID' + uid), diff;
 var cform = o('#comment' + uid), tbform = o('#trackbacks-' + uid);
 if(tar.$.disabled) return;
 if(client.MSIE) tar.blur();
 if(o('#responses')){ o('#responses').view(2); return;}
 
 if(commentsDiv){ // already loaded and displayed
  if(commentsDiv.visible()){
   o([commentsDiv, cform, tbform]).hide();
   tar.html(tar.html().replace('[-]', '[+]')).css('white-space: nowrap').title('コメントを表示します');
  } else {
   o([commentsDiv, cform]).show();
   tar.html(tar.html().replace('[+]', '[-]')).css('white-space: nowrap').title('表示したコメントを隠します').intoView();
  }
 } else {
  tar.$.disabled = true;
  ajaxTooltip('コメント', true); if(tbform) tbform.away();
  oParts.server.get(baseURL + 'ajax.php?type=comments&aim='+uid, function(data){
   commentsDiv = o(oParts.fragment(data)).joinAfter(ownerDiv);
   commentsDiv = o('#responses-' + uid);
   tar.html(tar.html().replace('[+]', '[-]')).title('表示したコメントを隠します');
   ajaxTooltip(' コメント読み込み完了！ ');
   tar.$.disabled = false;
  });
  tar.intoView();
 }
}

function loadCommentForm(uid){
 var cform = o('#comment' + uid), tbform = o('#trackbacks-' + uid);
 var deja = o("*[id^=comment]", document.body);
 if(deja.size){
  for(var i = 0; i < deja.size; i++){
   if(deja.item(i).id === "comments") continue;
   if(deja.item(i).id !== "comment" + uid) deja.item(i).away();
  }
 }
 if(!cform) ajaxTooltip('コメントフォーム', true);
 if(typeof ONAME == UD) oParts.loadScript(baseURL + 'ajax.php?type=info');
 oParts.loadScript(baseURL + 'ajax.php?type=json');
 oParts.loadScript(baseURL + 'js/comment.js');
 var ownerDiv = o('#UID' + uid);
 var tar = oParts.target();
 var commentsDiv = o('#responses-' + uid);
 if(!cform){
  if(ONAME){
   tar.$.disabled = true;
   oParts.server.get(baseURL + 'ajax.php?type=commentform&UID=' + uid, function(data){
    cform = o(oParts.fragment(data.replace(' id="comment"', '')));
    if(commentsDiv){
     cform.joinAfter(commentsDiv); cform = o('#comment' + uid);
    } else {
     cform.joinAfter(ownerDiv); cform = o('#comment' + uid);
    }
    if(tbform) tbform.away();
    ajaxTooltip('フォーム読み込み完了');
    tar.$.disabled = false;
    cform.intoView();
   }, false);
  }
 } else cform.intoView();
}

function loadTrackBacks(uid, entree){
 var tbform = o('#trackbacks-' + uid), cform = o('#comment' + uid), ownerDiv = o('#UID' + uid);
 var commentsDiv = o('#responses-' + uid), tar = oParts.target();
 var Y = tar.$.offsetTop - oParts.metrics(3);
 if(!tbform){
  ajaxTooltip('TrackBackフォーム', true);
  tbform = oParts.create('div#trackbacks-'+uid, null, null, true);
  oParts.server.get(baseURL + 'ajax.php?type=trackback&UID='+uid, function(data){
   tbform.html(data).joinAfter(ownerDiv);
   if(cform){
    o('p.comment-intro', cform).item(0).away();
    o('p.trackback-alert', cform).away();
   }
   ajaxTooltip('読み込み完了');
   tbform.intoView();
  });
 } else {
  tbform.toggle();
 }
}

function loadPage(uid, page, headline){
 ajaxTooltip(headline ? 'この続きを' : '次のページを', true);
 uid = uid.replace(/d$/,'');
 oParts.server.get(baseURL + "ajax.php?type=page&UID="+uid+"&page="+page, function(data){
  var ownerDiv = o("#UID" + uid);
  var articleContent = o(".article-content", ownerDiv), commentsButton = o(".cute-button", ownerDiv);
  var response = o('#responses-'+uid);
  if(data.indexOf("\t\t") > 0){
   var mod = data.split(/\t\t/)[0]; data = data.split(/\t\t/)[1];
   applyScript(mod);
  }
  articleContent.css('line-height: 1.7;');
  if(!headline) ownerDiv.view(1);
  if(response && response.visible()){
   if(commentsButton){
    var commentsButton_text = commentsButton.html();
    commentsButton.away();
   }
  }
  articleContent.html(data);
  cornerPlay(articleContent);
  var commentsButton = o(".cute-button", ownerDiv);
  if(commentsButton){
   commentsButton.html(commentsButton_text);
  }
  if(!headline && commentsButton) articleContent.addChild(commentsButton);
  if(typeof photoEffect != UD) photoEffect.init(ownerDiv.$);
  if(typeof pettieSyntax != UD) pettieSyntax();
  if(client.Safari) self.pageYOffset = ownerDiv.offsetTop;
  var editLink = o('a[rel=edit]', ownerDiv);
  if(editLink){
   editLink.each(function(a){a.href = (a.href.replace(/&?page=\d+$/, '') + "&page=" + page);});
  }
 });
}

function loadArticle(uid){
 uid = uid.replace(/d$/,'');
 ajaxTooltip('記事を', true);
 articleViewer = o('#article-viewer'), offsetY = 160;
 var viewerWidth = parseInt(oParts.metrics(0)-120);
 var cW = oParts.metrics(0), cH = oParts.metrics(1), dH = oParts.metrics(2), scY = oParts.metrics(3);
 if(!articleViewer){
  var Screen = oParts.create('div', 'z-index:999').dimension(0, 0, cW, dH).css('background:url('+screenBack+')');
  if(client.IE6) Screen.css('opacity:.73');
  articleViewer = oParts.create('div#article-viewer', 'z-index:5000; display:none;').dimension(60, offsetY, viewerWidth, null);
  var _bt = oParts.create('div', 'background:url(Images/cssbox.png) no-repeat 100% 0; margin:0 0 0 17px; height:17px; padding:0;', articleViewer);
  oParts.create('div', 'margin:0;background:url(Images/cssbox.png) no-repeat 0 0;', _bt).dimension(-17, 0, 17, 17, 'rel');
  var _bl = oParts.create('div', 'background:url(Images/bl.png) repeat-y 0 0; padding-left: 12px; height:100%;', articleViewer); // bor-l
  oParts.create('div', 'height:100%; background:url(Images/br.png) repeat-y 100% 0; padding:0;', _bl); // bor-r
  var _bb = oParts.create('div', 'background:url(Images/cssbox.png) no-repeat 100% 100%; height:17px; margin:0 0 0 17px;', articleViewer); // bor-b
  oParts.create('div', 'margin:0; background:url(Images/cssbox.png) no-repeat left bottom;', _bb).dimension(-17, 0, 17, 17, 'rel'); // bot-l
  articleViewerContent = oParts.create('div', 'background:#fff; height:100%; margin:0 12px 0 0; padding:1em;', _bl.child(0)); // content
  if(client.IE6) articleViewerContent.css('height: 1%;'); // for buggy IE6
  var closeImg1 = oParts.create('img.close-button', 'cursor:pointer;', articleViewer).dimension(0, 0, 75, 16);
  closeImg1.src(closeButton).title('閉じる');
  var closeImg2 = closeImg1.clone(true);
  o([closeImg1, closeImg2]).click(function(){
   o([articleViewer, Screen]).away();
  });
  articleViewer.addChild(closeImg2);
  
  articleViewerContent.on('mouseover', function(){
   setTimeout(
    function(){
     var viewerHeight = articleViewer.css('height');
     closeImg2.moveTo(parseInt(viewerWidth - 100), parseInt(viewerHeight - 35));
     if(viewerHeight > dH) Screen.sizeTo(null, viewerHeight + 200);
    }, 100);
  });
 }
 oParts.server.get(baseURL + "ajax.php?type=article&UID="+uid, function(data){
  if(o('#UID' + uid)){ articleViewer.moveTo(60, offsetY);return;}
  var closeImg1 = articleViewer.child(3), closeImg2 = articleViewer.child(4);
  var nav = data.split(/\$/)[0], content = data.split(/\$/)[1];
  if(/\t\t/.test(nav)){
   var newCSS, newJS, mod = nav.split(/\t\t/)[0];
   nav = nav.split(/\t\t/)[1];
   applyScript(mod, true);
  }
  articleViewerContent.html(nav + content + nav);
  cornerPlay(articleViewerContent);
  if(typeof photoEffect != UD) photoEffect.init(articleViewerContent.$);
  if(typeof pettieSyntax != UD) pettieSyntax();
  var scr = articleViewerContent.$.getElementsByTagName("script");
  if(scr.length){
   var queue = [];
   d.write = d.writeln = d.__write;
   d.write = d.writeln = function(s){ queue.push(s); }
   for (var i = 0, l = scr.length; i < l; i++){
    if(scr[i].src){
     var _scr = scr[i], _script = d.createElement('script');
     _script.type = "text/javascript";
     _script.src = _scr.src;
     d.body.appendChild(_script);
     if(client.MSIE){
      _script.onreadystatechange = function(){
       if(_script.readyState == "complete" || _script.readyState == "loaded"){
        _scr.parentNode.insertBefore(oParts.fragment(queue.join("")), _scr.nextSibling);
        d.write = d.writeln = d.__write;
       }
      }
     } else {
      _script.onload = function(){
       _scr.parentNode.insertBefore(oParts.fragment(queue.join("")), _scr.nextSibling);
       d.write = d.writeln = d.__write;
      }
     }
    } else {
     eval(scr[i].text || scr[i].innerHTML);
    }
   }
  }
  articleViewer.show();
  
  var viewerHeight = articleViewer.css('height');
  closeImg1.moveTo(parseInt(viewerWidth - 100), 15);
  closeImg2.moveTo(parseInt(viewerWidth - 100), parseInt(viewerHeight - 35));
  window.scrollTo(0, offsetY - 50);
 });
}

function applyScript(tar, init){ /* from v1.8.0 */
 var newJS, js = /\[script\]([\s\S]+?)\[\/script\]/g.exec(tar);
 var cssRe = /\[style\]([\s\S]+)\[\/style\]/g, newCSS, css = cssRe.exec(tar);
 if(css){
  cssRe.lastIndex = 0; // for reset
  if(typeof CSSScript == UD){
   CSSScript = oParts.create("style#cssScript", null, o("head"));
   newCSS = CSSScript.$;
   newCSS.type = "text/css";
  } else newCSS = CSSScript.$;
  /*@cc_on @*//*@if(1) newCSS.styleSheet.cssText += css[1]; @else@*/
  if(init) newCSS.textContent = "";
  newCSS.appendChild(d.createTextNode(css[1]));
  /*@end@*/
 }
 if(js){
  if(typeof JSScript == UD){
   JSScript = oParts.create("script#jsScript", null, o("head"));
   newJS = JSScript.$;
   newJS.type = "text/javascript";
   newJS.text = js[1];
  } else eval(JSScript.$.text);
 }
}

function loadMedia(ob, movf, ftype){ /* from ppBlog v1.5.5 */
 var clsid;
 if(ob.href.match(/\.3gp|x\-mpeg/)){
  clsid = client.MSIE ? 'classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab"' :
               'type="video/3gpp" data="'+movf+'"';
 } else clsid = 'type="'+ftype+'" data="'+movf+'"';
 ob.style.display = "none";
 ob.parentNode.parentNode.innerHTML += '<div class="media-part">'
  + '<h6 title="動画へのダイレクトリンク">::<a class="media-link" href="'+movf+'">'+movf+'</a>::</h6>'
  + '<object '+clsid+' width="176" height="160">'
  + '<param name="type" value="'+ftype+'" />'
  + '<param name="src" value="'+movf+'" />'
  + '<param name="autoplay" value="true" />'
  + '</object></div>';
}

function cornerPlay(elm){
 var RS = oParts.query('.corner-play', elm);
 if(RS) oParts.server.get(baseURL + 'js/cornerplay.js', function(script){eval(script);});
}

function AjaxLogIn(){
 var id = o('#ID').$, pwd = o('#PWD').$, submit = o('#loginSubmit').$;
 submit.disabled = true;
 if(typeof MD5 == 'object'){
  var auto = (o('#auto_login') && o('#auto_login').checked()) ? 1 : 0;
  oParts.server.post(baseURL + 'admin.php', 'mode=login&ID='+MD5.$(id.value)+'&PWD='+MD5.$(pwd.value)+'&type=ajax&auto_login='+auto,
   function(to){
    if(to.match(/\.php[\?|]$/)){
     d.write('<script type="text\/javascript">window.location.href="'+to+'";<\/script>');
    } else {
     alert(to);
     submit.disabled = false;
     id.focus();
    }
   }
  );
 } else alert("md5.js module Not Loaded!");
}

function AjaxLogInForm(){
 oParts.loadScript(baseURL + 'js/md5.js'); window.scrollTo(0, 0);
 var info = oParts.loadScript(baseURL + 'ajax.php?type=info');
 var loginCS = new Image(14,14).src = baseURL + 'Images/dialog-close.png';
 var cW = oParts.metrics(0), dH = oParts.metrics(2); 
 var BS = oParts.create('div', 'background-color:#708090; z-index:999; opacity: 0.73;').dimension(0, 0, cW, dH);
 var IO = oParts.create('div', 'z-index:1000; text-align:center;').dimension(Math.round((cW-270)/2), -160, 270, 160);
 IO.css('border:outset 3px #aaa; border-top-width:0; background:#ccc url(Images/login-bg.png) repeat-x; padding:5px 20px 0 20px;');
 var UI = '<h3 style="font-weight: 800;">ppBlog*Login</h3>\n';
 var CS = oParts.create('img', 'cursor:pointer;').title(' 閉じる ').src(loginCS);
 if(info && AUTO_LOGIN){
  IO.dimension(null, -160, null, 120).tween({top:{from:-20, to:0}}, {easing:'easeOutElastic'});
  UI += '<p style="line-height:1.3;">自動ログインが有効です.<br />ログインモードに移ります.</p>'
      + '<p><input id="auto_login" name="auto_login" type="hidden" value="1" /></p>';
 } else {
  IO.sizeTo(null, (SOLO ? 180 : 160));
  UI += '<p style="font-weight:600; line-height:1;"><label for="ID"> I D </label><input type="text" name="ID" id="ID" /><br />'
     + '<label for="PWD">PWD </label><input type="password" name="PWD" id="PWD" /></p>'
     + (SOLO ? '<p><label for="auto_login" title="次回から自動ログインモードになります">auto-login mode?</label> '
     + '<input id="auto_login" name="auto_login" type="checkbox" value="1" style="vertical-align: middle;" /><br /></p>\n' : '\n')
     + '<p><button type="submit" id="loginSubmit">&nbsp;</button></p>';
 }
 IO.html(UI); IO.addChild(CS); CS.dimension(287, 4, 14, 14);
 CS.click(function(){ o([BS, IO]).away();});
 if(info && AUTO_LOGIN){
  oParts.server.post(baseURL + 'admin.php', "mode=login&type=auto_login&ref="+location.search, function(to){
   if(/\.php/.test(to)){
    if(/</.test(to)) to = baseURL + 'admin.php';
    setTimeout('window.location.replace("'+to+'");', 1200);
   }
  });
 } else {
  var fieldcss = "color:#333; height:21px; vertical-align:middle; padding:2px 8px 0 9px; width:160px; border-width:0;"
              + "margin-bottom: 5px; background: transparent url(Images/txtfield-bg.png) no-repeat 0 0;"
              + 'font: 600 15px "Trebuchet MS", Tahoma, Verdana, Arial, Helvetica;';
  var btncss = "margin:9px auto 0 auto;width:64px; height:28px; border-width:0; cursor:pointer;"
             + "background: transparent url(Images/submit-button.png) no-repeat;";
  o('#loginSubmit').css(btncss).title('Check it out').click(function(){AjaxLogIn()});
  o('#ID').css(fieldcss).css('margin-left:10px'); o('#PWD').css(fieldcss);
  IO.tween({top:{from:-120, to:0}}, {easing:'easeOutElastic'});
  o('#ID').await(1500).queue(function(){o('#ID').focus()});
 }
}

function imagePop(e, path, w, h){
 var cW = oParts.metrics(0), cH = oParts.metrics(1), dH = oParts.metrics(2), scY = oParts.metrics(3);
 var ev = oParts.evt.target, ratio, ow = w, oh = h, _this = o(e), arrowR = null, imgPop;
 var photocaption = _this.parent(1).sib(1).html() || '';
 var caption = (typeof e.orgTitle == UD) ? e.title : e.orgTitle;
 var ox = _this.offset(0), oy = _this.offset(1), _ow = _this.rect(0)-22, _oh = _this.rect(1), iw = _this.$.width, ih = _this.$.height;
 while (e.parentNode){
  if(e.parentNode.id && /^UID\d+?/.test(e.parentNode.id)) break;
  e = e.parentNode;
 }
 var aImgs = o('img[class=resized]', e);
 if(o('#article-viewer')) articleViewer.moveTo(60, -100000);
 if(w > cW-20 || h > cH-70){
  ratio = Math.min((cW-20)/w, (cH-70)/h);
  w = Math.round(w * ratio); h = Math.round(h * ratio);
 } else ratio = 1;
 if(!imgPop){
  var imgWrap = oParts.create('div', 'overflow:hidden; background:#fff; z-index:9999; border:1px solid #aaa; padding:10px;');
  if(aImgs && aImgs.size > 1){
   imgWrap.dimension(Math.round((cW-w)/2), Math.ceil((cH-h-70)*.4)+scY, w, h + 45);
  } else imgWrap.dimension(ox, oy, _ow, _oh);
  var imgCaption = oParts.create('p', 'text-align:right; font:500 9pt/1.5 Trebuchet MS; color:navy; display:none;', imgWrap);
  imgCaption.dimension(0, h + 20, w, null);
  imgPop = oParts.create('img', 'background:#fff; border:1px solid #aaa; display: none;', imgWrap).dimension(10, 10, w, h);
  var Screen = oParts.create('div', 'z-index:999').dimension(0, 0, cW, dH).css('background:url('+screenBack+')');
  loadingImg = oParts.create('img', 'background:#fff; z-index:10000').fix('center', '45%');
  var closeImg = oParts.create('img', 'cursor:pointer; display:none;', imgWrap).sizeTo(75, 16).src(closeButton).title('閉じる');
  if(ratio < 1){
   var expand = oParts.create('img', 'z-index:1000; cursor:pointer; display:none;', imgWrap).dimension(12, 12, 34, 34);
   expand.title(' 実物大で表示 ').src(expandImg);
   expand.active = false;
  }
  loadingImg.src(loadingAni);
  if(aImgs && aImgs.size > 1){
   var _aImgs = [];
   for(var i = 0; i < aImgs.size; i++){
    if(!aImgs.item(i).cssClass()) continue;
    _aImgs.push(aImgs.item(i));
   }
   if(_aImgs.length > 1){
    var css1 = 'background:#333;opacity:0.5;border:solid 3px #fff;border-radius:5px;width:32px;height:26px;padding:5px 0 2px 3px;cursor:pointer;';
    var css2 = 'font-size:0;line-height:0;width:0;margin:auto;';
    arrowR = oParts.create('div', css1, imgWrap);
    arrowR.html('<div style="'+css2+'border-top:12px solid transparent;border-left:14px solid #fff;border-bottom: 12px solid transparent;"></div>');
    arrowR.hide().title('この記事の次の画像を表示');
    arrowR.click(function(){
     for(var i = 0; i < _aImgs.length; i++){
      if(_aImgs[i].src().split('/').pop() == path.split('/').pop()) break;
     }
     o([imgWrap, Screen]).away();
     imgPop = null;
     _aImgs[(i+1)%_aImgs.length].$.onclick();
    });
    closeImg.moveTo(imgWrap.rect(0) - 90, 15).show();
    arrowR.moveTo(imgWrap.rect(0) - 60, (imgWrap.rect(1) - 60) * .5).show();
   }
  } else {
   imgWrap.tween(
    {left:{from:ox,to:Math.round((cW-w)/2)}, top:{from:oy,to:Math.ceil((cH-h-70)*.4)+scY}, width:{from:_ow,to:w}, height:{from:_oh,to:h+45}},
    {complete:function(){
      imgWrap.dimension(Math.round((cW-w)/2), Math.ceil((cH-h-70)*.4)+scY, w, h + 45);
      closeImg.moveTo(imgWrap.rect(0) - 90, 15).show();
     }
    }
   );
  }
  if(client.IE6) Screen.css('opacity:.73');
  caption = caption.replace(/[\r\n]+/g,'<br/>').replace(/&nbsp;/g,'　');
  caption = caption.split(/<br\/?>/);
  if(caption.length > 1){
   caption[0] = '<span style="float:left;padding-left:1em;color:#73596d;width:'+(w - 210)+'px;text-align:left;">' + photocaption + '</span>' + caption[0];
   imgCaption.html( (caption[0]+'<br/>'+caption[1]+' ('+ow+'×'+oh+')') );
  } else imgCaption.html('画像をクリックすると閉じます <img src="'+ImagePath+'info2.png" width="21" height="14" alt="info" />');
  imgPop.src(path);
  var imgReady = function(){
   imgCaption.show(); loadingImg.hide();
   imgPop.css('opacity:0').show().fadeIn();
   if(expand) expand.show();
  }
  imgPop.$.complete ? imgReady() : imgPop.on('load', imgReady);
  o([closeImg, imgPop]).click(function(){
   if(o('#article-viewer')) articleViewer.moveTo(60, 160);
   if(expand) expand.away();
   o([imgCaption, closeImg]).away();
   imgPop.tween({width:{from:w,to:iw}, height:{from:h,to:ih}});
   imgWrap.css('overflow:hidden;').tween({opacity:{from:1,to:0},left:{from:imgWrap.X,to:ox},top:{from:imgWrap.Y,to:oy},width:{from:imgWrap.W,to:_ow},height:{from:imgWrap.H,to:_oh}}, {complete:function(){imgWrap.away();}});
   Screen.away();
   imgPop = null;
  });
  if(ratio < 1){
   expand.click(function(){
    if(!expand.active){
     var iX = Math.round((cW-w) / 2);
     imgWrap.dimension(iX + ow + 22 < cW ? iX : 0, scY, ow+3, oh); imgPop.sizeTo(ow, oh); Screen.sizeTo(null, Screen.H < oh ? oh + 20 : null);
     closeImg.moveTo(imgWrap.W - 66, null); imgCaption.hide();
     expand.title(' ウィンドウのサイズに合わせる ').src(unexpandImg); expand.active = true;
    } else {
     imgWrap.dimension(Math.round((cW-w)/2), scY, w, h+45); imgCaption.show();
     imgPop.sizeTo(w, h); closeImg.moveTo(imgWrap.W-66, null); Screen.sizeTo(null, Screen.H);
     expand.title(' 実物大で表示 ').src(expandImg); expand.active = false;
    }
    if(arrowR) arrowR.moveTo(imgWrap.W-40, (imgWrap.H - 32) * .5);
   });
  } //#ratio==1
  imgPop.title('マウスクリックで閉じます').css('cursor: url('+ImagePath+'zoomout.cur), pointer');
 } //#imgPop==null
}

function initCSSHover(){
 if(client.MSIE){
  if(o('#theme-selector')){
   var root = o('#theme-selector');
   root.on('mouseover', function(){this.className+=' over';});
   root.on('mouseout', function(){this.className=this.className.replace(/ over/, '');});
  }
 }
}

function loadSBM(tar, uid, title, link, count, deja){
 var p = tar.$.parentNode, pop, Y;  
 Y = tar.offset(1) - oParts.metrics(3) > oParts.metrics(1) * .5 ? 0 : 16;
 if(deja){
  if(/sbm-/.test(p.lastChild.innerHTML)){
   pop = o(p.lastChild);
  } else {
   p.appendChild(oParts.fragment(loadSBM.tmp.replace(/%uid%/, uid).replace(/%title%/g, title).replace(/%link%/g, oParts.baseURL + link)));
   p.lastChild.className = "sbm-pop"; pop = o(p.lastChild);
  }
  Y > 0 ? pop.moveTo(0, Y).rollOut() : pop.moveTo(0, 0).popUp(1);
  return;
 } else {
  ajaxTooltip("情報を", true);
 }
 oParts.server.get(baseURL + "ajax.php?type=sharedlink&UID="+uid+"&title="+title+"&link="+link, function(data){
  p.appendChild(oParts.fragment(data));
  p.lastChild.className = "sbm-pop"; pop = o(p.lastChild);
  Y > 0 ? pop.moveTo(0, Y).rollOut() : pop.moveTo(0, 0).popUp(true);
  if(count == 0 && !loadSBM.tmp){
   loadSBM.tmp = data.replace(/id="SBM\d+?"/, 'id="SBM%uid%"');
   loadSBM.tmp = loadSBM.tmp.replace(/(?:url|link|bkmk|u)=(http.+?)&amp;/g, function(a, b){return a.replace(b, '%link%');});
   loadSBM.tmp = loadSBM.tmp.replace(/(?:title|t)=([^"]+?)"/g, function(a, b){return a.replace(b, '%title%');});
  }
  ajaxTooltip("読み込み完了");
 });
}

function ajaxTooltip(txt, loading){
 if(toolTip) try {toolTip.away();}catch(e){;}
 if(loading){
  txt = '<img src="Images/loader.gif" alt="loading..." style="vertical-align:middle;"/> ' + txt + '読み込み中…';
 }
 toolTip = makeTooltip(txt, {arrow:"bottom"}).fix('center', '40%');
 if(!loading) toolTip.fadeOut2(1000);
}

function makeTooltip(content, options){
 if(o("#cuteTooltip")) o("#cuteTooltip").away();
 var vendorPrefix = client.Gecko ? '-moz-' : client.Webkit ? '-webkit-' : '', IE = client.MSIE;
 var sets, arrowBase, topOuter, topInner, arrowOuter, arrowInner, _shadow;
 var adjust = !IE * 1 + 1;
 var def = {width:'auto', arrow:'top', arrowOffset:'auto', borderColor:'#6495ed', background:'#ffffe5', borderWidth:5,
            borderRadius:5, shadow:true, shadowRadius:18, arrowSize:14, maxWidth:280, textAlign:'center', font:'500 14px/1.3 メイリオ, Arial'};
 if(toolTipOptions) def = toolTipOptions;
 var cfg = {};
 if(options){
  for(var p in def){
   cfg[p] = (options[p] !== void 0) ? options[p] : def[p];
  }
 } else cfg = def;

 var w = cfg['width'], arrow = cfg['arrow'], offset = cfg['arrowOffset'], br = cfg['borderRadius'],
     color = cfg['borderColor'], bg = cfg['background'], bw = cfg['borderWidth'], shadow = cfg['shadow'], rad = cfg['shadowRadius'],
     ah = cfg['arrowSize'], mw = cfg['maxWidth'] + (IE ? 20 + bw*2 : 0), ta = cfg['textAlign'], fn = cfg['font'];
     
 var borderVal = ah + 'px solid transparent;';

 offset = typeof parseInt(offset) == 'number' ? parseInt(offset) : 0;
 var h, aw, measure = oParts.create("span", 'position:absolute;background:red;font:'+fn+';text-align:'+ta+';padding:10px;');
 measure.moveTo(0,0).html(content), aw = measure.$.offsetWidth;
 if(w == 'auto'){
  if(aw > mw){
   measure.css('width:'+ mw +'px;'); h = measure.$.offsetHeight;
  } else h = measure.$.offsetHeight;
  w = measure.$.offsetWidth; if(IE) w += bw * 2;
 } else {
  measure.css('width:'+ w +'px;'); h = measure.$.offsetHeight;
 }
 measure.away();
 if(IE){
  if(d.namespaces && !d.namespaces["v"]){
   try{ d.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#vml"); } catch(e){;}
  }
  w = w + bw; h = h + bw;
  shadow = shadow ? '<div style="position:absolute;width: '+(w+bw*.7)+'px; height:'+(h+bw*.7)+'px;left:-'+(rad*.5)+'px; top:-'+(rad*.5)+'px; z-index: 0; background: #333;filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='+rad*.9+', MakeShadow=true, ShadowOpacity=0.4)"></div>' : '';
  var arcSize = Math.min(br / Math.min(w, h), 1);
  var adjust2 = br > bw ? 1 : 0;
 } else {
  _shadow = shadow ? vendorPrefix + 'box-shadow:2px 2px '+rad+'px rgba(0,0,0,.3);' : '';
  shadow = '';
 }
 if(IE && arcSize > 0){
  sets = '<v:roundrect fillcolor="'+ bg +'" strokecolor="'+color+'" strokeweight="'+bw+'px" arcsize="'+arcSize+'" style="';
 } else {
  sets = '<div style="background:'+bg+'; border-color:'+color+';border-width:'+bw+'px;';
 }
 sets += 'margin:0; position:relative; z-index: 1; display: block; left: 0; top: 0; padding: 0; width:'+w+'px; height:'+h+'px;';
 if(IE && arcSize > 0){
  sets += 'background: transparent;">';
 } else sets += vendorPrefix + 'border-radius: '+br+'px; border:'+bw+'px solid '+color+'; background:'+bg+';' + _shadow + '">';
 sets += '<div style="padding: 10px;font:'+fn+';text-align:'+ta+(IE ? 'margin:'+bw+'px; width:'+(w-2*10-4)+'px;' : '')+';">'+ content +'</div>';
 sets += (IE && arcSize > 0) ? '</v:roundrect>' : '</div>';

 if(!client.IE6){

 arrowBase = 'position:absolute;'+(offset !== 'auto' ? 'left: '+ offset +'px;' : '')+' font-size: 0; line-height: 0; width: 0;';
 
 switch (arrow){
  case 'top' : default :
    arrowOuter = arrowBase + 'border-bottom: '+ah+'px solid '+color+'; border-left: '+borderVal+' border-right: '+borderVal;
    arrowInner = arrowBase + 'border-bottom: '+ah+'px solid '+bg+'; border-left: '+borderVal+' border-right: '+borderVal;
    topOuter = 'top:' + (IE ? -(ah-1-adjust2) : -ah) + 'px;';
    topInner = 'top:' + (IE ? (-ah+1+bw*1.414+adjust2)+'px; *top:'+(-ah+bw*1.414+adjust2)+'px;' : (-ah+bw*1.414)+'px;');
    if(!offset){
     topOuter += 'left:'+(w-ah*2+bw*adjust)*.5+'px;'; topInner += 'left:'+(w-ah*2+bw*adjust)*.5+'px;';
    } else { topOuter += 'left:' + offset + 'px;'; topInner += 'left:' + offset + 'px;';}
   break;
  case 'right' :
    arrowOuter = arrowBase + 'border-top: '+borderVal+' border-left: '+ah+'px solid '+color+'; border-bottom: '+borderVal;
    arrowInner = arrowBase + 'border-top: '+borderVal+' border-left: '+ah+'px solid '+bg+'; border-bottom: '+borderVal;
    topOuter = 'left:'+(w+bw*adjust) + 'px;';
    topInner = 'left:'+(IE ? (w-bw*.414)+'px; *left:'+(w-bw*.414+1)+'px;' : w+bw*.586+'px;');
    if(!offset){
     topOuter += 'top:' + (h+bw*adjust-2*ah)*.5+'px;';
     topInner += 'top:' + (h+bw*adjust-2*ah)*.5+'px;';
    } else { topOuter += 'top:' + offset + 'px;'; topInner += 'top:' + offset + 'px;';}
   break;
  case 'left' :
    arrowOuter = arrowBase + 'border-top: '+borderVal+' border-bottom: '+borderVal+' border-right: '+ah+'px solid '+color+';';
    arrowInner = arrowBase + 'border-top: '+borderVal+' border-bottom: '+borderVal+' border-right: '+ah+'px solid '+bg+';';
    topOuter = 'left:' + (IE ? -ah+1 : -ah) + 'px;';
    topInner = 'left:' + (IE ? (-ah+1+bw*1.414)+'px; *left:'+(-ah+bw*1.414)+'px;' : (-ah+bw*1.414)+'px;');
    if(!offset){
     topOuter += 'top:' + (IE ? (h+bw-ah*2)*.5 : (h+bw*2-ah*2)*.5) + 'px;';
     topInner += 'top:' + (h+bw*adjust-ah*2)*.5 + 'px;';
    } else { topOuter += 'top:' + offset + 'px;'; topInner += 'top:' + offset + 'px;';}
   break;
  case 'bottom' :
    arrowOuter = arrowBase + 'border-top: '+ah+'px solid '+color+'; border-left: '+borderVal+' border-right: '+borderVal;
    arrowInner = arrowBase + 'border-top: '+ah+'px solid '+bg+'; border-left: '+borderVal+' border-right: '+borderVal;
    topOuter = 'top:' + (IE ? (h+bw*adjust+bw%2) : (h+bw*2)) + 'px;';
    topInner = 'top:' + (IE ? (h-bw*.414+bw%2)+'px; *top:'+(h-bw*.414+bw%2+1)+'px;' : (h+bw*.586)+'px;');
    if(!offset){
     topOuter += 'left:'+(w-ah*2+bw*2)*.5+'px;'; topInner += 'left:'+(w-ah*2+bw*2)*.5+'px;';
    } else { topOuter += 'left:' + offset + 'px;'; topInner += 'left:' + offset + 'px;';}
   break;
 }
 if(arrow != 'none'){
  sets += '<div style="' + arrowOuter + topOuter + '; z-index: 2;"></div>';
  sets += '<div style="' + arrowInner + topInner + '; z-index: 3;"></div>';
 }
 } //!client.IE6
 toolTip = oParts.create("div#cuteTooltip", 'position: absolute; z-index: 999; font:'+fn+';text-align:'+ta);
 toolTip.html(sets).sizeTo(w, (IE ? h - bw : h));
 if(IE && shadow){
  var shadow = toolTip.child(0).clone(true); shadow.child(0).away();
  shadow.css('position:absolute;width:'+(w+bw*.3)+'px; height:'+(h+bw*.3)+'px;left:-'+(rad*.4)+'px;top:-'+(rad*.4)+'px;z-index:0;background:#333;');
  shadow.$.style.filter = 'progid:DXImageTransform.Microsoft.Blur(PixelRadius='+rad*.9+', MakeShadow=true, ShadowOpacity=0.4)';
  toolTip.addChild(shadow);
  toolTip.html('<v:rect></v:rect>', 1); /* add this for IE's strange bug */
 }
 toolTip.child(0).child(0).html(content);
 return toolTip;
};

oParts.start(function(){
 var state, ucss = o('#ppBlogCSS');
 ImagePath = ucss ? ucss.$.href.replace(/(^ht.+?\/theme\/[^/]+?\/).+$/, '$1') + 'Images/' : ImagePath;
 oParts.imgloader({
  'loadingAni' : 'loading.gif',
  'loaderAni' : 'loader.gif',
  'expandImg' : 'expand.png',
  'unexpandImg' : 'unexpand.png',
  'screenBack' : 'screen.png',
  'closeButton' : 'button-close.png'
 }, ImagePath);
 
 if(client.IE6) initCSSHover();

 if(typeof photoEffect != UD) photoEffect.init();
 
 o(d).click(function(e){
  var cmt, non, p, s, pid, hash, tar = o(e.target);
  try {
   if(tar.$.hash && /#(comments?|trackback|response)/.test(tar.$.hash)){
    e.preventDefault();
    hash = tar.$.hash;
    while (tar.parent()){
     if(tar.id && /^UID([0-9]+$)/.test(tar.id)){pid = tar.id.slice(3); break;}
     tar = tar.parent();
    }
    if(pid){
     switch (hash){
      case '#responses' : case '#comments' : loadComments(pid); break;
      case '#comment' : loadCommentForm(pid); break;
      case '#trackback' : loadTrackBacks(pid, true); break;
     }
    }
   }
   if(tar.cssClass('expand-icon')){
    p = tar.parent(2), pid = p.id, s = p.child(1);
    if(p && s) toggleBox(tar, s);
   }
   if(tar.parent(0).cssClass('sbm-close')){
    p = tar.parent(2);
    if(p){
     p.css('top') > 0 ? p.rollUp() : p.collapse(function(){p.moveTo(null, -p.offset(1))});
    }
   }
   if(tar.$.nodeName == 'IMG' && tar.$.alt == "scrollUp"){
    tar.cancelEvent(); o('#weblog').intoView(24);
   }
   if(tar.$.nodeName == 'A'){
    if(/#weblog$/.test(tar.$.href)){
     tar.cancelEvent();
     o('#weblog').intoView(24);
    }
    if((' ' + tar.$.rel + ' ').indexOf('external') > 0){
     tar.$.target = '_blank';
    }
    if(tar.cssClass('intralink')){
     e.preventDefault();
     o(tar.$.href.split('/').pop()).view(1);
    }
    if(tar.$.href.indexOf('twitter') > 0){
     while (tar.parent()){
      if(tar.id && /^SBM([0-9]+$)/.test(tar.id)){var tid = tar.id.slice(3); break;}
      tar = tar.parent();
     }
     oParts.server.get(baseURL + "ajax.php?type=sbm_add&UID="+tid+"&sbm=twitter", function(data){ return data;});
    }
   }
   if(tar.id == 'login-entree'){tar.cancelEvent(); AjaxLogInForm();}

   if(tar.cssClass('sbm-entry')){
    var uid = /SBM:(\d+?)\t(\d+?)\t([^\t]+?)\t([^\t]+$)/.exec(tar.$.alt), pop = tar.$.parentNode.lastChild;
    var count = uid && Number(uid[1]);
    if(count == 0 && typeof loadSBM.tmp != UD){
     loadSBM(tar, uid[2], encodeURIComponent(uid[3]), uid[4], count, true);
    } else {
     if(uid) loadSBM(tar, uid[2], encodeURIComponent(uid[3]), uid[4], count, false);
     if(pop.className != 'sbm-pop'){
      ajaxTooltip('情報を', true);
     }
    }
   }
   return false;
  } catch (e){ return false;}
 }); //#onclick
 
 cornerPlay(d);
 
 o(d).on('mousemove', function(e){

  try {
   var tar = e.target;
   if(tar.nodeName == 'A' && tar.rel){
    if((' ' + tar.rel + ' ').indexOf('external') > 0){
     if(tar.title == '') tar.title = '新しいウィンドウ(タブ)で開きます';
    }
   }
  } catch(e){;};
 });
 var sidebars = o('.sidebar-body', d.body);
 if(sidebars) sidebars.each(function(el){
  var c, ul, $id = el.parentNode.id;
  c = oParts.cookie.get('PPBLOG_SIDEBAR_'+$id.toUpperCase()+'_STATE') || '-';
  $id = o('#' + $id);
  if($id){
   ul = $id.child(1);
   if(ul){
    c == '+' ? ul.hide() : ul.show();
   } else return;
   var uv = ul.visible(), t = $id.child(0).child(0);
   t.css('background-position:' + ['0 100%', '0 0'][uv]).title(['展開！', '閉じます'][uv]);
  }
 });
 if(d.getElementsByTagName('pre').length){
  oParts.loadScript(baseURL + 'js/syntax.js');
  (function(){
   if(typeof pettieSyntax != UD) pettieSyntax(); else setTimeout(arguments.callee, 10);
  })();
 }

 o(d).on("mouseover", function(e){
  var tar = e.target;
  if(tar.nodeName === 'IMG'){
   var el = e.target, title;
   while (el.parentNode){
    if(el.className === "social-bookmark") break;
    if(el.id.indexOf("UID") !== -1){
     title = tar.title; tar.orgTitle = title;
     break;
    }
    if(el.id && el.id == "linkbar"){
     title = tar.title; tar.orgTitle = title;
     break;
    }
    el = el.parentNode;
   }
   if(title){
    tar.title = "";
    var _title = title.replace(/[\r\n]+/g,'<br/>').replace(/\s{2}/g,'　　').replace(/\s/, '&nbsp;');
    
    if(tar.alt == 'directEdit' || tar.alt == 'directDel'){
     toolTip = makeTooltip(_title, {arrow:"right", arrowOffset:"auto", arrowSize:10});
     o(tar).on("mousemove", function(e){
      toolTip.moveTo(e.pageX - 170, e.pageY - 30);
     }); 
    } else if(tar.alt == 'attachedIcon'){
     toolTip = makeTooltip(_title, {arrow:"bottom", borderWidth:3, arrowSize:10});
     o(tar).on("mousemove", function(e){
      toolTip.moveTo(e.pageX - toolTip.rect(0) * .5, e.pageY - 90);
     }); 
    } else if(tar.alt == 'category-icon'){
     toolTip = makeTooltip(_title, {arrow:"left", arrowOffset:"auto", width:180});
     o(tar).on("mousemove", function(e){
      e.pageY > toolTip.rect(1) ? toolTip.moveTo(e.pageX + 50, e.pageY - 40) : toolTip.moveTo(e.pageX + 50, e.pageY + 40);
     }); 
    } else if(tar.src.indexOf('PIX/') !== -1){
     toolTip = makeTooltip(_title, {arrow:"bottom", arrowOffset:"auto"});
     o(tar).on("mousemove", function(e){
      toolTip.moveTo(e.pageX - toolTip.rect(0) * .5, e.pageY - toolTip.rect(1) - 50);
     });
    } else {
     toolTip = makeTooltip(_title, {arrow:"bottom", arrowOffset:"auto", textAlign:"center"});
     o(tar).on("mousemove", function(e){
      toolTip.unfix().moveTo(e.pageX - toolTip.rect(0) * .5, e.pageY - 80);
     });
    }
    o(tar).on("mouseout", function(e){
     tar.title = tar.orgTitle;
     if(toolTip) try {toolTip.away();}catch(e){;}
    });
   }
  }
 });
});
