﻿$(document).ready(function(){

var postValidator = $("#postForm").validate({
	rules: {
		postName: {
			required: true,
			maxlength: 30
		},
		postEmail: {
			email: true,
			maxlength: 100
		},
		postUrl: {
			url: true,
			maxlength: 100
		},
		postTitle: {
			required: true,
			maxlength: 40
		},
		postMessage: {
			required: true,
			maxlength: 2000
		},
		postPassword: {
			rangelength: [5,20]
		}
	},
	messages: {
		postName: {
			required: "お名前を入力してください。",
			maxlength: jQuery.format("{0}文字以内でお願いします。")
		},
		postEmail: {
			email: "正しいメールアドレスを入力してください。",
			maxlength: "メールアドレスにしては長すぎますね。"
		},
		postUrl: {
			url: "正しいURLを入力してください。",
			maxlength: "URLにしては長すぎますね。"
		},
		postTitle: {
			required: "タイトルを入力してください。",
			maxlength: jQuery.format("{0}文字以内でお願いします。")
		},
		postMessage: {
			required: "メッセージを入力してください。",
			maxlength: jQuery.format("{0}文字以内でお願いします。")
		},
		postPassword: {
			rangelength: jQuery.format("{0}から{1}文字でお願いします。")
		}
	},
	//エラーメッセージの挿入場所
	errorPlacement: function(error, element) {
		error.appendTo(element.parent());
	},
	// set this class to error-labels to indicate valid fields
	success: function(label) {
		// set &nbsp; as text for IE
		label.html("&nbsp;").addClass("checked");
	}
});

var replyValidator = $("#replyForm").validate({
	rules: {
		replyName: {
			required: true,
			maxlength: 30
		},
		replyEmail: {
			email: true,
			maxlength: 100
		},
		replyUrl: {
			url: true,
			maxlength: 100
		},
		replyTitle: {
			required: true,
			maxlength: 40
		},
		replyMessage: {
			required: true,
			maxlength: 2000
		},
		replyPassword: {
			rangelength: [5,20]
		}
	},
	messages: {
		replyName: {
			required: "お名前を入力してください。",
			maxlength: jQuery.format("{0}文字以内でお願いします。")
		},
		replyEmail: {
			email: "正しいメールアドレスを入力してください。",
			maxlength: "メールアドレスにしては長すぎますね。"
		},
		replyUrl: {
			url: "正しいURLを入力してください。",
			maxlength: "URLにしては長すぎますね。"
		},
		replyTitle: {
			required: "タイトルを入力してください。",
			maxlength: jQuery.format("{0}文字以内でお願いします。")
		},
		replyMessage: {
			required: "メッセージを入力してください。",
			maxlength: jQuery.format("{0}文字以内でお願いします。")
		},
		replyPassword: {
			rangelength: jQuery.format("{0}から{1}文字でお願いします。")
		}
	},
	//エラーメッセージの挿入場所
	errorPlacement: function(error, element) {
		error.appendTo(element.parent());
		$("<br />").insertBefore(error);
	},
	// set this class to error-labels to indicate valid fields
	success: function(label) {
		// set &nbsp; as text for IE
		label.html("&nbsp;").addClass("checked");
		label.prev("br").remove();
	}
});

var formFlag = 0;
var formPosition = 0;

//返信ボタンが押されたら
function toggleReplyButton(formId) {
	var formTitle = $("#post-" + formId + "- h3 span").text();
	if (formPosition == formId) {
		if (formFlag == 0) {
			$("#replyForm").slideDown();
			formFlag = 1;
		} else {
			$("#replyForm").slideUp();
			formFlag = 0;
		}
	} else {
		$("#replyForm").slideUp(function() {
			$("#replyForm").prependTo($("#post-" + formId + "- p.postContent")).slideDown();
		});
		formPosition = formId;
		formFlag = 1;
	}
	$("input#replyTitle").attr("value", "Re:" + formTitle);
	
	return false;
}

$("input.replyButton").click(function() {
	toggleReplyButton($(this).parent().parent().parent().attr("id").slice(5, -1));
});


//投稿フォームの投稿ボタンが押されたら
$("#postForm input#postSubmitButton").click(function() {
	
	if (!postValidator.form()) {
		return false;
	}
	
	/*
	ローディング処理
	*/
	$("#confirm h1").text("新規の書き込み");
	$("#confirm dd#confirmName").text($("input#postName").val());
	$("#confirm dd#confirmUrl").text($("input#postUrl").val());
	$("#confirm dd#confirmEmail").text($("input#postEmail").val());
	$("#confirm dd#confirmTitle").text($("input#postTitle").val());
	$("#confirm dd#confirmMessage").text($("textarea#postMessage").val());
	$("#confirm dd#confirmPassword").text($("input#postPassword").val());
	$.blockUI($("#confirm"));
	
	$("#confirmYes").click(function() {
		$("#confirm").hide().insertAfter("#postForm");
		$.blockUI("ただいま書き込み中です。<br />しばらくお待ちください。");
		$.post(
			"post.php?" + new Date().getTime(),
			{
				name:$("input#postName").val(),
				email:$("input#postEmail").val(),
				url:$("input#postUrl").val(),
				title:$("input#postTitle").val(),
				message:$("textarea#postMessage").val().replace(/\n/g, "\n<br />"),
				password:$("input#postPassword").val()
			},
			function (data, status) {
				if (status == "success") {
					if (jQuery.browser.safari && parseInt(jQuery.browser.version.charAt(0)) < 4) {
						location.href = "http://www.m-hyuga.org/bbs/index.php";
					} else {
						/* 成功しました。 */
						data = ajax_filter(data);
						$.unblockUI();
						
						//成功時には、データを表示する。
						var posts = $("#posts").get(0);
						posts.innerHTML = data + posts.innerHTML;
						$("#posts div:first").hide().slideDown();
						
						//ボタンの再設定
						$("input.replyButton").click(function() {
							toggleReplyButton($(this).parent().parent().parent().attr("id").slice(5, -1));
						});
						//$("#replyForm input#replySubmitButton").click(replySubmitButtonHandler);
							
						//フォーム初期化
						$("#postForm dd").children().val("");
						/*
						cookieを考慮
						*/
					}
				} else {
					/*
					失敗しました。
					*/
					$("#acceptMessage").html("書き込みに失敗しました。<br />申し訳ありませんが、時間をおいてもう一度お試しください。");
					$.unblockUI();
					$("#confirm").hide().insertAfter("#postForm");
					$.blockUI($("#accept"));
					
					$("#acceptYes").click(function() {
						$("#accept").hide().insertAfter("#postForm");
						$.unblockUI();
					});
				}
			}
		);
	});
	
	$("#confirmNo").click(function() {
		$("#confirm").hide().insertAfter("#postForm");
		$.unblockUI();
	});
	
	return false;
});

//返信フォームの投稿ボタンが押されたら
function replySubmitButtonHandler() {	
	if (!replyValidator.form()) {
		return false;
	}
	
	/*
	ローディング処理
	*/
	$("#confirm h1").text("「" + $("#post-" + formPosition + "- h3 span").text() + "」への返信");
	$("#confirm dd#confirmName").text($("input#replyName").val());
	$("#confirm dd#confirmUrl").text($("input#replyUrl").val());
	$("#confirm dd#confirmEmail").text($("input#replyEmail").val());
	$("#confirm dd#confirmTitle").text($("input#replyTitle").val());
	$("#confirm dd#confirmMessage").text($("textarea#replyMessage").val());
	$("#confirm dd#confirmPassword").text($("input#replyPassword").val());
	$.blockUI($("#confirm"));
	
	$("#confirmYes").click(function() {
		$("#confirm").hide().insertAfter("#postForm");
		$.blockUI("ただいま書き込み中です。<br />しばらくお待ちください。");
		$.post(
			"reply.php?" + new Date().getTime(),
			{
				parentid:formPosition,
				name:$("input#replyName").val(),
				email:$("input#replyEmail").val(),
				url:$("input#replyUrl").val(),
				title:$("input#replyTitle").val(),
				message:$("textarea#replyMessage").val().replace(/\n/g, "\n<br />"),
				password:$("input#replyPassword").val()
			},
			function (data, status) {
				if (status == "success") {					
					if (jQuery.browser.safari && parseInt(jQuery.browser.version.charAt(0)) < 4) {
						location.href = "http://www.m-hyuga.org/bbs/index.php";
					} else {
						data = ajax_filter(data);
						$.unblockUI();
					
						//フォーム初期化
						$("#replyForm dd").children().val("");
						$("#replyForm").slideUp(function() {
							//成功時には、データを表示する。
							var repliesId = "#replies-" + formPosition + "-";
							$(repliesId).get(0).innerHTML += "\n" + data;
							$(repliesId + " div:last").hide().slideDown();
						});
						formFlag = 0;
						/*
						cookieを考慮
						*/
					}
				} else {
					/*
					失敗しました。
					*/
					$("#acceptMessage").html("書き込みに失敗しました。<br />申し訳ありませんが、時間をおいてもう一度お試しください。");
					$.blockUI($("#accept"));
					
					$("#acceptYes").click(function() {
						$("#accept").hide().insertAfter("#postForm");
						$.unblockUI();
					});
				}
			}
		);
	});
	
	$("#confirmNo").click(function() {
		$("#confirm").hide().insertAfter("#postForm");
		$.unblockUI();
	});
	
	return false;
}
$("#replyForm input#replySubmitButton").click(replySubmitButtonHandler);

});

var ajax_filter = function(t){return t};
if(navigator.appVersion.indexOf( "KHTML" ) > -1){
	ajax_filter = function(t){
	var esc = escape(t);
	return(esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) ? decodeURIComponent(esc) : t
	}
}