/*
    @tag.js
    @author ?
    @dateModified 2006-04-26T09:24:00+09:00
    @description 
    @note　テキストエディタ用タグ付けスクリプト？
*/
var sel_length, end_length=0, start_length=0;
var bl=0;
var el=null;
function get_pos(d){
if( d ) el=d;
 if( bl==1 ) {
   d.focus();
   var sel=document.selection.createRange();
   sel_length = sel.text.length;

   var r = document.body.createTextRange();
   r.moveToElementText( d );
   var all=r.text.length;
   r.setEndPoint( "StartToStart", sel );

   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;
 }else if( bl==3 ){
     var ln=new String(d.value);
     start_length=ln.length;
     end_length=start_length;
     sel_length=0;
 }
}

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);
  } else if( bl == 3 ){
//
  }
  el.focus();
}

function enclose(s, e){
  if( !el) return;
  var itext=el.value;

  if( bl == 4 ){
    el.value = itext + s + e;
  } else if( bl ){
    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;
  }
  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;");
  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;
  }
  var itext=el.value;
  var flag=false;

  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 cnv = click_m.replace(/\n/g, "\n"+af);
  if( start_length==0 ){
     flag=true;
  }
  if( flag ){
    cnv=af + cnv;
  }

  el.value=click_s + cnv + click_e;

  atach_focus(start_length+cnv.length);
}

function Po(){
href=prompt("URL","http://");
if(href == null) return;
if(href != null) {
enclose ('<a href=\"' + href + '\" target=\"blank\">', '</a>');
    }
}

function insertYoutubeTag(){
	href = window.prompt("YouTube URL","http://");
	if(href == null) return;
	if(href != null) {
		var yt_matchdomain = /^http:\/\/.*youtube\.com\/.*\Wv=(.*)$/;
		var yt_query = href.match(yt_matchdomain);
		if(yt_query != null){
			var yt_id = yt_query[1].split('&');
			if(yt_id != null){
				enclose ('', '<YouTube>'+yt_id[0]+'</YouTube>');
			}
		}
		return false;
	}
}