// $Header:   \\rlrgnttecf2\ecm\natwest.com\archives\apps\secure\applicationforms_dda\javascript\valGen.js-arc   1.6   Apr 23 2008 09:12:42   houghtb  $ 
function valGenCond(inData, inValidationType, checkCtl, checkValue, elementName){
	var strErrMsg = "";
	inData += "";
	inValidationType += "";	
	checkCtl += "";
	checkValue += "";
	elementName += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	if(client){
		var objcheckCtl = document.getElementById(checkCtl);
		checkCtl = getFieldValue(objcheckCtl);
	}else{
		checkCtl = request.form(checkCtl) + "";	
	}

	if (checkCtl == checkValue){
		if (inData.length<=0){
			strErrMsg = "Please complete the " + elementName;
		}
	}
	
	if(strErrMsg == ""){
		strErrMsg = valField(inData, inValidationType);
	}
	return strErrMsg;
}

function valGenCondWith2ndVal(inData, secondaryValidation, inValidationType, checkCtl, checkValue, elementName){
	var strErrMsg = "";
	inData += "";
	secondaryValidation += "";	
	inValidationType += "";	
	checkCtl += "";
	checkValue += "";
	elementName += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	if(client){
		var objcheckCtl = document.getElementById(checkCtl);
		checkCtl = getFieldValue(objcheckCtl);
	}else{
		checkCtl = request.form(checkCtl) + "";	
	}

	if (checkCtl == checkValue){
		if (inData.length<=0){
			strErrMsg = eval("Please complete the " + elementName);
		}
	}		

	if(strErrMsg == ""){
		if (secondaryValidation.indexOf("valGenTextCharLimit") > -1){
		    strErrMsg =  eval(secondaryValidation + ", inData, inValidationType)");
		}else{
			if (valFieldValidator == ""){
			 	strErrMsg = eval(secondaryValidation + "(inData)");
			}else{
				 strErrMsg = eval(secondaryValidation + "(inData, inValidationType)");
			}
		}	
	}
	return strErrMsg;	
}

//####CHECK amount entered is between 1 and 100 (i.e.: Percentage)
function valGen1To100(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');	
	if (strErrMsg == ""){
		if ((inData < 1) || (inData > 100)){
			strErrMsg = "Number entered must be between 1 and 100.";
		}
	}
	return strErrMsg;
}

//####CHECK amount entered is between 1 and 31 (i.e.: calendar date)
function valGen1To31(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');	
	if (strErrMsg == ""){
		if ((inData < 1) || (inData > 31)){
			strErrMsg = "Number entered must be between 1 and 31.";
		}
	}
	return strErrMsg;
}

//####CHECK amount entered is between 1 and 28 (i.e.: calendar date)
function valGen1To28(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');	
	if (strErrMsg == ""){
		if ((inData < 1) || (inData > 28)){
			strErrMsg = "Number entered must be between 1 and 28.";
		}
	}
	return strErrMsg;
}



function valGenPercent(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');
	if(strErrMsg == ""){
		if(!((inData>=1) && (inData<=100))){
			strErrMsg = "The percentage must be between 1 and 100";
		}
	}
	return strErrMsg;
}

function valGenTextCharLimit(inData, inValidationType, inMaxLen) {
	var strErrMsg = "";
	inData += "";
	inValidationType += "";
	var len = inData.length;
	

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}
	
	//check for carriage returns as this will cause problems in textareas
	if(client){
		if(escape(inData).indexOf("%0D%0A") > -1){ 
			//Windows encodes returns as \r\n hex
			inData=escape(inData).replace(/%0D%0A/g," ");
			inData=unescape(inData);
		}
	
	}
						
	if (len > parseInt(inMaxLen)) {	
		strErrMsg = 'You have entered more than the permitted number of ' + inMaxLen + ' characters - please edit your description.';			 
	}else{
		strErrMsg = valField(inData, inValidationType);
	}							
	return strErrMsg;
}

function valGenTextCharMin(inData, inValidationType, inMinLen) {
	var strErrMsg = "";
	inData += "";
	inValidationType += "";
	inMinLen = parseInt(inMinLen);
	var len = inData.length;

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}
						
	if (len < inMinLen) {	
		strErrMsg = 'You have entered less than the permitted number of ' + inMinLen + ' characters.';			 
	}else{
		strErrMsg = valField(inData, inValidationType);
	}							
	return strErrMsg;
}

function valGenPercentWithDecPoint(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'n');
	if(strErrMsg == ""){
		var arrData = inData.split(".");	
		if(arrData[0].length > 2){
			strErrMsg = "The percentage must be between 1 and 100";
		}
	}
	return strErrMsg;
}

function valGenCheckRes(inData, brand){

	var brandedMsg;
	var strErrMsg = "";
	inData += "";
	brand += "";
	//If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	switch (brand){
		case "RBS":
			brandedMsg = "You must be a UK resident to apply online for this account. To discuss alternative options, call into your nearest RBS branch.";
			break;
		case "DLFS":
			brandedMsg = "We're sorry but Direct Line loans are only available to U.K. residents. If you are not presently a U.K. resident please call us on 0845 301 1659.";
			break;
		case "MINT":
			brandedMsg = "We're sorry but MINT loans are only available to U.K. residents. If you are not presently a U.K. resident please call us on 0800 121 222.";
			break;
		case "LOM":
			brandedMsg = "We're sorry but Lombard loans are only available to U.K. residents. If you are not presently a U.K. resident please call us on 0800 2 15000.";
			break;
		default:
			brandedMsg="You must be a UK resident (for tax purposes) to apply online for this account. If you are not, please visit one of our branches to discuss alternative options.";
			break;
	}
	
	if ((inData=="no")||(inData=="No")){
		strErrMsg = brandedMsg;
	
	}
	return strErrMsg;


}


//tests for no return to a radio button - usually for consent
function valGenCheckDec(inData,brand){
	var strErrMsg = "";
	inData += "";
	brand += "";
	var strErrTmp="";

	//If empty string passed in then simply exit
	if ((inData == "")||(inData == "undefined")){return strErrMsg;}

	if(brand=="ulster"){
		strErrTmp = "You need to be able to answer 'Yes' to apply for a Direct Loan, but we may be able to help you at one of our branches, please see our branch locator for our nearest branch.";
	}
	if(brand=="tpf"){
		strErrTmp = "Thank you for your interest in Tesco Loans. Unfortunately, as you cannot answer 'Yes' to all of these questions, you will not meet our standard lending criteria. If your circumstances change however, we would be very happy to hear from you in the future";
	}
	if(brand=="lombard"){
		strErrTmp = "Your bank details do not meet our requirements for setting up a Direct Debit online. Therefore, we regret that we are unable to process your application.";
	}
	if(brand=="direct"){
		strErrTmp = "Your bank details do not meet our requirements for setting up a Direct Debit online. Therefore, we regret that we are unable to process your application.";
	}
	if(brand=="mint"){
		strErrTmp = "Your bank details do not meet our requirements for setting up a Direct Debit online. Therefore, we regret that we are unable to process your application.";
	}
				
	if(inData=="No"){
		strErrMsg=strErrTmp;
	}
	//response.write("inData - " + inData + "<br/>");
	//response.write("strErrMsg - " + strErrMsg + "<br/>");
	//response.end;
	return strErrMsg;

}

function valGenCheckPLP(inData, brand){
	var strErrMsg = "";
	inData += "";
	brand += "";
		
	if(client){
		var objRepPeriod = document.getElementById("repayperiod");
		repayPer = getFieldValue(objRepPeriod);
	}
	else{
		repayPer = request.form("repayperiod") + "";	
	}
	
	if((inData=="Yes, I would like to take out Loan Protector")&&(repayPer>60)){
		strErrMsg+="Personal Loan Protector Insurance is only offered for loans being repaid for up to 60 months. Please review the 'Repayment Period' and 'Personal loan insurance' fields";
	}
	
	return strErrMsg;
}

function valGenCheckTermToAmount(inData, brand){
	var strErrMsg = "";
	inData += "";
	brand += "";
	if(client){
		var objloanAmt = document.getElementById("loanAmount");
		loanAmt = getFieldValue(objloanAmt);
	}
	else{
		loanAmt = request.form("loanAmount") + "";	
	}
	
	if((brand=="direct")||(brand=="lombard")){
		if((loanAmt<=9999)&&(inData>60)){
			strErrMsg+="The maximum term available for amounts under £10000 is 60 months.";
		}
	}
	if(brand=="mint"){
		if((loanAmt<=4999)&&(inData>60)){
			strErrMsg+="The maximum term available for amounts under £5000 is 60 months.";
		}
	}


	return strErrMsg;
}
 
function valGenCheckConsent(inData){
	var strErrMsg = "";
	inData += "";
	
	if(client){
		var objPartner = document.getElementById("spouseDetails");
		partnerCon = getFieldValue(objPartner);
	}
	else{
		partnerCon = request.form("spouseDetails") + "";	
	}
	
	if(inData=="no" && partnerCon=="yes"){
		strErrMsg="You must select 'Yes' to continue in your application."
	}
	return strErrMsg;
}

function valGenCheckMonths(inData, field){
	var strErrMsg="";
	inData+="";
	field+="";

	if(client){
		var obj1stDualText = document.getElementById(field + "1");
		textValue = getFieldValue(obj1stDualText);
		var obj2ndDualText = document.getElementById(field + "2");
		textValue = getFieldValue(obj2ndDualText);
	}
	else{
		textValue1 = request.form(field + "1");	
		textValue2 = request.form(field + "2");	
	}
	
	strErrMsg = valField(textValue1,'a');
	
	if(strErrMsg==""){
		strErrMsg = valField(textValue2,'a');
	}
	if(strErrMsg==""){
		if(textValue2>11){
			strErrMsg="Please ensure you have correctly completed the Months field.";
		}
	}
	return strErrMsg;
}

//this func is used by the competition forms to cond mand check on radio button depending on string input
function valGenComp(inData, field){
var strErrMsg="";
inData+="";

if(client){
		var objfield = document.getElementById(field);
		strVal = getFieldValue(objfield);
	}
	else{
		strVal = request.form(field);	
	}

if(inData==""){
	if(strVal!=""){strErrMsg=" is a required field";}
}


return strErrMsg;
}

//generic function to test for a yes response to a dual radio button
//if no selected applicant cannot continue
function valGenCheckRadioYes(inData){
	var strErrMsg = "";
	inData += "";

	if(inData=="No"){
		strErrMsg="You must select 'Yes' to continue in your application."
	}
	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 some other fields mandatory. 
// *** use for the address fields only because of the validation type used ***


function valGenCheckFields(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";
		}
	}

	//if user completes field and error message is empty, validate as 'k'
	if((strErrMsg=="")&&(inData!="")){
		strErrMsg = valField(inData,'k');	 
	}

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 the previous address years field mandatory. 

function valGenCheckYears(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";
		}
	}

	//if user completes previous address years field and error message is empty, validate as 'a'
	if((strErrMsg=="")&&(inData!="")){
		strErrMsg = valField(inData,'a');	 
	}

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 number of months field mandatory. 

function valGenCheckMonths(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";
		}
	}

	return strErrMsg;
}

// Perm - for Tesco Ireland Loan form 
// Loan purpose mandatory condition 
// if Refinance, Mixed Purpose or Other selected, make another field mandatory
function valGenLoanPurpose(inData, inValType){
	inData+="";
	inValType+="";
	var strErrMsg="";			
	
	//if user has left field empty, check if they need to complete it
	if (strErrMsg == ""){	
		//check value of dropdown purposeofloan
		if(client){
			var objLoanPurpose = document.getElementById("purposeofloan");
			//loanPurpose = getFieldValue(objLoanPurpose);

			for (var i = 0; i < objLoanPurpose.length; i++) {
				if (objLoanPurpose[i].selected) {
					loanPurpose = objLoanPurpose[i].value;
					break;
				} 
			}
		}
		else{
			loanPurpose = request.form("purposeofloan") + "";	
		}
		
		//if purposeofloan is either of these values, then user must complete this field
		if((inData == "") && ((loanPurpose=="Refinance")||(loanPurpose=="Mixed Purposes")||(loanPurpose=="Other"))){
			strErrMsg="This is a required field, based upon your response to 'Purpose of Loan'";
		}
		
		//if user completes field and input is not suitable, show error messaging
		if((strErrMsg=="")&&(inData!="")){
			strErrMsg = valField(inData,inValType);	 
		}
	}
	
	return strErrMsg;
}


// Perm - for Tesco Ireland Loan form 
// How are you paid? mandatory condition 
// if Cash or Cheque, make another field mandatory
function valGenHowPaid(inData){
	inData+="";
	var strErrMsg="";			
	
	//if user has left field empty, check if they need to complete it
		//check value of dropdown purposeofloan
		if(client){
			var objLoanPurpose = document.getElementById("MainAppMethodOfSalary");
			loanPurpose = getFieldValue(objLoanPurpose);

		}
		else{
			loanPurpose = request.form("MainAppMethodOfSalary") + "";	
		}
		
		//if MainAppMethodOfSalary is either of these values, then user must complete this field
		if((inData == "") && ((loanPurpose=="Cash")||(loanPurpose=="Cheque"))){
			strErrMsg="This is a required field, based upon your response to 'How are you paid?'";
		}
		

	return strErrMsg;
}

// Perm - for Tesco Ireland Loan form 
// To check if something has been entered in the loan purpose field, then the loan amount becomes mandatory
function valGenLoanAmtCheck(inData, valType, inFieldNum){
var strErrMsg = "";
inData+="";
valType+="";
inFieldNum+="";

//alert("1");
if(inData!=""){
	switch(valType) {
		case "a": 
			strErrMsg = valField(inData, 'a');
			break;
		case "b": 
			strErrMsg = valField(inData, 'b');
			break;
		case "k": 
			strErrMsg = valField(inData, 'k');
			break;
		case "date":
			strErrMsg = valDate(inData,'e');
			break;
		default: 
			break;
	}	
}

if(client){
	var objloanPurpose = document.getElementById("purposeofloanmixed" + inFieldNum);
	loanPurpose = getFieldValue(objloanPurpose);
	//alert(loanPurpose);
	var objloanAmt = document.getElementById("loanamt" + inFieldNum);
	loanAmt = getFieldValue(objloanAmt);
	//alert(loanAmt);
}else{
	loanPurpose = request.form("purposeofloanmixed" + inFieldNum) + "";	
	loanAmt = request.form("loanamt" + inFieldNum) + "";	
}

if(strErrMsg==""){
	if(((loanPurpose!="")&&(loanAmt==""))||((loanPurpose=="")&&(loanAmt!=""))){
		if(inData==""){strErrMsg="This is a required field, based upon your response to 'Additional Purpose of Loan / Name of Lender'.";}
	}
}

return strErrMsg;

}

// Perm - for Tesco Ireland Loan form 
// To check if something has been entered in field1, then the field2 becomes mandatory
function valGenCheckMutualDependency(inData, valFunc, valType, inField1, inField2, inErrField){
var strErrMsg = "";
inData+="";
valFunc+="";
valType+="";
inField1+="";
inField2+="";
inErrField+="";

//alert("1");
if(inData!=""){
	strErrMsg = valFunc(inData, valType);
}

if(strErrMsg==""){
	if(client){
		var obj1 = document.getElementById(inField1 + "");
		var val1 = getFieldValue(obj1);
		var obj2 = document.getElementById(inField2 + "");
		var val2 = getFieldValue(obj2);
	}else{
		val1 = request.form(inField1) + "";	
		val2 = request.form(inField2) + "";			
	}

	if(((val1!="")&&(val2==""))||((val1=="")&&(val2!=""))){
		if(inData==""){strErrMsg="This is a required field, based upon your response to '" + inErrField + "'.";}
	}
}

return strErrMsg;

}


//function created for BA life protector forms to test for a "no" response to a dual radio button
//if "yes" selected, applicant cannot continue
function valGenCheckForRadioNo(inData,brand){
	var strErrMsg = "";
	inData += "";
	brand += "";

	if((inData=="Yes") && (brand=="nwb")){
		strErrMsg="Unfortunately as you have selected 'Yes' to one or more of these questions, we are unable to process your application online. You may still qualify but we will need to ask you some more questions. Please telephone 0800 068 2161."
	}
	
	if((inData=="Yes") && (brand=="rbs")){
		strErrMsg="Unfortunately as you have selected 'Yes' to one or more of these questions, we are unable to process your application online. You may still qualify but we will need to ask you some more questions. Please telephone 0800 45 55 65."
	}
	return strErrMsg;
}

// ####CHECK amount entered is between a minimum and maximum
// originally created for YB but anyone can use it if you want to
// compare inData to a range of ages

function valGenMinToMaxAge(inData, minAge, maxAge){
	var strErrMsg = "";
	inData += "";
	minAge += "";
	maxAge += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');	
	if (strErrMsg == ""){
		if ((inData < minAge) || (inData > maxAge)){
			strErrMsg = "This applicant must be aged between " ;
			strErrMsg += minAge ;
			strErrMsg += " and " ;
			strErrMsg += maxAge ;
			strErrMsg += " years." ;
		}
	}
	return strErrMsg;
}

//####CHECK number entered is between 0 and 11 (i.e.: for a months field)
function valGen0To11(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');	
	if (strErrMsg == ""){
		if ((inData < 0) || (inData > 11)){
			strErrMsg = "Number entered must be between 0 and 11.";
		}
	}
	return strErrMsg;
}



//####CHECK number entered is between 1 and 11 (i.e.: for months field)
function valGen1To11(inData){
	var strErrMsg = "";
	inData += "";

	// If empty string passed in then simply exit
	if (inData == ""){return strErrMsg;}

	strErrMsg = valField(inData, 'a');	
	if (strErrMsg == ""){
		if ((inData < 1) || (inData > 11)){
			strErrMsg = "Number entered must be between 1 and 11.";
		}
	}
	return strErrMsg;
}
