var timeoutContactFormResultId = 0;

$(document).ready(function() {

	// Handle the "suggestion" in the input boxes.
	// (Suggestion is the "title" attribute.)
	$(".contactInput").focus(removeSuggestion).blur(applySuggestion);

	// Set defaults in the contact inputs.
	$(".contactInput").each(applySuggestion);

	// Handle the click event of the contact form.
	$("#contactButton, #contactButtonBottom").click(function() {
	
		var form = $(this).parent().parent();
	
		clearTimeout( form.attr("data-timeoutContactFormResultId") );
	
		// Clear any suggestions and success/error classes.
		form.find(".contactInput").each(removeSuggestion);
		form.find(".contactInput").removeClass("error");
		form.find(".contactInput").removeClass("isError");
		form.find(".contactInput").addClass("default");
		form.find(".contactFormResult").removeClass("error");
		form.find(".contactFormResult").removeClass("success");
		
		// If a message is currently displayed, get rid of it
		// before processing the message.
		if ( form.find(".contactFormResult").is(":visible") ) {
			form.find(".contactFormResult").slideUp(
				500,
				function() {
					sendMessage(form);
				}
			);
		} else {
			sendMessage(form);
		}
		
	});

});

/**
 * applySuggestion
 * Appyl the title attribute to any empty fields.
 */
var applySuggestion = function() {
	if ($(this).val() == "") {
		$(this).val($(this).attr("title"));
		$(this).addClass("contactSuggestion");
	}
}

/**
 * removeSuggestion
 * Remove suggestions from any blank fields.
 */
var removeSuggestion = function() {
	if ($(this).val() == $(this).attr("title")) {
		$(this).val("");
		$(this).removeClass("contactSuggestion");
	}
}

/**
 * resetContactForm
 * Clear inputs and get rid of any messages.
 */
function resetContactForm(formId) {
	var form = $("#" + formId);
	form.find(".contactInput").each(removeSuggestion);
	form.find(".contactInput").removeClass("error");
	form.find(".contactInput").removeClass("isError");
	form.find(".contactInput").addClass("default");
	
	form.find(".contactInput").val("");
	form.find(".contactInput").each(applySuggestion);
	form.find(".contactButton").removeAttr("disabled");
	
	timeoutContactFormResultId = setTimeout('$("#' + formId + ' .contactFormResult").slideUp(500)', 2000);
	form.attr("data-timeoutContactFormResultId", timeoutContactFormResultId);
}

/**
 * cancelContactForm
 * Clear inputs and get rid of any messages.
 */
function cancelContactForm(formId) {
	resetContactForm(formId);
	
	var form = $("#" + formId);
	clearTimeout(form.attr("data-timeoutContactFormResultId"));
	form.find(".contactFormResult").slideUp(500);
}

/**
 * sendMessage
 * Make ajax call to send message.
 */
function sendMessage(form) {
	var name = form.find("*[name=name]");
	var contact = form.find("*[name=contact]");
	var proAdId = form.find("*[name=proAdId]");
	var message = form.find("*[name=message]");
	
	$.ajax({
		url: "proadcontactform.jxml",
		type: "POST",
		data:
			{
				name: name.length > 0 ? name.val() : "",
				contact: contact.length > 0 ? contact.val() : "",
				proAdId: proAdId.length > 0 ? proAdId.val() : "",
				message: message.length > 0 ? message.val() : ""
			},
		success: function(xml) {
			form.find(".contactFormResult").html( $("statusMessage", xml).text() );
			
			if ( $("success", xml).text() == "true" ) {
				form.find(".contactFormResult").addClass("success");
				form.find(".contactButton").attr({disabled: "disabled"});
				setTimeout('resetContactForm("' + form.attr("id") + '")', 3000);
			} else {
				form.find(".contactFormResult").addClass("error");
				form.find(".contactFormResult").append("<ul>");
				$("error", xml).each(function() {
					form.find(".contactFormResult").append( "<li>" + $(this).text() + "</li>" );
					form.find("*[name=" + $(this).attr("belongsTo") + "]").removeClass("default");
					form.find("*[name=" + $(this).attr("belongsTo") + "]").addClass("isError");
				});
				form.find(".contactFormResult").append("</ul>");
				form.find(".contactFormResult").append('<div class="cancelButton"><a href="javascript:cancelContactForm(\'' + form.attr("id") + '\');">Cancel</div>');
			}
		},
		error: function() {
			form.find(".contactFormResult").html(
				"Your message was not sent. An error occured. LocalEdge has been made aware of " +
				"this problem. Please retry your message later."
			);
		},
		beforeSend: function() {
			form.find(".contactFormLoading").slideDown(500);
		},
		complete: function() {
			form.find(".contactFormLoading").slideUp(500);
			form.find(".contactFormResult").slideDown(
				500,
				function() {
					form.find(".contactInput").each(applySuggestion);
					form.find(".contactInput.isError").addClass("error");
				}
			);
		}
	});
}


