// $Header:   \\rlrgnttecf2\ecm\natwest.com\archives\web\secure\applicationforms_dda\javascript\valPers.js-arc   1.3   12 Aug 2004 11:40:50   Franrca  $ 

var telFlag=false;

// ##### CHECK EMAIL ADDRESS#####
function valPersEmail(inData) {
	var str;
	var strErrMsg = "";	
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}
	
	if ((inData.indexOf("@") < 1)||(inData.indexOf(".") < 1)) {
		strErrMsg = "Please enter a valid e-mail address. Please check the characters and '@' sign.";
	}else{
		inData = inData.substring((inData.indexOf("@")+1), inData.length)
		if (inData.length<=0){
			strErrMsg = "Please enter a valid e-mail address.";
		}else{
			//check for more than 1 @ or spaces
			for (var i=0; i<inData.length; i++){
				str = inData.charAt(i);
				if ((str == '@') || (str == ' ')){
					strErrMsg = "Please enter a valid e-mail address.";
				}
			}
		}
	}
	return strErrMsg;
}

function valPersTel(inData){
inData += "";
var strErrMsg = "";	

// If empty string passed in then simply exit
if (inData == ""){return strErrMsg;}

strErrMsg = valField(inData,'a');

if((strErrMsg=="")&&((inData.length<10)||(inData.length>11))){
	strErrMsg="Please re-enter either 10 or 11 digits with no spaces, letters or symbols.";
}

return strErrMsg;

}

//####Check that at least one telephone number has been entered
function valPersOneTelNum(inTelHome, inTelMob, inTelWork) {
	var strErrMsg = "";
	inTelHome += "";
	inTelMob += "";
	inTelWork += "";

	if(client){
		var objTelHome = document.getElementById(inTelHome);
		var objTelWork = document.getElementById(inTelWork);		
		inTelHome = getFieldValue(objTelHome);
		inTelWork = getFieldValue(objTelWork);		
	}else{

		inTelHome = request.form(inTelHome) + "";	
		inTelWork = request.form(inTelWork) + "";			
	}

	if (inTelMob != ""){ 
		strErrMsg = valField(inTelMob, 'b');
	}else if ((inTelHome == "") && (inTelWork == "")){ 
		strErrMsg = "At least one telephone number must be entered.";
	}
	return strErrMsg;	
}

function valPersResidency(inData){
	var strErrMsg = "";
	inData += "";
	inData = inData.toLowerCase();

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}
	
	if (inData == 'no'){	
		strErrMsg = "Sorry, we can't proceed with your application as you have to be a UK resident for tax purposes to apply for this account.";
	}
	return strErrMsg;
}

function valPersPostCode(inData) {
	var strErrMsg = "";	
	inData += "";
	//alert("inData - " + inData);
	var compactPcode="";	// ie. the post code value with the spaces removed, defaulted to 'empty'
	var outward="";
	var inward="";
	var fValid=false;

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}
	
	//go through each char and remove any spaces
	for (var i=0; i<inData.length; i++) {
		var chr = inData.charAt(i);
		if (chr != " ") {
			//create new string which has no sapces
			compactPcode = compactPcode + chr;
		}
	}

	//take the last three characters and put them in the inward var
	var len=compactPcode.length;
	if ((len>4) && (len<8)) {
		compactPcode=compactPcode.toUpperCase();
		if (compactPcode.indexOf("BFPO")==0) {
			outward = compactPcode.substring(0, 4);
			inward = compactPcode.substring(4);
		} else {
			outward = compactPcode.substring(0, len-3);
			inward = compactPcode.substring(len-3);
		}

		fValid=validateOutward(outward) && validateInward(inward, outward);
	}

	if (!fValid) {
		strErrMsg = "Please enter a valid UK Postcode";
	}

	return strErrMsg;
}


// Theresa - created especially for TPF Business Credit Card
// function to check if "currHomeAddYears" field has a value < 2, 
// and if so, to make previous address postcode field mandatory. 

function valPersCheckPostCode(inData){
	var strErrMsg = "";
	inData += "";
	var valOther;
	
	if(client){
		var objOther = document.getElementById("currHomeAddYears");
		valOther = getFieldValue(objOther);
		}else{
		valOther = request.form("currHomeAddYears") + "";	
		}
	
	if(parseInt(valOther)<2){
		if(inData==""){
			strErrMsg="This is a required field";
		}
		else{
		strErrMsg = valPersPostCode(inData);
		}	
	}

	return strErrMsg;
}





function validateOutward(outward) {
	outward += "";
	//alert("outward - " + outward);
	// BEFORE CHECKING INDIVIDUAL CHARS, CHECK FOR SPECIAL CASE OUTWARD VALUES
	var exceptions="|BFPO|GIR|";	// exceptions
	if (exceptions.indexOf("|"+outward+"|")>=0) {
		return true;
	}

	var out1pos = "ABCDEFGHIJKLMNOPRSTUWYZ";	// these letters are allowed in first position
	var out2pos = "ABCDEFGHJKLMNOPQRSTUVWXY";	// these letters are allowed in second position
	var out3pos = "AEGHMNPRTVWXY";	// these letters are allowed in third position
	var out4pos = "ABEHMNPRVWXY";	// these letters are allowed in fourth positione
	var digits = "0123456789";	// all digits
	
	
	if (outward.length==2) {
		return (out1pos.indexOf(outward.charAt(0))>=0) && (digits.indexOf(outward.charAt(1))>=0);
	} else if (outward.length==3) {
		return (out1pos.indexOf(outward.charAt(0))>=0) &&
			( ( ((out2pos + digits).indexOf(outward.charAt(1))>=0) && (digits.indexOf(outward.charAt(2))>=0) ) ||
			  ( (digits.indexOf(outward.charAt(1))>=0) && (out3pos.indexOf(outward.charAt(2))>=0) )
			);
	} else if (outward.length==4) {
		return (out1pos.indexOf(outward.charAt(0))>=0) && (out2pos.indexOf(outward.charAt(1))>=0) &&
			(digits.indexOf(outward.charAt(2))>=0) && ((out4pos + digits).indexOf(outward.charAt(3))>=0);
	}
	gErrorOccured=true;
	return false;
}

function validateInward(inward, outward) {
	inward += "";
	//alert("inward - " + inward);
	
	outward += "";
	//alert("outward2 - " + outward2);
	var in1pos = "0123456789";	// only these letters are allowed in first position
	var in2pos = "ABDEFGHJLNPQRSTUWXYZ";	// only these letters and numbers are allowed in second position, in addition to the exception where the first 3 chars equals "gir"
	var in3pos = "ABDEFGHJLNPQRSTUWXYZ";	// these letters are allowed in third position

	if (outward == "BFPO") {
		in2pos=in1pos;
		in3pos=in1pos;
		inward+="00";
	}

	return (in1pos.indexOf(inward.charAt(0))>=0) && (in2pos.indexOf(inward.charAt(1))>=0) && (in3pos.indexOf(inward.charAt(2))>=0);
}

function valPersPassWord(inData, inPWConf, inBrand){
	inData += "";
	inPWConf += "";	
	inBrand += "";
	inBrand = inBrand.toLowerCase();	
	var strErrMsg="";

	// If empty string passed in then simply exit
	if (inData == ""){return "";}
	
	if(client){
		if(inPWConf.length>1){
			var objPWConf = document.getElementById(inPWConf);
			inPWConf = getFieldValue(objPWConf);
		}
	}else{
		if(inPWConf.length>1){
			inPWConf = request.form(inPWConf) + "";	
		}
	}

	switch(inBrand){
	case "rbs":
		return checkPassWordMain(inData, inPWConf, "2", "20");
		break;
	case "ulster"	:
		return checkPassWordMain(inData, inPWConf, "2", "20");
		break;
	case "obb":
		return checkPassWordMain(inData, inPWConf, "5", "30");
		break;
	case "tpf":
		return checkPassWordMain(inData, inPWConf, "5", "20");
		break;	
	case "racfid":
		strErrMsg=valField(inData, 'e');
		if(strErrMsg==""){
			if((inData.length<4)||(inData.length>8)){strErrMsg="Your RACFID must contain between 4 and 8 characters.";}
		}
		return strErrMsg;
		break;
	case "cin":
		strErrMsg=valField(inData, 'a');
		if(strErrMsg==""){
			if(inData.length!=10){strErrMsg="Your CIN must contain 10 numbers.";}
		}
		return strErrMsg;
		break;
	default:
		return checkPassWordMain(inData, inPWConf, "5", "15");
		break;		
	}	

}

function checkPassWordMain(inData, inPWConf, inMinLen, inMaxLen){
	var strErrMsg = "";
	inData += "";
	inPWConf += "";	
	inMinLen = parseInt(inMinLen);
	inMaxLen = parseInt(inMaxLen);	
	
	//check the length
	strErrMsg = valField(inData, 'l');
	if(strErrMsg == ""){
		if ((inData.length<inMinLen) || (inData.length>inMaxLen)){
			strErrMsg = "Your password must contain at least " + inMinLen + " letters or numbers and be no longer than " + inMaxLen + " letters or numbers, please re-enter.";
		}else if ((inData != inPWConf)&&(inPWConf.length>0)){
			//check that the two passwords match
			strErrMsg = "Your passwords do not match, please re-enter.";
		}
	}
	return strErrMsg; 
}

//tel formatting for OBB forms
//infield param = tel, email
function valPersConfirmField(inData, inField, inFieldType, inField2){
	var strErrMsg = "";
	var valType="";
	inData += "";
	inField += "";	
	inField2 += "";	
	inFieldType +="";

	if(inFieldType=="telDual"){
		if(client){
			var objText1 = document.getElementById(inField + "1");
			textOne = getFieldValue(objText1);
			var objText2 = document.getElementById(inField + "2");
			textTwo = getFieldValue(objText2);
			var objText3 = document.getElementById(inField2 + "1");
			textThree = getFieldValue(objText3);
			var objText4 = document.getElementById(inField2 + "2");
			textFour = getFieldValue(objText4);
		}
		else{
			textOne = request.form(inField + "1") + "";	
			textTwo = request.form(inField + "2") + "";	
			textThree = request.form(inField2 + "1") + "";	
			textFour = request.form(inField2 + "2") + "";	
		}
	}
	else{
		if(client){
			if(inField.length>1){
				var objField = document.getElementById(inField);
				inField = getFieldValue(objField);
			}
		}else{
			if(inField.length>1){
				inField = request.form(inField) + "";	
			}
		}
	}
	
	//alert(textOne + ", " + textThree + " " +  textTwo + " " + textFour);
	
	//check val
	switch (inFieldType){
 		case "tel":
			strErrField = "telephone number";
		break;
		case "telDual":
			strErrField = "telephone number";
		break;
		case "email":
			strErrField = "e-mail addresse";
			break;		
		default:
			break;
	}
	
	if(strErrMsg == ""){
		if(inFieldType=="telDual"){
				if((textOne!=textThree)||(textTwo!=textFour)){
					//check that the 4 fields match
					strErrMsg = "Your " + strErrField + " do not match, please re-enter.";
					telFlag=true;
				}
		}
		else if ((inData != inField)&&(inField.length>0)&&(inData.length>0)){
			//check that the two fields match
			strErrMsg = "Your " + strErrField + "s do not match, please re-enter.";
		}
		else if ((inData=="")&&(inField.length>0)){
			strErrMsg = "Please confirm your " + strErrField;
		}
	}
	
	
	//response.write("strErrMsg - " + strErrMsg + "<br/>");
	return strErrMsg; 
}

//####Check that at least one telephone number has been entered for OBB forms
function valPersOneTelNumOBB(inData, inTelHome, inTelMob) {
	var strErrMsg = "";
	inTelHome += "";
	inTelMob += "";
	inData += "";

	inTelHome = request.form(inTelHome) + "";	
	inTelMob = request.form(inTelMob) + "";	
	
	if (inTelHome != ""){ 
		strErrMsg = valField(inTelHome, 'b');
	}

	if(strErrMsg==""){
		if ((inTelMob == "")&&(inTelHome=="")){ 
			strErrMsg = "Please enter either a valid Home or Mobile contact telephone number.";
		}
	}

	return strErrMsg;	
}


//this checks mobiles for 11 digits and that they begin with 076, 077,078,079 - OBB
function valPersMobile(inData){
	var strErrMsg = "";
	inData+="";
	inData = removeSpaces(inData);
	
	if(inData!=""){
		var mobPrefix = inData.substr(0,2);
		//response.write("<p> prefix - " & mobPrefix & "</p>");
		strErrMsg = valField(inData, 'b');
		
		if (inData.length!=11){
			strErrMsg="Please check the mobile phone number entered below has eleven digits and begins with 07.";
		}
		else if(parseInt(mobPrefix)!=07){
			strErrMsg="Please check the mobile phone number entered below has eleven digits and begins with 07.";
		}
	} 
	return strErrMsg;
}

function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
		tstring += splitstring[i];
	return tstring;
}




function valPersDualTextDate2(inData){
	var strErrMsg="";
	inData+="";
	strErrMsg = valField(inData, 'a');
	
	return strErrMsg;
	
}
//for dual text boxes - server side only at moment (for OBB)
function valPersDualTextDate(inData, fieldName){
	var strErrMsg="";
	inData+="";
	var textOne;
	var textTwo;

	
	textOne = request.form(fieldName + "1") + "";	
	textTwo = request.form(fieldName + "2") + "";	
	
	if(textTwo!=""){strErrMsg = valField(textTwo, 'a');}

	if((strErrMsg=="")&&(textOne!="")){strErrMsg = valField(textOne, 'a');}

	//ensure months don't exceed 11
	if((strErrMsg=="")&&(textTwo!="")){
		if(textTwo>11){
			strErrMsg="Please ensure that the months field is completed accurately.";
		}
	}
	return strErrMsg;
}

//check that at least one field has been completed out of upto 2 :
function valPersFieldCompleted (inData, infield1, infield2, message){

	var strErrMsg = "";

	var strErrMsgInd = "";
	var title = "";
	inData += "";
	infield1 += "";
	infield2 += "";
	message += "";	

	if(client){
		if(message=="alias"){
			var objtitle = document.getElementById("titleAliasSole");
			title = getFieldValue(objtitle);
		}
		var objfield1 = document.getElementById(infield1);
		infield1 = getFieldValue(objfield1);
		var objfield2 = document.getElementById(infield2);
		infield2 = getFieldValue(objfield2);
	}else{
		if(message=="alias"){
			title = request.form("titleAliasSole") + "";	
		}
		infield1 = request.form(infield1) + "";	
		infield2 = request.form(infield2) + "";	
	}
	
	switch (message){
		case "alias":
			strErrMsgInd = "Please ensure alias first name and surname are completed"
			strErrMsg = valField(inData, 'k');
			break;
		case "address_CAO":
			strErrMsgInd = "Please ensure either housename/ number or flat number are completed."
			if(infield2!=""){strErrMsg = valField(infield2, 'a');}
			break;
		case "address":
			strErrMsgInd = "Please ensure either town or county are completed."
			if(infield1!=""){strErrMsg = valField(infield1, 'k');}
			break;
		default:
			break;	
	}
	//if title is selected for alias, ensure forename and surname are collected
	if(message=="alias"){
		if(title!=""){
			if((infield1=="")||(infield2=="")){
				strErrMsg=strErrMsgInd;
			}
		}
	}

	//ensure either field are collected
	if((message=="address")||(message=="address_CAO")){
		if((infield1=="")&&(infield2=="")){
			strErrMsg=strErrMsgInd;
		}
	}

	return strErrMsg;

}