﻿var $jq = jQuery.noConflict();

var inputSyndicationItemID;
var inputTitle;
var textareaMessage;
var inputName;
var inputEmail;
var inputUrl;
//  imageCaptcha
var inputCaptcha;
var imgReloadCaptcha;
var tableRowIndicator;
var tableRowStatus;
var spanStatus;
var buttonPost;

function pageLoad()
{
	inputSyndicationItemID = $get("m_inputSyndicationItemID");
	inputTitle = $get("m_inputTitle");
	textareaMessage = $get("m_textareaMessage");
	inputName = $get("m_inputName");
	inputEmail = $get("m_inputEmail");
	inputUrl = $get("m_inputUrl");
	inputCaptcha = $get("m_inputCaptcha");
	imgReloadCaptcha = $get("m_imgReloadCaptcha");
	tableRowIndicator = $get("m_tableRowIndicator");
	tableRowStatus = $get("m_tableRowStatus");
	spanStatus = $get("m_spanStatus");
	buttonPost = $get("m_buttonPost");

	$jq("#blogCommentFormTable tbody:first tr:nth-child(odd) td").addClass("odd");

	$jq("#m_tableRowStatus").hide();
	$jq("#m_tableRowIndicator").hide();
	$jq("#m_spanCharCount").text("0 / 1000");

	// Preload blog comment confirmation image
	var img = new Image();
	img.src = "../Images/Blog_Comment_Confirmation_315_199.png";
	
	// Remove excessive bottom margin
	$jq("#blogComments .blogComment:last").css("margin-bottom", "0px");

	$addHandlers(textareaMessage, { change: notifyAndLimitMessageLength, keyup: notifyAndLimitMessageLength, mouseup: notifyAndLimitMessageLength });
	$addHandler(imgReloadCaptcha, "click", onReloadCaptchaImageClick);
	$addHandler(buttonPost, "click", onButtonPostClick);

	Anma.Core.Service.Public.BlogCommentService.set_defaultSucceededCallback(onWebServiceCallSuccess);
	Anma.Core.Service.Public.BlogCommentService.set_defaultFailedCallback(onWebServiceFailure);
}
function onWebServiceCallSuccess(result, userContext, methodName)
{
	switch (methodName)
	{
		case "VerifyCaptcha":
			verifiedCaptcha(result);
			break;
		case "AddBlogComment":
			blogCommentAdded(result);
			break;
	}
}
function onWebServiceFailure(exception)
{
	hideActivityMessage();
	
	if (exception.get_timedOut())
	{
		alert("An error has occurred (timeout)\r\n\r\nMessage:" + exception.get_message());
	}
	else
	{
		alert("An error has occurred\r\n\r\nMessage:" + exception.get_message());
	}
}
function verifiedCaptcha(verified)
{
	if (verified)
	{
		hideActivityMessage();
		showActivityMessage("Saving comment...");

		Anma.Core.Service.Public.BlogCommentService.AddBlogComment(inputSyndicationItemID.value,
																   inputTitle.value,
																   textareaMessage.value,
																   inputName.value,
																   inputEmail.value,
																   inputUrl.value);
	}
	else
	{
		hideActivityMessage();
		$jq("#m_inputCaptcha").css("background-color", "#FFC0C0").focus();
		showValidationMessage("You must enter the correct number!");
		reactivateButton();
	}
}
function blogCommentAdded(blogCommentID)
{
	showConfirmationMessage();
}
function onReloadCaptchaImageClick()
{
	reloadCaptcha();
}
function onButtonPostClick()
{
	if (validateRequiredFields())
	{
		checkCaptcha();
	}
}
function validateRequiredFields()
{
	deactivateButton();

	if (inputTitle.value.length == 0)
	{
		$jq("#m_inputTitle").css("background-color", "#FFC0C0").focus();
		showValidationMessage("You must enter a title!");
		reactivateButton();
		return false;
	}
	$jq("#m_inputTitle").css("background-color", "")

	if (textareaMessage.value.length == 0)
	{
		$jq("#m_textareaMessage").css("background-color", "#FFC0C0").focus();
		showValidationMessage("You must enter a message!");
		reactivateButton();
		return false;
	}
	$jq("#m_textareaMessage").css("background-color", "");

	if (inputName.value.length == 0)
	{
		$jq("#m_inputName").css("background-color", "#FFC0C0").focus();
		showValidationMessage("You must enter a name!");
		reactivateButton();
		return false;
	}
	$jq("#m_inputName").css("background-color", "");

	if (inputCaptcha.value.length == 0)
	{
		$jq("#m_inputCaptcha").css("background-color", "#FFC0C0").focus();
		showValidationMessage("You must enter an answer!");
		reactivateButton();
		return false;
	}
	$jq("#m_inputCaptcha").css("background-color", "");

	hideValidationMessage();

	return true;
}
function checkCaptcha()
{	
	if (isNaN(inputCaptcha.value))
	{
		$jq("#m_inputCaptcha").css("background-color", "#FFC0C0").focus();
		showValidationMessage("You must enter a number!");
		reactivateButton();
		return;
	}
	else
	{
		$jq("#m_inputCaptcha").css("background-color", "");
		showActivityMessage("Verifying captcha...");
		Anma.Core.Service.Public.BlogCommentService.VerifyCaptcha(inputCaptcha.value);
	}
}
function notifyAndLimitMessageLength()
{
	var currentMessageLength = textareaMessage.value.length;
	if (currentMessageLength > 1000)
	{
		textareaMessage.value = textareaMessage.value.substr(0, 1000);
		currentMessageLength = 1000;
	}

	$jq("#m_spanCharCount").text(currentMessageLength + " / 1000");
}
function showValidationMessage(validationMessage)
{
	spanStatus.innerHTML = validationMessage;
	$jq("#m_tableRowStatus").show();
}
function hideValidationMessage()
{
	spanStatus.innerHTML = "";
	$jq("#m_tableRowStatus").hide();
}
function showActivityMessage(activityMessage)
{
	$jq(".indicatorTextCell").text(activityMessage);
	$jq("#m_tableRowIndicator").show();
}
function hideActivityMessage()
{
	$jq(".indicatorTextCell").text("");
	$jq("#m_tableRowIndicator").hide();
}
function showConfirmationMessage()
{
	hideActivityMessage();

	clearForm();

	// Position confirmation layer
	var tblPos = $jq("#blogCommentFormTable").position();
	$jq(".blogCommentConfirmation").css({ 'left': tblPos.left + 100, 'top': tblPos.top + 100 });

	$jq(".blogCommentConfirmation").fadeIn(500, hideConfirmationMessage);
}
function hideConfirmationMessage()
{
	setTimeout
	(
		function()
		{
			$jq(".blogCommentConfirmation").fadeOut(2000, function() { reloadCaptcha(); reactivateButton(); });
		},
		4000
	);
}
function clearForm()
{
	inputTitle.value = "";
	textareaMessage.value = "";
	inputName.value = "";
	inputEmail.value = "";
	inputUrl.value = "";
	inputCaptcha.value = "";

	$jq("#m_spanCharCount").text("0 / 1000");

	reloadCaptcha();
}
function reloadCaptcha()
{
	var timestamp = new Date().getTime();
	imageCaptcha.src = "../Captcha.aspx?" + timestamp;
}
function deactivateButton()
{
	$jq("#m_buttonPost").attr('disabled', 'disabled');
}
function reactivateButton()
{
	$jq("#m_buttonPost").removeAttr('disabled');
}
if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
