﻿function checkDropDownList(field, allowFirstOption)
{

	if (allowFirstOption && field.selectedIndex == 0)
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}

	if (field.selectedIndex < 2)
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
	else
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
}

var dayDone = false;
var monthDone = false;
var yearDone = false;
function checkDob(day, month, year)
{
	if (day.selectedIndex >= 2)
	{
		dayDone = true;
	}

	if (month.selectedIndex >= 2)
	{
		monthDone = true;
	}

	if (year.selectedIndex >= 2)
	{
		yearDone = true;
	}

	if (day.selectedIndex < 2 || month.selectedIndex < 2 || year.selectedIndex < 2)
	{
		if (dayDone && monthDone && yearDone)
		{
			$('#' + day.id.replace('ayOfBirth', 'ateOfBirth') + 'Error').show('slow');
		}
		return false;
	}
	else
	{
		$('#' + day.id.replace('ayOfBirth', 'ateOfBirth') + 'Error').hide('slow');
		
		var selDay = day.options[day.selectedIndex].value;
		var selMonth = month.options[month.selectedIndex].value - 1;
		var selYear = year.options[year.selectedIndex].value;

		var selDate = new Date();
		selDate.setFullYear(selYear, selMonth, selDay);

		if (selDate.getMonth() != selMonth) 
		{
			$('#' + day.id.replace('ayOfBirth', 'ateOfBirth') + 'ErrorNotValid').show('slow');
			return false;
		}
		else
		{
			$('#' + day.id.replace('ayOfBirth', 'ateOfBirth') + 'ErrorNotValid').hide('slow');

			if (year.selectedIndex == 2)
			{
				var curDay = new Date().getDate();
				var curMonth = new Date().getMonth() + 1;
				if ((month.options[month.selectedIndex].value < curMonth)
					|| ((month.options[month.selectedIndex].value == curMonth)
					&& (day.options[day.selectedIndex].value <= curDay)))
				{
					$('#' + day.id.replace('ayOfBirth', 'ateOfBirth') + 'ErrorNotEligible').hide('slow');
					return true;
				}
				else
				{
					$('#' + day.id.replace('ayOfBirth', 'ateOfBirth') + 'ErrorNotEligible').show('slow');
					return false;
				}
			}
			return true;
		}
	}
}

function validateEmailAddress(field)
{
	if (!field.value.toLowerCase().match(/^[a-z0-9!$'*+\-_]+(\.[a-z0-9!$'*+\-_]+)*@([a-z0-9]+(-+[a-z0-9]+)*\.)+([a-z]{2}|aero|arpa|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|travel)$/) && field.value.length > 0)
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
	else
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
}

function compareEmailAddresses(fieldOne, fieldTwo, errorFieldName)
{
	if (fieldOne.value.toLowerCase() != fieldTwo.value.toLowerCase())
	{
		$('#' + errorFieldName + 'Error').show('slow');
		return false;
	}
	else
	{
		$('#' + errorFieldName + 'Error').hide('slow');
		return true;
	}
}

function checkNameLayout(layoutOne, layoutTwo, layoutThree, layoutFour, errorFieldName)
{
	if (layoutOne.checked || layoutTwo.checked || layoutThree.checked || layoutFour.checked)
	{
		$('#' + errorFieldName + 'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + errorFieldName + 'Error').show('slow');
		return false;
	}
}

function checkNotEmpty(field)
{
	if (!isEmpty(field))
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
}

function isEmpty(field)
{
	if (field.length == 0 || field.value == '' || field.value.replace(/ /g, '') == '')
	{
		return true;
	}
	else
	{
		return false;
	}
}

function isNumeric(field)
{
	if (!field.value.match(/^[0-9]*$/))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function checkCustomNameLayout(field, forename, surname, errorFieldName)
{
	if (document.getElementById(errorFieldName + 'FieldFour').checked)
	{
		if (field.value.toLowerCase().indexOf(surname.value.toLowerCase()) < 0)
		{
			$('#' + errorFieldName + 'DoesNotContainNameError').show('slow');
			return false;
		}
		else
		{
			$('#' + errorFieldName + 'DoesNotContainNameError').hide('slow');
			return true;
		}

		if (field.value.match(/[^A-Za-zÀ-ÖØ-öø-ý\ \'\-]/))
		{
			$('#' + errorFieldName + 'CustomError').show('slow');
			return false;
		}
		else
		{
			$('#' + errorFieldName + 'CustomError').hide('slow');
			return true;
		}
	}
	else
	{
		$('#' + errorFieldName + 'DoesNotContainNameError').hide('slow');
		$('#' + errorFieldName + 'CustomError').hide('slow');
		return true;
	}
}

function initOtherSuggestionField(field)
{
	if (field.value.indexOf('Other') >= 0 && field.value.indexOf('please enter') >= 0)
	{
		field.value = '';
	}
}

function unitOtherSuggestionField(field)
{
	if (field.value == '')
	{
		field.value = 'Other — please enter…';
	}
}


function checkTextField(field, allowLetters, allowNumbers, allowNameCharacters, allowPunctuation, allowWhitespace, allowEmpty, applyToWholePhrase, validateLength, allowSpecialChars, additionalRegex)
{
	var regexString, regEx, prefix, suffix, regexModifier, regExB;
	regexString = '';

	if (applyToWholePhrase)
	{
		prefix = '^';
		suffix = '$';
	}
	else
	{
		prefix = '';
		suffix = '';
	}

	if (allowLetters)
	{
		regexString = regexString + 'A-Za-z';
	}

	if (allowNumbers)
	{
		regexString = regexString + '0-9';
	}

	if (allowNameCharacters)
	{
		regexString = regexString + "\\-\\'\\.";
	}

	if (allowPunctuation)
	{
		regexString = regexString + '!\\.,\\?";:';
	}

	if (allowWhitespace)
	{
		regexString = regexString + '\\ ';
	}

	if (allowSpecialChars)
	{
		regexString = regexString + '&@#~%\\$£';
	}

	if (allowEmpty)
	{
		regexModifier = '*';
	}
	else if (validateLength)
	{
		regexModifier = '{' + validateLength + '}';
	}
	else
	{
		regexModifier = '+';
	}

	regEx = new RegExp(prefix + '[' + regexString + ']' + regexModifier + suffix);
	if (!field.value.match(regEx))
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
	else
	{
		if (additionalRegex)
		{
			regExB = new RegExp(additionalRegex);
			if (!field.value.match(regExB))
			{
				$('#' + field.id + 'Error').show('slow');
			}
			else
			{
				$('#' + field.id + 'Error').hide('slow');
			}
		}
		else
		{
			$('#' + field.id + 'Error').hide('slow');
		}
		return true;
	}
}

function validateAccountNumber(fieldName)
{
	if (!checkTextField(document.getElementById(fieldName), false, true, false, false, false, false, true, 8, false, false))
	{
		$('#' + fieldName + 'Error').show('slow');
		return false;
	}
	else
	{
		$('#' + fieldName + 'Error').hide('slow');
		return true;
	}
}

function validateTelephoneNumber(field, mobile, allowEmpty)
{
	if (allowEmpty && field.value.length == 0)
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}

	if (mobile)
	{
		// This will only match mobile numbers
		if (!field.value.replace(/[ \-\(\)]/g, '').replace(/\+44([0]?)/, '0').match(/^07\d{9}$/) && field.value.length > 0)
		{
			$('#' + field.id + 'Error').show('slow');
			return false;
		}
		else
		{
			$('#' + field.id + 'Error').hide('slow');
			return true;
		}
	}
	else
	{
		if (!field.value.replace(/[ \-\(\)]/g, '').replace(/^\+44([0]?)/, '0').match(/^0[1-9]\d{8,9}$/))
		{
			$('#' + field.id + 'Error').show('slow');
			return false;
		}
		else
		{
			$('#' + field.id + 'Error').hide('slow');
			return true;
		}
	}
}

function validateHouseName(field, allowEmpty)
{
	if (field.value.match(/^[\.,&/\ A-Za-z0-9\-\']+$/g) || (allowEmpty && (field.value.length == 0)))
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
}

function validatePostcode(field, allowEmpty)
{
	field.value = field.value.toUpperCase();
	if (field.value.match(/(((^[BEGLMNS][1-9]\d?)|(^W[2-9])|(^(A[BL]|B[ABDHLNRST]|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]|F[KY]|G[LUY]|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]|M[EKL]|N[EGNPRW]|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKL-PRSTWY]|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)\d\d?)|(^W1[A-HJKSTUW0-9])|(^E1[W0-9])|(((^WC[1-2])|(^EC[1-4])|(^SW1))[ABEHMNPRVWXY])|(^EC50)|(^NW1W)|(^WC99))(\s*)?([0-9][ABD-HJLNP-UW-Z]{2}))$|(^GIR\s?0AA$)/)
		|| (allowEmpty && (field.value.length == 0)))
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
}

function validateStreet(field, allowEmpty)
{
	if ((checkTextField(field, true, true, true, true, true, false, true, false, false, false)
						    && (field.value.length > 3))
		 || (allowEmpty && (field.value.length == 0)))
	{
		$('#' + field.id +'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + field.id +'Error').show('slow');
		return false;
	}
}

function validateVillage(field, allowEmpty)
{
	if (field.value.match(/^[\.,\ A-Za-z0-9\-\']+$/g) || (allowEmpty && (field.value.length == 0)))
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
}


function validateTown(field, allowEmpty)
{
	if (field.value.match(/^[\.,\ A-Za-z0-9\-\']+$/g) || (allowEmpty && (field.value.length == 0)))
	{
		$('#' + field.id + 'Error').hide('slow');
		return true;
	}
	else
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
}


function validateIncome(field)
{
	if (isEmpty(field))
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
	if (!field.value.match(/,/) && !field.value.match(/^£?[1-9]{1}\d*(\.\d{2})?$/))
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
	else if (field.value.match(/,/) && (!field.value.replace(/,/g, '').match(/^£?[1-9]{1}\d*(\.\d{2})?$/) || field.value.match(/,$/) || field.value.match(/,\d(\d)?,/) || field.value.match(/,\d\d\d(\d)+/) || field.value.match(/,\d\d?$/)))
	{
		$('#' + field.id + 'Error').show('slow');
		return false;
	}
	else if (parseFloat(field.value)  < 12000)
	{
		if (isCipherSession)
		{
			$('#' + field.id + 'Error').hide('slow');
			$('#' + field.id + 'ErrorNotEligible').hide('slow');
			$('#' + field.id + 'ErrorNotEligibleCipher').show('slow');
			return true;
		}
		else
		{
			$('#' + field.id + 'ErrorNotEligible').show('slow');
			return false;
		}
	}
	else
	{
		$('#' + field.id + 'Error').hide('slow');
		$('#' + field.id + 'ErrorNotEligible').hide('slow');
		$('#' + field.id + 'ErrorNotEligibleCipher').hide('slow');
		return true;
	}
}

function showPopup(name)
{
	$('#' + name).show('slow');
}

function dismissPopup(name, displayConfirm, confirmMessage)
{
	if (displayConfirm)
	{
		var response = confirm(confirmMessage);
		if (response)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		$('#' + name).hide('slow');
		return true;
	}
}

function ajaxRequest(url, variables, handler, errorFieldName)
{
	var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject ('MSXML2.XMLHTTP.3.0');

	$('#' + errorFieldName).hide('slow');

	xmlHttp.open ('POST', url, true);
	xmlHttp.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');

	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
		{
			if (xmlHttp.responseText)
			{
				handler (xmlHttp.responseText);
			}
		}
		else if (xmlHttp.readyState == 4 && xmlHttp.status != 200)
		{
			$('#' + errorFieldName).show('slow');
		}
	}
	xmlHttp.send (variables);
}

function atlasTag(mode, tag)
{
	ajaxRequest('/tools/atdmt.asp?mode=' + escape(mode) + '&tag=' + escape(tag), '', atlasTagHandler, '');
}

function atlasTagHandler(str)
{
	return true;
}

function validateBankAccountDetails()
{
	var accountNo, sortCode, url;

	$('#searchingError').hide('slow');
	$('#searchingDynError').hide('slow');

	if (!validateAccountNumber('directDebitAccountNumber'))
	{
		return false;
	}

	$('#searchingSurround').show('slow');

	//url = '/money-shop/saga-platinum-card/tools/ajax.asp?mode=validateBankAccount';
	url = '/tools/bankDetails.asp?mode=validateBankAccount';
	accountNo = '&accountNo=' + document.getElementById('directDebitAccountNumber').value;
	sortCode = '&sortCode=';
	if (document.getElementById('directDebitSortCodeOne').value.length < 2)
	{
		sortCode = sortCode + '0' + document.getElementById('directDebitSortCodeOne').value;
	}
	else
	{
		sortCode = sortCode + document.getElementById('directDebitSortCodeOne').value;
	}

	if (document.getElementById('directDebitSortCodeTwo').value.length < 2)
	{
		sortCode = sortCode + '0' + document.getElementById('directDebitSortCodeTwo').value;
	}
	else
	{
		sortCode = sortCode + document.getElementById('directDebitSortCodeTwo').value;
	}

	if (document.getElementById('directDebitSortCodeThree').value.length < 2)
	{
		sortCode = sortCode + '0' + document.getElementById('directDebitSortCodeThree').value;
	}
	else
	{
		sortCode = sortCode + document.getElementById('directDebitSortCodeThree').value;
	}

	ajaxRequest(url + accountNo + sortCode, '', validateBankAccountDetailsHandler, 'searchingError');
	return false;
}

var globalFieldPrefix, globalHouseFieldSuffix;
function searchForAddress(fieldPrefix, houseFieldSuffix)
{
	var house, postcode, url;

	if (!houseFieldSuffix || houseFieldSuffix == '')
	{
		houseFieldSuffix = 'HouseNo';
	}
	globalHouseFieldSuffix = houseFieldSuffix;
	globalFieldPrefix = fieldPrefix;

	$('#' + fieldPrefix + 'Error').hide('slow');
	$('#' + fieldPrefix + 'ConnError').hide('slow');
	$('#' + fieldPrefix + 'Manual').hide('slow');
	$('#' + fieldPrefix + 'SearchingSurround').show('slow');

	url = '/tools/qaSearch.asp?mode=search';
	if (fieldPrefix != 'address')
	{
		house = '&house=' + document.getElementById(fieldPrefix + houseFieldSuffix).value;
		postcode = '&postcode=' + document.getElementById(fieldPrefix + 'Postcode').value;
	}
	else
	{
		house = '&house=' + document.getElementById('houseNo').value;
		postcode = '&postcode=' + document.getElementById('postcode').value;
	}

	ajaxRequest(url + house + postcode, '', searchForAddressHandler, fieldPrefix + 'ConnError');
	return false;
}

function completeAddress(fieldPrefix, moniker)
{
	var monikerField, url;

	globalFieldPrefix = fieldPrefix;

	$('#' + fieldPrefix + 'List').hide('slow');
	$('#' + fieldPrefix + 'Error').hide('slow');
	$('#' + fieldPrefix + 'ConnError').hide('slow');
	$('#' + fieldPrefix + 'Manual').hide('slow');
	$('#' + fieldPrefix + 'SearchingSurround').show('slow');

	url = '/tools/qaSearch.asp?mode=getAddress';
	if (moniker)
	{
		monikerField = '&moniker=' + moniker;
	}
	else
	{
		monikerField = '&moniker=' + document.getElementById(fieldPrefix + 'esList').options[document.getElementById(fieldPrefix + 'esList').selectedIndex].value;
	}

	if (moniker)
	{
		ajaxRequest(url + monikerField, '', completeAddressHandler, fieldPrefix + 'ConnError');
	}
	else if (!moniker && document.getElementById(fieldPrefix + 'esList').selectedIndex > 0)
	{
		ajaxRequest(url + monikerField, '', completeAddressHandler, fieldPrefix + 'ConnError');
	}
	else
	{
		$('#' + fieldPrefix + 'Manual').show('slow');
		$('#' + fieldPrefix + 'SearchingSurround').hide('slow');
	}
	return false;
}

function validateBankAccountDetailsHandler(str)
{
	var domParser, parsedDoc, rootNode, xmlString;
	$('#searchingSurround').hide('slow');
	$('#searchingDynError').hide('slow');
	$('#searchingError').hide('slow');

	if (str.length > 0)
	{
		if (str.substr(3, 7) == 'ERROR: ')
		{
			try
			{
				document.getElementById('searchingDynError').innerHTML = '';
			}
			catch (e1)
			{
				for (i = 0; i <= document.getElementById('searchingDynError').childNodes.length; i++)
				{
					try
					{
						document.getElementById('searchingDynError').removeChild(document.getElementById('searchingDynError').childNodes[i]);
					}
					catch (e2)
					{
						// Yeah, not really much you can do here.
					}
				}
			}

			xmlString = '<div xmlns="http://www.w3.org/1999/xhtml">' + str.substr(0, 3) + str.substr(10) + '<\/div>';

			try
			{
				domParser = new DOMParser();
				parsedDoc = domParser.parseFromString(xmlString, 'application/xhtml+xml');
				var rootNode = parsedDoc.documentElement;
				for (i = 0; i < rootNode.childNodes.length; ++i)
				{
					document.getElementById('searchingDynError').appendChild(document.importNode(rootNode.childNodes[i], true));
				}
			}
			catch (e)
			{
				document.getElementById('searchingDynError').innerHTML = xmlString;
			}
			$('#searchingDynError').show('slow');
		}
		else if (str.match(/^([0]+)$/))
		{
			try
			{
				document.getElementById('searchingDynError').innerHTML = '';
			}
			catch (e1)
			{
				for (i = 0; i <= document.getElementById('searchingDynError').childNodes.length; i++)
				{
					try
					{
						document.getElementById('searchingDynError').removeChild(document.getElementById('searchingDynError').childNodes[i]);
					}
					catch (e2)
					{
						// Yeah, not really much you can do here.
					}
				}
			}

			xmlString = '<div xmlns="http://www.w3.org/1999/xhtml"><p>The bank details you have provided for Search Bank Address are not valid. Please check that they are correct and try again.</p><\/div>';

			try
			{
				domParser = new DOMParser();
				parsedDoc = domParser.parseFromString(xmlString, 'application/xhtml+xml');
				var rootNode = parsedDoc.documentElement;
				for (i = 0; i < rootNode.childNodes.length; ++i)
				{
					document.getElementById('searchingDynError').appendChild(document.importNode(rootNode.childNodes[i], true));
				}
			}
			catch (e)
			{
				document.getElementById('searchingDynError').innerHTML = xmlString;
			}
			$('#searchingDynError').show('slow');
		}
		else if (str.match(/^[1-9][0-9]*$/))
		{
			var url;

			//url = '/money-shop/saga-platinum-card/tools/ajax.asp?mode=getBankAddress&bankID=' + str;
			url = '/tools/bankDetails.asp?mode=getBankAddress&bankID=' + str;

			ajaxRequest(url, '', completeBankAddressHandler, 'searchingError');
		}
		else
		{
			$('#searchingError').show('slow');
		}
	}
	else
	{
		$('#searchingError').show('slow');
	}
}

function searchForAddressHandler(str)
{
	var moniker, addressText, addressFullText, addressArray, i;
	$('#' + globalFieldPrefix + 'List').hide('fast');

	if (str.length > 0)
	{
		if (str.substr(0, 5).toLowerCase() != 'false')
		{
			if (str.substr(0, 7) != 'single:')
			{
				try
				{
					document.getElementById(globalFieldPrefix + 'List').innerHTML = '';
				}
				catch (e1)
				{
					for (i = 0; i <= document.getElementById(globalFieldPrefix + 'List').childNodes.length; i++)
					{
						try
						{
							document.getElementById(globalFieldPrefix + 'List').removeChild(document.getElementById(globalFieldPrefix + 'List').childNodes[i]);
						}
						catch (e2)
						{
							// Yeah, not really much you can do here.
						}
					}
				}

				addressesArray = str.split(/\n/g);
				xmlString = '<div xmlns="http://www.w3.org/1999/xhtml"><strong>Please choose your address from the list below:<\/strong><br \/><select name="' + globalFieldPrefix + 'esList" id="' + globalFieldPrefix + 'esList" class="longSelectField" style="width: 545px;"><option value="none">My address is not shown in this list<\/option>';
				for (i = 0; i < addressesArray.length; i++)
				{
					moniker = addressesArray[i].substr(0, addressesArray[i].indexOf('|'));
					addressText = addressesArray[i].substr(addressesArray[i].indexOf('|') + 1, (addressesArray[i].indexOf('##') - addressesArray[i].indexOf('|')));
					addressFullText = addressesArray[i].substr(addressesArray[i].indexOf('##') + 2);
					if (addressFullText.length <= 0)
					{
						continue;
					}

					xmlString = xmlString + '<option value="' + moniker + '">' + addressFullText.replace(/[&]/g, '&amp;') + '<\/option>';
				}
				xmlString = xmlString + '<\/select><p><a href="#" onclick="javascript:return completeAddress(\'' + globalFieldPrefix + '\');"><img src="images/continue.gif" alt="Continue" style="border: 0;" \/><\/a><\/p><\/div>';

				try
				{
					domParser = new DOMParser();
					parsedDoc = domParser.parseFromString(xmlString, 'application/xhtml+xml');
					var rootNode = parsedDoc.documentElement;
					for (i = 0; i < rootNode.childNodes.length; ++i)
					{
						document.getElementById(globalFieldPrefix + 'List').appendChild(document.importNode(rootNode.childNodes[i], true));
					}
				}
				catch (e)
				{
					document.getElementById(globalFieldPrefix + 'List').innerHTML = xmlString;
				}
				$('#' + globalFieldPrefix + 'List').show('fast');
				$('#' + globalFieldPrefix + 'SearchingSurround').hide('slow');
			}
			else
			{
				str = str.substr(7);
				moniker = str.substr(0, str.indexOf('|'));
				completeAddress(globalFieldPrefix, moniker);
			}
		}
		else
		{
			$('#' + globalFieldPrefix + 'SearchingSurround').hide('slow');
			$('#' + globalFieldPrefix + 'Error').show('slow');
		}

	}
	else
	{
		$('#' + globalFieldPrefix + 'SearchingSurround').hide('slow');
		$('#' + globalFieldPrefix + 'Error').show('slow');
	}
}

function completeAddressHandler(str)
{
	var addressArray, localeArr;

	$('#' + globalFieldPrefix + 'Error').hide('slow');
	$('#' + globalFieldPrefix + 'SearchingSurround').hide('slow');
	if (str.length > 0)
	{
		addressArray = str.split(/\n/g);
		for (i = 0; i < addressArray.length; i++)
		{
			addressArray[i] = addressArray[i].replace(/\r/g, '');
		}

		if (globalFieldPrefix != 'address')
		{
			$('#' + globalFieldPrefix + 'PostcodeError').hide('slow');
			if (addressArray[0] != ' ' && addressArray[0] != '' && addressArray[0] != '\n' && addressArray[0] != '\r')
			{
				document.getElementById(globalFieldPrefix + globalHouseFieldSuffix).value = addressArray[0];
			}
			else
			{
				document.getElementById(globalFieldPrefix + globalHouseFieldSuffix).value = addressArray[1];
			}
			document.getElementById(globalFieldPrefix + 'Postcode').value = addressArray[5];

			if (addressArray[1].length > 0 && document.getElementById(globalFieldPrefix + globalHouseFieldSuffix).value != addressArray[1])
			{
				document.getElementById(globalFieldPrefix + globalHouseFieldSuffix).value = document.getElementById(globalFieldPrefix + globalHouseFieldSuffix).value + ', ' + addressArray[1];
			}
			document.getElementById(globalFieldPrefix + 'Street').value = addressArray[2];

			localeArr = addressArray[3].split(', ');
			if (localeArr.length > 1)
			{
				document.getElementById(globalFieldPrefix + 'Village').value = localeArr[0];
				document.getElementById(globalFieldPrefix + 'Town').value = localeArr[1];
			}
			else
			{
				document.getElementById(globalFieldPrefix + 'Village').value = '';
				document.getElementById(globalFieldPrefix + 'Town').value = addressArray[3];
			}

			document.getElementById(globalFieldPrefix + 'County').selectedIndex = -1;
			for (i = 0; i < document.getElementById(globalFieldPrefix + 'County').options.length; i++)
			{
				if (document.getElementById(globalFieldPrefix + 'County').options[i].text.toLowerCase() == String.fromCharCode(160) + String.fromCharCode(160) + String.fromCharCode(160) + addressArray[4].toLowerCase())
				{
					document.getElementById(globalFieldPrefix + 'County').selectedIndex = i;
				}
			}
		}
		else
		{
			$('#postcodeError').hide('slow');
			if (addressArray[0] != ' ' && addressArray[0] != '' && addressArray[0] != '\n' && addressArray[0] != '\r')
			{
				document.getElementById('houseNo').value = addressArray[0];
			}
			else
			{
				document.getElementById('houseNo').value = addressArray[1];
			}
			document.getElementById('postcode').value = addressArray[5];

/*
			if (addressArray[1].length > 0 && document.getElementById('houseNo').value != addressArray[1])
			{
				document.getElementById('houseNo').value = document.getElementById('houseNo').value + ', ' + addressArray[1];
			}
*/
			if (addressArray[1].length > 0 && document.getElementById('houseNo').value != addressArray[1])
			{
				document.getElementById('houseNo').value = addressArray[1] + ', ' + document.getElementById('houseNo').value;
			}

			document.getElementById('street').value = addressArray[2];

			localeArr = addressArray[3].split(', ');
			if (localeArr.length > 1)
			{
				document.getElementById('village').value = localeArr[0];
				document.getElementById('town').value = localeArr[1];
			}
			else
			{
				document.getElementById('village').value = '';
				document.getElementById('town').value = addressArray[3];
			}
			
			document.getElementById('county').selectedIndex = -1;
			for (i = 0; i < document.getElementById('county').options.length; i++)
			{
				if (document.getElementById('county').options[i].text.toLowerCase() == String.fromCharCode(160) + String.fromCharCode(160) + String.fromCharCode(160) + addressArray[4].toLowerCase())
				{
					document.getElementById('county').selectedIndex = i;
				}
			}
		}
		$('#' + globalFieldPrefix + 'Address .errorBox').hide('slow');
	}
	else
	{
		$('#' + globalFieldPrefix + 'Error').show('slow');
	}
}

function completeBankAddressHandler(str)
{
	var addressArray, localeArr;

	$('#searchingDynError').hide('slow');
	if (str.length > 0)
	{
		if (str.substr(3, 7) == 'ERROR: ')
		{
			try
			{
				document.getElementById('searchingDynError').innerHTML = '';
			}
			catch (e1)
			{
				for (i = 0; i <= document.getElementById('searchingDynError').childNodes.length; i++)
				{
					try
					{
						document.getElementById('searchingDynError').removeChild(document.getElementById('searchingDynError').childNodes[i]);
					}
					catch (e2)
					{
						// Yeah, not really much you can do here.
					}
				}
			}

			xmlString = '<div xmlns="http://www.w3.org/1999/xhtml">' + str.substr(0, 3) + str.substr(10) + '<\/div>';

			try
			{
				domParser = new DOMParser();
				parsedDoc = domParser.parseFromString(xmlString, 'application/xhtml+xml');
				var rootNode = parsedDoc.documentElement;
				for (i = 0; i < rootNode.childNodes.length; ++i)
				{
					document.getElementById('searchingDynError').appendChild(document.importNode(rootNode.childNodes[i], true));
				}
			}
			catch (e)
			{
				document.getElementById('searchingDynError').innerHTML = xmlString;
			}
			$('#searchingDynError').show('slow');
		}
		else
		{
			addressArray = str.split(/\n/g);
			for (i = 0; i < addressArray.length; i++)
			{
				addressArray[i] = addressArray[i].replace(/\r/g, '');
			}

			document.getElementById('bankName').value = addressArray[0];
			document.getElementById('bankPostcode').value = addressArray[4];

			document.getElementById('bankStreet').value = addressArray[1];

			localeArr = addressArray[2].split(', ');
			if (localeArr.length > 1)
			{
				document.getElementById('bankVillage').value = localeArr[0];
				document.getElementById('bankTown').value = localeArr[1];
			}
			else
			{
				document.getElementById('bankVillage').value = '';
				document.getElementById('bankTown').value = addressArray[2];
			}

			for (i = 0; i < document.getElementById('bankCounty').options.length; i++)
			{
				if (document.getElementById('bankCounty').options[i].text.toLowerCase().indexOf(String.fromCharCode(160) + String.fromCharCode(160) + String.fromCharCode(160) + addressArray[3].toLowerCase()) == 0)
				{
					document.getElementById('bankCounty').selectedIndex = i;
				}
			}
		}
		$('#bankAddress .errorBox').hide('slow');
	}
	else
	{
		$('#searchingError').show('slow');
	}
}

function printPopUp(popUpID)
{
	if (document.getElementById(popUpID))
	{
		var popUpObj = document.getElementById(popUpID);
		var popUpObjContent = popUpObj.innerHTML;
		popUpObjContent = popUpObjContent.replace(/printPopUp/i, 'window.print');
		popUpObjContent = popUpObjContent.replace(/dismissPopup/i, 'window.close');		
		//popUpObjContent = '<style type="css/text">@import url(/include/css/moneyShop/sagaPlatinumCard/sagaPlatinumCard.css);</style>' + popUpObjContent;

		var printWindow = window.open('','','fullscreen=yes,left=0,top=0,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no');
		printWindow.document.open();
		printWindow.document.write(popUpObjContent);
		printWindow.document.close();
		printWindow.print();
	}
}

function validateTimeAtWithAge(dobDayID, dobMonthID, dobYearID, timeAtYearsID, timeAtMonthsID)
{
	var dobDay, dobMonth, dobYear, timeAtYears, timeAtMonths;

	var dobDayObj = document.getElementById(dobDayID);
	var dobMonthObj = document.getElementById(dobMonthID);
	var dobYearObj = document.getElementById(dobYearID);
	var timeAtYearsObj = document.getElementById(timeAtYearsID);
	var timeAtMonthsObj = document.getElementById(timeAtMonthsID);

	if (dobDayObj)
	{
		dobDay = parseInt(dobDayObj.options[dobDayObj.selectedIndex].value);
	}
	if (dobMonthObj)
	{
		dobMonth = parseInt(dobMonthObj.options[dobMonthObj.selectedIndex].value);
	}
	if (dobYearObj)
	{
		dobYear = parseInt(dobYearObj.options[dobYearObj.selectedIndex].value);
	}
	if (timeAtYearsObj)
	{
		timeAtYears = parseInt(timeAtYearsObj.value);
	}
	if (timeAtMonthsObj)
	{
		timeAtMonths = parseInt(timeAtMonthsObj.value);
	}

	$('#' + timeAtYearsID + 'WithAgeError').hide('slow');

	if ((dobDay > 0) && (dobMonth > 0) && (dobYear > 0))
	{				       
		if (!(timeAtYears > 0))
		{
			timeAtYears = 0;
		}
		if (!(timeAtMonths > 0))
		{
			timeAtMonths = 0;
		}
	
		var dobDate = new Date();
		dobDate.setFullYear(dobYear, dobMonth-1, dobDay);
		dobDate.setMonth(dobDate.getMonth() + timeAtMonths);
		dobDate.setFullYear(dobDate.getFullYear() + timeAtYears);
		
		var nowDate = new Date();
		if (dobDate <= nowDate)
		{
			$('#' + timeAtYearsID + 'WithAgeError').hide('slow');
			return true;
		}
		else
		{
			$('#' + timeAtYearsID + 'WithAgeError').show('slow');
			return false;
		}
	}
	else
	{
		return true;
	}
}

function validateMandatory(inputObj)
{
	if (inputObj.type == 'checkbox')
	{
		if (inputObj.checked)
		{
			$('#' + inputObj.id + 'Error').hide('slow');
			return true;
		}
		else
		{
			$('#' + inputObj.id + 'Error').show('slow');
			return false;
		}
	}

}

function backBttnDisable()
{
	// setTimeout("backBttnDisableOnReady()", 1);
}

function backBttnDisableOnReady()
	{
	// this has been removed cos it was buggering navigation when clicking away from a page and then trying to backbutton to it...
	// 	try 
	// 	{
	// //		history.forward();     
	// 	} 
	// 	catch (e) 
	// 	{
	// 		// no forward pages
	// 	}
	// 	setTimeout("backBttnDisableOnReady()", 500);
	}




var isCipherSession = false;

$(document).ready(function(){
	
	backBttnDisable();
	
	if (document.getElementById('titleField') && document.getElementById('surnameField'))
	{
		if (document.getElementById('titleField').value + document.getElementById('surnameField').value != '')
		{
			updateNameSuggestionFields();
		}
	}

	if (document.getElementById('additionalTitleField') && document.getElementById('additionalSurnameField'))
	{
		if (document.getElementById('additionalTitleField').value + document.getElementById('additionalSurnameField').value != '')
		{
			updateNameSuggestionFields();
		}
	}

	if (document.getElementById('cipherAddressLinesAssign0'))
	{
		var arrInd = 0;
		while (document.getElementById('cipherAddressLinesAssign' + arrInd))
		{
			if (document.getElementById('cipherAddressLinesAssign' + arrInd + 'Value'))
			{
				var selectObj = document.getElementById('cipherAddressLinesAssign' + arrInd);
				var cipherValue = document.getElementById('cipherAddressLinesAssign' + arrInd + 'Value').innerHTML;
				
				for(var i=0; i < selectObj.length; i++)
				{
					if (document.getElementById(selectObj.options[i].value))
					{
						var fieldObj = document.getElementById(selectObj.options[i].value);
						if (fieldObj.selectedIndex)
						{
							selectObj.options[i].selected = (fieldObj.selectedIndex >= 0)  && 
											(fieldObj.options[fieldObj.selectedIndex].text.toLowerCase().indexOf(fieldObj.value.toLowerCase()+',') >= 0);
						}
						else
						{
							selectObj.options[i].selected = (fieldObj.value == cipherValue);
						}
					}
				}
			}
			arrInd++;
		}
	}
	
});


