// ==UserScript==
// @name	  Mixi diaryedit reminder
// @namespace     http://mixi.jp/
// @description   hogehoge
// @include       http://mixi.jp/add_diary.pl*
// ==/UserScript==
//
// 2008/10/25 version 0.1

(function() {

var saveTimer;
var restoreformHtml;
var mesCheck = [];
var mesCheckWord;

	// フォームの内容を保存する関数
	function saveFormdata() {
		clearInterval(saveTimer);
		saveTimer = setInterval(saveExec, 1000);
	}
	
	// 実際に保存する
	function saveExec() {
		//ここにデータ保存プログラムを入れるわよ
		var formHtml = document.getElementsByTagName('textarea')[0];
		clearInterval(saveTimer);
		
		if (formHtml) {
			formHtml = formHtml.value.toString();
			formHtml = escape(formHtml);
			GM_setValue('mixidiaryBody',formHtml);
		}

	}
	
	// フォームの内容を復帰させる関数
	function loadFormdata() {
		
		document.getElementsByTagName('textarea')[0].value = restoreformHtml;
	}
	

	// フォームの内容を消去する
	function clearFormdata() {
		GM_setValue('mixidiaryBody',"");
	}


	function start() {
		
		// このグリモンが起動された時点での保存フォームデータを呼び出して変数に代入しておく
		restoreformHtml = GM_getValue('mixidiaryBody','');
		restoreformHtml = unescape(restoreformHtml);

		// フォームデータが保存されているときだけ復帰リンクを表示する
		if(restoreformHtml) {
			// フォームの内容を復帰させるリンクを設置する
			var plusMenuHtml = '<span id="diaryRemind" style="color:#0000FF;text-decoration:underline;">復帰</span>';
			var editAreaHtmlformHtml = document.getElementsByClassName('txtEditArea')[0];
	    	var plusMenu = document.createElement('div');
			plusMenu.className = 'Remind_box';
			plusMenu.innerHTML = plusMenuHtml;
    		editAreaHtmlformHtml.appendChild(plusMenu);
				
			// 復帰関数をクリックで起動できるように頑張ってみる
			plusMenu.addEventListener("click", loadFormdata, false);
		}
		
		// 入力フォーム内でキーが押されるたびに保存関数を呼び出すよう設定
		var formElm = document.getElementById('diaryBody');
		formElm.addEventListener("keyup", saveFormdata, false);
	}
	
	// まずはこのページが投稿完了なのかを確認する
		mesCheck = document.getElementsByClassName('messageAlert');
	if (mesCheck.length > 0) {
		mesCheckWord = mesCheck[0].innerHTML;
	}

	if (mesCheckWord == "書き込みが完了しました。反映に時間がかかることがあります。") {
		clearFormdata();
		
	} else {
		addEventListener("load",start, false);
	}
	
})();
	
