//*****************************************************************************
// NAME:
//	clientscript.js
//
// FUNCTION(S):
//	validate
//	ClientValidation
//
// SYNOPSIS:
//	This page contains the client side validation function.
//
// AUTHOR:
//	Anoopa M G
//
// CHANGE HISTORY:
//
//	4th 	May	2009	-	Created for Job #1443 (AMG\1064332)
//	08th 	MAy	2009	-	Modified for Job #1443.1 (AMG\1064332)
//	19th 	May 	2009    - 	Changed for 1443.1 changes (AMG/1064332)
//  26th    May 2009    -   Updated for Job #1509 - HFX - Mortgage Booking App 
//                          Amends (DM/1049629)
//  1st     April 2010  -  (PW/339702) Submit using javascript to allow querystring
//                          value to be passed
//  4th     May 2010    -   add buttonEnable function and disable submit (PW/339702)
//*****************************************************************************
$(document).ready(function() {

	/* On MouseOver of the button DIV
	-----------------------------------------------------------------*/
	$("#requestacallback").mouseover(function(){
		
		$("#button-left").addClass("hover");
		$("#Submit1").addClass("hover");
		$("#button-right").addClass("hover");

		
	});//END Mouseover
    /* 
	-----------------------------------------------------------------*/
	$("#requestacallback").mouseout(function(){
		
		$("#button-left").removeClass("hover");
		$("#Submit1").removeClass("hover");
		$("#button-right").removeClass("hover");


	});//END Mouseout
	

});

function buttonEnable() 
{
var bookingForm = document.forms['BookAppointment'];
  bookingForm.Submit1.disabled=false;
}

var emailRegExp =  /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z_-]+)+$/;
var telNoRegExp = /[^a-zA-Z]$/
var postCodeRegExpTX = /^(([A-Za-z]{1,2}[0-9]{1,2})|([a-zA-Z]{1,2}[0-9][0-9A-Za-z]))[\s][0-9][A-Za-z]{2}$/;
var dobRegExp = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;

function ClientValidation(direction, currentPage)
{
		var objForm = document.forms['BookAppointment'];
		var isValid = dobRegExp.test((objForm.DOB.value));
		var isDOBRegExpValid = dobRegExp.test((objForm.DOB.value));
		var isDOBValid = ValidateDate((objForm.DOB.value));
		var isPostCodeValid = postCodeRegExpTX.test((objForm.Postcode.value));
		var isTelNoRegExpValid = telNoRegExp.test((objForm.PhoneNumber.value));
		var isEmailRegExpValid = emailRegExp.test((objForm.EmailAddress.value));

		if (objForm.Location1.value == "") 
		{
		    alert("Please enter your preferred location, can be a branch name, a town or a postcode");
		    objForm.Location1.focus();		
		    return false;
	    }
	    else if(objForm.Location1.value == "Location of Choice 1")
	    {
		    alert("Please enter your preferred location, can be a branch name, a town or a postcode");
		    objForm.Location1.focus();		
		    return false;
	    }
	    else if (objForm.Preferences.value.length > 1000) 
	    {
			alert("Please enter less than 1000 characters");
			objForm.Preferences.focus();		
			return false;
	    }
	    else if (objForm.Slot3[0].checked == false && objForm.Slot3[1].checked == false && objForm.Slot3[2].checked == false && objForm.Slot3[3].checked == false)
	    {
		    alert("Please enter a reason for discussion");	
		    return false;
	    }

	    else if(objForm.Forenames.value == "") 
	    {
		    alert("Please enter your forename");
		    objForm.Forenames.focus();		
		    return false;
	    }
	    else if (objForm.Surname.value == "") 
	    {
		    alert("Please enter your surname");
		    objForm.Surname.focus();			
		    return false;
	    }

        else if (objForm.DOB.value == "") 
        {
		    alert("Please enter your date of birth");
		    objForm.DOB.focus();			
		    return false;		
	    }
	    else if ((isDOBRegExpValid == false))
	    {
			alert("Please enter a valid date of birth, e.g. dd/mm/yyyy"); 
			return false;
		}
		else if ((isDOBValid == false))
		
		{	alert("Please enter a valid date of birth, e.g. dd/mm/yyyy"); 
			return false;
		} 
		
		else if (objForm.FirstLineofAddress.value == "") 
	    {
		    alert("Please enter the first line of your home address");
		    objForm.FirstLineofAddress.focus();	
		    return false;
	    }
		
		else if (objForm.Postcode.value == "")
		{
		    alert("Please enter your home postcode");
		    objForm.Postcode.focus();
		    return false;
	    }
	    else if ((isPostCodeValid == false))
		{
			alert("Please enter a valid UK postcode, e.g. HX1 2RG"); 
			return false;
		}
		else if (objForm.PhoneNumber.value == "")
		{
			alert("Please enter your contact telephone number");
			objForm.PhoneNumber.focus();
			return false;
		}
		
		else if ((isTelNoRegExpValid == false))
		{
			alert("Please enter a valid phone number including dialling code e.g. 01422333333"); 
			objForm.PhoneNumber.focus();
			return false;
		}
		else if (objForm.EmailAddress.value == "") 
		
		{
			alert("Please enter a valid contact email address");
			objForm.EmailAddress.focus();
			return false;
		}
		else if ((isEmailRegExpValid == false))
		{
			alert("Please enter a valid email address, e.g. myname@halifax.co.uk");	
			objForm.EmailAddress.focus();
			return false;
		}	
		else if (objForm.ConfirmEmailAddress.value == "") 
		{
			alert("Please ensure your email addresses match");
			objForm.ConfirmEmailAddress.focus();
			return false;
	    }
		else if(objForm.EmailAddress.value != objForm.ConfirmEmailAddress.value)
		{
			alert("Please ensure your email addresses match");
			objForm.ConfirmEmailAddress.focus();
			return false;
		}
	    
        else
		{ 
		    $(document).ready(function() {  
               $('input[type=submit]', this).attr("disabled","disabled");
            });
            
		    objForm.action = 'container.asp';
			if (objForm.Slot3[0].checked == true)
			{
			objForm.action = 'container.asp?app=' + objForm.Slot3[0].value;
			}
			if (objForm.Slot3[1].checked == true)
			{
			objForm.action = 'container.asp?app=' + objForm.Slot3[1].value;
			}
			if (objForm.Slot3[2].checked == true)
			{
			objForm.action = 'container.asp?app=' + objForm.Slot3[2].value;
			}
			if (objForm.Slot3[3].checked == true)
			{
			objForm.action = 'container.asp?app=' + objForm.Slot3[3].value;
			}
			objForm.method='Post';
			objForm.submit();
			return false;
		}

}


function ValidateDate(strDate)	
		{

		var now = new Date();
        var currentDate;
        var currentYear;
        var currentMonth;
        var x=new Date();
        currentYear=x.getFullYear();
        currentMonth=x.getMonth()+1;
        currentDate=x.getDate();
		var day, month, year
		var result = true
		var elems = strDate.split("/");
		result = (elems.length == 3);
		
			if (result)
			{

				day = (elems[0]);
				month = (elems[1]);
				year = (elems[2]); 

				if(year > currentYear)
				{
				  return false;
				}
				
				else if (year == currentYear && month >	currentMonth)
				{
					return false;
					
				}
				else if (year == currentYear && month ==currentMonth && day> currentDate)
				{
								return false;
								
				}

				if(!ExtendedDateVal(day,month,year))
				{
					return false;
				}
				
			}
			else
			{
	
				day = strDate.substring(0,2);
				month = strDate.substring(2,4);
				year = strDate.substring(4,8);
	
				if(!ExtendedDateVal(day,month,year))
				{
					return false;
				}
			}
			return true;
		} 




		function ExtendedDateVal(day,month,year)
		{
			if(isNaN(day) || isNaN(month) || isNaN(year))
			{
				return false;
			}	
			if(year.length == 0 || month.length == 0 || day.length==0)
			{
				return false;
			}
			if(year.length < 4 || month.length < 2 || day.length < 2)
			{
				return false;
			}
		
			if(day < 1)
			{
				return false;
			}
	
			switch(month)
			{
				case "01": case "03": case "05": case "07": case "08": case "10": case "12":
	
				if(day > 31)
				{
					return false;
					break;
				}
				else
				{
					return true;
					break;
				}
	
				case "04": case "06": case "09": case "11":
	
				if(day > 30)
				{
					return false;
					break;
				}
				else
				{
					return true;
					break;
				}
	
				case "02":
	
				if (year % 4 == 0)
				{
					if (year % 400 == 0)
					{
						// is a leap year
						if(day > 29)
						{
							return false;
							break;
						}  
						else
						{
							return true;
							break;
						}    
					}
					else if (year % 100 == 0)
					{
						//not a leap year
						if(day > 28)
						{
							return false;
							break;
						}	  
					}
					else
					{
						//is a leap year
						if(day > 29)
						{
							return false;
							break;
						}
						else
						{
							return true;
							break;
						}    
					}
				}
				else
				{
					//not a leap year
					if(day > 28)
					{
						return false;
						break;
					}
					else
					{
						return true;
						break;
					}	  
				}
	
				default:
				return false;
				break;
	
			}
	
		}


