
// tinyMCEをロード
if (!window.tinyMCE) {
	document.write('<script type="text/javascript" src="/static/js/tiny_mce/tiny_mce.js"></script>');
}

//「編集する」を押したときの挙動
function plugin_free_text_rich_top_edit () {
	// フォームを描画する
	$('#plugin_free_text_rich_top_text').hide();
	$('#plugin_free_text_rich_top_form').show();

	// ボタンを描画する
	$('#plugin_free_text_rich_top_button_edit').hide();
	$('#plugin_free_text_rich_top_button_save').show();
	$('#plugin_free_text_rich_top_button_cancel').show();

	// スクロールする
	var offset = $('#plugin_free_text_rich_top').offset().top - 50;		// だいたいの位置でOK
	$('html,body').animate({ scrollTop: offset }, 'slow');

	// 終わり
	return false;
}

//「キャンセル」を押したときの挙動
function plugin_free_text_rich_top_cancel () {
	// フォームリセット
	$('#plugin_free_text_rich_top_form').get(0).reset();

	// tinyMCEもリセット
	var mce = tinyMCE.get('plugin_free_text_rich_top_form_text');
	mce.load();

	// テキストを描画する
	$('#plugin_free_text_rich_top_form').hide();
	$('#plugin_free_text_rich_top_text').show();

	// ボタンを描画する
	$('#plugin_free_text_rich_top_button_edit').show();
	$('#plugin_free_text_rich_top_button_save').hide();
	$('#plugin_free_text_rich_top_button_cancel').hide();

	// 終わり
	return false;
}

//「OK」を押したときの挙動
function plugin_free_text_rich_top_save () {
	var mce = tinyMCE.get('plugin_free_text_rich_top_form_text');
	mce.save();

	// 保存する値
	var title = $('#plugin_free_text_rich_top_form_title').val();
	var text  = $('#plugin_free_text_rich_top_form_text').val();

	// タイトル文字列長チェック
	var str_width = plugin_free_text_rich_top_str_width(title);
	if (str_width <= 0) {
		alert( 'タイトルを入力してください。' );
		return;
	}
	if (str_width > FREE_TEXT_RICH_TOP_TITLE_MAX_LEN) {
		alert( 'タイトルが長すぎます。（半角'
			+ FREE_TEXT_RICH_TOP_TITLE_MAX_LEN + '文字まで）'
			+ '　※現在：半角' + str_width + '文字');
		return;
	}

	// 保存する
	$.ajax({
		type: 'POST',
		url: '/appli/plugin/FreeTextRichTop/save/',
		data: {
			title: title,
			html: text
		},
		dataType: 'json',
		success: function( res ){
			if( res.success == 1 ) {
				// 値を更新する
				$('#plugin_free_text_rich_top_form_title').val(res.title);
				$('#plugin_free_text_rich_top_form_text').val(res.html);
				$('#plugin_free_text_rich_top_form_title').attr('defaultValue', res.title);
				$('#plugin_free_text_rich_top_form_text').attr('defaultValue', res.html);
				mce.load();

				// フォームを消す
				$('#plugin_free_text_rich_top_form').hide();

				// 本文を描画する（念のため最低限のサニタイズを行う）
				res.html = res.html.replace(/<\/?(script|style|object|embed|param|form|input|textarea|button|div).*?>/, "");
				$('#plugin_free_text_rich_top_text').empty().append( res.html ).show();

				// タイトルを描画する
				var ent = { '<' : '&lt;', '>' : '&gt;', '&' : '&amp;', '"' : '&quot;' };
				res.title = res.title.replace(/[<>&"]/g, function(_){ return ent[_] });
				$('#A_top_title_FreeTextRichTop').empty().append( res.title );

				// ボタンを描画する
				$('#plugin_free_text_rich_top_button_edit').show();
				$('#plugin_free_text_rich_top_button_save').hide();
				$('#plugin_free_text_rich_top_button_cancel').hide();
			} else if( res.success == -1 ) {
				// タイトル長すぎ
				alert( 'タイトルが長すぎて保存できませんでした' );
				// 元に戻す
				plugin_free_text_rich_top_cancel();
			} else {
				// アラートを表示して
				alert( '保存できませんでした' );
				// 元に戻す
				plugin_free_text_rich_top_cancel();
			}
		}
	});
}

// 文字列の合計幅を計算
function plugin_free_text_rich_top_str_width (str) {
    var w = 0;
    for (var i = 0, j = str.length; i < j; i++) {
		var c = str.charCodeAt(i);
        if (0x0020 <= c && c <= 0x1fff) {
            w += 1;
        } else if (0x2000 <= c && c <= 0xff60) {
            w += 2;
        } else if (0xff61 <= c && c <= 0xff9f) {
            w += 1;
        } else if (0xffa0 <= c) {
            w += 2;
        }
    }
    return w;
}

