var webApplicationpath = "http://www.mscibarra.com/formHandler/";
var validationScriptPath = "/js/validation.js";
var validator;

function handleForm(formName, successMessage, errorMessage, validationOverride) {

	loadCaptchaImage( function() {
	});

	loadValidator(validationOverride);

	$("#send").click( function() {
		if ($("#requestForm").valid() == false)
			return false;

		var queryString = location.search.substring(1) + "&" + $('#requestForm').serialize();
		$.ajax( {
			type : "POST",
			url : webApplicationpath + formName,
			data : queryString,
			beforeSend : function(xhr) {
				toggleSendButton(true);
			},
			success : function(successOrInvalidField) {
				toggleSendButton(false);
				showSuccess(successOrInvalidField, successMessage);
			},
			error : function(xhr, ajaxOptions, thrownError) {
				toggleSendButton(false);
				showFailure(xhr, ajaxOptions, thrownError, errorMessage);
			}
		});
		return false;
	});
}

function loadValidator(validationOverride) {
	$.getScript(validationScriptPath, function(data, textStatus) {
		jQuery.extend(true, formValidationOptions, validationOverride);
		validator = $("#requestForm").validate(formValidationOptions);
	});
}

function toggleSendButton(shouldDisable) {
	if (shouldDisable == true) {
		$("#send").attr('disabled', 'disabled');
	} else {
		$("#send").removeAttr('disabled');
	}
}

function showFailure(xhr, ajaxOptions, thrownError, errorMessage) {
	$('#requestFormDiv').replaceWith("<div id='responseFailure'></div>");
	$('#responseFailure').html(errorMessage);
}

function showSuccess(successOrInvalidField, successMessage) {
	if (successOrInvalidField == "success") {
		$('#requestFormDiv').replaceWith("<div id='responseSuccess'></div>")
		$('#responseSuccess').html(successMessage);
	} else {
		loadCaptchaImage( function() {
			showInvalidFieldError(successOrInvalidField, validator);
		});
	}
}

function loadCaptchaImage(doAfter) {
	//generates a random integer between 1 and 100000001
	var randomnumber = Math.floor(Math.random() * 100000001);

	$("input#captchaId").attr('value', randomnumber);

	var img = new Image();
	$(img).load( function() {
		$('#captcha').val("");
		$('#captchaIMG').empty();
		$('#captchaIMG').append(this);
		doAfter();
	}).error( function() {
		alert("The captcha image cannot be loaded");
		return false;
	}).attr('style', 'border:1px solid black').attr('src', webApplicationpath + 'jcaptcha?captchaId=' + randomnumber);
	return img;
}
