// JavaScript Document

// DHTML date validation script for dd/mm/yyyy.)
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1890;
var maxYear=2007;

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++)
		{   
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}

function daysInFebruary (year)
	{
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
function DaysArray(n) 
	{
	for (var i = 1; i <= n; i++) 
		{
			this[i] = 31;
			if (i==4 || i==6 || i==9 || i==11)
				{
				this[i] = 30;
				}
			if (i==2) 
				{
				this[i] = 29;
				}
		} 
		return this;
	}

function isDate(dtStr)
	{
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strDay=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1)
		{
		strDay=strDay.substring(1);
		}
	if (strMonth.charAt(0)=="0" && strMonth.length>1)
		{
		strMonth=strMonth.substring(1);
		}
	for (var i = 1; i <= 3; i++) 
		{
		if (strYr.charAt(0)=="0" && strYr.length>1)
		strYr=strYr.substring(1);
		}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1)
		{
		alert("The date format should be : dd/mm/yyyy .");
		return false;
		}
	if (strMonth.length<1 || month<1 || month>12)
		{
		alert("Please enter a valid month.");
		return false;
		}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
		{
		alert("Please enter a valid day.");
		return false;
		}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
		{
		alert("Please enter a valid 4 digit year between " + minYear + " and " + maxYear + ".");
		return false;
		}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
		{
		alert("Please enter a valid date in a DD/MM/YYYY format i.e. 01/09/1964 .");
		return false;
		}
	return true;
	}

//Dotmailer validation code modified for custom data fields
function validate_signup(frm) 
	{
	var isError = false;
	var emailAddress = frm.Email.value;
	var FirstName = frm.FirstName.value;
	var LastName = frm.Surname.value;
	var Gender = frm.Data1.value;
	var DOB = frm.Data2.value;
	var Occup = frm.Data3.value;
	var Pati = frm.Data4.value;
	var RefSource = frm.Data5.value;
	
	if (emailAddress == "" || emailAddress.indexOf("@") == -1) 
		{
		alert("Please enter your E-mail address.");
		isError = true;
		document.getElementById("Email").focus();
		return false;
		}
	if (FirstName == "") 
		{
		alert("Please enter your First Name.");
		isError = true;
		document.getElementById("FirstName").focus();
		return false;
		}
	if (LastName == "") 
		{
		alert("Please enter your Last Name.");
		isError = true;
		document.getElementById("Surname").focus();
		return false;
		}
	if (Gender == "" || Gender == "Please Select...") 
		{
		alert("Please enter your Gender.");
		isError = true;
		document.getElementById("Data1").focus();
		return false;
		}
	if (isDate(DOB) == false)
		{
		isError = true;
		document.getElementById("Data2").focus();
		return false;
		}
	if (Occup == "") 
		{
		alert("Please enter your Occupation.");
		isError = true;
		document.getElementById("Data3").focus();
		return false;
		}
	if (Pati == "" || Pati == "Please Select...") 
		{
		alert("Please tell us if you are already a Soothe Clinic patient.");
		isError = true;
		document.getElementById("Data4").focus();
		return false;
		}
	if (RefSource == "" || RefSource == "Please Select…" || RefSource == "Please Select..." || document.getElementById("Data5").selectedIndex == "0")
		{
		alert("Please tell us where you heard about Soothe Clinic?");
		isError = true;
		document.getElementById("Data5").focus();
		return false;
		}
	return !isError;
	}