function buttonCotroll( copy, cut, put, textedit, count, textareaHeight ) {

  var textRange = "";
  var copy      = document.getElementById( copy );
  var cut       = document.getElementById( cut );
  var put       = document.getElementById( put );
  var target    = document.getElementById( textedit );
  var wordcount = document.getElementById( count );


  // コピー
  copy.onclick = function (){

    var copy = new getAreaRange( target );
    textRange = target.value.slice( copy.start, copy.end );
    target.focus();

  }

  // 切り取り
  cut.onclick = function (){

    var scrollRange = target.scrollTop;

    var cut = new getAreaRange( target );
    textRange = target.value.slice( cut.start, cut.end );
    var beforeNode = target.value.slice( 0, cut.start );
    var afterNode  = target.value.slice( cut.end );

    target.value = beforeNode + afterNode;
    wordcount.innerHTML = wordCount( target.value );

    target.focus();

    // カーソルの位置設定
    if ( target.createTextRange ) {

      // IE、Opera
      var e = target.createTextRange();
      var tx = target.value.substr( 0, cut.start );
      var pl = tx.split( /\n/ );
      e.collapse( true );
      e.moveStart( 'character', cut.start - pl.length + 1 );
      e.text = e.text + '';
      e.collapse( false );
      e.select();

    }
    else {

      // Firefox、Safari
      target.scrollTop = scrollRange;
      target.setSelectionRange( cut.start + textRange.length - textRange.length, cut.start + textRange.length - textRange.length );
    }

  }
  
  // 貼り付け
  put.onclick = function (){

    if( ( target.scrollTop + Number( textareaHeight ) ) == target.scrollHeight && target.scrollTop != 0) {

      var scrollRange = "none";
    }
    else {

      var scrollRange = target.scrollTop;
    }

    var put = new getAreaRange( target );
    var beforeNode = target.value.slice( 0, put.start );
    var afterNode  = target.value.slice( put.end );

    target.value = beforeNode + textRange + afterNode;
    wordcount.innerHTML = wordCount( target.value );

    if( scrollRange == "none" ) scrollRange = target.scrollHeight;

    target.focus();

    // カーソルの位置設定
    if ( target.createTextRange ) {

      // IE、Opera
      var e = target.createTextRange();
      var tx = target.value.substr( 0, put.start + textRange.length );
      var pl = tx.split( /\n/ );
      e.collapse( true );
      e.moveStart('character',put.start + textRange.length - pl.length + 1 );
      e.text = e.text + '';
      e.collapse( false );
      e.select();
    }
    else {

      // Firefox、Safari
      target.scrollTop = scrollRange;
      target.setSelectionRange( put.start + textRange.length, put.start + textRange.length );
    }

  }

  // キーボード入力
  target.onkeyup = function (){

    wordcount.innerHTML = wordCount( this.value );

  }


  // 選択範囲
  var getAreaRange = function( obj ) {

    var selection = new Selection( obj );   // Section.js
    var s = selection.create();             // Section.js
    this.start = s.start;
    this.end = s.end;

  }

}

// カウント
function wordCount( text ) {

  this.text = text;
  this.cnt  = 0;
  this.pos  = 0;

  if ( 0 == this.text.replace( /^\s{1,}/, "" ).length ) return 0;

  this.text = this.text.replace( /[\n\s]+/g , " " )
  this.text = this.text.replace( /^\s{1,}/, "" )

  do {
    this.pos = this.text.indexOf( " " , this.pos )
    cnt ++;
    if ( ++this.pos >= this.text.length ) break;
  } while ( this.pos != 0 );

  return this.cnt;

}

