/**
 * Post at once サンプル
 * @version 1.0
 * @author colori http://colo-ri.jp all rights reserved.
 */
 
/**
 * 初期化
 * @access public
 */
function init() {
	
	/**
	 * コメントエリア要素ID
	 * @var String
	 */
	this.id_post = "pao_post";
	
	/**
	 * お名前入力欄要素ID
	 * @var String
	 */
	this.id_hidden = "title";

	/**
	 * お名前入力欄要素ID
	 * @var String
	 */
	this.id_text = "name";

	/**
	 * コメント入力欄要素ID
	 * @var String
	 */
	this.id_textarea = "comment";
	
	/**
	 * コメント投稿要素ID
	 * @var String
	 */
	this.id_submit = "pao_submit";
	
	/**
	 * コメントオン（入力欄を表示する）要素ID
	 * @var String
	 */
	this.id_on = "pao_on";
	
	/**
	 * コメントオフ（入力欄を閉じる）要素ID
	 * @var String
	 */
	this.id_off = "pao_off";
	
	
	/**
	 * コメント投稿先URI
	 * @var String
	 */
	this.uri_post = "/share/php/pao.php";
	
	/**
	 * 未入力エラーメッセージ
	 * @var String
	 */
	var lang = browserLanguage();
	if (lang == "ja") {
		this.message_noinput = "未入力の項目があります。";
	} else {
		this.message_noinput = "Please fill in required form.";	
	}
	
	
	//ポストエリアを隠し、ボタンにイベントを割り当てます。
	Element.hide(this.id_post);
	Event.observe(id_on, "click", openPost.bindAsEventListener(this));
	Event.observe(id_off, "click", closePost.bindAsEventListener(this));
	Event.observe(id_submit, "click", startPost.bindAsEventListener(this));
}

/**
 * テキスト情報のフィルタリング
 * @access private
 * @param String val テキストデータ
 * @return String フィルタ後のテキストデータ
 */
function filterText(val) {
	//改行や空白のみのデータは無効にします。
	if (val.match(/^[ 　\s\r\n]+$/g)) val = "";
	
	//改行コードを揃えます
	return val.replace(/\r\n/g, "\n");
}

/**
 * ポストエリアを開く
 * @access public
 */
function openPost() {
	if (Element.visible(id_post)) return false;
	$(id_text).disabled = false;
	$(id_textarea).disabled = false;
	$(id_text).value = "";
	$(id_textarea).value = "";
	Element.show(id_post);
	$(id_text).focus();
}

/**
 * ポストエリアを閉じる
 * @access public
 */
function closePost() {
	Element.hide(id_post);
}

/**
 * コメント内容をポストする
 * @access private
 */
function startPost() {
	
	//入力内容チェック
	var title = $(id_hidden).value;
	var name = this.filterText($(id_text).value);
	var comment = this.filterText($(id_textarea).value);
	
	if (name=="" || comment=="") {
		alert(message_noinput);
		return false;
	}
	
	//各種フォームを使用停止にします
	$(id_text).disabled = true;
	$(id_textarea).disabled = true;
	$(id_submit).disabled = true;
	$(id_off).disabled = true;
	
	//送信用パラメータオブジェクトに必要な設定を加えます
	var postObj = new Object();
	postObj.callTarget		= this;		//呼び出し元判別用に付加したオリジナル属性
	postObj.method			= "post";
	postObj.parameters		= "title=" + encodeURIComponent(title) + "&name=" + encodeURIComponent(name) + "&comment=" + encodeURIComponent(comment);
	postObj.requestHeaders	= ['If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT'];	//Safari用対策
	postObj.onComplete		= endPost.bind(this);
	
	//prototype.jsのAjaxオブジェクトを使ってコマンド送信
	new Ajax.Request(uri_post, postObj);
}

/**
 * コメントポスト完了
 * @access private
 */
function endPost(httpObj) {
	var message = httpObj.responseText;
	$(id_textarea).value = message;
}

function browserLanguage() {
  try {
    return (navigator.browserLanguage || navigator.language || navigator.userLanguage).substr(0,2)
  }
  catch(e) {
    return undefined;
  }
}

window.onload = init;