$(function(){
	$('#answerForm').hide();
	$('#questionFormBig').hide();
	$('.thanxFormOpenBtn').bind('click', showThanxForm);
	$('.thanxFormCloseBtn').bind('click', hideThanxForm);
	
	$('.editReplyBtn').bind('click', showEditReply);
	
	$('.thanxForm').bind('submit', submitThanxForm);
	
	$('.editReplyForm').submit(function() {
		lastEditReplyForm = $(this);
		$(this).ajaxSubmit({beforeSubmit:capTextForEditReply, success:handleEditReply});
		return false; 
	});
});

function submitThanxForm(){
	lastReplyedForm = $(this);
	lastReplyedForm.find('p input').attr("disabled","disabled");
	lastReplyedForm.ajaxSubmit({dataType:'json', beforeSubmit:capText, success:handleReply});
	return false
}

function showAnswerForm(){
	if($('#answerForm').css('display')=='none'){
		$('#answerFormBtn').fadeOut(250, function(){
			$('#answerForm').fadeIn(250);
		});
	}
}

function hideAnswerForm(){
	$('#answerForm').fadeOut(250, function(){
		$('#answerFormBtn').fadeIn(250);
	});
}

function confirmAnswerForm(qid, uid){
	var errorFlag = false;
	var errorMsg = '';
	var title = $('#answerForm input').val();
	var answer = $('#answerForm textarea').val();
	var check = $('#answerForm input[type=checkbox]').is(':checked');
	
	if(!qid){
		return;
	}
	
	if(title.length > 50 ){
		errorMsg += '<li>回答タイトルは50文字以内で入力してください</li>';
		errorFlag = true;
	} else if(title.length < 5){
		errorMsg += '<li>回答タイトルは5文字以上で入力してください</li>';
		errorFlag = true;
	}
	
	if(answer.length > 2000){
		errorMsg += '<li>回答内容は2000文字以内で入力してください</li>';
		errorFlag = true;
	} else if(answer.length < 15){
		errorMsg += '<li>回答内容は15文字以上で入力してください</li>';
		errorFlag = true;
	}
	
	if(!check){
		errorMsg += '<li>利用規約をご確認ください</li>';
		errorFlag = true;
	}
	
	if(answer.match(/^(\s|　)+$/)){
		errorMsg += '<li>回答内容が不正です</li>';
		errorFlag = true;
	}
	
	if(title.match(/^(\s|　)+$/)){
		errorMsg += '<li>回答タイトルが不正です</li>';
		errorFlag = true;
	}
	
	if(!errorFlag){
		if($('#answerError01').css('display') != 'none'){
			$('#answerError01').slideUp(150).remove();
		}
		title = meta_to_escape(title);
		answer = meta_to_escape(answer);
		answer = answer.replace(/(http:\/\/[\x21-\x7e]+)/gi, "<a href='$1' target='_blank'>$1</a>");
		answer = '<p>'+answer+'</p>';
		answer = answer.replace(/(\n|\r){2}/g, "</p><p>");
		answer = answer.replace(/(\n|\r)/g, "<br />");
		
		$.ajax({
			type: "POST",
			url: "/answers/setAnswer",
			data: jQuery.param({title:title, answer:answer, question_id:qid, user_id:uid}),
			success: function(){
				var formDivCode = '<div id="answerSubmitArea" class="pngfix"><div id="answerSubmitAreaInner" class="postionFixed"><iframe id="formiFrame" src="/answers/post" frameborder="0"></iframe></div></div>';
				$('body').append(formDivCode);
				$(".pngfix").pngfix();
				$('.postionFixed').exFixed();
			}
		});
	} else {
		if(!$('#answerError01').length) $('#answerForm form').prepend('<ul id="answerError01" class="error01A"></ul>');
		$('#answerError01').empty();
		$('#answerError01').append(errorMsg);
		$('#answerError01').slideDown(150);
	}
}

function hydeAnswerForm(){
	$('#answerSubmitArea').remove();
}

function showQuestionFormBig(){
	if($('#questionFormBig').css('display')=='none'){
		$('#questionFormBigBtn').fadeOut(250, function(){
			$('#questionFormBig').fadeIn(250);
		});
	}
}

function hideQuestionFormBig(){
	$('#questionFormBig').fadeOut(250, function(){
		$('#questionFormBigBtn').fadeIn(250);
	});
}

function confirmQuestionFormBig(){
	var errorFlag = false;
	var errorMsg = '';
	var title = $('#questionFormBig input').val();
	var question = $('#questionFormBig textarea').val();
	var check = $('#questionFormBig input[type=checkbox]').is(':checked');
	
	if(title.length > 50 ){
		errorMsg += '<li>質問タイトルは50文字以内で入力してください</li>';
		errorFlag = true;
	} else if(title.length < 5){
		errorMsg += '<li>質問タイトルは5文字以上で入力してください</li>';
		errorFlag = true;
	}
	
	if(question.length > 2000){
		errorMsg += '<li>質問内容は2000文字以内で入力してください</li>';
		errorFlag = true;
	} else if(question.length < 15){
		errorMsg += '<li>質問内容は15文字以上で入力してください</li>';
		errorFlag = true;
	}
	
	if(!check){
		errorMsg += '<li>利用規約をご確認ください</li>';
		errorFlag = true;
	}
	if(question.match(/^(\s|　)+$/)){
		errorMsg += '<li>質問内容が不正です</li>';
		errorFlag = true;
	}
	if(title.match(/^(\s|　)+$/)){
		errorMsg += '<li>質問タイトルが不正です</li>';
		errorFlag = true;
	}
	
	if(!errorFlag){
		if($('#questionError02').css('display') != 'none'){
			$('#questionError02').slideUp(150).remove();
		}
		title = meta_to_escape(title);
		question = meta_to_escape(question);
		question = question.replace(/(http:\/\/[\x21-\x7e]+)/gi, "<a href='$1' target='_blank'>$1</a>");
		question = '<p>'+question+'</p>';
		question = question.replace(/(\n|\r){2}/g, "</p><p>");
		question = question.replace(/(\n|\r)/g, "<br />");
		
		$.ajax({
			type: "POST",
			url: "/questions/setQuestion",
			data: jQuery.param({title:title, question:question}),
			success: function(){
				var formDivCode = '<div id="submitArea" class="pngfix"><div id="submitAreaInner" class="postionFixed"><iframe id="formiFrame" src="/questions/post" frameborder="0"></iframe></div></div>';
				$('body').append(formDivCode);
				$(".pngfix").pngfix();
				$('.postionFixed').exFixed();
			}
		});
	} else {
		if(!$('#questionError02').length) $('#questionFormBig form').prepend('<ul id="questionError02" class="error01A"></ul>');
		$('#questionError02').empty();
		$('#questionError02').append(errorMsg);
		$('#questionError02').slideDown(150);
	}
}

function hideAndClearAnswerForm(){
	$('#submitArea').remove();
	$('#answerForm input').val('Re:'+$('.qaHeader01A h1').text());
	$('#answerForm textarea').val('');
	$('#answerForm input[type=checkbox]').attr('checked', false);
	location.reload();
}

function hideAnswerSubmitArea(){
	$('#answerSubmitArea').remove();
}

function showThanxForm(){
	$(this).parent().parent().fadeOut(150,function(){
		$(this).next().children('.thanxForm').fadeIn(150);
	});
}

function hideThanxForm(){
	$(this).parent().parent().fadeOut(150, function(){
		$(this).parent().prev().fadeIn(150);
	});
}

var lastTextValue;
function capText(formData, jqForm, options){
	
	if(formData[5]){
		if(formData[5].name == 'data[Answer][reply]'){
			if(formData[5].value.match(/^(\s|　)+$/)){
				formData[5].value = '';
			}
		}
	}	
	
	if(formData[4].name != 'data[Answer][rate]'){
		jqForm.find('.columnBlock:first .col05B .error01B').remove();
		jqForm.find('.columnBlock:first .col05B').prepend('<ul class="error01B"><li>この回答に対する評価を選択してください</li></ul>');
		lastReplyedForm.removeAttr("disabled");
		return false;
	}
	else{
		lastTextValue = formData[5].value;
		return true;
	}
}

function capTextForEditReply(formData, jqForm, options){
	if(formData[2].name == 'data[Answer][reply]' && formData[2].value.match(/^(\s|　)+$/)){
		formData[2].value = '';
	}
	return true;
}

var lastReplyedForm;
function handleReply(responseText, statusText){
	lastReplyedForm.fadeOut(150, function(){
		if(responseText.comment != ''){
			var commentContainer = $(this).siblings('.hasComment');
			var cont = commentContainer.find('.qaBody01A');
			cont.empty();
			cont.append(responseText.comment);
			var tmp1 = commentContainer.find('.columnBlock');
			tmp1.show();
			var tmp2 = commentContainer.find('.qaBody01D');
			tmp2.hide();
			$(this).siblings('.editReplyForm').find('textarea').val(lastTextValue);
		}
		else{
			var commentContainer = $(this).siblings('.noComment');
			var tmp1 = commentContainer.find('.columnBlock');
			tmp1.hide();
			var tmp2 = commentContainer.find('.qaBody01D');
			tmp2.show();
		}
		$(this).siblings('.rateContainer').find('.rate01A').append('<img src="/common/img/rate_01_0'+responseText.rate+'.gif"/>');
		$(this).siblings('.rateContainer').fadeIn(150);
		commentContainer.fadeIn(150);
	});
}

function showEditReply(){
	$(this).parent().parent().parent().fadeOut(150, function(){
		$(this).siblings('.editReplyForm').fadeIn(150);
		$(this).siblings('.editReplyForm').find('.cancelReplyBtn').one('click', {cont:$(this)}, hideEditReply);
	});
}

function hideEditReply(event){
	$(this).parent().parent().fadeOut(150, function(){
		event.data.cont.fadeIn(150);
	});
}

var lastEditReplyForm;
function handleEditReply(responseText, statusText){
	lastEditReplyForm.fadeOut(150, function(){
		if(responseText != ''){
			var commentContainer = $(this).siblings('.hasComment');
			var cont = commentContainer.find('.qaBody01A');
			cont.empty();
			cont.append(responseText);
			var tmp1 = commentContainer.find('.columnBlock');
			tmp1.show();
			var tmp2 = commentContainer.find('.qaBody01D');
			tmp2.hide();
		}
		else{
			var commentContainer = $(this).siblings('.noComment');
			var tmp1 = commentContainer.find('.columnBlock');
			tmp1.hide();
			var tmp2 = commentContainer.find('.qaBody01D');
			tmp2.show();
		}		
		commentContainer.fadeIn(150);
	});
}

function openReport(flag,id){
	var formDivCode = '<div id="submitArea" class="pngfix"><div id="submitAreaInner" class="postionFixed"><iframe id="formiFrame" src="/questions/report/'+flag+'/'+id+'" frameborder="0"></iframe></div></div>';
	$('body').append(formDivCode);
	$(".pngfix").pngfix();
	$('.postionFixed').exFixed();
}

function closeReport(){
	$('#submitArea').remove();
}



