// Deletion flag. Used to select and unselect all checkboxes on the vehicle maintenance schedule.
var m_blnDeletionFlag = false;

//=========================================================================
// form action
//=========================================================================
function formAction(objForm, strAction, lngID)
{
	// reset or submit the current form.
	switch (strAction)
	{
		case 'Reset':
			objForm.reset();
			break;

		case 'CustomerSend':
		case 'ManagementCentreSend':
		case 'UserSend':
		case 'VehicleSend':
		case 'DriverSend':
		case 'Send':
			// validate form.
			if (validateForm(objForm, strAction, lngID))
			{
				switch (objForm.name)
				{
					case 'frmUserDetails':
						objForm.txtLogonAction.value = strAction;
						break;

					case 'frmMain':
						objForm.txtAction.value = strAction;
						objForm.txtActionID.value = lngID;
						break;

					case 'frmSecretQuestionStep1':
						objForm.txtAction.value = 'ValidateUser';
						break;

					case 'frmSecretQuestionStep2':
						objForm.txtAction.value = 'ValidateSecretAnswer';
						break;

					default:
						objForm.txtAction.value = strAction;
						break;
				}

				objForm.submit();
			}
			break;

		case 'VehicleAddAncillaryItem':
			if (validateForm(objForm, strAction, lngID))
			{
				objForm.txtAction.value = strAction;
				objForm.txtActionID.value = lngID;
				objForm.submit();
			}
			break;

		case 'VehicleRemoveAncillaryItem':
			if (validateForm(objForm, strAction, lngID))
			{
				objForm.txtAction.value = strAction;
				objForm.txtActionID.value = lngID;
				objForm.submit();
			}
			break;

		case 'CustomerAddVehicle':
			if (validateForm(objForm, strAction, lngID))
			{
				objForm.txtAction.value = strAction;
				objForm.txtActionID.value = lngID;
				objForm.submit();
			}
			break;

		case 'CustomerRemoveVehicle':
			if (validateForm(objForm, strAction, lngID))
			{
				objForm.txtAction.value = strAction;
				objForm.txtActionID.value = lngID;
				objForm.submit();
			}
			break;

		case 'DISPLAYPERIODS':
			if (validateForm(objForm, strAction, lngID))
			{
				objForm.txtManagementAction.value = "DISPLAYPERIODS";
				objForm.txtAction.value = strAction;
				objForm.txtActionID.value = lngID;
				objForm.submit();
			}
			break;
			
		case 'DELETEPERIOD':
		case 'SAVEPERIOD':			
			if (validateForm(objForm, strAction, lngID))
			{
				objForm.txtManagementAction.value = "DISPLAYPERIODS";
				objForm.txtAction.value = strAction;
				objForm.txtActionID.value = lngID;
				objForm.submit();
			}
			break;
		
		default:
			alert('Unknown form action: ' + objForm.name + ', ' + strAction + ', ' + lngID);
			break;
	}
	return;
}

//=========================================================================
// validate the form.
//=========================================================================
function validateForm(objForm, strAction, lngID)
{
	switch (objForm.name)
	{
		case 'frmContactUs':
			return validateContactUs(objForm, strAction, lngID);
			break;

		case 'frmNews':
			return validateNews(objForm, strAction, lngID);
			break;

		case 'frmUserDetails':
			return validateCustomerLogin(objForm);
			break;

		case 'frmMain':
			switch (strAction)
			{
				case 'CustomerSend':
					return validateCustomerDetails(objForm);
					break;

				case 'ManagementCentreSend':
					return validateManagementCentreDetails(objForm);

				case 'UserSend':
					return validateUserDetails(objForm);
					break;

				case 'DriverSend':
					return validateDriverDetails(objForm);
					break;

				case 'VehicleSend':
					return validateVehicleDetails(objForm);
					break;

				case 'VehicleAddAncillaryItem':
					return validateAddAncillaryItem(objForm);
					break;

				case 'VehicleRemoveAncillaryItem':
					return validateRemoveAncillaryItem(objForm);
					break;

				case 'CustomerAddVehicle':
					return validateCustomerAddVehicle(objForm);
					break;

				case 'CustomerRemoveVehicle':
					return validateCustomerRemoveVehicle(objForm);
					break;

				case 'DISPLAYPERIODS':
					return true;
					break;
					
				case 'SAVEPERIOD':
					return validateCustomerPeriods(objForm);
					break;
					
				case 'DELETEPERIOD':
					return warnDelete();
					break;
					
				default:
					alert('Unknown frmMain action: ' + strAction);
					return;
					break;
			}
			break;

		case 'frmSecretQuestionStep1':
			return validateSecretQuestionStep1(objForm);
			break;

		case 'frmSecretQuestionStep2':
			return validateSecretQuestionStep2(objForm);
			break;

		default:
			alert('Unknow form validation: \'' + objForm.name + '\'');
			break;
	}
}

//=========================================================================
// validate contact us.
//=========================================================================
function validateContactUs(objForm, strAction, lngID)
{
	objForm.txtContactMethod.value = objForm.cboContactMethod.options[objForm.cboContactMethod.selectedIndex].text;

	if (!validateFieldValue(objForm.txtName, 'You must enter your name.'))
	{
		return false;
	}

	//=====================================================================
	// start new contact us address field validation - James Downes
	//=====================================================================

	if (!validateFieldValue(objForm.txtAddressLine1, 'You must enter the first line of your address.'))
	{
		return false;
	}

	if (!validateFieldValue(objForm.txtTownCity, 'You must enter your Town or City.'))
	{
		return false;
	}

	if (!validateFieldValue(objForm.txtCounty, 'You must enter your County.'))
	{
		return false;
	}

	if (!validateFieldValue(objForm.txtPostcode, 'You must enter your Postcode.'))
	{
		return false;
	}

	//=====================================================================
	// start new contact us address field validation - James Downes
	//=====================================================================

	if (!validateEmail(objForm.txtEmail, 'You must enter your Email address.'))
	{
		return false;
	}

	if (!validateFieldValue(objForm.txtEnquiryDetails, 'You must enter your enquiry details.'))
	{
		return false;
	}

	if (objForm.cboContactMethod.options[objForm.cboContactMethod.selectedIndex].value == 1)
	{
		if (!validateFieldValue(objForm.txtDaytimeTelephone, 'You must enter your daytime telephone number.'))
		{
			return false;
		}

		// Check that the daytime telephone number only has numeric values.
		if (objForm.txtDaytimeTelephone.value.search(/[a-z]/gi, '') > -1)
		{
			if (objForm.txtDaytimeTelephone.value.match(/[a-z]/gi, '').length == 1)
			{
				alert('Your daytime telephone number is not correct because it has a letter in it.');
				return false;
			}
			else
			{
				alert('Your daytime telephone number is not correct because it has letters in it.');
				return false;
			}
			objForm.txtDaytimeTelephone.focus();
		}
	}

	if (objForm.cboContactMethod.options[objForm.cboContactMethod.selectedIndex].value == 2)
	{
		if (!validateFieldValue(objForm.txtEveningTelephone, 'You must enter your evening telephone number.'))
		{
			return false;
		}

		// Check that the evening telephone number only has numeric values.
		if (objForm.txtEveningTelephone.value.search(/[a-z]/gi, '') > -1)
		{
			if (objForm.txtEveningTelephone.value.match(/[a-z]/gi, '').length == 1)
			{
				alert('Your evening telephone number is not correct because it has a letter in it.');
				return false;
			}
			else
			{
				alert('Your evening telephone number is not correct because it has letters in it.');
				return false;
			}
			objForm.txtEveningTelephone.focus();
			return;
		}
	}

	return true;
}

//=========================================================================
// validate news.
//=========================================================================
function validateNews(objForm, strAction, lngID)
{
	objForm.txtActionID.value = lngID;
	return true;
}

//=========================================================================
// check that a user has entered something in a field.
//=========================================================================
function validateFieldValue(objField, strErrorMessage)
{
	if (objField.value == "")
	{
		alert(strErrorMessage);
		objField.focus();
		return false;
	}

	return true;
}

//=========================================================================
// validate a users email address.
//=========================================================================
function validateEmail(objField, strErrorMessage)
{
	if (!validateFieldValue(objField, strErrorMessage))
	{
		return false;
	}
	else
	{
		var aEmailChecked = /^[^@]+\@[^.@]+\.[^@]+$/.exec(objField.value);

		if (aEmailChecked == null)
		{
			alert('You have entered an invalid e-mail address.');
			objField.focus();
			return false;
		}
	}

	return true;
}

//=========================================================================
// validate the customers login.
//=========================================================================
function validateCustomerLogin(objForm)
{
	if (objForm.txtLogonUserName.value == '')
	{
		alert('Please enter your username.');
		objForm.txtLogonUserName.focus();
		return;
	}

	if (objForm.txtLogonUserPassword.value == '')
	{
		alert('Please enter your password.');
		objForm.txtLogonUserPassword.focus();
		return;
	}
	return true;
}

// ===================================
// Validate the driver details
// ===================================
function  validateDriverDetails(objForm)
{
	if (objForm.txtName.value == '')
	{
		alert('Please enter a driver name.');
		objForm.txtName.focus();
		return;
	}

	if (objForm.lstDriverMgmtCentre.value == '')
	{
		alert('Please select a management centre.');
		//objForm.lstMgmtCentre.focus();
		return;
	}

	return true;
}

//=========================================================================
// validate the my details.
//=========================================================================
function validateUserDetails(objForm)
{
	var m_strMessageVerb = 'your';
	var m_strMessageVerb2 = 'Your';

	if (typeof(objForm.txtManagementAction) == 'object')
	{
		m_strMessageVerb = 'the users';
		m_strMessageVerb2 = 'The users';
	}

	// Check for a name.
	if (objForm.txtName.value == '')
	{
		alert('Please enter ' + m_strMessageVerb + ' name.');
		objForm.txtName.focus();
		return;
	}

	// Check for an email address.
	if (objForm.txtEmail.value == "")
	{
		alert('You must enter ' + m_strMessageVerb + ' email address.');
		objForm.txtEmail.focus();
		return;
	}
	else
	{
		// Check the email is valid.
		var aEmailChecked = /^[^@]+\@[^.@]+\.[^@]+$/.exec(objForm.txtEmail.value);

		if (aEmailChecked == null)
		{
			alert('You have entered an invalid e-mail address.');
			objForm.txtEmail.focus();
			return;
		}
	}

	// Check for a telephone number.
	if (objForm.txtTelephoneNumber.value == '')
	{
		alert('Please enter ' + m_strMessageVerb + ' telephone number.');
		objForm.txtTelephoneNumber.focus();
		return;
	}

	// Check that the telephone number only has numeric values.
	if (objForm.txtTelephoneNumber.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtTelephoneNumber.value.match(/[a-z]/gi, '').length == 1)
		{
			alert(m_strMessageVerb2 + ' telephone number is not correct because it has a letter in it.');
		}
		else
		{
			alert(m_strMessageVerb2 + ' telephone number is not correct because it has letters in it.');
		}
		objForm.txtTelephoneNumber.focus();
		return;
	}

	// Check that the extension number only has numeric values.
	try
	{
		if (objForm.txtExtensionNumber.value != '')
		{
			if (objForm.txtExtensionNumber.value.search(/[a-z]/gi, '') > -1)
			{
				if (objForm.txtExtensionNumber.value.match(/[a-z]/gi, '').length == 1)
				{
					alert(m_strMessageVerb2 + ' extension number is not correct because it has a letter in it.');
				}
				else
				{
					alert(m_strMessageVerb2 + ' extension number is not correct because it has letters in it.');
				}
				objForm.txtExtensionNumber.focus();
				return;
			}
		}
	}
	catch(e)
	{
		// Do nothing, the form object doesn't exist
	}

	// Check that the extension number only has numeric values.
	try
	{
		if (objForm.txtMobileNumber.value != '')
		{
			if (objForm.txtMobileNumber.value.search(/[a-z]/gi, '') > -1)
			{
				if (objForm.txtMobileNumber.value.match(/[a-z]/gi, '').length == 1)
				{
					alert(m_strMessageVerb2 + ' mobile number is not correct because it has a letter in it.');
				}
				else
				{
					alert(m_strMessageVerb2 + ' mobile number is not correct because it has letters in it.');
				}
				objForm.txtMobileNumber.focus();
				return;
			}
		}
	}
	catch(e)
	{
		// Do nothing, the form object doesn't exist
	}

	if (typeof(objForm.txtManagementAction) != 'object')
	{
		// Check for a secret answer to the selected secret question.
		if (objForm.txtSecretAnswer.value == '')
		{
			alert('Please enter ' + m_strMessageVerb + ' answer to the selected secret question.');
			objForm.txtSecretAnswer.focus();
			return;
		}
	}

	// Check if the user is entering a new password.
	if (objForm.txtNewPassword.value != '')
	{
		// Check that the password is longer than 8 characters.
		if (objForm.txtNewPassword.value.length < 8)
		{
			alert(m_strMessageVerb2 + ' new password cannot be less than 8 characters.');
			objForm.txtNewPassword.value = '';
			objForm.txtConfirmPassword.value = '';
			objForm.txtNewPassword.focus();
			return;
		}

		// Check the confirmed password value.
		if (objForm.txtConfirmPassword.value == '')
		{
			alert('Please confirm ' + m_strMessageVerb + ' new password.');
			objForm.txtConfirmPassword.focus();
			return;
		}

		if (objForm.txtConfirmPassword.value != objForm.txtNewPassword.value)
		{
			alert(m_strMessageVerb2 + ' passwords do not match. Please try again.');
			objForm.txtConfirmPassword.value = '';
			objForm.txtConfirmPassword.focus();
			return;
		}
	}
	return true;
}

//=========================================================================
// Check that the user has entered a value into the secret question step 1.
//=========================================================================
function validateSecretQuestionStep1(objForm)
{
	if (objForm.txtUserDetail.value == '')
	{
		alert('Please enter your email address.');
		objForm.txtUserDetail.focus();
		return;
	}
	return true;
}

//=========================================================================
// Check that the user has entered a value into the secret question step 1.
//=========================================================================
function validateSecretQuestionStep2(objForm)
{
	if (objForm.txtSecretAnswer.value == '')
	{
		alert('Please enter the answer to the secret question.');
		objForm.txtSecretAnswer.focus();
		return;
	}
	return true;
}

//=========================================================================
// Expand the selected customer.
//=========================================================================
function expandCustomer(lngClientID, strManagementActionTitle)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayCustomer';
	objForm.txtManagementActionTitle.value = strManagementActionTitle;

	if (objForm.txtCustomerActionID.value != lngClientID)
	{
		objForm.txtCustomerActionID.value = lngClientID;
		objForm.txtUsersActionID.value = '';
		objForm.txtVehiclesActionID.value = '';
	}

	objForm.submit();
	return;
}

//=========================================================================
// Display the management centres for the selected customer.
//=========================================================================
function displayManagementCentres(lngClientID)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayManagementCentres';
	objForm.txtManagementCentresActionID.value = lngClientID;
	objForm.submit();
	return;
}

//=========================================================================
// Display the users for the selected customer.
//=========================================================================
function displayUsers(lngClientID)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayUsers';
	objForm.txtUsersActionID.value = lngClientID;
	objForm.submit();
	return;
}

//=========================================================================
// Display the vehicles for the selected customer.
//=========================================================================
function displayVehicles(lngClientID)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayVehicles';
	objForm.txtVehiclesActionID.value = lngClientID;
	objForm.submit();
	return;
}

//=========================================================================
// Display the management centre for the selected customer.
//=========================================================================
function displayManagementCentre(lngManagementCentreID, strManagementActionTitle)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayManagementCentre';
	objForm.txtManagementActionTitle.value = strManagementActionTitle;
	objForm.txtUserActionID.value = lngManagementCentreID;
	objForm.submit();
	return;
}

//=========================================================================
// Display the select user details.
//=========================================================================
function displayUser(lngUserID, strManagementActionTitle)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayUser';
	objForm.txtManagementActionTitle.value = strManagementActionTitle;
	objForm.txtUserActionID.value = lngUserID;
	objForm.submit();
	return;
}

//=========================================================================
// Display the selected vehicle details.
//=========================================================================
function displayVehicle(lngVehicleID, strManagementActionTitle)
{
	var objForm = document.forms.frmMain;
	objForm.txtManagementAction.value = 'DisplayVehicle';
	objForm.txtManagementActionTitle.value = strManagementActionTitle;
	objForm.txtVehicleActionID.value = lngVehicleID;
	objForm.submit();
	return;
}

//=========================================================================
// validate the customers login.
//=========================================================================
function validateCustomerDetails(objForm)
{
	// Check for the clients name.
	if (objForm.txtClientName.value == '')
	{
		alert('Please enter the customer name.');
		objForm.txtClientName.focus();
		return;
	}

	// Check customer's postal address.
	if (objForm.txtClientPostAddress.value == '')
	{
		alert('Please enter address of the customer.');
		objForm.txtClientPostAddress.focus();
		return;
	}

	// Check the service sheet working days submission value.
	if (objForm.txtClientServiceSheetDays.value == '')
	{
		alert('Please enter the number of working days which service sheets have to be submitted.');
		objForm.txtClientServiceSheetDays.focus();
		return;
	}

	// Check the service sheet working days value is a number.
	if (objForm.txtClientServiceSheetDays.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtClientServiceSheetDays.value.match(/[a-z]/gi, '').length == 1)
		{
			alert('The number of working days for service sheet submissions is not correct because it has a letter in it.');
		}
		else
		{
			alert('The number of working days for service sheet submissions is not correct because it has letters in it.');
		}
		objForm.txtClientServiceSheetDays.focus();
		return;
	}


	// Check the primary contact name
	if (objForm.txtClientPContactName.value == '')
	{
		alert('Please enter the name of the primary contact.');
		objForm.txtClientPContactName.focus();
		return;
	}

	// Check the primary contact's email address.
	if (objForm.txtClientPContactEmail.value == '')
	{
		alert('You must enter the email address of the primary contact.');
		objForm.txtClientPContactEmail.focus();
		return;
	}
	else
	{
		// Check the email is valid.
		var aEmailChecked = /^[^@]+\@[^.@]+\.[^@]+$/.exec(objForm.txtClientPContactEmail.value);

		if (aEmailChecked == null)
		{
			alert('You have entered an invalid e-mail address for the primary contact.');
			objForm.txtClientPContactEmail.focus();
			return;
		}
	}

	// Check the primary contacts telephone number.
	if (objForm.txtClientPContactTel.value == '')
	{
		alert('Please enter the telephone number of the primary contact.');
		objForm.txtClientPContactTel.focus();
		return;
	}

	// Check that the primary contacts telephone number only has numeric values.
	if (objForm.txtClientPContactTel.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtClientPContactTel.value.match(/[a-z]/gi, '').length == 1)
		{
			alert('The primary contacts telephone number is not correct because it has a letter in it.');
		}
		else
		{
			alert('The primary contacts telephone number is not correct because it has letters in it.');
		}
		objForm.txtClientPContactTel.focus();
		return;
	}

	// Check the primary contacts mobile number.
	/*
	if (objForm.txtClientPContactMobile.value == '')
	{
		alert('Please enter the mobile number of the primary contact.');
		objForm.txtClientPContactMobile.focus();
		return;
	}
	*/

	// Check that the primary contacts mobile number only has numeric values.
	if (objForm.txtClientPContactMobile.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtClientPContactMobile.value.match(/[a-z]/gi, '').length == 1)
		{
			alert('The primary contacts mobile number is not correct because it has a letter in it.');
		}
		else
		{
			alert('The primary contacts mobile number is not correct because it has letters in it.');
		}
		objForm.txtClientPContactMobile.focus();
		return;
	}

	// Check the secondary contacts name.
	/*
	if (objForm.txtClientSContactName.value == '')
	{
		alert('Please enter the name of the secondary contact.');
		objForm.txtClientSContactName.focus();
		return;
	}
	*/

	// Check the secondary contact's email address.
	/*
	if (objForm.txtClientSContactEmail.value == '')
	{
		alert('You must enter the email address of the secondary contact.');
		objForm.txtClientSContactEmail.focus();
		return;
	}
	else
	*/
	if (objForm.txtClientSContactEmail.value != '')
	{
		// Check the email is valid.
		var aEmailChecked = /^[^@]+\@[^.@]+\.[^@]+$/.exec(objForm.txtClientSContactEmail.value);

		if (aEmailChecked == null)
		{
			alert('You have entered an invalid e-mail address for the secondary contact.');
			objForm.txtClientSContactEmail.focus();
			return;
		}
	}

	// Check the secondary contacts telephone number.
	/*
	if (objForm.txtClientSContactTel.value == '')
	{
		alert('Please enter the telephone number of the secondary contact.');
		objForm.txtClientSContactTel.focus();
		return;
	}
	*/

	// Check that the secondary contacts mobile number only has numeric values.
	if (objForm.txtClientSContactTel.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtClientSContactTel.value.match(/[a-z]/gi, '').length == 1)
		{
			alert('The secondary contacts telephone number is not correct because it has a letter in it.');
		}
		else
		{
			alert('The secondary contacts telephone number is not correct because it has letters in it.');
		}
		objForm.txtClientSContactTel.focus();
		return;
	}

	// Check the secondary contacts mobile number.
	/*
	if (objForm.txtClientSContactMobile.value == '')
	{
		alert('Please enter the mobile number of the secondary contact.');
		objForm.txtClientSContactMobile.focus();
		return;
	}
	*/

	// Check that the secondary contacts mobile number only has numeric values.
	if (objForm.txtClientSContactMobile.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtClientSContactMobile.value.match(/[a-z]/gi, '').length == 1)
		{
			alert('The secondary contacts mobile number is not correct because it has a letter in it.');
		}
		else
		{
			alert('The secondary contacts mobile number is not correct because it has letters in it.');
		}
		objForm.txtClientSContactMobile.focus();
		return;
	}
	return true;
}

//=========================================================================
// validate the customers login.
//=========================================================================
function validateManagementCentreDetails(objForm)
{
	// Check for the management centre name.
	if (objForm.txtCentreName.value == '')
	{
		alert('Please enter the management centre name.');
		objForm.txtCentreName.focus();
		return;
	}

	// Check mangement centre postal address.
	if (objForm.txtCentrePostAddress.value == '')
	{
		alert('Please enter address of the management centre.');
		objForm.txtCentrePostAddress.focus();
		return;
	}

	// Check the primary contact name
	if (objForm.txtCentrePContactName.value == '')
	{
		alert('Please enter the name of the primary contact.');
		objForm.txtCentrePContactName.focus();
		return;
	}

	// Check the primary contact's email address.
	if (objForm.txtCentrePContactEmail.value == '')
	{
		alert('You must enter the email address of the primary contact.');
		objForm.txtCentrePContactEmail.focus();
		return;
	}
	else
	{
		// Check the email is valid.
		var aEmailChecked = /^[^@]+\@[^.@]+\.[^@]+$/.exec(objForm.txtCentrePContactEmail.value);

		if (aEmailChecked == null)
		{
			alert('You have entered an invalid e-mail address for the primary contact.');
			objForm.txtCentrePContactEmail.focus();
			return;
		}
	}

	// Check the primary contacts telephone number.
	if (objForm.txtCentrePContactTel.value == '')
	{
		alert('Please enter the telephone number of the primary contact.');
		objForm.txtCentrePContactTel.focus();
		return;
	}

	// Check the primary contacts mobile number.
	if (objForm.txtCentrePContactMobile.value == '')
	{
		alert('Please enter the mobile number of the primary contact.');
		objForm.txtCentrePContactMobile.focus();
		return;
	}

	// Check the secondary contacts name.
	if (objForm.txtCentreSContactName.value == '')
	{
		alert('Please enter the name of the secondary contact.');
		objForm.txtCentreSContactName.focus();
		return;
	}

	// Check the secondary contact's email address.
	if (objForm.txtCentreSContactEmail.value == '')
	{
		alert('You must enter the email address of the secondary contact.');
		objForm.txtCentreSContactEmail.focus();
		return;
	}
	else
	{
		// Check the email is valid.
		var aEmailChecked = /^[^@]+\@[^.@]+\.[^@]+$/.exec(objForm.txtCentreSContactEmail.value);

		if (aEmailChecked == null)
		{
			alert('You have entered an invalid e-mail address for the secondary contact.');
			objForm.txtCentreSContactEmail.focus();
			return;
		}
	}

	// Check the secondary contacts telephone number.
	if (objForm.txtCentreSContactTel.value == '')
	{
		alert('Please enter the telephone number of the secondary contact.');
		objForm.txtCentreSContactTel.focus();
		return;
	}

	// Check the secondary contacts mobile number.
	if (objForm.txtCentreSContactMobile.value == '')
	{
		alert('Please enter the mobile telephone number of the secondary contact.');
		objForm.txtCentreSContactMobile.focus();
		return;
	}
	return true;
}

//=========================================================================
// New customer, user or vehicle record.
//=========================================================================
function managementAction(objToolboxForm, objForm, strAction)
{
	var m_blnSubmit = true;
	
	if (!objToolboxForm.cboManagementOption.options)
	{
		var i = parseInt(Ext.get('cboManagementOption').getValue());
	} else {
		var i = parseInt(objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value);
	}
	
	switch (i)
	{
		case 0:
			alert('Please select an action.');
			m_blnSubmit = false;
			break;

		case 1:
			var m_strOption = 'Customer';
			break;

		case 2:
			var m_strOption = 'User';
			break;

		case 3:
			//var m_strOption = 'Vehicle';
			var m_strOption = 'Driver';
			break;

		case 4:
			var m_strOption = 'ManagementCentre';
			break;

		default:
			alert('Please select an action.');
			m_blnSubmit = false;
			break;

	}

	if (m_blnSubmit)
	{
		// Set the management option.
		objForm.txtManagementOption.value = i; //objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

		// Determine the users action.
		switch (strAction)
		{
			case 'New':
				newManagementRecord(objToolboxForm, objForm, m_strOption);
				objForm.txtAction.value = '';
				// CG; 22-12-2005; Cannot fathom the next line of code.
				objForm.txtManagementAction.value = '';
				break;

			case 'Edit':
				objForm.txtAction.value = '';
				objForm.txtShowFilter.value = 'show';
				editManagementRecord(objToolboxForm, objForm, m_strOption);
				break;
		}
	}
	return;
}

//=========================================================================
// New customer, user or vehicle record.
//=========================================================================
function editManagementRecord(objToolboxForm, objForm, strOption)
{

	if(!objToolboxForm.cboCustomers.options)
	{
		var i = Ext.get('cboCustomers').getValue();
	} else {
		var i = objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value;
	}
	
	if (i == 0)
	{
		alert('Please select a customer.');
		return false;
	}

	switch (strOption)
	{
		case 'Customer':
			objForm.txtManagementAction.value = 'DisplayCustomer';

			var m_aCustomerAction = i.split('|'); //objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value.split('|');

			if (m_aCustomerAction.length == -1)
			{
				objForm.txtCustomerActionID.value = i; //objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value;
				objForm.txtCustomerActionLevel.value = 0;
			}
			else
			{
				objForm.txtCustomerActionID.value = m_aCustomerAction[0];
				objForm.txtCustomerActionLevel.value = m_aCustomerAction[1];
			}
			objForm.txtManagementActionTitle.value = ''; //objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].text;

			// Set the hidden form fields.
			objForm.txtUserActionID.value = '';
			objForm.txtVehicleActionID.value = '';
			break;

		case 'ManagementCentre':
			if (objToolboxForm.cboManagementCentres == undefined)
			{
				// Set the management option.
				objForm.txtManagementOption.value = Ext.get('cboManagementOption').getValue(); //objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

				//Submit the form.
				objForm.submit();
			}
			else
			{
				var mc = Ext.get('cboManagementCentres').getValue();
				//if (objToolboxForm.cboManagementCentres.options[objToolboxForm.cboManagementCentres.selectedIndex].value == 0)
				if (mc == 0)
				{
					alert('Please select a management centre.');
					return;
				}

				objForm.txtManagementAction.value = 'DisplayManagementCentre';
				objForm.txtManagementCentreActionID.value = mc; //objToolboxForm.cboManagementCentres.options[objToolboxForm.cboManagementCentres.selectedIndex].value;
				objForm.txtManagementActionTitle.value = ''; //objToolboxForm.cboManagementCentres.options[objToolboxForm.cboManagementCentres.selectedIndex].text;
			}
			break;

		case 'User':
			if (objToolboxForm.cboUsers == undefined)
			{
				// Set the management option.
				objForm.txtManagementOption.value = Ext.get('cboManagementOption').getValue(); //objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

				//Submit the form.
				objForm.submit();
			}
			else
			{
				var user = Ext.get('cboUsers').getValue();
				//if (objToolboxForm.cboUsers.options[objToolboxForm.cboUsers.selectedIndex].value == 0)
				if (user == 0)
				{
					alert('Please select a user.');
					return;
				}

				objForm.txtManagementAction.value = 'DisplayUser';
				objForm.txtUserActionID.value = user; //objToolboxForm.cboUsers.options[objToolboxForm.cboUsers.selectedIndex].value;
				objForm.txtManagementActionTitle.value = ''; //objToolboxForm.cboUsers.options[objToolboxForm.cboUsers.selectedIndex].text;
			}
			break;

		case 'Vehicle':
			objForm.txtManagementAction.value = 'DisplayVehicleFilter';

			// Set the management option.
			objForm.txtManagementOption.value = Ext.get('cboManagementOption').getValue(); //objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

			//Submit the form.
			objForm.submit();

			/*
			if (objToolboxForm.cboVehicleType == undefined)
			{
				objForm.txtManagementAction.value = 'DisplayVehicleFilter';

				// Set the management option.
				objForm.txtManagementOption.value = objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

				//Submit the form.
				objForm.submit();
			}
			else
			{
				objForm.txtManagementAction.value = 'DisplayVehicles';

				objForm.cboCustomerFilter.value = objToolboxForm.cboCustomerFilter.value;
				objForm.cboVehicleType.value = objToolboxForm.cboVehicleType.value;
				objForm.cboVehicleMake.value = objToolboxForm.cboVehicleMake.value;
				objForm.cboVehicleModel.value = objToolboxForm.cboVehicleModel.value;
				objForm.cboVehicleVariant.value = objToolboxForm.cboVehicleVariant.value;
				objForm.cboVehicleGroup.value = objToolboxForm.cboVehicleGroup.value;
				objForm.txtRegistrationNumber.value = objToolboxForm.txtRegistrationNumber.value;

				objForm.cboFilterCustomerFilter.value = objToolboxForm.cboCustomerFilter.value;
				objForm.cboFilterVehicleType.value = objToolboxForm.cboVehicleType.value;
				objForm.cboFilterVehicleMake.value = objToolboxForm.cboVehicleMake.value;
				objForm.cboFilterVehicleModel.value = objToolboxForm.cboVehicleModel.value;
				objForm.cboFilterVehicleVariant.value = objToolboxForm.cboVehicleVariant.value;
				objForm.cboFilterVehicleGroup.value = objToolboxForm.cboVehicleGroup.value;
				objForm.txtFilterRegistrationNumber.value = objToolboxForm.txtRegistrationNumber.value;

				objForm.txtSortColumn.value = '';
				objForm.txtSortDirection.value = '';
			}
			*/
			break;

		case "Driver":

			if (objToolboxForm.cboDrivers == undefined)
			{
				// Set the management option.
				objForm.txtManagementOption.value = Ext.get('cboManagementOption').getValue(); //objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

				//Submit the form.
				objForm.submit();
			}
			else
			{
				var driver = Ext.get('cboDrivers').getValue();
				//if (objToolboxForm.cboDrivers.options[objToolboxForm.cboDrivers.selectedIndex].value == 0)
				if (driver == 0)
				{
					alert('Please select a driver.');
					return;
				}

				objForm.txtManagementAction.value = 'DisplayDriver';
				objForm.txtDriverActionID.value = driver; //objToolboxForm.cboDrivers.options[objToolboxForm.cboDrivers.selectedIndex].value;
				objForm.txtManagementActionTitle.value = ''; //objToolboxForm.cboDrivers.options[objToolboxForm.cboDrivers.selectedIndex].text;
			}
			break;

	}

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// Display all vehicle records which match the criteria.
//=========================================================================
function displayVehicles(objToolboxForm, objForm, strOption)
{
	objForm.txtManagementAction.value = 'DisplayVehicles';

	var m_aCustomerFilter = objToolboxForm.cboCustomerFilter.value.split('|');

	if (m_aCustomerFilter.length == -1)
	{
		objForm.cboCustomerFilter.value = objToolboxForm.cboCustomerFilter.value;
	}
	else
	{
		objForm.cboCustomerFilter.value = m_aCustomerFilter[0];
	}

	objForm.cboVehicleType.value = objToolboxForm.cboVehicleType.value;
	objForm.cboVehicleMake.value = objToolboxForm.cboVehicleMake.value;
	objForm.cboVehicleModel.value = objToolboxForm.cboVehicleModel.value;
	objForm.cboVehicleVariant.value = objToolboxForm.cboVehicleVariant.value;
	objForm.cboVehicleGroup.value = objToolboxForm.cboVehicleGroup.value;
	objForm.txtRegistrationNumber.value = objToolboxForm.txtRegistrationNumber.value;

	objForm.cboFilterCustomerFilter.value = objForm.cboCustomerFilter.value;
	objForm.cboFilterVehicleType.value = objForm.cboVehicleType.value;
	objForm.cboFilterVehicleMake.value = objForm.cboVehicleMake.value;
	objForm.cboFilterVehicleModel.value = objForm.cboVehicleModel.value;
	objForm.cboFilterVehicleVariant.value = objForm.cboVehicleVariant.value;
	objForm.cboFilterVehicleGroup.value = objForm.cboVehicleGroup.value;
	objForm.txtFilterRegistrationNumber.value = objForm.txtRegistrationNumber.value;

	objForm.txtSortColumn.value = '';
	objForm.txtSortDirection.value = '';

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// New customer, user or vehicle record.
//=========================================================================
function newManagementRecord(objToolboxForm, objForm, strOption)
{
	switch (strOption)
	{
		case 'Customer':
			// Set the hidden form fields.
			objForm.txtManagementAction.value = 'NewCustomer';
			//objForm.txtCustomerActionID.value = 0;
			objForm.txtUserActionID.value = '';
			objForm.txtVehicleActionID.value = '';
			break;

		case 'ManagementCentre':
			
			//if (objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value == 0)
			if (Ext.get('cboCustomers').getValue() == 0)
			{
				alert('Please select a customer.');
				return;
			}

			// Set the hidden form fields.
			objForm.txtManagementCentreActionID.value = 0;
			objForm.txtManagementAction.value = 'NewManagementCentre';
			break;

		case 'User':
				
			//if (objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value == 0)
			if (Ext.get('cboCustomers').getValue() == 0)
			{
				alert('Please select a customer.');
				return;
			}

			// Set the hidden form fields.
			objForm.txtUserActionID.value = 0;
			objForm.txtManagementAction.value = 'NewUser';
			break;

		case 'Vehicle':
		
			//if (objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value == 0)
			if (Ext.get('cboCustomers').getValue() == 0)
			{
				alert('Please select a customer.');
				return;
			}

			// Set the vehicle hidden values to defaults.
			try
			{
				objForm.cboEditVehicleType.selectedIndex = -1;
				objForm.cboEditVehicleMake.selectedIndex = -1;
				objForm.cboEditVehicleModel.selectedIndex = -1;
				objForm.cboEditVehicleVariant.selectedIndex = -1;
				objForm.cboEditVehicleGroup.selectedIndex = -1;
				objForm.cboEditVehicleStatus.selectedIndex = -1;
				objForm.cboEditManagementCentre.selectedIndex = -1;
				objForm.cboEditServiceAgent.selectedIndex = -1;
				objForm.cboEditMaintenanceType.selectedIndex = -1;
				objForm.txtEditRegistrationNumber.value = '';
				objForm.txtEditDescription.value = '';
				objForm.txtEditFleetNumber.value = '';
				objForm.txtEditChassisNumber.value = '';
				objForm.txtEditVehicleWeight.value = '';
				objForm.txtEditOnFleetDate.value = '';
				objForm.txtEditOffFleetDate.value = '';
				objForm.txtEditRadioCode.value = '';
				objForm.cboEditClient.selectedIndex = -1;
			}
			catch(e)
			{
				// Do nothing, the page hasn't yet been selected.
			}

			// Set the hidden form fields.
			objForm.txtVehicleActionID.value = 0;
			objForm.txtManagementAction.value = 'NewVehicle';
			break;

		case 'Driver' :

			//if (objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value == 0)
			if (Ext.get('cboCustomers').getValue() == 0)
			{
				alert('Please select a customer.');
				return;
			}

			objForm.txtManagementAction.value = 'NEWDRIVER';
			break;
	}

	objForm.txtManagementActionTitle.value = 'New';

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// Delete the selected customer, user or vehicle record.
//=========================================================================
function deleteManagementRecord(objToolboxForm, objForm, strOption)
{
	var iCust = Ext.get('cboCustomers').getValue();
	
	//if (objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value == 0)
	if (iCust.value == 0)
	{
		alert('Please select a customer.');
		return;
	}

	switch (strOption)
	{
		case 'Customer':
			//if (!window.confirm('Click \'OK\' to delete \'' + objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].text + '\' customer record'))
			if (!window.confirm('Click \'OK\' to delete customer record'))
			{
				return;
			}

			objForm.txtCustomerActionID.value = 0;
			objForm.txtManagementAction.value = 'DELETECUSTOMER';
			objForm.txtActionID.value = iCust; // objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value;
			break;

		case 'ManagementCentre':
			if (!window.confirm('Click \'OK\' to delete \'' + objToolboxForm.cboManagementCentres.options[objToolboxForm.cboManagementCentres.selectedIndex].text  + '\' user record'))
			{
				return;
			}
			objForm.txtManagementAction.value = 'DELETEMANAGEMENTCENTRE';
			objForm.txtActionID.value = objToolboxForm.cboManagementCentres.options[objToolboxForm.cboManagementCentres.selectedIndex].value;
			break;

		case 'User':
			if (!window.confirm('Click \'OK\' to delete record'))
			{
				return;
			}
			objForm.txtManagementAction.value = 'DELETEUSER';
			objForm.txtActionID.value = Ext.get('cboUsers').getValue(); //objToolboxForm.cboUsers.options[objToolboxForm.cboUsers.selectedIndex].value;
			break;

		case 'Vehicle':
			if (!window.confirm('Click \'OK\' to delete \'' + objForm.txtManagementActionTitle.value + '\' vehicle record'))
			{
				return;
			}
			objForm.txtManagementAction.value = 'DELETEVEHICLE';
			objForm.txtActionID.value = objForm.txtVehicleActionID.value;
			break;

		case 'Driver':
			if (!window.confirm('Click \'OK\' to delete record'))
			{
				return;
			}
			objForm.txtManagementAction.value = 'DELETEDRIVER';
			objForm.txtDriverActionID.value = Ext.get('cboDrivers').getValue(); //objToolboxForm.cboDrivers.options[objToolboxForm.cboDrivers.selectedIndex].value;
			break;

		default:
			return;
			break;
	}

	// Set the form action.
	objForm.txtAction.value = objForm.txtManagementAction.value;

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// Refresh the page with the selected management option.
//=========================================================================
function showCustomer(objToolboxForm, objForm)
{
	objForm.txtManagementAction.value = 'ManageCustomers';

	if (!objToolboxForm.cboCustomers.options)
		var m_aCustomerAction = Ext.get('cboCustomers').getValue().split('|');
	else
		var m_aCustomerAction = objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value.split('|');

	if (m_aCustomerAction.length == -1)
	{
		if (!objToolboxForm.cboCustomers.options) {
			objForm.txtCustomerActionID.value = Ext.get('cboCustomers').getValue().split('|');
		}
		else {
			objForm.txtCustomerActionID.value = objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].value;			
		}
		objForm.txtCustomerActionLevel.value = 0;
	}
	else
	{
		objForm.txtCustomerActionID.value = m_aCustomerAction[0];
		objForm.txtCustomerActionLevel.value = m_aCustomerAction[1];
	}

	if (!objToolboxForm.cboCustomers.options) {
		objForm.txtManagementActionTitle.value = ''; //Ext.get('cboCustomers').getText();
	} else {
		objForm.txtManagementActionTitle.value = objToolboxForm.cboCustomers.options[objToolboxForm.cboCustomers.selectedIndex].text;
	}

	// Set the hidden form fields.
	objForm.txtUserActionID.value = '';
	objForm.txtVehicleActionID.value = '';

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// Refresh the page with the selected management option.
//=========================================================================
function showManagementOption(objToolboxForm, objForm)
{
	objForm.txtManagementAction.value = '';

	objForm.txtManagementCentreActionID.value = '';
	objForm.txtUserActionID.value = '';
	objForm.txtVehicleActionID.value = '';
	objForm.txtAction.value = '';
	objForm.txtActionID.value = '';
	objForm.txtDataAction.value = '';
	objForm.txtShowFilter.value = '';

	objForm.cboFilterCustomerFilter.value = '';
	objForm.cboFilterVehicleType.value = '';
	objForm.cboFilterVehicleMake.value = '';
	objForm.cboFilterVehicleModel.value = '';
	objForm.cboFilterVehicleVariant.value = '';
	objForm.cboFilterVehicleGroup.value = '';
	objForm.txtFilterRegistrationNumber.value = '';

	objForm.cboCustomerFilter.value = '';
	objForm.cboVehicleType.value = '';
	objForm.cboVehicleMake.value = '';
	objForm.cboVehicleModel.value = '';
	objForm.cboVehicleVariant.value = '';
	objForm.cboVehicleGroup.value = '';
	objForm.txtRegistrationNumber.value = '';
	objForm.txtSortColumn.value = '';
	objForm.txtSortDirection.value = '';
	
	if (!objToolboxForm.cboManagementOption.options) {
		objForm.txtManagementOption.value = Ext.get('cboManagementOption').getValue()
	} else {
		objForm.txtManagementOption.value = objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;
	}

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// Refresh the page with the selected management option.
//=========================================================================
function showManagementOptionOLD(objToolboxForm, objForm)
{
	if (objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value == 'Please select an option')
	{
		alert('Please select a management option.');
		return;
	}

	// Set the management option.
	objForm.txtManagementOption.value = objToolboxForm.cboManagementOption.options[objToolboxForm.cboManagementOption.selectedIndex].value;

	// Submit the form.
	objForm.submit();
	return;
}

//=========================================================================
// An item from a sortable table has been selected.
//=========================================================================
function itemSelected(strName, lngID, strAction)
{
	var m_blnSubmit = false;

	switch (strName.toUpperCase())
	{
		case 'EDIT VEHICLE':
		case 'MANAGEMENT VEHICLE SEARCH RESULTS':
			var objForm = document.forms.frmMain;
			switch (strAction.toUpperCase())
			{
				case 'EDIT':
					objForm.txtManagementAction.value = 'EditVehicle';
					objForm.txtVehicleActionID.value = lngID;
					m_blnSubmit = true;
					break;

				case 'DELETE':
					if (!window.confirm('Click \'OK\' to delete the selected vehicle.'))
					{
						return;
					}
					objForm.txtAction.value = 'DeleteVehicle';
					objForm.txtActionID.value = lngID;
					objForm.txtManagementAction.value = 'DeleteVehicle';
					objForm.txtVehicleActionID.value = lngID;
					m_blnSubmit = true;
					break;
			}

			break;

		default:
			alert('Item selected: Name = ' + strName + ', ID = ' + lngID + ', Action = ' + strAction);
			break;
	}

	// submit the form.
	if (m_blnSubmit)
	{
		objForm.submit();
	}
	return;
}

//=========================================================================
// A vehicle has has been selected.
//=========================================================================
function vehicleItemSelected(strName, lngID, strAction, strRegistrationNumber)
{
	var m_blnSubmit = false;

	switch (strName.toUpperCase())
	{
		case 'EDIT VEHICLE':
		case 'MANAGEMENT VEHICLE SEARCH RESULTS':
			var objForm = document.forms.frmMain;
			switch (strAction.toUpperCase())
			{
				case 'EDIT':
					objForm.txtEditTitle.value = strRegistrationNumber;
					objForm.txtManagementAction.value = 'EditVehicle';
					objForm.txtVehicleActionID.value = lngID;
					m_blnSubmit = true;
					break;

				case 'DELETE':
					if (!window.confirm('Click \'OK\' to delete \'' + strRegistrationNumber + '\'.'))
					{
						return;
					}
					objForm.txtAction.value = 'DeleteVehicle';
					objForm.txtActionID.value = lngID;
					objForm.txtManagementAction.value = 'DeleteVehicle';
					objForm.txtVehicleActionID.value = lngID;
					m_blnSubmit = true;
					break;
			}

			break;

		default:
			alert('Item selected: Name = ' + strName + ', ID = ' + lngID + ', Action = ' + strAction);
			break;
	}

	// submit the form.
	if (m_blnSubmit)
	{
		objForm.submit();
	}
	return;
}

//=========================================================================
// The sortable table records per page has been modified and the user has clicked refresh.
//=========================================================================
function displayRecordsPerPageRefresh(objRecordsPerPage)
{
	var objForm = document.forms.frmMain;

	switch (objRecordsPerPage.name)
	{
		case 'txtRecordsPerPage0':
			objForm.txtRecordsPerPage1.value = objForm.txtRecordsPerPage0.value
			break;

		case 'txtRecordsPerPage1':
			objForm.txtRecordsPerPage0.value = objForm.txtRecordsPerPage1.value
			break;
	}

	objForm.txtCurrentDisplayFrom.value = 1;
	objForm.submit()
	return;
}

//=========================================================================
// The user has selected a different page to display from the sortable table.
//=========================================================================
function viewRecords(lngDisplayFrom)
{
	var objForm = document.forms.frmMain;
	objForm.txtCurrentDisplayFrom.value = lngDisplayFrom;
	objForm.submit()
	return;
}

//=========================================================================
// Clear the currently selected options in the management toolbox for vehicles.
//=========================================================================
function resetManagementSearchForm(objToolBoxForm, objForm)
{
	objToolBoxForm.cboCustomerFilter.selectedIndex = 0;
	objToolBoxForm.cboVehicleType.selectedIndex = 0;
	objToolBoxForm.cboVehicleMake.selectedIndex = 0;
	objToolBoxForm.cboVehicleModel.selectedIndex = 0;
	objToolBoxForm.cboVehicleVariant.selectedIndex = 0;
	objToolBoxForm.cboVehicleGroup.selectedIndex = 0;
	objToolBoxForm.txtRegistrationNumber.value = '';

	objForm.cboFilterCustomerFilter.value = '';
	objForm.cboFilterVehicleType.value = '';
	objForm.cboFilterVehicleMake.value = '';
	objForm.cboFilterVehicleModel.value = '';
	objForm.cboFilterVehicleVariant.value = '';
	objForm.cboFilterVehicleGroup.value = '';
	objForm.txtFilterRegistrationNumber.value = '';

	objForm.cboCustomerFilter.value = '';
	objForm.cboVehicleType.value = '';
	objForm.cboVehicleMake.value = '';
	objForm.cboVehicleModel.value = '';
	objForm.cboVehicleVariant.value = '';
	objForm.cboVehicleGroup.value = '';
	objForm.txtRegistrationNumber.value = '';

	objForm.txtSortColumn.value = '';
	objForm.txtSortDirection.value = '';
	return;
}

//=========================================================================
// Validate the vehicle form.
//=========================================================================
function validateVehicleDetails(objForm)
{
	// Check the selected vehicle type.
	/* Code temporarily removed, the user will only be able to insert vehicles of type 'VEH', ID = 9.
	if (objForm.cboEditVehicleType.options[objForm.cboEditVehicleType.selectedIndex].value == 'NULL')
	{
		alert('Please select the vehicle type.');
		objForm.cboEditVehicleType.focus();
		return false;
	}
	*/

	// Check the selected vehicle make.
	if (objForm.cboEditVehicleMake.options[objForm.cboEditVehicleMake.selectedIndex].value == 'NULL')
	{
		alert('Please select the vehicle make.');
		objForm.cboEditVehicleMake.focus();
		return false;
	}

	// Check the selected vehicle model.
	if (objForm.cboEditVehicleModel.options[objForm.cboEditVehicleModel.selectedIndex].value == 'NULL')
	{
		alert('Please select the vehicle model.');
		objForm.cboEditVehicleModel.focus();
		return false;
	}

	// Check the selected vehicle variant.
	if (objForm.cboEditVehicleVariant.options[objForm.cboEditVehicleVariant.selectedIndex].value == 'NULL')
	{
		alert('Please select the vehicle variant.');
		objForm.cboEditVehicleVariant.focus();
		return false;
	}

	// Check the selected vehicle group.
	if (objForm.cboEditVehicleGroup.options[objForm.cboEditVehicleGroup.selectedIndex].value == 'NULL')
	{
		alert('Please select the vehicle group.');
		objForm.cboEditVehicleGroup.focus();
		return false;
	}

	// Check the selected vehicle status.
	if (objForm.cboEditVehicleStatus.options[objForm.cboEditVehicleStatus.selectedIndex].value == 'NULL')
	{
		alert('Please select the vehicle status.');
		objForm.cboEditVehicleStatus.focus();
		return false;
	}

	// Check the selected management centre.
	/*
	if (objForm.cboEditManagementCentre.options[objForm.cboEditManagementCentre.selectedIndex].value == 'NULL')
	{
		alert('Please select the management centre.');
		objForm.cboEditManagementCentre.focus();
		return false;
	}
	*/

	// Check the selected service agent.
	/*
	if (objForm.cboEditServiceAgent.options[objForm.cboEditServiceAgent.selectedIndex].value == 'NULL')
	{
		alert('Please select the service agent.');
		objForm.cboEditServiceAgent.focus();
		return false;
	}
	*/

	// Check the selected maintenance type.
	/*
	if (objForm.cboEditMaintenanceType.options[objForm.cboEditMaintenanceType.selectedIndex].value == 'NULL')
	{
		alert('Please select the maintenance type.');
		objForm.cboEditMaintenanceType.focus();
		return false;
	}
	*/

	// Check for a registration number.
	if (objForm.txtEditRegistrationNumber.value == '')
	{
		alert('Please enter a registration number.');
		objForm.txtEditRegistrationNumber.focus();
		return false;
	}

	// Check for a description.
	//if (objForm.txtEditDescription.value == '')
	//{
	//	alert('Please enter a description.');
	//	objForm.txtEditDescription.focus();
	//	return false;
	//}

	// Check for a fleet number.
	/*
	if (objForm.txtEditFleetNumber.value == '')
	{
		alert('Please enter a fleet number.');
		objForm.txtEditFleetNumber.focus();
		return false;
	}
	*/

	// Check for a chassis number.
	/*
	if (objForm.txtEditChassisNumber.value == '')
	{
		alert('Please enter a chassis number.');
		objForm.txtEditChassisNumber.focus();
		return false;
	}
	*/

	// Check for a vehicle weight.
	/*
	if (objForm.txtEditVehicleWeight.value == '')
	{
		alert('Please enter the vehicle weight.');
		objForm.txtEditVehicleWeight.focus();
		return false;
	}
	*/

	// Check that the vehicle weight only has numeric values.
	if (objForm.txtEditVehicleWeight.value.search(/[a-z]/gi, '') > -1)
	{
		if (objForm.txtEditVehicleWeight.value.match(/[a-z]/gi, '').length == 1)
		{
			alert('The vehicle weight is not correct because it has a letter in it.');
		}
		else
		{
			alert('The vehicle weight is not correct because it has letters in it.');
		}
		objForm.txtEditVehicleWeight.focus();
		return false;
	}

	// Check for a vehicle weight.
	if (!validateDate(objForm.txtEditOnFleetDate.value))
	{
		alert('Please enter a valid "on fleet date".');
		objForm.txtEditOnFleetDate.focus();
		return false;
	}

	if(objForm.txtEditOffFleetDate.value != '' && !validateDate(objForm.txtEditOffFleetDate.value))
	{
		alert('Please enter a valid "off fleet date".');
		objForm.txtEditOffFleetDate.focus();
		return false;
	}

	// Check the selected customer.
	if (objForm.cboEditClient.options[objForm.cboEditClient.selectedIndex].value == 'NULL')
	{
		alert('Please select the customer.');
		objForm.cboEditClient.focus();
		return false;
	}

	return true;
}

//=========================================================================
// Refresh any dependant listboxes..
//=========================================================================
function refreshDependants(objToolboxForm, objForm, strOption)
{
	var m_blnPostForm = true;

	switch (strOption.toUpperCase())
	{
		case 'VEHICLE':
			// Store the selected filters.
			var m_aCustomerFilter = objToolboxForm.cboCustomerFilter.value.split('|');

			if (m_aCustomerFilter.length == -1)
			{
				objForm.cboFilterCustomerFilter.value = objToolboxForm.cboCustomerFilter.value;
			}
			else
			{
				objForm.cboFilterCustomerFilter.value = m_aCustomerFilter[0];
			}

			objForm.cboFilterVehicleType.value = objToolboxForm.cboVehicleType.value;
			objForm.cboFilterVehicleMake.value = objToolboxForm.cboVehicleMake.value;
			objForm.cboFilterVehicleModel.value = objToolboxForm.cboVehicleModel.value;
			objForm.cboFilterVehicleVariant.value = objToolboxForm.cboVehicleVariant.value;
			objForm.cboFilterVehicleGroup.value = objToolboxForm.cboVehicleGroup.value;
			objForm.txtFilterRegistrationNumber.value = objToolboxForm.txtRegistrationNumber.value;
			break;

		case 'VEHICLEEDIT':
			break;

		default:
			m_blnPostForm = false;
			alert('Unknown option \'' + strOption + '\'.');
			break;
	}

	// Submit the form.
	if (m_blnPostForm)
	{
		objForm.submit();
	}
	return;
}

//=========================================================================
// Check that the user has selected an item from the available ancillary items.
//=========================================================================
function validateAddAncillaryItem(objForm)
{
	if (objForm.lstAvailableAncillaryEquipment.selectedIndex == -1)
	{
		alert('Please select an option from the available list');
		return false;
	}
	return true;
}

//=========================================================================
// Check that the user has selected an item from the current ancillary items.
//=========================================================================
function validateRemoveAncillaryItem(objForm)
{
	if (objForm.lstCurrentAncillaryEquipment.selectedIndex == -1)
	{
		alert('Please select an option from the current list');
		return false;
	}
	return true;
}

//=========================================================================
// Check that the user has selected an item from the available ancillary items.
//=========================================================================
function validateCustomerAddVehicle(objForm)
{
	if (objForm.lstAvailableCustomerVehicles.selectedIndex == -1)
	{
		alert('Please select an option from the available list');
		return false;
	}
	return true;
}

//=========================================================================
// Check that the user has selected an item from the current ancillary items.
//=========================================================================
function validateCustomerRemoveVehicle(objForm)
{
	if (objForm.lstCurrentCustomerVehicles.selectedIndex == -1)
	{
		alert('Please select an option from the current list');
		return false;
	}
	return true;
}

//======================================================================
// Set all the permissions to a specific radio buttons.
//======================================================================
function setAll(lngRadioButtonIndex)
{
	var objRadioButtons = document.body.getElementsByTagName('INPUT');
	var strPreviousObjectName = '';

	for (var lngCounter = 0; lngCounter < objRadioButtons.length; lngCounter++)
	{
		if (objRadioButtons[lngCounter].type.toUpperCase() == 'RADIO')
		{
			if (objRadioButtons[lngCounter].name != strPreviousObjectName)
			{
				strPreviousObjectName = objRadioButtons[lngCounter].name;
				var objRadio = document.getElementsByName(strPreviousObjectName);
				objRadio[lngRadioButtonIndex].checked = true;
			}
		}
	}

	return;
}

//======================================================================
// Save the changes made to a property page.
//======================================================================
function savePropertyPage(strType)
{
	var objForm = document.forms.frmPermissions;

	try
	{
		if (objForm.chkInherit.checked)
		{
			if (!window.confirm('Click \'OK\' to propagate the selected permissions to all sub folders.'))
			{
				return;
			}
		}
	}
	catch(e)
	{
		// Do nothing, must the navigation permission page.
	}

	var oE = document.getElementById("650_CURRENT");
	if (oE != undefined) {

		var oE2 = document.getElementsByName("650");

		if (oE.value != "True" && oE2[1].checked) {

			if (!confirm("Turning off MDSC will remove all drivers and vehicles for this customer from taskmaster.\nAre you sure?"))
			{
				return;
			}
		}
	}

	// Submit the form.
	document.forms.frmMain.txtDataAction.value = 'SAVE';
	document.forms.frmMain.submit();
	return;
}

//======================================================================
// Set all objects to a value.
//======================================================================
function setAllObject(strType, lngValue)
{
	var objObject = document.body.getElementsByTagName('INPUT');
	var strPreviousObjectName = '';

	for (var lngCounter = 0; lngCounter < objObject.length; lngCounter++)
	{
		if (objObject[lngCounter].name != strPreviousObjectName)
		{
			strPreviousObjectName = objObject[lngCounter].name;
			var objManipulateObject = document.getElementsByName(strPreviousObjectName);

			if (objObject[lngCounter].type.toUpperCase() == strType.toUpperCase())
			{
				switch (objObject[lngCounter].type.toUpperCase())
				{
					case 'RADIO':
						objManipulateObject[lngValue].checked = true;
						break;

					case 'CHECKBOX':
						objObject[lngCounter].value = lngValue;
						if (lngValue == 0)
						{
							objObject[lngCounter].checked = false;
						}
						else
						{
							objObject[lngCounter].checked = true;
						}
						break;

				}
			}
		}
	}

	return;
}

//======================================================================
// Set the deletion flag.
//======================================================================
function setDeletionFlag()
{
	if (m_blnDeletionFlag)
	{
		// Delete all records is currently set, mark all records as undelete.
		setAllObject('Checkbox', 0)
		m_blnDeletionFlag = false;
	}
	else
	{
		// Delete all records is currently NOT set, mark all records as delete.
		setAllObject('Checkbox', 1)
		m_blnDeletionFlag = true
	}
	return;
}

//======================================================================
// Validate the maintenance schedule.
//======================================================================
function validateMaintenanceSchedule(frmManagementToolbox, objForm)
{
	// Need to validate interval, schedule start date.
	var objObject = document.body.getElementsByTagName('INPUT');

	for (var lngCounter = 0; lngCounter < objObject.length; lngCounter++)
	{
		switch(objObject[lngCounter].name.substring(0, 11).toUpperCase())
		{
			case 'TXTINTERVAL':
				// TXTINTERVAL_0 indicates a new record.
				if (objObject[lngCounter].name.toUpperCase() == 'TXTINTERVAL_0')
				{
					// Check if the document type has been selected, if it has then validate the field, otherwise do nothing.
					if (objForm.cboDocumentType_0.options[objForm.cboDocumentType_0.selectedIndex].value != 0)
					{
						if (objObject[lngCounter].value == '')
						{
							objObject[lngCounter].value = '*';
							//alert('Please enter a maintenance interval for your new record.');
							//return;
						}
					}
				}
				else
				{
					if (objObject[lngCounter].value == '')
					{
						objObject[lngCounter].focus();
						alert('Please enter a maintenance interval.');
						return;
					}
				}
				break;

			case 'TXTSCHEDULE':
				if (objObject[lngCounter].name.toUpperCase() == 'TXTSCHEDULESTARTDATE_0')
				{
					// Check if the document type has been selected, if it has then validate the field, otherwise do nothing.
					if (objForm.cboDocumentType_0.options[objForm.cboDocumentType_0.selectedIndex].value != 0)
					{
						if (!validateDate(objObject[lngCounter].value))
						{
							objObject[lngCounter].focus();
							alert('Please enter a valid schedule date for your new record.');
							return;
						}
					}
				}
				else
				{
					if (!validateDate(objObject[lngCounter].value))
					{
						objObject[lngCounter].focus();
						alert('Please enter a valid schedule date.');
						return;
					}
				}
				break;

			case 'TXTBREAKPOI':
				if (objObject[lngCounter].name.toUpperCase() == 'TXTBREAKPOINT_0')
				{
					// Check if the document type has been selected, if it has then validate the field, otherwise do nothing.
					if (objForm.cboDocumentType_0.options[objForm.cboDocumentType_0.selectedIndex].value != 0)
					{
						if (objObject[lngCounter].value == '')
						{
							objObject[lngCounter].value = '*';
							//alert('Please enter a break point for your new record.');
							//return;
						}
					}
				}
				else
				{
					if (objObject[lngCounter].value == '')
					{
						objObject[lngCounter].focus();
						alert('Please enter a break point.');
						return;
					}
				}
				break;
		}
	}

	// Submit the form.
	objForm.txtAction.value = 'UPDATEMAINTENANCESCHEDULE';
	objForm.submit();
	return;
}

//======================================================================
// Reset the maintenance schedule.
//======================================================================
function resetMaintenanceSchedule(frmManagementToolbox, objForm, blnReset)
{
	if (blnReset)
	{
		if (!window.confirm('Click \'OK\' to reset the maintenance schedule on this vehicle.'))
		{
			return;
		}
	}

	// Submit the form.
	objForm.txtAction.value = 'RESETMAINTENANCESCHEDULE';
	objForm.submit();
	return;
}

//======================================================================
// Sortable table actions.
//======================================================================
function sortableAction(strAction)
{
	var m_objForm = document.forms.frmMain;

	m_objForm.txtManagementAction.value = 'DisplayVehicles';

	switch (strAction)
	{
		case 'RecordsPerPage':
			m_objForm.cboGoToPage.options.selectedIndex = 0;
			break;

		case 'GotoPage':
			break;

		case 'PreviousPage':
			m_objForm.cboGoToPage.options.selectedIndex = m_objForm.cboGoToPage.options.selectedIndex - 1;
			break;

		case 'NextPage':
			m_objForm.cboGoToPage.options.selectedIndex = m_objForm.cboGoToPage.options.selectedIndex + 1;
			break;
	}
	m_objForm.submit();
	return;
}

//======================================================================
// Sortable sort actions.
//======================================================================
function sortableSort(strColumn)
{
	var m_objForm = document.forms.frmMain;

	m_objForm.txtSortColumn.value = strColumn;

	// Only apply the direction if the column click is the same as before.
	// Otherwise, apply the ASC sort direction to the new column.
	if (strColumn == m_objForm.txtSortColumn.value)
	{
		switch (m_objForm.txtSortDirection.value)
		{
			case '':
				m_objForm.txtSortDirection.value = 'ASC';
				break;

			case 'ASC':
				m_objForm.txtSortDirection.value = 'DESC';
				break;

			case 'DESC':
				m_objForm.txtSortDirection.value = 'ASC';
				break;
		}
	}
	else
	{
		m_objForm.txtSortDirection.value = 'ASC';
	}

	m_objForm.submit();
	return;
}

//======================================================================
// Exception report.
//======================================================================
function exceptionReport(objManagementToolboxForm, objForm, strAction)
{
	var m_blnSubmitForm = true;

	// Submit the main form.
	switch (strAction.toUpperCase())
	{
		case 'RESET':
			objManagementToolboxForm.cboExceptionReport.selectedIndex = 0;
			objManagementToolboxForm.radVehicleSelection[0].checked = true;
			objManagementToolboxForm.txtRegistrationNumber.value = '';
			objManagementToolboxForm.radDateRange[0].checked = true;
			objManagementToolboxForm.cboLastMonths.selectedIndex = 0;
			objManagementToolboxForm.txtDateFrom.value = '';
			objManagementToolboxForm.cboDifference.selectedIndex = 0;
			objManagementToolboxForm.radServiceType[0].checked = true;

			for (var m_lngCounter = 0; m_lngCounter < objManagementToolboxForm.cboDocumentFolder.length; m_lngCounter++)
			{
				objManagementToolboxForm.cboDocumentFolder[m_lngCounter].selectedIndex = 0;
			}

			m_blnSubmitForm = false;
			break;

		case 'FILTER':
			if (objManagementToolboxForm.cboExceptionReport.options[objManagementToolboxForm.cboExceptionReport.selectedIndex].value == 0)
			{
				m_blnSubmitForm = false;
				alert('Please select an exception report.');
				objManagementToolboxForm.cboExceptionReport.focus();
			}
			break;
	}

	// Check if the form is to be submitted.
	if (m_blnSubmitForm)
	{
		objManagementToolboxForm.submit();
	}
	return;
}

//======================================================================
// Check the keycode to see if the user has pressed enter, if they have, then try and logon them on.
//======================================================================
function checkKeyCode()
{
	if (window.event.keyCode == 13)
	{
		formAction(document.forms.frmUserDetails, 'Send', 0);
	}
	return;
}

//======================================================================
// Launch the customer logo upload page.
//======================================================================
function selectImage(sOnLoad)
{
	var m_objForm = document.forms.frmMain;

	var m_objWindow = window.open('CustomerLogoUpload.asp?onload=' + sOnLoad + '&clientid=' + m_objForm.txtCustomerActionID.value + '&clientname=' + m_objForm.txtClientName.value, 'winCustomerLogoUpdate', 'location=no,menubar=no,resizable=yes,scrollbars=no,status=yes,titlebar=yes,toolbar=no,width=480,height=600')
	m_objWindow.focus();
	return;
}


//======================================================================
// Remove the customer logo.
//======================================================================
function removeImage()
{
	document.forms.frmMain.txtClientLogo.value = '';
	document.getElementById('objCustomerImage').src = 'images/logoCustomerPlaceholder.gif';
	return;
}

//======================================================================
// Remove the footer logo.
//======================================================================
function removeFooterImage()
{
	document.forms.frmMain.txtFooterLogo.value = '';
	document.getElementById('objFooterImage').src = 'images/logoCustomerPlaceholder.gif';
	return;
}

//======================================================================
// Upload the customers logo.
//======================================================================
function uploadImage()
{
	var m_objForm = document.forms.frmMain;

	if (m_objForm.txtFileUpload.value == '')
	{
		alert('Please select an image to upload.');
		m_objForm.txtFileUpload.focus();
		return;
	}

	// Submit the form.
	m_objForm.submit();
	return;
}

//======================================================================
// Customers logo has been uploaded.
//======================================================================
function customerImageUpload()
{
	var m_objForm = document.forms.frmMain;

	if (m_objForm.txtErrorCode.value == 0)
	{
		var m_objImagePath = m_objForm.txtFileNamePath.value.split('\\');
		var m_strImagePath = '/' + m_objImagePath[m_objImagePath.length - 4] + '/' + m_objImagePath[m_objImagePath.length - 3] + '/' + m_objImagePath[m_objImagePath.length - 2] + '/' + m_objImagePath[m_objImagePath.length - 1];

		window.opener.document.forms.frmMain.txtClientLogo.value = m_strImagePath;
		window.opener.document.getElementById('objCustomerImage').src = m_strImagePath;
	}

	window.close();

	return;
}

//======================================================================
// Footer logo has been uploaded.
//======================================================================
function footerImageUpload()
{
	var m_objForm = document.forms.frmMain;

	if (m_objForm.txtErrorCode.value == 0)
	{
		var m_objImagePath = m_objForm.txtFileNamePath.value.split('\\');
		var m_strImagePath = '/' + m_objImagePath[m_objImagePath.length - 4] + '/' + m_objImagePath[m_objImagePath.length - 3] + '/' + m_objImagePath[m_objImagePath.length - 2] + '/' + m_objImagePath[m_objImagePath.length - 1];

		window.opener.document.forms.frmMain.txtFooterLogo.value = m_strImagePath;
		window.opener.document.getElementById('objFooterImage').src = m_strImagePath;
	}

	window.close();

	return;
}

//======================================================================
// Check the page after it has loaded.
//======================================================================
function pageLoad(blnTemplate)
{

	if(document.layers)
	{
		var objDiv = document.divWait;

		if(objDiv)
		{
			objDiv.visibility = "hidden";
		}
	}
	else
	{
		var objDiv = document.getElementById("divWait");

		if(objDiv)
		{
			objDiv.style.display = "none";
			objDiv.style.visibility = "hidden";
		}
	}

	if(!blnTemplate)
	{
		return;
	}

	try
	{
		// Check for the error hidden field.
		if (document.getElementById('objDataError').value != '')
		{
			window.history.go(-1);
			alert(document.getElementById('objDataError').value);
		}
	}
	catch(e)
	{
		// Do nothing.
	}

	// if the user is view a printer friendly page, popup the print window.
	if (!blnTemplate)
	{
		window.print();
	}

	//return;
}

//======================================================================
// Show the help for the current page.
//======================================================================
function showHelp(strPageTitle)
{
	var m_objWindow = window.open('/common/help.asp?pagetitle=' + strPageTitle, 'winHelp', 'location=no,menubar=no,resizable=no,scrollbars=yes,status=no,titlebar=yes,toolbar=no,width=600,height=400');
	m_objWindow.focus();
	return;
}

//======================================================================
// OLP vehicle search
//======================================================================
function searchVehicles()
{
	if(validateFields())
	{
		var m_objForm = document.forms.frmXNavigation;

		if (m_objForm.txtNavigationID.value == '')
		{
			alert('An error has occured. Unable to find the Operator license packs navigation reference.');
			return;
		}

		document.frmOLPToolbox.txtAction.value = "search";
		document.frmOLPToolbox.action = 'index.asp?txtNavID=' + m_objForm.txtNavigationID.value + '&pagetitle=Operator+License+Packs';
		document.frmOLPToolbox.submit();
	}

	return;
}

// =================
// === newSearch ===
// =================
	function newSearch()
	{
		document.frmOLPToolbox.txtVehicleID.value = "";

		if (validateFields())
		{
			var m_objForm = document.forms.frmXNavigation;

			if (m_objForm.txtNavigationID.value == '')
			{
				alert('An error has occured. Unable to find the Operator license packs navigation reference.');
				return;
			}

			document.frmOLPToolbox.txtAction.value = "search";
			document.frmOLPToolbox.action = 'index.asp?txtNavID=' + m_objForm.txtNavigationID.value + '&pagetitle=Operator+License+Packs';
			document.frmOLPToolbox.submit();
		}
	}

//======================================================================
// OLP vehicle search field validation
//======================================================================
function validateFields()
{
	with(document.frmOLPToolbox)
	{
		// do we have a registration number?
		if(!commonValidateText(txtRegNumber.value))
		{
			alert("You must enter a Regstration Number");
			txtRegNumber.focus();
			return false;
		}

		// convert the registration number to upper case, and remove spaces
		txtRegNumber.value = txtRegNumber.value.toUpperCase().replace(/\s/g, "");
	}

	return true;
}

//======================================================================
// Text validation
//======================================================================
function commonValidateText(strText)
{
	var regExp;

	regExp = /^\s*$/;
	return !regExp.test(strText);
}

//======================================================================
// View all OLP documents
//======================================================================
function viewAllOLPDocuments()
{
	var m_objForm = document.forms.frmOLPToolbox;

	m_objForm.optActionType[0].checked = true;
	searchVehicles();
	return;
}

//======================================================================
// View all OLP documents
//======================================================================
function printFriendlyPage(strQueryString, objForm, strReportName)
{
	var objWindow = window.open('', 'winReportPrint', 'location=no,menubar=yes,resizable=yes,scrollbars=yes,status=yes,titlebar=yes,toolbar=yes,width=760,height=580');

	// Write loading.... content.
	objWindow.document.write('<html>');
	objWindow.document.write('<html>');
	objWindow.document.write('<head>');
	objWindow.document.write('<title>Please wait, loading....</title>');
	objWindow.document.write('<link rel="stylesheet" href="styles/global.css">');
	objWindow.document.write('</head>');
	objWindow.document.write('<body>');
	objWindow.document.write('<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0" background="">');
	objWindow.document.write('	<tr>');
	objWindow.document.write('		<td align="center" valign="middle">');
	objWindow.document.write('			<p class="pageTitle">Please wait, loading....</p>');
	objWindow.document.write('		</td>');
	objWindow.document.write('	</tr>');
	objWindow.document.write('</table>');
	objWindow.document.write('</body>');
	objWindow.document.write('</html>');

	// Set the focus to the window.
	objWindow.focus();

	// Submit the form to the opened window.
	objForm.action = '?' + strQueryString + '&template=false';
	if(strReportName != "undefined")
	{
		objForm.txtAction.value = strReportName;
	}
	else
	{
		objForm.txtAction.value = 'search';
	}
	objForm.target = 'winReportPrint';
	objForm.submit();
	objForm.target = '';
	objForm.action = '';
	objForm.txtAction.value = '';
	return;
}

// ====================
// === validateDate ===
// ====================
	function validateDate(strDate)
	{
		var regExp, lngYear, lngMonth, lngDay, dteTest

		regExp = /^\s*$/;
		if(regExp.test(strDate))
		{
			return false;
		}

		regExp = /^\d{2}\/\d{2}\/\d{4}(\s\d{2}\:\d{2}\:\d{2})?$/
		if(!regExp.test(strDate))
		{
			return false;
		}

		lngDay = parseInt(strDate.substring(0, 2), 10)
		lngMonth = parseInt(strDate.substring(3, 5), 10)-1
		lngYear = parseInt(strDate.substring(6, 10), 10)

		dteTest = new Date(lngYear, lngMonth, lngDay)

		if(lngDay != dteTest.getDate())
		{
			return false;
		}

		if(lngMonth != dteTest.getMonth())
		{
			return false;
		}

		if(lngYear != dteTest.getFullYear())
		{
			return false;
		}

		return true;
	}
	

	function validateCustomerPeriods(objForm)
	{
		var bRet = true;
		var i=1;
		var e;
		
		e = document.getElementById("IBKD_DESC_" + i);
		while (e != null)
		{		
			// Check there is a description
			if (e.value != '')
			{			
				// Check the year
				if(!checkNumeric(document.getElementById("IBKD_YEAR_" + i)))
				{
					alert(e.value + ' has an invalid year');
					document.getElementById("IBKD_YEAR_" + i).focus();
					document.getElementById("IBKD_YEAR_" + i).className="clsTextBox50_Error";
					bRet = false;
					break;
				} else {
					document.getElementById("IBKD_YEAR_" + i).className="clsTextBox50";
				}
				
				// Check dates
				if(!validateDate(document.getElementById("IBKD_START_" + i).value))
				{
					alert(e.value + ' has an invalid start date');
					document.getElementById("IBKD_START_" + i).focus();
					document.getElementById("IBKD_START_" + i).className="clsDateTextBox_Error";
					bRet = false;
					break;
				} else {
					document.getElementById("IBKD_START_" + i).className="clsDateTextBox";
				}
				
				if(!validateDate(document.getElementById("IBKD_END_" + i).value))
				{
					alert(e.value + ' has an invalid end date');
					document.getElementById("IBKD_END_" + i).focus();
					document.getElementById("IBKD_END_" + i).className="clsDateTextBox_Error";
					bRet = false;
					break;
				} else {
					document.getElementById("IBKD_END_" + i).className="clsDateTextBox";
				}
				
				var s1 = document.getElementById("IBKD_START_" + i).value;
				var s2 = document.getElementById("IBKD_END_" + i).value				
				var d1 = new Date(s1.substring(6,10),s1.substring(3,5)-1,s1.substring(0,2));
				var d2 = new Date(s2.substring(6,10),s2.substring(3,5)-1,s2.substring(0,2));
				
				if(d1>d2)
				{
					alert(e.value + '. The end date cannot be before the start date.');
					document.getElementById("IBKD_START_" + i).focus();
					document.getElementById("IBKD_START_" + i).className="clsDateTextBox_Error";
					bRet = false;
					break;
				} else {
					document.getElementById("IBKD_START_" + i).className="clsDateTextBox";
				}		
			}
			// next element
			i++; e=document.getElementById("IBKD_DESC_" + i);
		}
		
		if(bRet)
		{
			// Everything is ok so far check for overlaps
			if(!(validatePeriodDates("IBKD_START_") && validatePeriodDates("IBKD_END_")))
			{
				bRet=false;
				alert('There are conflicting periods defined.  \nThere can be no overlaps between periods.');
			}
			
		}
		return bRet;	
	}
	
	function warnDelete()
	{		
		if(confirm('Are you sure you want to delete this item?'))
		{
			return true;
		}
		return false;
	}
	
	function checkNumeric(e)
	{
		var bRet = true;		
		if (e.value.search(/[a-z]/gi, '') > -1)
		{						
			bRet = false;
		}		
		return bRet;
	}
	
	function handlePeriodDate(evt)
	{
		evt = (evt) ? evt : ((window.event) ? event : null);
		var elem = (evt.target) ? evt.target : evt.srcElement;
		
		// If the field is empty just ignore it.
		if(elem.value=="") return;
		
		if(validateDate(elem.value))
		{
			// Turn off warning colour
			elem.className = "clsDateTextBox";
			
			// See if there is a valid target for this date
			var s = elem.name;
			s = s.substring(s.lastIndexOf('_')+1);
			s++;
			
			var targ = document.getElementById('IBKD_START_' + s);
			if(targ != null)
			{
				// Only do this if the target is empty
				if(targ.value == "")
				{
					// Create the next date
					s=elem.value;
					var d1 = new Date(s.substring(6,10),s.substring(3,5)-1,s.substring(0,2));
					d1.setDate(d1.getDate()+1);
					
					var s1 = d1.getDate().toString(); if (s1.length < 2) s1 = '0' + s1;
					var s2 = d1.getMonth()+1; if (s2.toString().length < 2) s2 = '0' + s2;
					var s3 = d1.getYear().toString(); if (s3.length < 2) s3 = '0' + s3;
					
					targ.value = s1 + "/" + s2 + "/" + s3;
				}
			}						
			
		} else
		{
			alert('Invalid end date entered.');
			elem.focus();
			elem.className = "clsDateTextBox_Error";
		}
	}
	
	function validatePeriodDates(s)
	{
		var i=1;
		var sDesc;
							
		test = document.getElementById(s+i);				
		while(test!=null)
		{
			var j=1;
			var t1 = document.getElementById('IBKD_START_' + j);
			var t2 = document.getElementById('IBKD_END_' + j);
			
			var dTest = new Date(test.value.substring(6,10),test.value.substring(3,5)-1,test.value.substring(0,2));			
			
			while((t1 != null) && (t2 != null))
			{			
				sDesc = document.getElementById('IBKD_DESC_' + i).value;
					
				if ((t1.value !="" ) && (t2.value != "") && (i!=j) && (sDesc !=""))
				{
					var dLB = new Date(t1.value.substring(6,10),t1.value.substring(3,5)-1,t1.value.substring(0,2));
					var dUB = new Date(t2.value.substring(6,10),t2.value.substring(3,5)-1,t2.value.substring(0,2));
					
					if((dTest >= dLB) && (dTest <= dUB)) 
					{                     
						test.className = "clsDateTextBox_Error";
						test.focus();					
						return false;
					}
					else
					{
						test.className = "clsDateTextBox";
					}
				} else
				{
					test.className = "clsDateTextBox";
				}				
				
				// Next date	
				j++;
				var t1 = document.getElementById('IBKD_START_' + j);
				var t2 = document.getElementById('IBKD_END_' + j);
			}
		
			i++;								
			test = document.getElementById(s+i);				
		}
		
		
		return true;
	}
		
	function handlePeriodDescription(evt)
	{
		var bDone = false;
		
		evt = (evt) ? evt : ((window.event) ? event : null);
		var elem = (evt.target) ? evt.target : evt.srcElement;
		
		// If the field is empty just ignore it.
		if(elem.value=="") return;	
		
		// See if there is a valid target for this date
		var s = elem.name;
		s = s.substring(s.lastIndexOf('_')+1);
		
		var targ1 = document.getElementById('IBKD_START_' + s);
		var targ2 = document.getElementById('IBKD_END_' + s);
		var src1 = document.getElementById('IBKD_YEAR_' + s);

		// Ensure we have a year
		var dt = new Date();
		if (src1.value == "") src1.value = dt.getFullYear();
		var sY = src1.value;
		
		if((targ1 != null) && (targ2 != null))
		{
			// If targets are populated then exit
			if ((targ1.value != "") || (targ2.value != "")) return;
			
			s = elem.value.toUpperCase();
			s = s.substring(0,3);
			
			switch(s){
			case 'JAN': 
				targ1.value = '01/01/' + sY;
				targ2.value = '31/01/' + sY; 
				bDone = true; break;
			
			case 'FEB':
				targ1.value = '01/02/' + sY;
				dt = new Date(sY,'01','01');
				var dt2 = new Date(sY,'02','01');
				var iDiff = dt2.getTime() - dt.getTime();
				dt.setDate(iDiff/86400000);				
				targ2.value = dt.getDate() + '/02/' + sY; 
				bDone = true; break;
			
			case 'MAR':
				targ1.value = '01/03/' + sY;
				targ2.value = '31/03/' + sY; 
				bDone = true; break;
			
			case 'APR':
				targ1.value = '01/04/' + sY;
				targ2.value = '30/04/' + sY; 
				bDone = true; break;
			
			case 'MAY':
				targ1.value = '01/05/' + sY;
				targ2.value = '31/05/' + sY; 
				bDone = true; break;
			
			case 'JUN':
				targ1.value = '01/06/' + sY;
				targ2.value = '30/06/' + sY; 
				bDone = true; break;
						
			case 'JUL':
				targ1.value = '01/07/' + sY;
				targ2.value = '31/07/' + sY; 
				bDone = true; break;
			
			case 'AUG':
				targ1.value = '01/08/' + sY;
				targ2.value = '31/08/' + sY; 
				bDone = true; break;
			
			case 'SEP':
				targ1.value = '01/09/' + sY;
				targ2.value = '30/09/' + sY; 
				bDone = true; break;
			
			case 'OCT': 
				targ1.value = '01/10/' + sY;
				targ2.value = '31/10/' + sY; 
				bDone = true; break;
			
			case 'NOV':
				targ1.value = '01/11/' + sY;
				targ2.value = '30/11/' + sY; 
				bDone = true; break;
			
			case 'DEC':
				targ1.value = '01/12/' + sY;
				targ2.value = '31/12/' + sY; 
				bDone = true; break;
			}
			
			if (bDone)
			{
				s = elem.name;
				s = s.substring(s.lastIndexOf('_')+1);
				s++;
				
				targ2.focus();
				targ1 = document.getElementById('IBKD_YEAR_' + s);
				if(targ1 != null) targ1.focus();
							
			}
		}
		
	}
	
	function changeMCListEXT(bJoin)
	{		
		var sLeave, aLeave;
		var bExt = false; //document.all.lstJoinCentre.options;
		
		// Get Both combos
		var ddJ = Ext.getCmp("lstJoinCentre");
		var ddL = Ext.getCmp("lstLeaveCentre");
		
		// Get selected MC Value
		var iMC = bJoin ? ddJ.getValue() : ddL.getValue();
			
		// Get the record selected on the join dd
		var pos = bJoin ? ddJ.store.find("value", iMC) : ddL.store.find("value", iMC);
		if (pos < 0) return;
		var r = bJoin ? ddJ.store.getAt(pos) : ddL.store.getAt(pos);				 	
		
		if(bJoin)
		{
			// Add to lstLeaveCentre
			ddL.store.add(r);
			ddL.setValue(iMC);
			
			// Remove from lstJoinCentre
			ddJ.store.remove(r)
			ddJ.clearValue();
			
			// Add to hdnMgmtCentreJ
			if (document.all.hdnMgmtCentreJ.value.length > 0) document.all.hdnMgmtCentreJ.value += "~";
			document.all.hdnMgmtCentreJ.value += iMC;
			
			// Remove from hdnMgmtCentreL
			sLeave = new String(document.all.hdnMgmtCentreL.value);				
			aLeave = sLeave.split("~");
			sLeave = "";
		} 
		else {
			// Add to lstJoinCentre
			ddJ.store.add(r);
			ddJ.setValue(iMC);
			
			// Remove from lstLeaveCentre
			ddL.store.remove(r);
			ddL.clearValue();
			
			// Add to hdnMgmtCentreL
			if (document.all.hdnMgmtCentreL.value.length > 0) document.all.hdnMgmtCentreL.value += "~";
			document.all.hdnMgmtCentreL.value += iMC;
			
			// Remove from hdnMgmtCentreJ
			sLeave = new String(document.all.hdnMgmtCentreJ.value);				
			aLeave = sLeave.split("~");
			sLeave = "";
		}													
		
		for(var i=0; i<aLeave.length; i++)
		{
			if(aLeave[i] != iMC)
			{
				if (sLeave.length >0) sLeave += "~";
				sLeave += aLeave[i];
			}
		}
		
		if(bJoin)
		{
			document.all.hdnMgmtCentreL.value = sLeave;
		}
		else 
		{
			document.all.hdnMgmtCentreJ.value = sLeave;
		}		
	}
	
	function changeMCList(bJoin)
	{		
		var sLeave, aLeave;
		var bExt = false; //document.all.lstJoinCentre.options;
		
		// Get Both combos
		var ddJ = document.getElementById("lstJoinCentre");
		var ddL = document.getElementById("lstLeaveCentre");		
			
		// Get selected MC Value
		var iMC = bJoin ? ddJ.options.value : ddL.options.value;
			
		// Get the record selected on the join dd
		var pos = bJoin ? ddJ.options.selectedIndex : ddL.options.selectedIndex;
		if (pos < 0) return;		
		
		// Create a new record
		var r = document.createElement("OPTION");
		r.value = iMC;
		r.text = bJoin ? ddJ.options[ddJ.options.selectedIndex].text : ddL.options[ddL.options.selectedIndex].text
		
		if(bJoin)
		{
			// Add to lstLeaveCentre
			ddL.options.add(r);
			
			// Remove from lstJoinCentre
			ddJ.options.remove(pos);
			
			// Add to hdnMgmtCentreJ
			if (document.all.hdnMgmtCentreJ.value.length > 0) document.all.hdnMgmtCentreJ.value += "~";
			document.all.hdnMgmtCentreJ.value += iMC;
			
			// Remove from hdnMgmtCentreL
			sLeave = new String(document.all.hdnMgmtCentreL.value);				
			aLeave = sLeave.split("~");
			sLeave = "";
		} 
		else {
			// Add to lstJoinCentre			
			ddJ.options.add(r);
			
			// Remove from lstLeaveCentre			
			ddL.options.remove(pos);
			
			// Add to hdnMgmtCentreL
			if (document.all.hdnMgmtCentreL.value.length > 0) document.all.hdnMgmtCentreL.value += "~";
			document.all.hdnMgmtCentreL.value += iMC;
			
			// Remove from hdnMgmtCentreJ
			sLeave = new String(document.all.hdnMgmtCentreJ.value);				
			aLeave = sLeave.split("~");
			sLeave = "";
		}													
		
		for(var i=0; i<aLeave.length; i++)
		{
			if(aLeave[i] != iMC)
			{
				if (sLeave.length >0) sLeave += "~";
				sLeave += aLeave[i];
			}
		}
		
		if(bJoin)
		{
			document.all.hdnMgmtCentreL.value = sLeave;
		}
		else 
		{
			document.all.hdnMgmtCentreJ.value = sLeave;
		}		
	}
	
	function selectAllMC(bJoin)
	{
		var i = 0;
		var dd = bJoin ? document.getElementById("lstJoinCentre") : document.getElementById("lstLeaveCentre");
		
		while(i<dd.options.length)
		{
			dd.options.selectedIndex=0;
			changeMCList(bJoin);
		}
	}
	
