// load lib
document.write('<script type="text/javascript" src="/static/js/syntaxhighlighter/shCore.all.js"></script>');

$.fn.extend({
    syntax_highliter_insertAtCaret: function(v) {
        var o = this.get(0);
        o.focus();
        if (jQuery.browser.msie) {
            var r = document.selection.createRange();
            r.text = v;
            r.select();
        } else {
            var s = o.value;
            var p = o.selectionStart;
            var np = p + v.length;
            o.value = s.substr(0, p) + v + s.substr(p);
            o.setSelectionRange(np, np);
        }
    }
});

// save
function entry_syntaxhighlighter_save( entry_id, block_id ) {
	// 引数チェック
	if( ! entry_id || ! block_id ) return;

	// 保存する値
	var syntax = $('#entry_syntaxhighlighter_syntax').val();
	var text = $('#entry_syntaxhighlighter_textarea').val();

	// ステータス表示
	// ステータスを表示するには、プラグインで描画するHTMLの親<div>の持つ、showStatus()メソッドを実行すればOK
	$('#E_plugin_' + block_id).showStatus('保存しています');

	// 保存用のAPIをたたく
	$.ajax({
		type: 'POST',
		url: '/entry/' + entry_id + '/' + block_id + '/appli/plugin/EntrySyntaxHighLighter/save/',
		data: {
			syntax: syntax,
			text: text
		},
		dataType: 'json',
		success: function( res ) {
			if( res.success ) {
				$('#E_plugin_' + block_id).showStatus('保存しました');
			} else {
				alert( '保存に失敗しました' );
			}
			$('#E_plugin_' + block_id ).closeEditor();
		}
	});
}

// cancel
function entry_syntaxhighlighter_cancel( entry_id, block_id ) {
	// エディタを閉じるには、プラグインで描画するHTMLの親<div>の持つ、closeEditor()メソッドを実行すればOK
	$('#E_plugin_' + block_id ).closeEditor();
}

// delete
function entry_syntaxhighlighter_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/EntrySyntaxHighLighter/delete/',
		data: {},
		dataType: 'json',
		success: function( res ) {
			if( res.success ) {
				$('#E_plugin_' + block_id).showStatus('削除しました');
			} else {
				alert( '削除に失敗しました' );
			}
			// 要素を削除するには、プラグインで描画するHTMLの親<div>の持つ、deleteBlock()メソッドを実行すればOK
			$('#E_plugin_' + block_id ).deleteBlock();
		}
	});
}
