<!--
// Gary Morton, 04/07/2000
// Assi Ungar, 06/12/2000
// Assi Ungar, 5/4/01: Added new After tax calculations that take care of different
// Michael Fitzgibbon, 3/2/04: Modified rates
// Michael Fitzgibbon, 17/2/04: Modified rates for May 15, 2004 rate change

//                     income brackets.
//                      20000       1250     2250     2750     3250     3750     4500    6000     7500    10000
var aTerm24 = new Array("0.0495","0.0582","0.0554","0.0552","0.0550","0.0548","0.0543","0.0535","0.0514","0.0512");
var aTerm36 = new Array("0.0366","0.0465","0.0455","0.0450","0.0446","0.0443","0.0435","0.0417","0.0401","0.0381");
var aTerm48 = new Array("0.0295","0.0000","0.0375","0.0363","0.0360","0.0357","0.0356","0.0348","0.0322","0.0315");
var EPPRate = "1.07"
var FEWRate = "1.1"
var EPPFEWRate = "1.15"

function whichRate(n)
{
    var match;
    match = 0;
    if (n < 1250.01) {match = 1;return match}
    if (n < 2250.01) {match = 2;return match}
    if (n < 2750.01) {match = 3;return match}
    if (n < 3250.01) {match = 4;return match}
    if (n < 3750.01) {match = 5;return match}
    if (n < 4500.01) {match = 6;return match}
    if (n < 6000.01) {match = 7;return match}
    if (n < 7500.01) {match = 8;return match}
    if (n < 10000.01){match = 9;return match}
    return match
}
    
//function calcRate()
function FlexiCalcMonthlyRate(FlexirentValue, FlexirentTerm, EPP, FEW, FlexiError)

{
	if (FlexiError != "1")
	{
	var i, iTermList, sTermList, iAmount
	var nRate, nCost, nEPP, nWeeklyAmount, nAfterTax
	
	sTermList=FlexirentTerm
	iAmount=FlexirentValue
	nFormRate = ""
	
	switch (sTermList) 
	{ 
	   case "24" : 
	   		iTermList = "1"
	        break;
	   case "36" : 
			iTermList = "2"
	        break;
	   case "48" :
			iTermList = "3"
	        break;
	} 	
	
	    
if ((iAmount == "") || (isNaN(iAmount) == true) || (iAmount < 500))
	    {
			return "NA"
	    }
	if ((iAmount == "") || (isNaN(iAmount) == true) || (iAmount > 19999.99))
	    {
			return "NA"
	    }
	            
	if ((sTermList == "default") || (sTermList == ""))
	    {
			return "NA"
	    }
	    
	if ((sTermList == "48") && (iAmount < 1500))
	    {
			return "NA"
	    }

	//what array value do we use?
	i = parseInt(whichRate(iAmount));
    
	//generate array val
	switch (sTermList) 
	{ 
	   case "24" : 
	        nRate = aTerm24[i]
	        break;
	   case "36" : 
	        nRate = aTerm36[i]
	        break;
	   case "48" :
	        nRate = aTerm48[i]
	        break;
	   default : 
	        alert("No rate found")
	        return false;
	} 
	    
	nCost = FormatMoney(Math.ceil(parseFloat(iAmount * nRate)));
	if (EPP == true && FEW == false)
	{
		nCost = FormatMoney(parseFloat(nCost * EPPRate));
	}
	else if (EPP == false && FEW == true)
	{
		nCost = FormatMoney(parseFloat(nCost * FEWRate));
	}
	else if (EPP == true && FEW == true)
	{
		nCost = FormatMoney(parseFloat(nCost * EPPFEWRate));
	}
	
	return nCost;
	
	}
	
	else
	
	{
	return "NA";
	}
}


//Calculate the Weekly Rental figure
function FlexiCalcWeeklyRate(FlexirentValue, FlexirentTerm, EPP, FEW, FlexiError)
{
	if (FlexiError != "1")
	{
		return FormatMoney(parseFloat(FlexiCalcMonthlyRate(FlexirentValue,FlexirentTerm,EPP,FEW,FlexiError) * 12 / 52))
	}
	
	else
	
	{
		return "NA"
	}
}

//Calculate the After Tax Cost based on a top tax bracket, and the term.
function FlexiCalcAfterTaxCost(FlexirentValue, FlexirentTerm, EPP, FEW, FlexiError)
{
	if (FlexiError != "1")
	{
	    var RentalAmount = FlexiCalcMonthlyRate(FlexirentValue, FlexirentTerm, EPP, FEW, FlexiError);
	    return FormatMoney(parseFloat(RentalAmount * FlexirentTerm) - parseFloat(RentalAmount * FlexirentTerm * 0.485))
	}
	else
	{
		return "NA"
	}
}	

//Calculate the After Tax Cost based on a tax bracket, and the term.
function FlexiCalcAfterTaxCost2(FlexirentValue, FlexirentTerm, EPP,FEW, TaxBracket, FlexiError)
{
	sTaxBracket = TaxBracket
	
	switch (sTaxBracket) 
	{ 
	   // Company tax bracket
	   case "0" : 
	   		TaxRate = 0.30
	        break;
	   // non-business user
	   case "1" : 
			TaxRate = 0
	        break;
	   case "2" :
			TaxRate = 0.185
	        break;
	   case "3" :
			TaxRate = 0.315
	        break;
	   case "4" :
			TaxRate = 0.435
	        break;
	   case "5" :
			TaxRate = 0.485
	        break;
	} 	
	
	if (FlexiError != "1")
	{
		var RentalAmount = FlexiCalcMonthlyRate(FlexirentValue, FlexirentTerm, EPP,FEW, FlexiError);
		if (sTaxBracket != "0")
		{
			return FormatMoney(parseFloat(RentalAmount * FlexirentTerm) - parseFloat(RentalAmount * FlexirentTerm * TaxRate))
		}
		else
		{
			return FormatMoney((parseFloat(RentalAmount * FlexirentTerm) - parseFloat(RentalAmount * FlexirentTerm * TaxRate)) / 1.1)
		}
	}
	else
	{
		return "NA"
	}
}	

//Calculate the After Tax Cost based on a tax bracket, and the term.
function FlexiCalcWeeklyAfterTaxCost(FlexirentValue, FlexirentTerm, EPP,FEW, TaxBracket, FlexiError)
{
	if (FlexiError != "1")
	{
	    var AfterTaxTotalAmount = FlexiCalcAfterTaxCost2(FlexirentValue, FlexirentTerm, EPP,FEW, TaxBracket, FlexiError);
		return FormatMoney(parseFloat(AfterTaxTotalAmount / (FlexirentTerm / 12) / 52));
	}
	else
	{
		return "NA"
	}
}

//Calculate the After Tax Cost based on a top tax bracket, and the term.
function FlexiCalcMonthlyAfterTaxCost(FlexirentValue, FlexirentTerm, EPP,FEW, TaxBracket, FlexiError)
{
	if (FlexiError != "1")
	{
	    var AfterTaxTotalAmount = FlexiCalcAfterTaxCost2(FlexirentValue, FlexirentTerm, EPP,FEW, TaxBracket, FlexiError);
		return FormatMoney(parseFloat(AfterTaxTotalAmount / (FlexirentTerm / 12) / 12));
	}
	else
	{
		return "NA"
	}
}



// Check that all the values are valid (ie, not outside the Flexirent equipment value range, invalid chars, etc)
function FlexiCheckValues(FlexirentValue, FlexirentTerm)
{
	var iAmount = FlexirentValue
	var sTermList = FlexirentTerm
	if ((iAmount == "") || (isNaN(iAmount) == true) || (iAmount < 500))
	    {
	        alert("Please enter an amount over $500 in the Amount field.   ")
	        return "1"
	    }
	else if ((iAmount == "") || (isNaN(iAmount) == true) || (iAmount > 19999.99))
	    {
	        alert("For transactions over $20,000, please call Flexirent's Major Accounts Division on 1800 679 898   ")
	        return "1"
	    }
	            
	else if ((sTermList == "default") || (sTermList == ""))
	    {
	        alert("Please select a term from the list provided.   ")
	        return "1"            
	    }
	    
	else if ((sTermList == "48") && (iAmount < 1500))
	    {
	        alert("For a 48 month term, please enter an amount over $1,500 in the Amount field.   ")
	        return "1"
	    }
	else
		{
			return "0"
		}
}

function FormatMoney(Amount)
{
	// This function accepts an input value and then converts and returns a 
	// formatted (##.##) string.
	// TempA: dollar value
	
	var InitialValue = Amount
	var TempA = "'" + InitialValue + "'";
	var DecimalFlag = 0;
	var NewString = "";

	// Parse input value; storing "0-9" and "." characters in a string variable. 
	for (x = 0; x < TempA.length; x++)
	{
		if ( isNaN(TempA.charAt(x)) && TempA.charAt(x) != ".")
		{
			junk = 1;
		}
		else
		{
			if (TempA.charAt(x) != " " )
			{
				NewString = NewString + TempA.substring(x, x+1);
			}
		}
	}

	// Parse string variable to determine position of decimal point (if any). 
	for (x = 0; x < NewString.length; x++)
	{
		if (NewString.charAt(x) == "." )
		{
			DecimalFlag = NewString.indexOf(NewString.charAt(x)) + 1; 
		}
	}

	// Check length of new string variable. 
	// If > 0, format new string variable and return to calling form.
	if (NewString.length != 0)
    {
		if (DecimalFlag > 0) 
        {
			var TempB = NewString.substring(0, DecimalFlag);
			if (NewString.length - TempB.length == 0)
			{
				NewString = NewString.substring(0, (DecimalFlag + 2)) + "00";
			}
			else
			{
				if (NewString.length - TempB.length == 1)
				{
					NewString = NewString.substring(0, (DecimalFlag + 2)) + "0";
				}
				else
				{
					if (NewString.length - TempB.length == 2)
					{
						NewString = NewString.substring(0, (DecimalFlag + 3));
					}
					else
					{ 
						if (NewString.length - TempB.length > 2)
						{
							NewString = NewString.substring(0, (DecimalFlag + 2));
						}
					}
				}
			}
		}
		else
		{
			NewString = NewString + ".00";
		}
		
		return NewString;
    }
	else
	{
		return false;
	}
}
//-->