//Alexi added code -START - to validate phone numbers properly

// Declaring required variables
var digits = "0123456789";

// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";

// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";

// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

// Alexi - START - Allowed characters for postal code.
var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz ';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

function isValid(parm,val) {
  if (parm == "") return false;
  for (i=0; i<parm.length; i++) {
    if (val.indexOf(parm.charAt(i),0) == -1) return false;
  }
  return true;
}

function isAlphanum(parm) {
	return isValid(parm,lwr+upr+numb);
}
// Alexi - END - Allowed characters for postal code.



function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function checkPostalCode(strPhone){
s=stripCharsInBag(strPhone,validWorldPostalChars);
return (isInteger(s) && s.length >= minDigitsInPostalCode);
}
//Alexi added code - END


function trimSpace(x)
{
	var emptySpace = / /g;
	var trimAfter = x.replace(emptySpace,"");
	return(trimAfter);
}


function checkAlpha(x)
{
	pcode=x.toUpperCase();
		var CharArr="ABCDEFGHIJKLMNOPQRSTUVWXYZ ";

		var IsNumber=true;
	var Char1;
	for (i = 0; i < pcode.length ; i++) 
    {
    	Char1 = pcode.charAt(i);
    	//alert(Char1);
    	if (CharArr.indexOf(Char1) == -1)
    	{
    		IsNumber = false;
    	}
    }

 if (IsNumber == false)
    {
    	return IsNumber;
    }
}

function ValidateEmail(str)
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   alert("Invalid E-mail ID");
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert("Invalid E-mail ID");
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    alert("Invalid E-mail ID");
	    return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    alert("Invalid E-mail ID");
	    return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    alert("Invalid E-mail ID");
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    alert("Invalid E-mail ID");
	    return false;
	 }

	 if (str.indexOf(" ")!=-1){
	    alert("Invalid E-mail ID");
	    return false;
	 }

	 return true;
}

function validate()
{
		
	if(trimSpace(document.lenders.mortgage.value).length==0)
	{
		alert("Please enter amount to borrow.");
		document.lenders.mortgage.focus();
		return false;
	}
	if(trimSpace(document.lenders.purchaseprice.value).length==0)
	{
		alert("Please enter purchase price.");
		document.lenders.purchaseprice.focus();
		return false;
	}
	if(trimSpace(document.lenders.forename.value).length==0)
	{
		alert("Please enter forename.");
		document.lenders.forename.focus();
		return false;
	}
	if(trimSpace(document.lenders.surname.value).length==0)
	{
		alert("Please enter surname.");
		document.lenders.surname.focus();
		return false;
	}
	if(trimSpace(document.lenders.dob.value).length==0)
	{
		alert("Please enter date of birth.");
		document.lenders.dob.focus();
		return false;
	}
	
	if ((document.lenders.telephone.value==null)||(document.lenders.telephone.value=="")){
		alert("Please Enter your Phone Number")
		document.lenders.telephone.focus()
		return false
	}
	if (checkInternationalPhone(document.lenders.telephone.value)==false){
		alert("Please Enter a Valid Phone Number")
		document.lenders.telephone.value=""
		document.lenders.telephone.focus()
		return false
	}
	
	//Alexi - START - OLD CODE COMMENTED OUT, BAD CODE BELOW
	/*
	if(trimSpace(document.lenders.telephone.value).length==0)
	{
		alert("Please enter telephone number.");
		document.lenders.telephone.focus();
		return false;
	}
	if(isNaN(document.lenders.telephone.value))
	{
		alert("Please enter correct telephone number.");
		document.lenders.telephone.focus();
		return false;
	}
	if(check(document.lenders.telephone.value)==false)
	{
		alert("Please enter correct phone number.");
		document.lenders.telephone.focus();
		return false;
	}
	*/
	//Alexi - END
	
	if ((document.lenders.mobile.value==null)||(document.lenders.mobile.value=="")){
		alert("Please Enter your Mobile Number")
		document.lenders.mobile.focus()
		return false
	}
	if (checkInternationalPhone(document.lenders.mobile.value)==false){
		alert("Please Enter a Valid Mobile Number")
		document.lenders.mobile.value=""
		document.lenders.mobile.focus()
		return false
	}
	
	//Alexi - START - OLD CODE COMMENTED OUT, BAD CODE BELOW
	/*
	if(trimSpace(document.lenders.mobile.value).length==0)
	{
		alert("Please enter mobile number.");
		document.lenders.mobile.focus();
		return false;
	}
	if(isNaN(document.lenders.mobile.value))
	{
		alert("Please enter correct mobile number.");
		document.lenders.mobile.focus();
		return false;
	}
	if(check(document.lenders.mobile.value)==false)
	{
		alert("Please enter correct mobile number.");
		document.lenders.mobile.focus();
		return false;
	}
	*/
	//Alexi - END
	
	//Alexi - START - New postal code validation
	if ((document.lenders.postcode.value==null)||(document.lenders.postcode.value=="") || (document.lenders.postcode.value.length < 5)){
		alert("Please Enter your Postcode")
		document.lenders.postcode.focus()
		return false
	}
	if (isAlphanum(document.lenders.postcode.value)==false){
		alert("Please Enter a Valid Postcode")
		document.lenders.postcode.value=""
		document.lenders.postcode.focus()
		return false
	}
	//Alexi - END
	
	if(trimSpace(document.lenders.address.value).length==0)
	{
		alert("Please enter address.");
		document.lenders.address.focus();
		return false;
	}
	/*if(trimSpace(document.lenders.postcode.value).length==0)
	{
		alert("Please enter postcode.");
		document.lenders.postcode.focus();
		return false;
	}
	
	if(check(document.lenders.postcode.value)==false)
	{
		alert("Please enter correct postcode.");
		document.lenders.postcode.focus();
		return false;
	}*/
	
	if(trimSpace(document.lenders.email.value).length==0)
	{
		alert("Please enter email address.");
		document.lenders.email.focus();
		return false;
	}
	if ((ValidateEmail(document.lenders.email.value)==false))
	{
		document.lenders.email.focus();
		return false;
	}
	if(trimSpace(document.lenders.applicantoneincome.value).length==0)
	{
		alert("Please enter applicant income.");
		document.lenders.applicantoneincome.focus();
		return false;
	}
	if(trimSpace(document.lenders.applicantoneincome.value).length==0)
	{
		alert("Please enter applicant income.");
		document.lenders.applicantoneincome.focus();
		return false;
	}
	if(document.lenders.application.value=="Joint")
	{
	if(trimSpace(document.lenders.applicanttwoincome.value).length==0)
	{
		alert("Please enter applicant income.");
		document.lenders.applicanttwoincome.focus();
		return false;
	}
	}
	/*if(trimSpace(document.lenders.ref.value).length==0)
	{
		alert("Please enter reference.");
		document.lenders.ref.focus();
		return false;
	}
	if(trimSpace(document.lenders.password.value).length==0)
	{
		alert("Please enter password.");
		document.lenders.password.focus();
		return false;
	}*/
	
	return true;	
	
}
function check(str)
{ 
    var t=str;
	var x=str.split(" ");
	var y=str.split(" ");
	if(x!=t)
	{
	 return false;	
	}
	if(y!=t)
	{
	 return false;	
	}

}
