strResponse1 = "You cannot charge interest as the oldest invoice date predates 1st November 1998.  There was no legislation in place at that time.";
strResponse2 = "You cannot charge interest as the debt is greater than six years old.";

// get Miliseconds
function gm(InDate){ 
//return the number of milliseconds in a given date
return Date.UTC(InDate.getFullYear(), 
		InDate.getMonth(), 
		InDate.getDate(), 
		InDate.getHours(),
		InDate.getMinutes(),
		InDate.getSeconds());
}

// REFERENCE RATES FOR CONTRACT FORMED AFTER 6/8/02
// if date payment became overdue has a new rate as of 01/07/2003 enter 01/06/2003
var e1 = gm(new Date(1992,04,05));
var e2 = gm(new Date(1992,08,22));
var e3 = gm(new Date(1992,09,16));
var e4 = gm(new Date(1992,10,13));
var e5 = gm(new Date(1993,00,26));
var e6 = gm(new Date(1993,10,23));
var e7 = gm(new Date(1994,01,08));
var e8 = gm(new Date(1994,10,13));
var e9 = gm(new Date(1994,11,07));
var e10 = gm(new Date(1995,01,02));
var e11 = gm(new Date(1995,11,13));
var e12 = gm(new Date(1996,00,19));
var e13 = gm(new Date(1996,02,08));
var e14 = gm(new Date(1996,06,06));
var e15 = gm(new Date(1996,09,30));
var e16 = gm(new Date(1997,04,06));
var e17 = gm(new Date(1997,06,06));
var e18 = gm(new Date(1997,07,10));
var e19 = gm(new Date(1997,07,07));
var e20 = gm(new Date(1997,10,06));
var e21 = gm(new Date(1998,00,04));
var e22 = gm(new Date(1998,09,08));
var e23 = gm(new Date(1998,10,05));
var e24 = gm(new Date(1998,11,10));
var e25 = gm(new Date(1999,00,07));
var e26 = gm(new Date(1999,01,04));
var e27 = gm(new Date(1999,03,08));
var e28 = gm(new Date(1999,06,10));
var e29 = gm(new Date(1999,08,08));
var e30 = gm(new Date(1999,10,04));
var e31 = gm(new Date(2000,00,13));
var e32 = gm(new Date(2000,01,10));
var e33 = gm(new Date(2001,01,08));
var e34 = gm(new Date(2001,03,05));
var e35 = gm(new Date(2001,04,10));
var e36 = gm(new Date(2001,07,02));
var e37 = gm(new Date(2001,08,18));
var e38 = gm(new Date(2001,09,04));
var e39 = gm(new Date(2001,10,08));//08/11/01 - 12%
var e40 = gm(new Date(2003,06,01));//01/07/03 - 11.75%
var e41 = gm(new Date(2004,06,01));//01/07/04 - 12.5%
var e42 = gm(new Date(2005,00,01));//01/01/05 - 12.75%
var e43 = gm(new Date(2006,00,01));//01/01/06 - 12.5%
var e44 = gm(new Date(2007,00,01));//01/01/07 - 13%
var e45 = gm(new Date(2007,06,01));//01/07/07 - 13.5%
var e46 = gm(new Date(2008,06,01));//30/06/08 - 13%
var e47 = gm(new Date(2009,00,01));//01/01/09 - 2% + 8% = 10%
var e48 = gm(new Date(2009,06,01));//01/07/09 - 0.5% + 8% = 8.5%
var e49 = gm(new Date(2010,00,01));//01/01/10 - 0.5% + 8% = 8.5%

// instructions 1) add date above 2) Add interest rate variable e.g. e48 3) Add interest rate 

InterestDates = new Array( e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49);


// These are Bank of England base rates until 6/8/02 then they become reference rates
InterestRates = new Array( 9.87, 8.87, 7.87, 6.87, 5.87, 5.37, 5.12, 5.62, 6.12, 6.62, 6.37, 6.12, 5.93, 5.68, 5.93, 6.25, 6.50, 6.75, 7.00, 7.25, 7.50, 7.25, 6.75, 6.25, 6.00, 5.50, 5.25, 5.00, 5.25, 5.50, 5.75, 6.00, 5.75, 5.50, 5.25, 5.00, 4.75, 4.50, 4.00, 3.75, 4.50, 4.75, 4.50, 5.00, 5.50, 5.00, 2.00, 0.5);

//BANK OF ENGLAND RATES FOR CONTRACT FORMED BETWEEN 31/10/98 AND 6/8/02
// if date payment became overdue has a new rate as of 01/07/2003 enter 01/06/2003; Date is yyyy, mm, dd
//Latest rate change dates are 6/5/04    :  10/06/04    :  05/08/04    : 04/08/05  : 04/08/06
var d1 = gm(new Date(1992,04,05))
var d2 = gm(new Date(1992,08,22))
var d3 = gm(new Date(1992,09,16))
var d4 = gm(new Date(1992,10,13))
var d5 = gm(new Date(1993,00,26))
var d6 = gm(new Date(1993,10,23))
var d7 = gm(new Date(1994,01,08))
var d8 = gm(new Date(1994,10,13))
var d9 = gm(new Date(1994,11,07))
var d10 = gm(new Date(1995,01,02))
var d11 = gm(new Date(1995,11,13))
var d12 = gm(new Date(1996,00,19))
var d13 = gm(new Date(1996,02,08))
var d14 = gm(new Date(1996,06,06))
var d15 = gm(new Date(1996,09,30))
var d16 = gm(new Date(1997,04,06))
var d17 = gm(new Date(1997,05,06))
var d18 = gm(new Date(1997,06,10))
var d19 = gm(new Date(1997,07,07))
var d20 = gm(new Date(1997,10,06))
var d21 = gm(new Date(1998,05,04))
var d22 = gm(new Date(1998,09,08))
var d23 = gm(new Date(1998,10,05))
var d24 = gm(new Date(1998,11,10))
var d25 = gm(new Date(1999,00,07))
var d26 = gm(new Date(1999,01,04))
var d27 = gm(new Date(1999,03,08))
var d28 = gm(new Date(1999,05,10))
var d29 = gm(new Date(1999,08,08))
var d30 = gm(new Date(1999,10,04))
var d31 = gm(new Date(2000,00,13))
var d32 = gm(new Date(2000,01,10))
var d33 = gm(new Date(2001,01,08))
var d34 = gm(new Date(2001,03,05))
var d35 = gm(new Date(2001,04,10))
var d36 = gm(new Date(2001,07,02))
var d37 = gm(new Date(2001,08,18))
var d38 = gm(new Date(2001,09,04))
var d39 = gm(new Date(2001,10,07))
var d40 = gm(new Date(2003,01,06))
var d41 = gm(new Date(2003,06,10))
var d42 = gm(new Date(2003,10,06))
var d43 = gm(new Date(2004,01,05))
var d44 = gm(new Date(2004,04,06))
var d45 = gm(new Date(2004,05,10))
var d46 = gm(new Date(2004,07,05))
var d47 = gm(new Date(2005,07,04))
var d48 = gm(new Date(2006,07,04))

BOEInterestDates = new Array( d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31, d32, d33, d34, d35, d36, d37, d38, d39, d40, d41, d42, d43, d44, d45, d46, d47, d48);

// Bank of England base rates  
BOEInterestRates = new Array( 9.87, 8.87, 7.87, 6.87, 5.87, 5.37, 5.12, 5.62, 6.12, 6.62, 6.37, 6.12, 5.93, 5.68, 5.93, 6.25, 6.50, 6.75, 7.00, 7.25, 7.50, 7.25, 6.75, 6.25, 6.00, 5.50, 5.25, 5.00, 5.25, 5.50, 5.75, 6.00, 5.75, 5.50, 5.25, 5.00, 4.75, 4.50, 4.00, 3.75, 3.5, 3.75, 4.00, 4.25, 4.50, 4.75, 4.50, 4.75);
	
//get our constants handy...
dtmPhaseOne = new Date("October 31, 1998 23:59:59");
dtmPhaseTwo = new Date("October 31, 2000 23:59:59");
dtmPhaseThree = new Date("August 6, 2002 23:59:59");
today = new Date();

//get them as something we can compare...
P1secs = gm(dtmPhaseOne);
P2secs = gm(dtmPhaseTwo);
P3secs = gm(dtmPhaseThree);
todaysecs = gm(today);

var reason = "";

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function isValidDate (myDate,sep) {
// checks if date passed is in valid dd/mm/yyyy format
	if (myDate.length == 10) {
        if (myDate.substring(2,3) == sep && myDate.substring(5,6) == sep) {
        	var date  = myDate.substring(0,2);
          	var month = myDate.substring(3,5);
          	var year  = myDate.substring(6,10);
			var test = new Date(year,month-1,date);
          		if (year == y2k(test.getFullYear()) && (month-1 == test.getMonth()) && (date == test.getDate())) {
              		reason = "";
          		}else{
              		reason = "The date you have entered is invalid.  Please check and try again.";
          		}
		}else{
			reason = "Please use '/' as the date separator.";
      	}
	}else if (myDate.length > 10) {
		reason = "The date you have entered has too many characters.  Please check and try again.";
	}else{
		reason = "The date you have entered has too few characters.  Please check and try again.";			
	}
}

function nextNearest(value, number) {
	var ceil = Math.ceil(value);
	var remainder = value % number;
	if (remainder > 0){
  		IntegerOverTime = value - remainder + number;
	}else{
	IntegerOverTime = value;
	}
}
function CalcInterest( OverDueDate, InvoiceValue, PaymentMade, RateType){
//Returns a relevantly formatted string. 
var Found = false;
var OverSecs = gm(OverDueDate); 
var Value; 
var PaymentSecs = PaymentMade;
var Days = Math.floor((PaymentSecs - OverSecs)/(1000*60*60*24)); 
//the number of days over which we are making our calculation


nextNearest(Days, 1);
Days = IntegerOverTime;
if (RateType == 'boeRate') {
	// CALCULATE BASED ON BANK OF ENGLAND RATE
	//Search through the dates for the correct match:
	for(Index=0; Index < BOEInterestRates.length; Index++){
		if(BOEInterestDates[Index] > OverSecs){  
			//We need to deal with rounding
			Value = ((BOEInterestRates[Index-1] + 8) * InvoiceValue * Days) / 36500;
			Value = (Math.round(Value*100))/100;
			Value = (Value == Math.floor(Value)) ? Value + '.00' : (  (Value*10 == Math.floor(Value*10)) ? Value + '0' : Value);
			//return "You are entitled to charge £" + Value + " in interest";
			return Value;
		}
	}
    
	//We need to deal with rounding
	//This is for when the date is later than the last change of interest rate...
	Index = BOEInterestRates.length - 1;
	//return BOEInterestRates[Index];
	Value = ((BOEInterestRates[Index] + 8) * InvoiceValue * Days) / 36500;
	//return Value + "," + BOEInterestRates[Index];
   		Value = (Math.round(Value*100))/100;
   		Value = (Value == Math.floor(Value)) ? Value + '.00' : (  (Value*10 == Math.floor(Value*10)) ? Value + '0' : Value);
	//return "You are entitled to charge £" + Value + " in interest";	
	return Value;
}else{
	// CALCULATE BASED ON REFERENCE RATE
	//Search through the dates for the correct match:
	for(Index=0; Index < InterestRates.length; Index++){
		if(InterestDates[Index] > OverSecs){		
			//We need to deal with rounding
			//return InterestRates[Index];
			Value = ((InterestRates[Index-1] + 8) * InvoiceValue * Days) / 36500;
//			Value = ((InterestRates[Index] + 8) * InvoiceValue * Days) / 36500;
			//return Value + "," + InterestRates[Index-1];
   				Value = (Math.round(Value*100))/100;
   				Value = (Value == Math.floor(Value)) ? Value + '.00' : (  (Value*10 == Math.floor(Value*10)) ? Value + '0' : Value);
			//return "You are entitled to charge £" + Value + " in interest";
			return Value;
		}
	}
	//We need to deal with rounding
	//This is for when the date is later than the last change of interest rate...

	Index = InterestRates.length - 1;
	//return InterestRates[Index];
	Value = ((InterestRates[Index] + 8) * InvoiceValue * Days) / 36500;
	//return Value + "," + InterestRates[Index];
   		Value = (Math.round(Value*100))/100;
   		Value = (Value == Math.floor(Value)) ? Value + '.00' : (  (Value*10 == Math.floor(Value*10)) ? Value + '0' : Value);
	//return "You are entitled to charge £" + Value + " in interest";	
	return Value;
	}
} 
function ParseDate( DateString ){
	// Gives us a Date object from a dd/mm/yyyy string.
	//We've specified the format, so let's assume that the numbers are in the right place...
	var re = new RegExp("^([^\/]*)\/([^\/]*)\/([^\/]*)$");


	newArray = DateString.match(re, "");
	return new Date(newArray[3], newArray[2]-1, newArray[1]); 
}	

//Our main switching function
function Calculate() {
	InvDateString = document.getElementById('o_in').value;
	OverDateString = document.getElementById('overdue').value;
	InvVal = document.getElementById('am').value;

	//Check not blank
	if((OverDateString=="") || (InvVal=="") || (InvDateString=="")) {
		alert("Please ensure that you have provided the date the oldest invoice was made, the date the payment became overdue and the value of the overdue payment.");
		return false;
	}

	//Check a number
	if(isNaN(InvVal)) {
		alert("Please ensure that you have not used letters or punctuation in fields specified as 'numbers only.'");
		return false;
	}


	//Date check
	isValidDate(OverDateString, "/")
	if(reason!=""){
		alert("Date payment became overdue: " + reason);
		return false;
	}

	var PaymentMade = new Date();
	var writemonth  = new String(PaymentMade.getMonth()+1)
		if (writemonth.length == '1'){
			writemonth = "0" + writemonth
		}
	var todaysdate = PaymentMade.getDate() + '/' + writemonth + '/' + PaymentMade.getFullYear()
	PaymentMade = todaysdate

	isValidDate(InvDateString, "/")
	if(reason!=""){
		alert("Date last invoice was made: " + reason);
		return false;
	}

	//Deal with our initial input...
	var ContractDate = ParseDate(InvDateString);
	var ContractSecs = gm(ContractDate);
	var OverDate = ParseDate(OverDateString);
	var OverSecs = gm(OverDate);
	var Payment = ParseDate(PaymentMade);
	var PaymentSecs = gm(Payment);
	if (ContractSecs > OverSecs) {
		alert("The payment overdue date precedes the oldest invoice date.  Please check your dates and try again.");
		return false;
	}
	if (ContractSecs > todaysecs) {
		alert("The last invoice date occurs in the future. Please check your dates and try again.");
		return false;
	}
	if (PaymentSecs > todaysecs) {
		alert("The date of payment occurs in the future. Please check your dates and try again.");
		return false;
	}	
	if (OverSecs > todaysecs) {
		alert("The date the payment became overdue occurs in the future.  Please check your dates and try again.");
		return false;
	}
	if (OverSecs > PaymentSecs) {
		alert("The payment is not overdue.  Please check your dates and try again.");
		return false;
	}
	//we're before phase one here
	if(ContractSecs < gm(dtmPhaseOne)){
		alert(strResponse1);
		return false;
	}

	//we're dealing with debt older than six years here...
	var ExpireDate = new Date();
	ExpireDate.setYear(ExpireDate.getFullYear() - 6);
	if(ContractSecs < gm(ExpireDate)){
		alert(strResponse2);
		return false;
	}
	
	//we're in phase one here 31/10/98 - 30/10/00
	if(ContractSecs > gm(dtmPhaseOne) && ContractSecs < gm(dtmPhaseTwo)) {

		var RateType = 'boeRate';
		Interest = CalcInterest( OverDate, InvVal, PaymentSecs, RateType);
		//return CalcInterest( OverDate, InvVal, PaymentSecs, RateType) +" under the Late Payment of Commercial Debts [Interest] Act 1998.";
	}
		
	//we're in phase two here 31/10/00 - 5/8/02
	if (ContractSecs > gm(dtmPhaseTwo) && ContractSecs < gm(dtmPhaseThree)) { 

		var RateType = 'boeRate';
		Interest = CalcInterest( OverDate, InvVal, PaymentSecs, RateType);
		//return CalcInterest( OverDate, InvVal, PaymentSecs, RateType) +" under the Late Payment of Commercial Debts [Interest] Act 1998. ";
	}

	//we're in phase three here after 6/8/02
	if (ContractSecs > gm(dtmPhaseThree)) {
    	var RateType = 'refRate';
		Interest = CalcInterest( OverDate, InvVal, PaymentSecs, RateType);
		//return CalcInterest( OverDate, InvVal, PaymentSecs, RateType) +" under the Late Payment of Commercial Debts [Interest] Act 1998 as amended and supplemented by the Late Payment of Commercial Debts Regulations 2002.";
	}

	if (ContractSecs > gm(dtmPhaseThree)) {
		if (InvVal < 1000) {
			comp = '40.00';
		}
		else if (InvVal < 10000) {
			comp = '70.00';
		}
		else {
			comp = '100.00';
		}
	}
	else {
		comp = '0.00';
	}

	var total = parseFloat(InvVal) + parseFloat(Interest) + parseFloat(comp);
	total = (Math.round(total*100))/100;
	total = (total == Math.floor(total)) ? total + '.00' : (  (total*10 == Math.floor(total*10)) ? total + '0' : total);

	document.getElementById('int').value = Interest;
	document.getElementById('lpc').value = comp;
	document.getElementById('total').value = total;

	setCourtFee('');

}


function swpCalc(which) {
	//var calc_text = (which=='stat') ? '&nbsp;&nbsp;&nbsp;<input type="button" name="calcbutt" value="Calculate Interest" onclick="Calculate();" ><br><b>This button will calculate the statutory interest & late payment compensation you are entitled to charge.  To charge contractual interest please <a href="#" onclick="swpCalc(\'cont\');">[click here]</a>.</b>' : '&nbsp;&nbsp;&nbsp;<input type="button" name="calcbutt" value="Calculate Interest" onclick="Calculate2();" ><br><b>This button will calculate the contractual interest you are entitled to charge.  To charge statutory interest please <a href="#" onclick="swpCalc(\'stat\');">[click here]</a>.</b>';

	if (which=='cont') {
		document.getElementById('box1').style.display='none';
		document.getElementById('box2').style.display='inline';
		
		document.getElementById('lpc').value='0.00';
		document.getElementById('int').value='0.00';
		document.getElementById('total').value='0.00';

		document.getElementById('am2').value=document.getElementById('am').value;
		document.getElementById('o_in2').value=document.getElementById('o_in').value;
		document.getElementById('overdue2').value=document.getElementById('overdue').value;
	}
	else {
		document.getElementById('box1').style.display='inline';
		document.getElementById('box2').style.display='none';

		document.getElementById('in_rate').value='0.00';
		document.getElementById('int2').value='0.00';
		document.getElementById('total2').value='0.00';

		document.getElementById('am').value=document.getElementById('am2').value;
		document.getElementById('o_in').value=document.getElementById('o_in2').value;
		document.getElementById('overdue').value=document.getElementById('overdue2').value;
	}

	document.getElementById('which').value=which;
	//chkIntComp(document.getElementById('int'));
	//document.getElementById('calc').innerHTML = calc_text;

}

function swpCalcStatic(which) {
	//var calc_text = (which=='stat') ? 'Our statutory interest calculator will calculate the statutory interest & late payment compensation you are entitled to charge.  Alternatively, if you have made a provision for charging interest on late payment in your contract with the debtor, then please select the Contractual Interest Calculator tab at the top of the page.' : 'If you have not made a provision for charging interest on late payment in your contract with the debtor, then please select the Statutory Interest Calculator tab at the top of the page.';

	if (which=='cont') {
		/*document.getElementById('lpc_row').style.display='none';
		document.getElementById('lpc').value='0.00';
		document.getElementById('inrate').style.display='inline';
		document.getElementById('srate').style.display='inline';
		document.getElementById('calcbutt').onclick=Calculate2;
		document.getElementById('pnote').style.display='none';

		document.getElementById('c_tab').style.fontWeight='700';
		document.getElementById('s_tab').style.fontWeight='400';

		document.getElementById('c_tab').style.backgroundColor='#ffffff';
		document.getElementById('s_tab').style.backgroundColor='#777777';
		
		document.getElementById('c_tab').style.borderBottom='#ffffff';
		document.getElementById('s_tab').style.borderBottom='#000000 2px solid';*/

		document.getElementById('box1').style.display='none';
		document.getElementById('box2').style.display='inline';
		
		document.getElementById('lpc').value='0.00';
		document.getElementById('int').value='0.00';
		document.getElementById('total').value='0.00';

		document.getElementById('am2').value=document.getElementById('am').value;
		document.getElementById('o_in2').value=document.getElementById('o_in').value;
		document.getElementById('overdue2').value=document.getElementById('overdue').value;


	}
	else {
		/*document.getElementById('lpc_row').style.display='inline';
		document.getElementById('inrate').style.display='none';
		document.getElementById('srate').style.display='none';
		document.getElementById('in_rate').value='0.00';
		document.getElementById('calcbutt').onclick=Calculate;
		document.getElementById('pnote').style.display='inline';

		document.getElementById('s_tab').style.fontWeight='700';
		document.getElementById('c_tab').style.fontWeight='400';

		document.getElementById('s_tab').style.backgroundColor='#ffffff';
		document.getElementById('c_tab').style.backgroundColor='#777777';
		
		document.getElementById('s_tab').style.borderBottom='#ffffff';
		document.getElementById('c_tab').style.borderBottom='#000000 2px solid';*/

		document.getElementById('box1').style.display='inline';
		document.getElementById('box2').style.display='none';

		document.getElementById('in_rate').value='0.00';
		document.getElementById('int2').value='0.00';
		document.getElementById('total2').value='0.00';

		document.getElementById('am').value=document.getElementById('am2').value;
		document.getElementById('o_in').value=document.getElementById('o_in2').value;
		document.getElementById('overdue').value=document.getElementById('overdue2').value;

	}

	//alert(document.getElementById('calcbutt').onClick);

	//document.getElementById('blurb').innerHTML = calc_text;

}

function Simple( Time, Rate, Val, SelectedRate ){
    if(SelectedRate=="daily"){
        var divisionRate = 365/365;
    }else if(SelectedRate=="weekly"){
        var divisionRate = 365/52;
    }else if(SelectedRate=="monthly"){
        var divisionRate = 365/12;
    }else{ // annual
        var divisionRate = 365;
    }
    
	return Time * (Rate/100) * Val / divisionRate;
}
	
var IntegerOverTime = "";	
var SelectedRate;

function Calculate2() {
	OverDateString = document.getElementById('overdue2').value;
	IntRate = document.getElementById('in_rate').value;
	InvVal = document.getElementById('am2').value;
	//for (i=0;i<document.all.s_rate.length;i++) {
   // 	if (document.all.s_rate[i].checked) {
  //  		SelectedRate = document.all.s_rate[i].value;
  //  	}
  //  }

	//if (document.getELementById('int_type_1').checked) {
	//	SelectedRate = document.getELementById('int_type_1').value;
	//}
	//if (document.getELementById('int_type_2').checked) {
	//	SelectedRate = document.getELementById('int_type_2').value;
	//}
//	if (document.getELementById('int_type_3').checked) {
	//	SelectedRate = document.getELementById('int_type_3').value;
	//}

	
	//Check not blank
	if((OverDateString=="") || (IntRate=="") || (InvVal=="")) {
		alert("Please ensure that you have provided the date that payment became overdue, the contractual interest rate and the value of the overdue payment.");
		return false;
	}

	var PaymentMade = new Date();
	var writemonth  = new String(PaymentMade.getMonth()+1)
	if (writemonth.length == '1'){
		writemonth = "0" + writemonth
	}
	var todaysdate = PaymentMade.getDate() + '/' + writemonth + '/' + PaymentMade.getFullYear()
	PaymentMade = todaysdate;
	var Payment = ParseDate(PaymentMade);
	var PaymentSecs = gm(Payment);
	today = new Date();
	todaysecs = gm(today);
	if (PaymentSecs > todaysecs) {
		alert("The date of payment occurs in the future. Please check your dates and try again.");
		return false;
	}	

	//Check a number
	if( (isNaN(IntRate)) || (isNaN(InvVal)) ) {
		alert("Please ensure that you have not used letters or punctuation in fields specified as 'numbers only.'");
		return false;
	}

	//Date check
	isValidDate(OverDateString, "/")
	if(reason!=""){
		alert(reason);
		return false;
	}

	var Amount; //for our result

	//deal with the input
	var OverDate = ParseDate( OverDateString );
	if(gm(OverDate)>PaymentSecs) {
		alert("The payment is not overdue so no interest is applicable");
		return false;
	}

	var OverTime = PaymentSecs - gm(OverDate); //in milliseconds
	OverTime = OverTime / (1000 * 60 * 60 * 24); //in days
	if(OverTime<0) {
		alert("The date payment became overdue is in the future. Please check your dates.");
		return false;
	}
	nextNearest(OverTime,1);
	OverTime = IntegerOverTime-1;

	//The important bit...
	Amount = Simple( OverTime, IntRate, InvVal, SelectedRate );

	//alert(OverTime+"\n"+IntRate+"\n"+InvVal+"\n"+SelectedRate+"\n"+Amount);

	//Deal with rounding...
	//return Amount;
	Amount = (Math.round(Amount*100))/100;
	Amount = (Amount == Math.floor(Amount)) ? Amount + '.00' : (  (Amount*10 == Math.floor(Amount*10)) ? Amount + '0' : Amount);

	var total = parseFloat(InvVal) + parseFloat(Amount);
	total = (Math.round(total*100))/100;
	total = (total == Math.floor(total)) ? total + '.00' : (  (total*10 == Math.floor(total*10)) ? total + '0' : total);
	
	document.getElementById('int2').value=Amount;
	document.getElementById('total2').value=total;

	setCourtFee('2');
}


function Calculate3() {
	OverDateString = document.getElementById('overdue3').value;
	IntRate = 8;
	InvVal = document.getElementById('am3').value;
	SelectedRate = 'annual';
	
	//Check not blank
	if((OverDateString=="") || (IntRate=="") || (InvVal=="")) {
		alert("Please ensure that you have provided the date that payment became overdue and the value of the overdue payment.");
		return false;
	}

	var PaymentMade = new Date();
	var writemonth  = new String(PaymentMade.getMonth()+1)
	if (writemonth.length == '1'){
		writemonth = "0" + writemonth
	}
	var todaysdate = PaymentMade.getDate() + '/' + writemonth + '/' + PaymentMade.getFullYear()
	PaymentMade = todaysdate;
	var Payment = ParseDate(PaymentMade);
	var PaymentSecs = gm(Payment);
	today = new Date();
	todaysecs = gm(today);
	if (PaymentSecs > todaysecs) {
		alert("The date of payment occurs in the future. Please check your dates and try again.");
		return false;
	}	

	//Check a number
	if( (isNaN(IntRate)) || (isNaN(InvVal)) ) {
		alert("Please ensure that you have not used letters or punctuation in fields specified as 'numbers only.'");
		return false;
	}

	//Date check
	isValidDate(OverDateString, "/")
	if(reason!=""){
		alert(reason);
		return false;
	}

	var Amount; //for our result

	//deal with the input
	var OverDate = ParseDate( OverDateString );
	if(gm(OverDate)>PaymentSecs) {
		alert("The payment is not overdue so no interest is applicable");
		return false;
	}

	var OverTime = PaymentSecs - gm(OverDate); //in milliseconds
	OverTime = OverTime / (1000 * 60 * 60 * 24); //in days
	if(OverTime<0) {
		alert("The date payment became overdue is in the future. Please check your dates.");
		return false;
	}
	nextNearest(OverTime,1);
	OverTime = IntegerOverTime-1;

	//The important bit...
	Amount = Simple( OverTime, IntRate, InvVal, SelectedRate );

	//alert(OverTime+"\n"+IntRate+"\n"+InvVal+"\n"+SelectedRate+"\n"+Amount);

	//Deal with rounding...
	//return Amount;
	Amount = (Math.round(Amount*100))/100;
	Amount = (Amount == Math.floor(Amount)) ? Amount + '.00' : (  (Amount*10 == Math.floor(Amount*10)) ? Amount + '0' : Amount);

	var total = parseFloat(InvVal) + parseFloat(Amount);
	total = (Math.round(total*100))/100;
	total = (total == Math.floor(total)) ? total + '.00' : (  (total*10 == Math.floor(total*10)) ? total + '0' : total);
	
	document.getElementById('int3').value=Amount;
	document.getElementById('total3').value=total;

	setCourtFee('3');
}


var claimTotal = new Array( 0, 300, 500, 1000, 1500, 3000, 5000, 15000, 50000, 100000, 150000, 200000, 250000, 300000 );
var courtFees = new Array( 30, 45, 65, 75, 85, 108, 225, 360, 630, 810, 990, 1170, 1350, 1530 );

function setCourtFee(which) {
	if (document.getElementById('total'+which) && document.getElementById('court_fee'+which)) {
		var total = document.getElementById('total'+which).value;
		var courtFee = '0.00'
		for (var i=(claimTotal.length-1); i >= 0; i--) {
			if (total > claimTotal[i]) {
				courtFee = courtFees[i] + '.00';
				break;
			}
		}
		document.getElementById('court_fee'+which).value = courtFee;
	}
}


function chooseBusType(which) {
	
	if (which.value=='private') {
		document.getElementById('int_type').style.display = 'none';
		chooseIntType(document.getElementById('int_type_3'));
	}
	else {
		document.getElementById('int_type').style.display = 'block';
	}
	
	document.getElementById('bus_type_1').checked=false;
	document.getElementById('bus_type_2').checked=false;
	which.checked=true;
}

function chooseIntType(which) {

	if (which.value=='statutory') {
		document.getElementById('box1').style.display='block';
		document.getElementById('box2').style.display='none';
		document.getElementById('box3').style.display='none';
		
	}
	else if  (which.value=='contractual') {
		document.getElementById('box1').style.display='none';
		document.getElementById('box2').style.display='block';
		document.getElementById('box3').style.display='none';
	}
	else {
		document.getElementById('box1').style.display='none';
		document.getElementById('box2').style.display='none';
		document.getElementById('box3').style.display='block';
	}

	document.getElementById('int_type_1').checked=false;
	document.getElementById('int_type_2').checked=false;
	document.getElementById('int_type_3').checked=false;
	which.checked=true;
	SelectedRate = which.value;
	clearValues();
}

function setAmount(amount) {
	document.getElementById('am').value=amount;
	document.getElementById('am2').value=amount;
	document.getElementById('am3').value=amount;
}

function setInvDate(date) {
	document.getElementById('o_in').value=date;
	document.getElementById('o_in2').value=date;
	document.getElementById('o_in3').value=date;
}

function setOvDate(date) {
	document.getElementById('overdue').value=date;
	document.getElementById('overdue2').value=date;
	document.getElementById('overdue3').value=date;
}



function clearValues() {
	
	document.getElementById('lpc').value='0.00';
	document.getElementById('int').value='0.00';
	document.getElementById('total').value='0.00';	
	document.getElementById('court_fee').value='0.00';	
	
	document.getElementById('int2').value='0.00';
	document.getElementById('total2').value='0.00';
	document.getElementById('court_fee2').value='0.00';	

	document.getElementById('int3').value='0.00';
	document.getElementById('total3').value='0.00';
	document.getElementById('court_fee3').value='0.00';
	
}
	

