// A utility function that returns true if a string contains only
// whitespace characters.
if(!com)
{
	var com = {};
	com.infor = {};
}
else
{
	if(!com.infor) { com.infor = {}; }
}
//var com.infor.$ = jQuery
com.infor.form = {};
// This is the function that performs form verification. It is invoked
// from the onsubmit event handler. The handler should return whatever
// value this function returns.
com.infor.form.Validation = function () {
	return {
		msg: "",
		empty_fields: "",
		errors: "",
		secondMsg: "",
		thirdMsg: "",
		inquiryErrmsg: "",
		emailValid: "false",
		formValid: "false",
		verify: function (button)
		{
			var f = $(button).closest('form');
			var emailField = $(f).find("input[name='pemail']");
			var strikeIron = $(f).find("input[name='ev']");
			var emailVal = $(emailField).val();
			if (typeof playlist === 'undefined')
			{
				$("body").mask("&nbsp;");
			}
			else
			{
				$("#formpopup").mask("&nbsp;");
			}
			if (emailField == null ||emailVal == "" || $(strikeIron).val() == 'false')
			{
				if (emailField != null && emailVal != "")
					com.infor.form.Validation.emailValid = "true";
				com.infor.form.Validation.verifyOtherFields(f);
				if (com.infor.form.Validation.formValid =="true")
				{
					if (typeof playlist === 'undefined')
					{
						f.submit();
					}
					else
					{
						com.infor.form.Validation.ajaxSubmit(f);
					}
				}
				return false;
			}
			else
			{
				$.ajax({
					url: '/ajaxwrapper',
					type: 'GET',
					data: 'vemail='+emailVal,
					dataType: 'xml',
					timeout: 60000, //60 seconds
					success: function (data, textStatus, xhr) {
						//alert("success");
						if (com.infor.form.Validation.parseStatus(data))
						{
							com.infor.form.Validation.verifyOtherFields(f);
						}
						if (com.infor.form.Validation.formValid =="true")
						{
							if (typeof playlist === 'undefined')
							{
								f.submit();
							}
							else
							{
								com.infor.form.Validation.ajaxSubmit(f);
							}
						}
					},
					error: function (xhr, textstatus, errorThing) {
						return com.infor.form.Validation.emailCheckError(xhr, textstatus);
					}
				});
			}
			return false;
		},
		ajaxSubmit: function(f)
		{
			var dataString = $(f).serialize() + '&ajax=true';
			$.ajax({
				url: '/customformprocessor',
				type: 'POST',
				data: dataString,
				dataType: 'json',
				timeout: 120000, //60 seconds
				success: function (data, textStatus, xhr) {
					$("body").unmask();
					blockPlay = false;
					//alert('okay play pendingVideoIndex ' + pendingVideoIndex);
					//playPlaylistVideo(pendingVideoIndex);
					jwplayer("playerSmall").playlistItem(pendingVideoIndex);
				},
				error: function (xhr, msg) {
					$("#formpopup").unmask();
					//com.infor.widget.ResourceLibrary.buildError(xhr, msg)
				}
			});
		},
		isblank: function(s)
		{
			for(var i = 0; i < s.length; i++)
			{
				var c = s.charAt(i);
				if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
			}
			return true;
		},
		parseStatus: function (xml)
		{
			var status_num = $(xml).find('status_num').text();
			if (status_num == '200' || status_num == '202' || status_num == '203' || status_num == '300'
				 || status_num == '320' || status_num == '321' || status_num == '322' || status_num == '403')
			{
				com.infor.form.Validation.emailValid = "true";
			}
			return true;
		},
		emailCheckError: function (xhr, msg, errorThing)
		{
			return false;
		},
		getSiblingName: function (fieldName)
		{
			if(fieldName == null)
				return 'undefined';
			return "p##localized##"+ fieldName.substr(1,fieldName.length);
		},
		verifyOtherFields: function (f)
		{
			// Loop through the elements of the form, looking for all
			// elements that have a "mandatory" property defined.
			// Then, check for fields that are empty and make a list of them.
			// Put together error messages for fields that are wrong.
			var selectOne = $(f).find("input[name='selectOneValue']").val();
			var selectErrorMsg = $(f).find("input[name='selectErrorMessage']").val();
			var mandatoryFields = $(f).find(".mandatory");
			var sibling;
			var siblingName = "";
			$(mandatoryFields).each(function (i)
			{
				var currentVal = $(this).val();
				if ($(this).is('select'))
					currentVal = $(this).children(':selected').text();

				siblingName = com.infor.form.Validation.getSiblingName($(this).attr('name'));
				sibling = $(f).find("[name='" + siblingName + "']");
				if ((currentVal == null || currentVal == "" || com.infor.form.Validation.isblank(currentVal) || currentVal == selectOne  || currentVal == 'None') && siblingName != 'undefined')
				{
					if ($(sibling).val())
						com.infor.form.Validation.empty_fields += "\n          - " + $(sibling).val();
					else
						com.infor.form.Validation.empty_fields += "\n          - Field";
					
					if ($(this).is('select'))
					{
						com.infor.form.Validation.empty_fields += " (" + selectErrorMsg + ")";
					}
				}
			});

			if (com.infor.form.Validation.emailValid == "false")
			{
				com.infor.form.Validation.secondMsg = "- " + $(f).find("input[name='emptyEmailMessage']").val();
			}

			// Now, if there were any errors, display the messages, and
			// return false to prevent the form from being submitted.
			// Otherwise return true.
			if (!com.infor.form.Validation.empty_fields && !com.infor.form.Validation.errors && com.infor.form.Validation.secondMsg == "" && com.infor.form.Validation.thirdMsg == "" && com.infor.form.Validation.inquiryErrmsg == "")
			{
				com.infor.form.Validation.formValid = "true";
			}
			else
			{
				com.infor.form.Validation.msg =$(f).find("input[name='formNotSubmittedMessage']").val() + "\n";

				if(com.infor.form.Validation.secondMsg != "")
					com.infor.form.Validation.msg += "\n" + com.infor.form.Validation.secondMsg + "\n";

				if(com.infor.form.Validation.inquiryErrmsg != "")
					com.infor.form.Validation.msg += "\n" + com.infor.form.Validation.inquiryErrmsg + "\n";

				if(com.infor.form.Validation.thirdMsg != "")
					com.infor.form.Validation.msg += "\n" + com.infor.form.Validation.thirdMsg + "\n";

				if(com.infor.form.Validation.empty_fields)
					com.infor.form.Validation.msg += "\n- " + $(f).find("input[name='emptyFieldsFollowingMessage']").val() + com.infor.form.Validation.empty_fields + "\n";

				if (com.infor.form.Validation.errors) com.infor.form.Validation.msg += "\n";

				com.infor.form.Validation.msg += com.infor.form.Validation.errors;
				$("body").unmask();
				alert(com.infor.form.Validation.msg);
				com.infor.form.Validation.clearMsg();
			}
			return false;
		},
		clearMsg: function ()
		{
			com.infor.form.Validation.msg = "";
			com.infor.form.Validation.secondMsg = "";
			com.infor.form.Validation.inquiryErrmsg = "";
			com.infor.form.Validation.thirdMsg = "";
			com.infor.form.Validation.empty_fields = "";
			com.infor.form.Validation.errors = "";
		}
	};
} ();
