//Output multiple error messages in respect of lease information
function ValidatePrimaryForm()
{
	
	var valid = true;
	var message = "";
	
	if ( !checkOriginalLease() )
	{
		document.getElementById('erroriginalLease').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message +'Please enter the type of lease at start date of the lease\n\n';
	}
	else {
		document.getElementById('erroriginalLease').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";
	}

	if ( !checkNewLease() )
	{
		document.getElementById('errnewLease').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message +'Please enter the type of lease that will apply when the new rent is payable\n\n';
	}
	else {
		document.getElementById('errnewLease').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";
	}

	if ( !validateDateField('startDateTextBox') )
	{
		document.getElementById('errstartDateTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'Please enter the date the lease was initially granted in the format dd/mm/yyyy\n\n';
	}
	else  {
			document.getElementById('errstartDateTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
		  }
	
	if ( !validateDateField('endLeaseDateTextBox') )
	{
		document.getElementById('errendLeaseDateTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'Please enter the date the lease is due to end in the format dd/mm/yyyy\n\n';
	}
	else  {
			document.getElementById('errendLeaseDateTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
		  }
	if ( !validateDateField('newRentPayableTextBox') )
	{
		document.getElementById('errnewRentPayableTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'Please enter the date the rent increase becomes payable in the format dd/mm/yyyy\n\n';
	}
	else  {
			document.getElementById('errnewRentPayableTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
		  }
		  
	if ( !validateMonetaryField('highestRentTextBox', 0) )
	{
		document.getElementById('errhighestRentTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'Highest 12 months consecutive rent in the first five years of the term should be zero or greater\n\n';
	}
	else  {
			document.getElementById('errhighestRentTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
		  }
	if ( !validateMonetaryField('originalNPV', 1) )
	{
		document.getElementById('erroriginalNPV').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'NPV calculated when the lease was originally granted should be £1 or greater\n\n';
	}
	else  {
			document.getElementById('erroriginalNPV').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
		  }
	if ( !validateMonetaryField('originalTax', 0) )
	{
		document.getElementById('erroriginalTax').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'The amount of SDLT paid, if any, should be zero or greater\n\n';
	}
	else  {
			document.getElementById('erroriginalTax').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
		  }
	if ( !validateMonetaryField('newRentTextBox', 0) )
	{
		document.getElementById('errnewRentTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
		message = message + 'New annual rent payable should be zero or greater\n\n';
	}
	else  {
		document.getElementById('errnewRentTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";   
	  }
	  	
	if (message.length > 0) {
			document.getElementById('results').innerHTML = "";				
					
		if (document.getElementById("screenReader").checked){
		alert("Please use the notes below to correct these entries:\n\n" + message);
		return false;
		}
		else {
			document.getElementById('results').innerHTML = "";
			message = convertToHTML(message);
			var outStr = "<div class='error'><div class='topwin'><a href=\"javascript:clearErr('results');\"><img class='imgError'  src='../toolsimages/close1.gif' alt='' align='right' height='21' width='21'></a></div><div class='errP'><p><strong>Please use the notes below to correct the entries marked<span><img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'></span></strong></p><p>" + message + "</p><p align='center'><input type='button' name='CloseIt' id='closeIt' value='&nbsp;&nbsp;Close&nbsp;&nbsp;' onClick='clearErr()'></p></div></div>";
				outDiv = document.getElementById('results');
				outDiv.innerHTML = outStr;
				
			return false;			
		} 		
	}	  
	if (valid) {
	return checkDates(); // Call checkNPV function
	}		
	else
	{
		return false;
	}
}

function checkOriginalLease() { //1

// Select Threshold amount based upon if Residential selected check Start Date else Non Residential or Mixed Use values
for(i=0; i<document.frmPrimaryInformation.originalLease.length; i++) {
	if(document.frmPrimaryInformation.originalLease[i].checked) {	
		if(document.frmPrimaryInformation.originalLease[0].checked) {
		leaseValue = "";
		var temp = document.frmPrimaryInformation.startDateTextBox.value; // Start Date of original lease
		// Create mm/dd/yyyy date format for Start Date variable aDate
		dd = temp.substring(0,2);
		mm = temp.substring(3,5);
		yy = temp.substring(6,10);
		var aDate = (mm + "/" + dd + "/" + yy);
		var leaseDate = new Date(aDate);
		var xLeaseDate1 = new Date("03/16/2005");
		var xLeaseDate2 = new Date("03/17/2005");
		var xLeaseDate3 = new Date("03/22/2006");
		var xLeaseDate4 = new Date("03/23/2006");
		var xLeaseDate5 = new Date("12/01/2003");
		if(leaseDate >= xLeaseDate5 && leaseDate <= xLeaseDate1) {leaseValue = "60000.00"; document.frmPrimaryInformation.lease.value = leaseValue;}
		else if(leaseDate >= xLeaseDate2 && leaseDate <= xLeaseDate3) {leaseValue = "120000.00";	document.frmPrimaryInformation.lease.value = leaseValue;}
		else {leaseValue = "125000.00";	document.frmPrimaryInformation.lease.value = leaseValue;}
			}
		
	else {document.frmPrimaryInformation.lease.value = document.frmPrimaryInformation.originalLease[i].value;}
		}
	}
		// Confirm Original Lease Type selected
	var originalLease = 0;
	for(i=0; i<document.frmPrimaryInformation.originalLease.length; i++) { 
			if(document.frmPrimaryInformation.originalLease[i].checked) {
				originalLease = document.frmPrimaryInformation.lease.value;
			}
		}
		
			if(originalLease <= 0) {  
					return false;			
				 }  
			else { 
					return true;
				 }  
}

function checkNewLease() {
	// Confirm New Lease Type selected
	var newLease = 0;
	for(i=0; i<document.frmPrimaryInformation.newLease.length; i++) {
			if(document.frmPrimaryInformation.newLease[i].checked){
				newLease = document.frmPrimaryInformation.newLease[i].value;
			}
		}
		
			if(newLease <= 0) {				
					return false;			
				 }
			else {
					return true;
				 }
}

function convertToHTML(message){
      message = message.replace(/\n/g,"<br>") // changes all occurences of new line with <br>
      return message;
}


function trimSpaces(field) {
 return field.split(' ').join('');
}


// Clear the results messages
function clearResults(results) {
		document.getElementById('results').innerHTML = "";
}

// Clear the error messages
function clearErr(err) {
		document.getElementById('results').innerHTML = "";
}

function checkDates() {
	var valid = true;
	var message = "";
	var temp = document.frmPrimaryInformation.startDateTextBox.value; // Start Date of original lease
	var tempL = document.frmPrimaryInformation.endLeaseDateTextBox.value; // End Date of original lease
	var tempE = document.frmPrimaryInformation.newRentPayableTextBox.value; // Date New Rent Payable
	var highRent = document.frmPrimaryInformation.highestRentTextBox.value; // Highest Rent paid 
	var newRent = document.frmPrimaryInformation.newRentTextBox.value; // The New Rent payable
	var originalLease = 0;
	var newLease = 0;

	// Create mm/dd/yyyy date format for Start Date variable aDate
	dd = temp.substring(0,2);
	mm = temp.substring(3,5);
	yy = temp.substring(6,10);
	var aDate = (mm + "/" + dd + "/" + yy);

	// Create mm/dd/yyyy date format for End Lease Date variable cDate
	dd2 = tempL.substring(0,2);
	mm2 = tempL.substring(3,5);
	yy2 = tempL.substring(6,10);
	var cDate = (mm2 + "/" + dd2 + "/" + yy2);
	if (!leapYear(yy2)) document.frmPrimaryInformation.year.value = 0;
	else document.frmPrimaryInformation.year.value = 1;
		
	// Create mm/dd/yyyy date format for New Rent Payable Date variable bDate
	dd1 = tempE.substring(0,2);
	mm1 = tempE.substring(3,5);
	yy1 = tempE.substring(6,10);
	var bDate = (mm1 + "/" + dd1 + "/" + yy1);

	var sDate = new Date(aDate);
	var xDate = new Date("12/01/2003"); // mm/dd/yyyy
	if (sDate < xDate) {
	message = message + "Date the lease was initially granted cannot be before 1 December 2003\n\n"
	document.getElementById('errstartDateTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
	}
	else {document.getElementById('errstartDateTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";
	}
	
	//Check that New Rent Payable Date is not prior to Start Date or later than End date
	var eDate = new Date(bDate);
	var lDate = new Date(cDate);
	if ((eDate < sDate)|| (eDate > lDate)) {
	message = message + "Date new rent payable cannot be before start date of lease or after end date of the lease\n\n";
	document.getElementById('errnewRentPayableTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
	}
	else {document.getElementById('errnewRentPayableTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";
	}

	//Check that End Lease Date is not prior to Start Date
	var lDate = new Date(cDate);
	if (lDate < sDate) {
	message = message + "End date of lease cannot be before start date of lease\n\n"
	document.getElementById('errendLeaseDateTextBox').innerHTML = "<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'>";
	}
	else {document.getElementById('errendLeaseDateTextBox').innerHTML = "<img src='../toolsimages/tick.gif' alt='valid' height='16' width='18'>";
	}
	
	if (message.length > 0) {
			document.getElementById('results').innerHTML = "";				
					
		if (document.getElementById("screenReader").checked){
				alert("Please use the notes below to correct these entries:\n\n" + message);
				return false;
			 }
		else {
			document.getElementById('results').innerHTML = "";
			message = convertToHTML(message);
			var outStr = "<div class='error'><div class='topwin'><a href=\"javascript:clearErr('results');\"><img class='imgError'  src='../toolsimages/close1.gif' alt='' align='right' height='21' width='21'></a></div><div class='errP'><p><strong>Please use the notes below to correct the entries marked<img src='../toolsimages/cross.gif' alt='not valid' height='16' width='18'></span></strong></p><p>" + message + "</p><p align='center'><input type='button' name='CloseIt' id='closeIt' value='&nbsp;&nbsp;Close&nbsp;&nbsp;' onClick='clearErr()'></p></div></div>";
				outDiv = document.getElementById('results');
				outDiv.innerHTML = outStr;
				
			return false;			
		} 		
	}
	document.frmPrimaryInformation.submit();
}

function leapYear(yy2) {
return (((yy2 % 4 == 0) && (yy2 % 100 != 0)) || (yy2 % 400 == 0)) ? 1 : 0;
}

function ClearPrimaryPage() 
	{
		unCheckButton();
		if (document.frmPrimaryInformation.screenReader.checked == true)document.frmPrimaryInformation.screenReader.checked = false;
		document.getElementById('erroriginalLease').innerHTML = "";
		document.frmPrimaryInformation.startDateTextBox.value = "";
		document.getElementById('errstartDateTextBox').innerHTML = "";
		document.frmPrimaryInformation.endLeaseDateTextBox.value = "";
		document.getElementById('errendLeaseDateTextBox').innerHTML = "";
		document.frmPrimaryInformation.newRentPayableTextBox.value = "";		
		document.getElementById('errnewRentPayableTextBox').innerHTML = "";
		document.frmPrimaryInformation.highestRentTextBox.value = "0.00";
		document.getElementById('errhighestRentTextBox').innerHTML = "";
		document.frmPrimaryInformation.newRentTextBox.value = "0.00";
		document.getElementById('errnewRentTextBox').innerHTML = "";
		document.frmPrimaryInformation.originalNPV.value = "";
		document.getElementById('erroriginalNPV').innerHTML = "";
		document.frmPrimaryInformation.originalTax.value = "0.00";
		document.getElementById('erroriginalTax').innerHTML = "";
		document.getElementById('errnewLease').innerHTML = "";		
		document.getElementById('results').innerHTML = "";
				
		return false;
	}

function unCheckButton() {
	for(i=0; i<document.frmPrimaryInformation.originalLease.length; i++) {
			if(document.frmPrimaryInformation.originalLease[i].checked == true)document.frmPrimaryInformation.originalLease[i].checked = false; 	}
		{
	for(i=0; i<document.frmPrimaryInformation.newLease.length; i++) {
			if(document.frmPrimaryInformation.newLease[i].checked == true)document.frmPrimaryInformation.newLease[i].checked = false;
			}
		}
	}

function validateDateField(TextBoxId)
{
	var message = "";
	var leapCount = 0;
	var valid = true;
	var textBox = document.getElementById(TextBoxId);
	var dateValue = textBox.value;

	var checkstr = "0123456789";
	var tempDate = "";
	var day;
	var month;
	var year;
	var leap = 0;
	//var regEx = /^\d{1,2}[\/]\d{1,2}[\/]\d{4}$/;
	var regEx = /^\d{2}[\/]\d{2}[\/]\d{4}$/;
	if( !regEx.test(dateValue) )
	{
		valid = false;
	}
	else
	{
		/* it's in the format nn/nn/nnnn so now make sure it's a valid date */
		day = dateValue.substr(0,2);
		month = dateValue.substr(3,2);
		year = dateValue.substr(6,4);
		if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0))
		{
			leap = 1;
		}

		if (year == 0)
		{
			/* year is wrong if year = 0000 */
			valid = false;
		}
		else if ((month < 1) || (month > 12))
		{
			/* month must be in range 1 - 12 */
			valid = false;
		}
		else if ( (day < 1) || (day > 31) )
		{
			/* day must be in range 1 - 31 */
			valid = false;
		}
		else if ((month == 2) && (leap == 1) && (day > 29))
		{
			/* day must be < 29 for Feb in leap year */
			valid = false;
		}
		else if ((month == 2) && (leap != 1) && (day > 28))
		{
			/* day must be < 28 for Feb in non leap year */
			valid = false;
		}
		else if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12")))
		{
			/* day must be < 31 for Jan, Mar, May, Jul, Aug, Oct, Dec */
			valid = false;
		}
		else if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11")))
		{
			/* day must be < 30 for Apr, Jun, Sep, Nov */
			valid = false;
		}
	}

	if(	!valid	)
		{
			return false;			
		} 
	else
		{
			return true;
		}
}

function validateMonetaryField(TextBoxId, minVal)
{
	var message = "";
	var valid = true;
	var textBox = document.getElementById(TextBoxId);
	var value = textBox.value;

	if (value != "")
	{
		//regEx = /(^([\d]{1,9}|(\d+))([\.]{1}[\d]{2})?$)/;
		regEx = /(^(([\d]{1,3}([\,]{1}[\d]{3})*)|(\d+))([\.]{1}[\d]{2})?$)/;
		valid = regEx.test(value);

		if ( valid )
		{
			if(textBox.value < minVal * 1)
			{
				valid = false;
			}
		}
	}
	
	if (value == "")
		{
			valid = false;
		}

	if(	!valid	)
		{				
			return false;
		}
	else
		{
			return true;
		} 
}
