/* タグ入力支援スクリプト                                  */
/* Script written by Mugi (mugi@wa2.so-net.ne.jp)          */
/*   2nd Edition by Raelian(2005/02/10)-(2005/08/15)       */
/*   http://painter.homeip.net/~raelian/tag/enclose.html   */
/*   3rd Customize by Narusawa(2005/08/16)                 */
/*   http://caelum.skr.jp/                                 */
/*   4th Customize by Kiriji(2007/10/24)                   */
/*   http://brutzero.s22.xrea.com/rb/                      */

var sel_length, end_length=0, start_length=0;
var bl=0;
var el=null;
function get_pos(d){
if( bl != 1 && bl != 2 ) return;
if( d ){ el=d; }else{ return; }
 var ret=0;
 if( bl==1 ) {
   var sel=document.selection.createRange();
   if( !sel ) return;
   sel_length = sel.text.length;
   var r=d.createTextRange();
   var all=r.text.length;
   r.moveToPoint(sel.offsetLeft,sel.offsetTop);
   r.moveEnd("textedit");

   end_length=r.text.length;
   start_length=all-end_length;
 } else if( bl==2 ) {
     start_length=d.selectionStart;
     end_length=d.value.length - d.selectionEnd;
     sel_length=d.selectionEnd-start_length;
 }
}

function atach_focus(ln){
  if( bl == 1 ){
    var e=el.createTextRange();
    var tx=el.value.substr(0, ln);
    var pl=tx.split(/\n/);
    e.collapse(true);
    e.moveStart("character",ln-pl.length+1);
    e.text=e.text+"";
    e.collapse(false);
    e.select();
  } else if( bl == 2 ){
    el.setSelectionRange(ln, ln);
  }
  el.focus();
}

function enclose(s, e){
  if( !el ){
    if( bl != 1 && bl != 2 ){
      el=document.getElementById("Message");
    }else{
      return;
    }
  }

  var flag2=0;

  if( bl == 1 ){
   var sel=document.selection.createRange().text;
   if( sel ){
     var len1, len2, lens, dat;
     dat=el.createTextRange().text;
     len1=dat.length;
     lens=sel.length;
     if( len1 != lens ){
       document.selection.createRange().text=sel;
       len2=el.createTextRange().text.length;
     }
     document.selection.createRange().text=s+sel+e;
     if( len1 != len2 && len1 != lens ){
       document.selection.createRange().text+="\n";
     }
     flag2=1;
   }
  }
  if( bl == 4 || bl == 3 ){
    var str=document.getElementById("Message").value;
    document.getElementById("Message").value=str+s+e;
  } else if( bl && flag2 == 0 ){
    var itext=el.value;
    var click_s=itext.substr(0, start_length);
    var click_m=itext.substr(start_length, sel_length);
    var click_e=itext.substr(start_length+sel_length, end_length);
    el.value=click_s + s + click_m + e + click_e;
  }

  atach_focus(s.length+e.length+start_length+sel_length);
}

function convert(s, e){
  if( !el ) return;
  if( (bl!=1) && (bl!=2) ){
     el.focus();
     return;
  }

  if( bl == 1 ){
   var flag=0;
   var sel=document.selection.createRange().text;
   if( sel ){
     var len1=el.createTextRange().text.length;
     document.selection.createRange().text=sel;
     var len2=el.createTextRange().text.length;
     if( len1 != len2 ){
       flag = 1;
     }
     var cnv = sel.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/{/g, "&#123;").replace(/}/g, "&#125;");
     document.selection.createRange().text=cnv;
     if( flag ){
       document.selection.createRange().text+="\n";
     }
   }
  }else{
    var itext=el.value;
    var click_s=itext.substr(0, start_length);
    var click_m=itext.substr(start_length, sel_length);
    var click_e=itext.substr(start_length+sel_length, end_length);
    var cnv = click_m.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/{/g, "&#123;").replace(/}/g, "&#125;");
    el.value=click_s + cnv + click_e;
  }
  atach_focus(start_length+cnv.length);
}
function fstins(af){
 if( !el ) return;
 if( (bl!=1) && (bl!=2) ){
    el.focus();
    return;
 }
  
 if( bl == 1 && start_length < 0 ){
   var flag=0;
   var sel=document.selection.createRange().text;
   if( sel ){
     var len1=el.createTextRange().text.length;
     document.selection.createRange().text=sel;
     var len2=el.createTextRange().text.length;
     if( len1 != len2 ){
       flag = 1;
     }
     var cnv=sel.replace(/\n/g, "\n"+af);
     document.selection.createRange().text=cnv;
     if( flag ){
       document.selection.createRange().text+="\n";
     }
    }
 }else{
  var itext=el.value;
  if( start_length ){
    if( itext.substr(start_length-1,1) == "\n" ){
      start_length--;
    }
  }
  var click_s=itext.substr(0, start_length);
  var click_m=itext.substr(start_length, sel_length);
  var click_e=itext.substr(start_length+sel_length, end_length);
  var sel = click_m.replace(/\n/g, "\n"+af);
  if( start_length==0 ){
    sel=af + sel;
  }
  el.value=click_s + sel + click_e;
 }
 atach_focus(start_length+sel.length);
}

var tmstr=0;
function gettmstr(){
var tmn=new Date();
var tms=tmn.getTime();
  if( tmstr == tms ){
    tms++;
  }
  tmstr=tms;
}

/*-- ネタバレ・ノーマル（ボタン） */
function neta_btn(){
gettmstr();
var s1='<input class="nbtn" type="button" name="nothing" value="ネタバレ" onclick="sfield_view('+"'"+tmstr+"'"+');return false;"><div id="'+tmstr+'" class="sfield">';
enclose(s1, "</div>");
}

/*-- ネタバレ・ノーマル（リンク） */
function neta_link(){
gettmstr();
var s1='<a href="#" onclick="sfield_view('+"'"+tmstr+"'"+');return false;">ネタバレ</a><div id="'+tmstr+'" class="sfield">';
enclose(s1, "</div>");
}



/* -- ネタバレ長文用（ボタン）ここから */
function sfield_btn_longvchg(){
gettmstr();
var xid="x"+tmstr;
var vid=xid+"o";
var s1='<input class="nbtn" type="button" name="'+vid+'" value="ネタバレ" id="'+vid+'" onclick="sfield_btn_vcng('+"'"+xid+"','閉じる','ネタバレ');return false;"+'"><div id="'+xid+'" class="sfield">';
var s2='\n<div style="text-align:right"><input class="nbtnc" type="button" name="nothing" value="閉じる" onclick="sfield_btn_vcng('+"'"+xid+"','閉じる','ネタバレ');window.open('#"+vid+"','_self');return false;"+'"></div></div>';
enclose(s1, s2);
}

/*-- ネタバレ・長文用（リンク） */
function sfield_link_longvchg(){
gettmstr();
var xid="x"+tmstr;
var vid=xid+"o";
var s1='<a href="#" onclick="sfield_view('+"'"+tmstr+"'"+');return false;">ネタバレ</a><div id="'+tmstr+'" class="sfield">';
var s2='\n<div style="text-align:right"><a href="#" onclick="sfield_view('+"'"+tmstr+"'"+');return false;">[ 閉じる ]</a></div></div>';
enclose(s1, s2);
}

