var formIsReadyForSubmit = false;
var formRef = null;

function submitForm(statusValue)
{
	//alert('(submitForm) formRef='+formRef+' formIsReadyForSubmit=' +formIsReadyForSubmit); 
	if (null!=formRef && formIsReadyForSubmit)
	{
		document.getElementById('status').value = statusValue;
		formRef.submit()
	}
}

var requiredFieldsArray;
function initForm(formName)
{
	formRef = document.getElementById(formName);
	var fRef, spanRef;
	var requiredFields = document.getElementById('required').value;
	requiredFieldsArray = requiredFields.split(',');
	for (var i=0; i<requiredFieldsArray.length; i++)
	{
		fRef = document.getElementById(requiredFieldsArray[i]+'Row');
		spanRefs = fRef.getElementsByTagName("span");
		spanRefs[0].className = 'required';
	}
}

var errorTextRef = null;
function showErrorText(title, body)
{
	var titleRef = document.getElementById('messageTitle');
	if (null!=titleRef)
		titleRef.innerHTML = '<img src="/images/icon_error.gif" alt="!"/>'+title;
	var bodyRef = document.getElementById('messageBody');
	if (null!=bodyRef)
		bodyRef.innerHTML = body;
	if (null==errorTextRef) errorTextRef = document.getElementById('errorText');
	errorTextRef.className="show";
}
function hideErrorText()
{
	if (null==errorTextRef) errorTextRef = document.getElementById('errorText');
	errorTextRef.className="hide";
}

function groomForm()
{
	var missingData;
	var atLeastOneBadField = false;
	var focusFieldRef = null;
	//alert('requireds='+requiredFieldsArray);
	for (var i=0; i<requiredFieldsArray.length; i++)
	{
		fRef = document.getElementById(requiredFieldsArray[i]);
		//alert('fRef='+fRef+', its value="'+fRef.value+'"');
		missingData = requiredFieldCheck(requiredFieldsArray[i], fRef.value);
		if (missingData && null==focusFieldRef)
		{
			fRef.focus();
			focusFieldRef = fRef;
			atLeastOneBadField = true;
			//alert('atLeastOneBadField='+atLeastOneBadField+' for '+requiredFieldsArray[i]); 
		}
	}
	if (atLeastOneBadField)
	{
		showErrorText('Required fields are missing.','<p>Please fill in the highlighted fields to continue.</p>');
		formIsReadyForSubmit = false;
	}
	else
	{
		//Check email
		var emailAddressRef = document.getElementById('email');
		if (!isValidEmail(emailAddressRef.value))
		{
			showErrorText('Invalid E-Mail Address','<p>This field must be a valid email address (like user@aol.com). Please re-enter to continue.</p>');
			formIsReadyForSubmit = false;
			requiredFieldCheck('email', '');
			focusFieldRef = emailAddressRef;
		}
		else
		{
			hideErrorText();
			formIsReadyForSubmit = true;
		}
	}
	if (null!=focusFieldRef) focusFieldRef.focus();
    var d = document.contactForm;
    try 
    {
        if (d.subject.options[d.subject.selectedIndex].value=='I want to report a scam email') d.toEmail.value="reportascam@cars.com";
    }
    catch(exception){
    }
}

function requiredFieldCheck(fieldName, fieldValue)
{
	var fRef = document.getElementById(fieldName+'FieldBox');
	//var divRefs = fRef.getElementsByTagName("div");
	//alert(fieldName+'="'+fieldValue+'" '+fRef);
	if (null!=fRef)
	{
		if (null==fieldValue || fieldValue=='')
		{
			fRef.className = 'fielderror';
			return true;
		}
		else
		{
			fRef.className = "dataContainer";
		}
	}
	return false;
}

/* rwc: Taken from siy */
function isValidEmail(emailToValidate)
{
	var isValid = true;
	if (null!=emailToValidate && emailToValidate!="")
	{
		var emailRegEx = /^([\-\w_\.]+)@{1}([\-\w_]+)(\.\w+)+(\w$)/i;
		var result = emailToValidate.match(emailRegEx);
		if(result != null)
		{
			if(emailToValidate.match(/^(www\.)/i)!=null)
			{
				isValid = false;
			}
			else
			{
				var illegalEmailArray = new Array ('a@a.com','b@b.com','c@c.com','d@d.com','e@e.com','f@f.com','g@g.com','h@h.com','i@i.com','j@j.com','k@k.com','l@l.com','m@m.com','n@n.com','o@o.com','p@p.com','q@q.com','r@r.com','s@s.com','t@t.com','u@u.com','v@v.com','w@w.com','x@x.com','y@y.com','z@z.com','1@1.com','2@2.com','3@3.com','4@4.com','5@5.com','6@6.com','7@7.com','8@8.com','9@9.com','0@0.com','mickey@mouse.com','mickeymouse@mickeymouse.com','me@me.com');
				for (i=0; i < illegalEmailArray.length; i++)
				{
					if (emailToValidate == illegalEmailArray[i])
					{
						isValid = false;
					}
				}
			}
		}
		else
		{
			isValid = false;
		}	 
	}
	else
	{
		isValid = false;
	}
	return isValid;
}		

function checkForValueAndShow(selectRef, value, boxRef)
{
	if (null!=boxRef && null!=selectRef && selectRef.value == value)
	{
		//boxRef.className = 'show';
		boxRef.style.display = "block";
		return true;
	}
	else
	{
		//boxRef.className = 'hide';
		boxRef.style.display = "none";
		return false;
	}
}