// --------------------------------------------------------------------------------------------	
// Edit the contact info form.
// Copyright (c) 2002 Gene M. Angelo
// --------------------------------------------------------------------------------------------		

var g_USStatesSelect	= null;
var g_CountrySelect		= null;

// --------------------------------------------------------------------------------------------	
// Must be called onLoad()
function initForm(form)
	{
	// Initialize our US states combo
	g_USStatesSelect	= new CUSStatesSelect(form.State, CUSStatesSelect.OPTION_ALL, true);
	g_USStatesSelect.setNoneSelected("-- Please Select a US State --");
	g_USStatesSelect.Create();

	// Initialize our country combo
	g_CountrySelect	= new CCountrySelect(form.Country, true);
	g_CountrySelect.setNoneSelected("-- Please Select a Country --");
	g_CountrySelect.Create();
	}
	
// --------------------------------------------------------------------------------------------	
// Edit Name area
function editName(form)
	{
	var Form = new CForm(form);	

	var errorMsg	= "Unknown error";
	var returnCode	= 0;

	var Organization = new CTextElement(Form.getForm().Organization, 1, 40);

	if(! Organization.isValid())
		{
		returnCode = Organization.validateText();

		switch(returnCode)
			{
			case CForm.ERROR_EMPTY:
				errorMsg = "Organization must be entered";
				break;
			case CForm.ERROR_SIZE:
				errorMsg = "Organization must be between " + Organization.getMin() + " and " + Organization.getMax() + " characters";
				break;
			}

		Form.setFocus(Organization.getElement(), errorMsg);

		return false;
		}

	var Name = new CTextElement(Form.getForm().Name, 1, 40);

	if(! Name.isValid())
		{
		returnCode = Name.validateText();

		switch(returnCode)
			{
			case CForm.ERROR_EMPTY:
				errorMsg = "Name must be entered";
				break;
			case CForm.ERROR_SIZE:
				errorMsg = "Name must be between " + Name.getMin() + " and " + Name.getMax() + " characters";
				break;
			}

		Form.setFocus(Name.getElement(), errorMsg);

		return false;
		}

	return true;
	}
	
// --------------------------------------------------------------------------------------------	
// Edit Contact Information area
function editContactInfo(form)
	{	
	var Form = new CForm(form);	

	var errorMsg	= "Unknown error";
	var returnCode	= 0;
	
	// Edit the email address...
	EmailAddress = new CEmailAddress(Form.getForm().Email, 5, 128);
	
	if(! EmailAddress.isValid())
		{
		returnCode = EmailAddress.validateText();
		
		switch(returnCode)
			{
			case CForm.ERROR_EMPTY:
				errorMsg = "Email must be entered";
				break;
			case CForm.ERROR_SIZE:
				errorMsg = "Email must be between " + EmailAddress.getMin() + " and" + EmailAddress.getMax() + " characters in length";
				break;
			case CForm.ERROR_FORMAT:
				errorMsg = "Email must have the following format: myemail@mydomain.ext";
				break;
			case CForm.ERROR_CHAR:
				errorMsg = "Email may only contain the following characters: \".\", \"_\", \"-\", \"@\", a-z, A-Z or 0-9";
				break;
			default:	// default error message set above
				break;
			}

		Form.setFocus(EmailAddress.getElement(), errorMsg);

		return false;
		}
	
	return true;
	}
	
// --------------------------------------------------------------------------------------------	
// Edit Mailing Address area
function editMailingAddress(form)
	{
	var Form = new CForm(form);	

	var errorMsg	= "Unknown error";
	var returnCode	= 0;

	// Edit street
	var Street = new CTextElement(Form.getForm().Street, 1, 40);

	if(! Street.isValid())
		{
		returnCode = Street.validateText();
		
		switch(returnCode)
			{
			case CForm.ERROR_EMPTY:
				errorMsg = "Street must be entered";
				break;
			case CForm.ERROR_SIZE:
				errorMsg = "Street must be between " + Street.getMin() + " and" + Street.getMax() + " characters in length";
				break;
			default:	// default error message set above
				break;
			}

		Form.setFocus(Street.getElement(), errorMsg);

		return false;
		}

	// Edit city
	var City = new CTextElement(Form.getForm().City, 1, 40);

	if(! City.isValid())
		{
		returnCode = City.validateText();
		
		switch(returnCode)
			{
			case CForm.ERROR_EMPTY:
				errorMsg = "City must be entered";
				break;
			case CForm.ERROR_SIZE:
				errorMsg = "City must be between " + City.getMin() + " and" + City.getMax() + " characters in length";
				break;
			default:	// default error message set above
				break;
			}

		Form.setFocus(City.getElement(), errorMsg);

		return false;
		}

	// Edit state and province
	bProvince	= false;
	bState		= false;

	// Province
	var Province = new CTextElement(Form.getForm().Province, 1, 40);

	bProvince = Province.isValid();

	// State
	bState = g_USStatesSelect.isValid();

	if(! bProvince && ! bState)	// Must enter one or the other
		{
		errorMsg = "You must a US State or a Province";

		Form.setFocus(g_USStatesSelect.getSelectElement(), errorMsg);

		return false;
		}

	if(bProvince && bState)	// Cannot enter both US State and Province
		{
		errorMsg = "You cannot enter both US State and Province";

		Form.setFocus(g_USStatesSelect.getSelectElement(), errorMsg);

		return false;
		}

	// Country
	if(! g_CountrySelect.isValid())
		{
		errorMsg = "Country must be selected";

		Form.setFocus(g_CountrySelect.getSelectElement(), errorMsg);

		return false;
		}

	// Edit zip/postal code
	var ZipPostalCode = new CTextElement(Form.getForm().Zip_PostalCode, 1, 10);

	if(! ZipPostalCode.isValid())
		{
		returnCode = ZipPostalCode.validateText();
		
		switch(returnCode)
			{
			case CForm.ERROR_EMPTY:
				errorMsg = "Zip/Postal Code must be entered";
				break;
			case CForm.ERROR_SIZE:
				errorMsg = "Zip/Postal Code must be between " + ZipPostalCode.getMin() + " and" + ZipPostalCode.getMax() + " characters in length";
				break;
			default:	// default error message set above
				break;
			}

		Form.setFocus(ZipPostalCode.getElement(), errorMsg);

		return false;
		}

	return true;
	}

// --------------------------------------------------------------------------------------------	
// Format and send the form data	
function formatAndSend(form)
	{	
	form.action = "http://www.healthlineis.com/cgi-bin/fmail.pl";
	// form.action = "http://www.tcistudents.com/cgi-bin/formfeed.pl";
	form.method = "POST";

	var Form = new CForm(form);

		// Edit state and province
	bProvince	= false;
	bState		= false;

	// Province
	var Province = new CTextElement(Form.getForm().Province, 1, 40);

	bProvince = Province.isValid();

	// State
	bState = g_USStatesSelect.isValid();

	if(bProvince)	// Is province selected?
		Form.getForm().State_Province.value = Province.getText();
	else
		{
		var arrayOptions = new Array();
		arrayOptions = g_USStatesSelect.getSelectedOptions();
		Form.getForm().State_Province.value = arrayOptions[0].text;
		}	
	
	return form.submit();
	}

// --------------------------------------------------------------------------------------------	
// Edit the contact form
function editSubmitContactForm(form)
	{
	var Form = new CForm(form);	

	Form.trimAll();	// Trim all form field values

//	if((editName(form) && editContactInfo(form) && editMailingAddress(form)))
//		return formatAndSend(form);		
	if(editName(form) && editMailingAddress(form) && editContactInfo(form))
		return formatAndSend(form);		
		
	return false;
	}