function checkEmail()
{
	var yourEmail = document.emailForm.yourEmail.value;
	var friendEmail = document.emailForm.friendEmail.value;
	if(yourEmail=="")
	{
		alert("Please enter your Email address");
		return false;
	}
	else if(friendEmail=="")
	{
		alert("Please enter your friend's Email address");
		return false;
	}
	if(verifyEmail(yourEmail)&&verifyEmail(friendEmail))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function verifyEmail(emailStr)
{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		alert("Email address "+emailStr+" seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	
	for (i=0; i<user.length; i++) {
	if (user.charCodeAt(i)>127) {
		alert("The username in  "+emailStr+" contains invalid characters.");
		return false;
   	}
	}
	for (i=0; i<domain.length; i++) {
	if (domain.charCodeAt(i)>127) {
		alert("Ths domain name in  "+emailStr+" contains invalid characters.");
		return false;
   }
  }

	if (user.match(userPat)==null) {
		alert("The username in  "+emailStr+" doesn't seem to be valid.");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
		if (IPArray[i]>255) {
		alert("Destination IP in  "+emailStr+" is invalid!");
		return false;
   	}
}
return true;
}

var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("The domain name in  "+emailStr+" does not seem to be valid.");
return false;
   }
}

if (checkTLD && domArr[domArr.length-1].length!=2 &&
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert( emailStr+"  must end in a well-known domain or two letter " + "country.");
return false;
}

if (len<2) {
alert( emailStr+"  is missing a hostname!");
return false;
}

return true;
}


function showSuccess(success)
{
	if(success)
	{
		alert("An email has been sent to your friend");
	}
	else
	{
		alert("There was an error in sending the email to your friend");
	}
}

function checkForm()
{
	var count=0;
	count = parseInt(document.theForm.numberAdults.value) + parseInt(document.theForm.numberChildren.value) + parseInt(document.theForm.numberInfants.value);
	var childCount=0;
	childCount = parseInt(document.theForm.numberChildren.value) + parseInt(document.theForm.numberInfants.value);
	if (count=="0")
	{
		alert('There must be at least one person an a policy');
		return false;
	}
	if (parseInt(count)>8)
	{
		alert('Group cannot be bigger than eight people');
		return false;
	}
	if (!(count=="1")&&document.theForm.groupType.value=="Individual")
	{
		alert('There can only be one person on an individual policy');
		return false;
	}
	if (!(document.theForm.numberAdults.value=="2")&&document.theForm.groupType.value=="Couple")
	{
		alert('There must be two adults on a couple policy');
		return false;
	}
	if (!(count=="2")&&document.theForm.groupType.value=="Couple")
	{
		alert('There can only be two people on a couple policy');
		return false;
	}
	if (document.theForm.numberAdults.value=="0"&&document.theForm.groupType.value=="Family")
	{
		alert('There must be at least one adult on a family policy');
		return false;
	}
	if (parseInt(document.theForm.numberAdults.value)>2&&document.theForm.groupType.value=="Family")
	{
		alert('There can only be two adults on a family policy');
		return false;
	}
	if (childCount=="0"&&document.theForm.groupType.value=="Family")
	{
		alert('There must be at least one child on a family policy');
		return false;
	}
	if (parseInt(childCount)>4)
	{
		alert('There cannot be more than four children on a policy');
		return false;
	}
	if (parseInt(count)<2&&document.theForm.groupType.value=="Group")
	{
		alert('There must be at least two people on a group policy');
		return false;
	}
	var startDate;
	var endDate;
	startDate = document.theForm.startDate.value;
	var policy=getPolicyType();
	if(policy=="single")
	{
		endDate = document.theForm.endDate.value;
	}
	if(!checkDate(startDate,"start date"))
	{
		return false;
	}
	if(policy=="single"&&!checkDate(endDate,"end date"))
	{
		return false;
	}
	if(policy=="single"&&!checkDifference(startDate,endDate))
	{
		return false;
	}
	return true;
}

function getPolicyType()
{
	for (var i=0; i < document.theForm.policyType.length; i++)
    {
   		if (document.theForm.policyType[i].checked)
      	{
      		return document.theForm.policyType[i].value;
      	}
   	}
}

function checkDate(date,variable)
{
	var validYears = [2005,2006,2007,2008,2009,2010];
	var validMonths = [1,2,3,4,5,6,7,8,9,10,11,12];
	var format=/(^\d{1,2}\/\d{1,2}\/\d{2}$)|(^\d{1,2}\/\d{1,2}\/\d{4}$)/;
	if(!format.test(date))
	{
		alert('Please enter ' + variable + ' in format dd/mm/yyyy');
		return false;
	}
	var dateArray = createArray(date);
	var found=false;
	for (var validYear in validYears)
	{
		if(dateArray[2]==validYears[validYear])
		{
			found=true;
			break;
		}
	}
	if(!found)
	{
		alert('The year in ' + variable + ' is outside valid range 2005-2010');
		return false;
	}
	found=false;
	for (var validMonth in validMonths)
	{
		if(dateArray[1]==validMonths[validMonth])
		{
			found=true;
			break;
		}
	}
	if(!found)
	{
		alert('The month in ' + variable + ' is outside valid range 01-12');
		return false;
	}
	if(dateArray[1]==2&&dateArray[2]==2008)
	{
		if(dateArray[0]<1||dateArray[0]>29)
		{
			alert('The date in ' + variable + ' must be between 1 and 29');
			return false;
		}
	}
	else if(dateArray[1]==2)
	{
		if(dateArray[0]<1||dateArray[0]>28)
		{
			alert('The date in ' + variable + ' must be between 1 and 28');
			return false;
		}
	}
	else if(dateArray[1]==4||dateArray[1]==6||dateArray[1]==9||dateArray[1]==11)
	{
		if(dateArray[0]<1||dateArray[0]>30)
		{
			alert('The date in ' + variable + ' must be between 1 and 30');
			return false;
		}
	}
	else
	{
		if(dateArray[0]<1||dateArray[0]>31)
		{
			alert('The date in ' + variable + ' must be between 1 and 31');
		}
	}
	return true;
}

function createArray(date)
{
	var dateArray=date.split('/');
	var year="";
	if(dateArray[2].length==2)
	{
		year="20" + dateArray[2];
	}
	else
	{
		year=dateArray[2];
	}
	dateArray[2]=year;
	return dateArray;
}

function checkDifference(startDate,endDate)
{
	var startDateArray=createArray(startDate);
	var endDateArray=createArray(endDate);
	var startDateObject = new Date(startDateArray[2],startDateArray[1]-1,startDateArray[0]);
	var endDateObject = new Date(endDateArray[2],endDateArray[1]-1,endDateArray[0]);
	var difference=0;
	difference = Date.parse(endDateObject) - Date.parse(startDateObject);
	if(difference<=0)
	{
		alert('End date must be after start date');
		return false;
	}
	if(difference>15724800000)
	{
		alert('Trip must be less than 6 months long')
		return false;
	}
	var today;
	today = new Date();
	var todayNoTime = new Date(today.getFullYear(),today.getMonth(),today.getDate());
	difference = Date.parse(startDateObject) - Date.parse(todayNoTime);
	if (difference<0)
	{
		alert('Start date must be today or later');
		return false;
	}
	return true;
}

function print_today(dateType,text)
{
	var today = new Date();
	var policy = getPolicyType();
	if(!(policy=="annual"&&dateType=="endDate"))
	{
		document.write("<td width='40%' align='left'><b>" + text + "</b></td>");
        document.write("<td width='60%'>");
		document.write("<input type='text' name='"+ dateType + "' size='15' maxlength='10' value='" + today.getDate() + "/" + (parseInt(today.getMonth()) + 1) + "/" + today.getFullYear() + "'>");
		document.write(' <a href="javascript:show_calendar(');
		document.write("'theForm." + dateType +"');");
		document.write('" onmouseover="window.status=');
		document.write("'Date Picker';return true;");
		document.write('" onmouseout="window.status=');
		document.write("'';return true;");
		document.write('"><img src="pics/calendar.gif" width="18" height="13" border="0"></a></td>');
	}
	else
	{
		document.write("<td></td><td></td>");
	}
}

function showEndDate()
{
	var x=document.getElementById('endDateTable').rows;
	var y=x[0].cells;
	var today = new Date();
	y[0].innerHTML="<b>End Date :</b>";
	var dateBox = "<input type='text' name='endDate' size='15' maxlength='10' value='" + today.getDate() + "/" + (parseInt(today.getMonth()) + 1) + "/" + today.getFullYear() + "'>";
	dateBox = dateBox + ' <a href="javascript:show_calendar(';
	dateBox = dateBox + "'theForm.endDate');";
	dateBox = dateBox + '" onmouseover="window.status=';
	dateBox = dateBox + "'Date Picker';return true;";
	dateBox = dateBox + '" onmouseout="window.status=';
	dateBox = dateBox + "'';return true;";
	dateBox = dateBox + '"><img src="pics/calendar.gif" width="18" height="13" border="0"></a>';

	y[1].innerHTML= dateBox;
}

function removeEndDate()
{
	var x=document.getElementById('endDateTable').rows;
	var y=x[0].cells;
	y[0].innerHTML="";
	y[1].innerHTML="";
}
