function entry_mce_text_off() {
	tinyMCE.execCommand('mceRemoveControl', false, 'entry_mce_text_textarea')
	$('#entry_mce_text_textarea').remove()
}

function entry_mce_text_fit(mce){
	var ifr = mce._ifr, doc = mce._doc
	if(!ifr || !doc) return
	mce._doc.body.style.overflow = 'hidden'
	var fh = parseInt(ifr.style.height)
	var dh = doc.height || parseInt(doc.body.scrollHeight)
	
	if(dh > fh) ifr.style.height = (dh + 17) + 'px'
	else if(dh < fh) ifr.style.height = Math.max((dh + 17), 100) + 'px'
	mce._doc.body.style.overflow = 'visible'
}

//「保存する」ボタンを押したときの挙動
function entry_mce_text_save( entry_id, block_id ) {
	// 引数チェック
	if( ! entry_id || ! block_id ) return;

	// 保存する値
	var mce = tinyMCE.get('entry_mce_text_textarea')
	
	// ステータス表示
	// ステータスを表示するには、プラグインで描画するHTMLの親<div>の持つ、showStatus()メソッドを実行すればOK
	$('#E_plugin_' + block_id).showStatus('保存しています');
	// 保存用のAPIをたたく
	$.ajax({
		type: 'POST',
		url: mce._url,
		data: {text: mce.getContent()},
		dataType: 'json',
		success: function( res ) {
			if( res.success ) {
				$('#E_plugin_' + block_id).showStatus('保存しました');
				entry_mce_text_off()
				$('#E_plugin_' + block_id ).closeEditor();
			} else {
				alert( '保存に失敗しました' );
			}
		}
	});
}

//「キャンセル」ボタンを押したときの挙動
function entry_mce_text_cancel( entry_id, block_id ) {
	// エディタを閉じるには、プラグインで描画するHTMLの親<div>の持つ、closeEditor()メソッドを実行すればOK
	entry_mce_text_off()
	$('#E_plugin_' + block_id ).closeEditor();
}

//「削除する」ボタンを押したときの挙動
function entry_mce_text_delete( entry_id, block_id, mode ) {
	// 引数チェック
	if( ! entry_id || ! block_id ) return;

	// 確認
	if( mode != 'noconfirm' ) {
		if( ! confirm('本当に削除しますか？') ) return;
	}

	// ステータス表示
	// ステータスを表示するには、プラグインで描画するHTMLの親<div>の持つ、showStatus()メソッドを実行すればOK
	$('#E_plugin_' + block_id).showStatus('削除しています');

	// 削除用のAPIをたたく
	$.ajax({
		type: 'POST',
		url: '/entry/' + entry_id + '/' + block_id + '/appli/plugin/EntryMceText/delete/',
		data: {},
		dataType: 'json',
		success: function( res ) {
			if( res.success ) {
				$('#E_plugin_' + block_id).showStatus('削除しました');
				// 要素を削除するには、プラグインで描画するHTMLの親<div>の持つ、deleteBlock()メソッドを実行すればOK
				entry_mce_text_off()
				$('#E_plugin_' + block_id ).deleteBlock();
			} else {
				alert( '削除に失敗しました' );
			}
		}
	});
}


// テキストエリアのリサイズに追随してフォーカス要素を調整する
function entry_mce_text_onchange() {
	setTimeout( function() {
		// 編集要素のIDを取り出す
		var myid = $('.entry_mce_text_editor:has(#entry_mce_text_textarea)').attr('id');
		var bid  = myid.replace(/^entry_mce_text_[0-9]+_/g, '');

		// 高さの変更を検出する
		var changed = 0;
		if( typeof bid != undefined ) {
			var new_height = $('#E_plugin_' + bid).height();
			var old_height = $('#E_plugin_' + bid).data('_mce_height');
			if( new_height != old_height ) {
				changed = 1;
			}
			$('#E_plugin_' + bid).data('_mce_height', new_height);
		}

		// 高さの変更に合わせて背景を再描画
		if( changed == 1 ) {
			$('.E_block').each( function(){
				$(this).showBlockBg( ENTRY_BLOCK_BGCOLOR );
			});
			$('#E_plugin_' + bid).changeBlockBgColor( ENTRY_BLOCK_TARGET );
		}
	}, 100 );
}


