function email(who)
{
	document.write("<a href='mailto:"+who+"@custwin.co.uk'>");
	document.write(who);
	document.write("@");
	document.write("custwin");
	document.write(".co.uk");
	document.write("</a>");
}

function validate(Form)

{

var formname = Form.name;

//alert("name " + Form.name);

var checkbox_mandatory = false;

if (Form.name == "find_provider3")

{

//	alert(formname);

	checkbox_mandatory = true;

}

var checkbox_y = "";

var Element;

var i;

var BadFields = "";

var type;

var name;

var outMessage = "";

var Title;

var Titles = new Array();

Titles['Lessons'] = "Number of Lessons";

Titles['StartAddress'] = "Will you be starting lessons from this address?";

Titles['TheoryTest'] = "Have you passed your theory test?";

Titles['Licence'] = "What type of license do you hold?";

Titles['TypeCar'] = "Type of Car";

Titles[''] = "";



var FieldValue = new Array();

var Errored = new Array();

var radiovalue;



var Optional = new Array();



// optional fields

Optional['Company_Name'] = true;



var Assoc = new Array();

// associated fields from first quote_request page



Assoc['DatePurchased'] = "";





for ( i = 0; i < Form.length; i++ )

{

	Element = Form.elements[i];

	type = Element.type;



	if (type == "checkbox")

	{

		//alert(type);

		if (Element.checked)

		{

			cbvalue = Element.value;

			if (cbvalue == "Y")

			{

				checkbox_y = true;

			}

		}

	}

	if ( Element.type == 'radio')

	{

		//alert( Element.value + ":" + Element.checked + ":");

		if (Element.checked)

		{

			name = Element.name;

			FieldValue[name] = Element.value;

		}

	}





}



if (checkbox_mandatory == true && checkbox_y != true)

{

	BadFields += "- " + "An area of training" + "\n";

}







for ( i = 0; i < Form.length; i++ )

{

	Element = Form.elements[i];

	//alert(Element.type + " " + Element.name);

	if ( Element.type == 'select-one' )

	{

		//alert(Element.type);

		name = Element.name;

		fieldvalue = selectval(Element);

		if (name.indexOf(" Occupation Type") > 0 && fieldvalue == "Unemployed")

		{

			occ = Form.elements[i + 1].value;

			if (occ == "")

			{

				Form.elements[i + 1].value = "N/A";

			}

		}

		FieldValue[name] = fieldvalue;

		//alert(Element.type + ' ' + name + ' ' + fieldvalue);



		optional = Optional[name];

		if ( (fieldvalue == '' || fieldvalue == name ) && typeof(optional) == "undefined")

		{

			Title = getTitle(name,Titles);

			BadFields += "- " + Title + "\n";

		}   

	}



	if ( Element.type == 'text' ||

		Element.type == 'textarea')

	{

		

		name = Element.name;

		FieldValue[name] = Element.value;

		//alert(name + " " + Element.value); 

		optional = Optional[name];

		if (  (Element.value == name || Element.value == ''  ) && typeof(optional) == "undefined")

		{

			Title = getTitle(name,Titles);

			BadFields += "- " + Title + "\n";

		}   

	}



	if ( Element.type == 'password')

	{

		

		name = Element.name;

		FieldValue[name] = Element.value;

		//alert(name + " " + Element.value); 

		optional = Optional[name];

		if ( Element.value == '' && typeof(optional) == "undefined")

		{

			Title = getTitle(name,Titles);

			BadFields += "- " + Title + "\n";

		}   

		if (name == "Password1")

		{	

			var v1 = Form.Password1.value;

			var v2 = Form.Password2.value;

			if (v1.length < 6)

			{

				BadFields += "- Password must be at least 6 characters long\n";

			}

			if (v1 != v2)

			{

				BadFields += "- Passwords do not match\n";

			}

			



		}

	}

	type = Element.type;

//	alert(type);

	if (type == "radio")

	{

		name = Element.name;

		optional = Optional[name];

		radiovalue =  FieldValue[name] ;

		if (typeof(radiovalue) == "undefined" && typeof(optional) == "undefined")

		{

			Title = getTitle(name,Titles);

			//alert(Title);

			BadFields += "- " + Title + "\n";

			FieldValue[name] = "";

		}		

	}



	// do cross-validation

	name = Element.name;

	assoc = Assoc[name];

	if (typeof(assoc) != "undefined")

	{

		noval = assoc.substr(0,1);

		if (noval == "!")

		{

			triggervalue = "No";

			assoc = assoc.substr(1);

		}

		else

		{

			triggervalue = "Yes";

		}

		radiovalue =  FieldValue[assoc] ;

		myvalue = FieldValue[name];

		errored = Errored[name];

		if (typeof(errored) == "undefined" && radiovalue == triggervalue && (myvalue == "" || typeof(myvalue) == "undefined"))

		{

			Title = getTitle(name,Titles);

			BadFields += "- " + Title + "\n";

			Errored[name] = true;

		}

	}



}



if ( BadFields )

{

	outMessage = "We are unable to proceed as the following \n";

	outMessage += "required fields have not been completed:\n\n";

	outMessage += BadFields;



	alert(outMessage);

	return false;

}

return true;

}



function selectval(Sel)

{

	return Sel.options[Sel.selectedIndex].value;

}



function getTitle(name,Titles)

{

	Title = Titles[name];

	if (typeof(Title) == "undefined")

	{

		Title = name;

		Title = Title.replace("_"," ");

		Title = Title.replace("_"," ");

	}

	return Title;

}

