/* Feedback Form Management JavaScript Module
   Copyright (C) 2000 Learnology Ltd
   All rights reserved

   String and field management functions, and form validation functions (except
   ValidateForm) reproduced with the permission of Mark Lim. */



/* Field Management Variables */

var Title = "Mr";



/* String Management Functions */

function Separator(TargetCharacter)

/* Determine if the character specified by TargetCharacter is indeed a separator
   or white-space character. */


{
   var ReturnValue;

   if (TargetCharacter == "\t")
	 ReturnValue = true;
   else if (TargetCharacter == "\n")
	 ReturnValue = true;
   else if (TargetCharacter == "\f")
	 ReturnValue = true;
   else if (TargetCharacter == "\r")
	 ReturnValue = true;
   else if (TargetCharacter == " ")
	 ReturnValue = true;
   else
	 ReturnValue = false;

   return ReturnValue;
}



function Trim(TargetString)

/* Return TargetString trimmed of all leading and trailing white-space. */


{
   var LeftIndex  = 0;
   var RightIndex = TargetString.length - 1;

   var TargetCharacter;

   TargetCharacter = TargetString.charAt(LeftIndex);

   while (TargetCharacter != "" && Separator(TargetCharacter))
	 {
		LeftIndex++;
		TargetCharacter = TargetString.charAt(LeftIndex);
	 }

   TargetCharacter = TargetString.charAt(RightIndex);

   while (TargetCharacter != "" && Separator(TargetCharacter))
	 {
		RightIndex--;
		TargetCharacter = TargetString.charAt(RightIndex);
	 }
   RightIndex++;

   if (LeftIndex < RightIndex)
	 return TargetString.substring(LeftIndex, RightIndex);
   else
	 return "";
}



function Collapse(SourceString)

/* Return SourceString with all runs of white-space collapsed to single
   characters. */


{
   var TargetString = "";

   var TargetCharacter;
   PreviousCharacter = new Array(2);

   for (var Index = 0; Index < SourceString.length; Index++)
	 {
		TargetCharacter = SourceString.charAt(Index);

		if (Separator(TargetCharacter))
		  {
			 if (PreviousCharacter[0] == "")
			   {
				  TargetString += TargetCharacter;
				  PreviousCharacter[0] = TargetCharacter;
			   }
			 else
			   {
				  if (PreviousCharacter[0] == "\r" && TargetCharacter == "\n")
					{
					   if (PreviousCharacter[1] == "")
						 {
							TargetString += TargetCharacter;
							PreviousCharacter[1] = TargetCharacter;
						 }
					}
			   }
		  }
		else
		  {
			 TargetString += TargetCharacter;

			 PreviousCharacter[0] = "";
			 PreviousCharacter[1] = "";
		  }
	 }

   return TargetString;
}



/* Field Management Functions */

function FormatString(TargetField)

/* Format the value entered in the field specified by TargetField as a
   string. */


{
   if (TargetField.value.length > 0)
	 TargetField.value = Trim(TargetField.value);

   if (TargetField.value.length > 0)
	 TargetField.value = Collapse(TargetField.value);
}



/* Validation Functions */

  function Select(TargetField)

  /* Select the field specified by TargetField. */


  {
	 TargetField.focus();
	 TargetField.select();
  }



  function Complete(TargetField, TargetLabel)

  /* Determine if the field specified by TargetField is indeed complete. */


  {
	 if (TargetField.value != "")
	   {
		  return true;
	   }
	 else
	   {
		  Select(TargetField);
		  window.alert("You have not completed the " + TargetLabel + " field");

		  return false;
	   }
  }



function ValidateForm()

/* Validate the form presented to the user by the current page. */


{
   var FeedbackForm = document.FeedbackForm;

   if (Title == "Other")
	 {
		if (!Complete(FeedbackForm["title-other"], "Title"))
		  return;
	 }

   if (!Complete(FeedbackForm["first-name"], "First Name"))
	 return;

   if (!Complete(FeedbackForm["last-name"], "Last Name"))
	 return;

   if (!Complete(FeedbackForm["email-address"], "E-Mail Address"))
	 return;

   FeedbackForm.submit();
}
