var plot, yMax
var arrayFromJava0, arrayFromJava1, arrayFromJava2
var arrayFromJavaTTRPENS0, arrayFromJavaTTRPENS1
var arrayFromJavaPENS0, arrayFromJavaPENS1, arrayFromJavaPENS2
var PENSION_OPTIMISED = 4, PENSION_USERENTERED = 5;

function getDollarAmountsFromJava(f, _secondScenarioEntered)
{
	//arrays will be retrieved as strings; getJavaArrayAsAString()
	var errT = ""
	arrAllocatedPension_optimised = arrAllocatedPension_userentered = null
	arrAllocatedPensionAmounts = null
	arrMINPensionAmounts = null
	arr30JuneBalance = null
	arrayFromJava0 = arrayFromJava1 = arrayFromJava2 = null
	arrayFromJavaTTRPENS0 = arrayFromJavaTTRPENS01 = null
	arrayFromJavaPENS0 = arrayFromJavaPENS1 = arrayFromJavaPENS2 = null
	try
	{
		if(!_secondScenarioEntered)
		{
			arrMyCurrentBalance = arrVmyCurrentBalance
		}
		else
		{
			arrMyCurrentBalance = arrVmyCurrentBalance
			arrMyCurrentBalanceNew = arrVmyCurrentBalanceNew
		}
	}
	catch(e)
	{
		errT = e+" (getDollarAmountsFromJava())"
	}
}
function getNextCalcDate1(previousCalcDate)
{
	var y = 0, m = 0, d = 0;
	// find the very next 1 July, comming immediatelly after previousCalcDate
	if(previousCalcDate.myGetDay() == 1 && previousCalcDate.myGetMonth() == 7)
	{
		y = previousCalcDate.myGetYear() + 1;
		m = previousCalcDate.myGetMonth();
		d = previousCalcDate.myGetDay();
	}
	else
	{
		// it means my first calcDate is equal to today's date and it's not 1 July
		// (it's not really a calc date, but it's the very first date of calculation
		// => find next 1July!
		//
		// is todaysDate before 1 July this year
		var todaysDate = new MyDate4()		
		if(previousCalcDate.isThisDateBefore(new MyDate4(previousCalcDate.myGetYear(),7,1)))
		{
			y = previousCalcDate.myGetYear();
			m = 7;
			d = 1;
		}
		else
		{
			y = previousCalcDate.myGetYear() + 1;
			m = 7;
			d = 1;
		}
	}
	return (new MyDate4(y, m, d));
}
function getRetirementDate(dateDOB, retirementAge)
{
	var retirementDate = new MyDate4()
	retirementDate.mySetYear(dateDOB.myGetYear() + retirementAge)
	retirementDate.mySetMonth(dateDOB.myGetMonth())
	retirementDate.mySetDay(dateDOB.myGetDay())
	return retirementDate
}
function getDOB()
{
	var dateDOB = new MyDate4(parseInt(((document.forms.frmName.txtDOB.value).split(SEPARATOR))[2],10),parseInt(((document.forms.frmName.txtDOB.value).split(SEPARATOR))[1],10),parseInt(((document.forms.frmName.txtDOB.value).split(SEPARATOR))[0],10))
	return dateDOB
}

function finaliseFLOT(f, _secondScenarioEntered)
{
	var next1July = getNextCalcDate1(dateDOC)
	var fractionDOC_1July = dateDOC.dGetNoOfYears(next1July)
	var dataArrayFromJava0 = [];
	var currAge = myRound(getCurrentAgeNEW2(document.forms.frmName.txtDOB, dateDOC), 2)
	var xcoord = 0
	for(i = 0 ; i < arrTotalSuperSavings.length; i++)
	{
		if(i == 0)
			xcoord = currAge
		else if(i == 1)
			xcoord = currAge + fractionDOC_1July
		else
		{
			xcoord++
			if(i == (arrTotalSuperSavings.length - 1))
			{
				xcoord = getSafeFieldValue(document.forms.frmName.txtRetirementAge)
			}
		}
		dataArrayFromJava0.push([xcoord, arrTotalSuperSavings[i]]);
	}
	var dateDOB = getDOB()
	var retirementDate = getRetirementDate(dateDOB, getSafeFieldValue(document.forms.frmName.txtRetirementAge))

	next1July = getNextCalcDate1(retirementDate)
	var fractionRetirementDate_1July = retirementDate.dGetNoOfYears(next1July)

	for(i = 1 ; i < arrMyCurrentBalance.length; i++)//310710 start from i = 1,as it's a duplicate value
	{
		if(i == 1)
		{
			xcoord = dataArrayFromJava0[dataArrayFromJava0.length - 2][0] + 1
		}
		else
		{
			if(i == (arrMyCurrentBalance.length - 1))
			{
				if(arrMyCurrentBalance[i] == 0)//<- 010810
					xcoord = xcoord + (arrMyCurrentBalance[i - 1]*(1/(arrMyCurrentBalance[i - 2] - arrMyCurrentBalance[i - 1])))
			}
			else
				xcoord++
		}
		dataArrayFromJava0.push([xcoord, arrMyCurrentBalance[i]]);
	}
	var dataArrayFromJava1 = [];
	if(_secondScenarioEntered)
	{
	for(i = 0 ; i < arrTotalSuperSavingsNew.length; i++)
	{
		if(i == 0)
			xcoord = currAge
		else if(i == 1)
			xcoord = currAge + fractionDOC_1July
		else
		{
			xcoord++
			if(i == (arrTotalSuperSavingsNew.length - 1))
				xcoord = getSafeFieldValue(document.forms.frmName.txtRetirementAge)
		}
		dataArrayFromJava1.push([xcoord, arrTotalSuperSavingsNew[i]]);
	}

	for(i = 1 ; i < arrMyCurrentBalanceNew.length; i++)//310710 start from i = 1,as it's a duplicate value
	{
		if(i == 1)
			xcoord = dataArrayFromJava1[dataArrayFromJava1.length - 2][0] + 1
		else
		{
			
			if(i == (arrMyCurrentBalanceNew.length - 1))
			{
				if(arrMyCurrentBalanceNew[i] == 0)//<- 010810
					xcoord = xcoord + (arrMyCurrentBalanceNew[i - 1]*(1/(arrMyCurrentBalanceNew[i - 2] - arrMyCurrentBalanceNew[i - 1])))
			}
			else
				xcoord++
		}
		dataArrayFromJava1.push([xcoord, arrMyCurrentBalanceNew[i]]);
	}
	}
pensionInRetirementWillLast_Current = dataArrayFromJava0[dataArrayFromJava0.length - 1][0]

if(_secondScenarioEntered)
	pensionInRetirementWillLast_Optimised = dataArrayFromJava1[dataArrayFromJava1.length - 1][0]
	if(document.getElementById('divFlotAppletON').style.display=="none")
	{
		document.getElementById('divFlotAppletOFF').style.display="none"
		document.getElementById('divFlotAppletON').style.display=""
		}
	var dataRetirementAge = [];
	dataRetirementAge.push([getSafeFieldValue(f.txtRetirementAge), 0]);
	dataRetirementAge.push([getSafeFieldValue(f.txtRetirementAge), 30000]);
var _requiredLumpSumAtRetirementAge = Math.max(requiredLumpSumAtRetirementAge, requiredLumpSumAtRetirementAgeNew)

    plot = $.plot($("#flotAppletPlaceholder"), [
        {
            data: dataArrayFromJava0,
            label: "Original",
            lines: { show: true },
            points: { show: false },
            color:"#0066A1"
        },
        {
            data: dataArrayFromJava1,
            label: "Adjusted",
            lines: { show: true },
            points: { show: false },
            color:"#A3AB02"
        },
        {
            data: [[dataArrayFromJava0[0][0], _requiredLumpSumAtRetirementAge],[dataArrayFromJava0[dataArrayFromJava0.length - 1][0], _requiredLumpSumAtRetirementAge]],
            label: "Target benefit",
            lines: { show: true },
            points: { show: false},
            color:"#8BD214"
        }
    ],
		 {
			 xaxis: { tickDecimals: 0},
			 yaxis: { tickFormatter: function (v, axis) { return "$"+formatted_toFixed1(parseFloat(removeCommDollSpacPerc(""+v)), 2, "")}},
		grid: { hoverable: false, clickable: false }
});
// get yMax - used below:
yMax = plot.getAxes().yaxis.max

// 220710: do it again, now with known yMax:
plot = null
    plot = $.plot($("#flotAppletPlaceholder"), [
        {
            data: dataArrayFromJava0,
            label: "Original",
            lines: { show: true },
            points: { show: false },
            color:"#0066A1"
        },
        {
            data: dataArrayFromJava1,
            label: "Adjusted",
            lines: { show: true },
            points: { show: false },
            color:"#A3AB02"
        },
        {
            data: [[getSafeFieldValue(document.forms.frmName.txtRetirementAge), 0],[getSafeFieldValue(document.forms.frmName.txtRetirementAge), yMax]],
            label: "Retirement age",
            lines: { show: true, lineWidth: 1 },
            points: { show: false },
            color:"#6C6C6C",
            shadowSize: 0
        },
        {
            data: [[dataArrayFromJava0[0][0], _requiredLumpSumAtRetirementAge],
            [_secondScenarioEntered?Math.max(dataArrayFromJava0[dataArrayFromJava0.length - 1][0],dataArrayFromJava1[dataArrayFromJava1.length - 1][0]):dataArrayFromJava0[dataArrayFromJava0.length - 1][0], _requiredLumpSumAtRetirementAge]],
            label: "Target benefit",
            lines: { show: true, lineWidth: 1 },
            points: { show: false},
            color:"#8BD214",
            shadowSize: 0
        }

        
    ],
    
           {
             xaxis: { tickDecimals: 0},
             yaxis: { max: yMax, tickFormatter: function (v, axis) { return "$"+formatted_toFixed1(parseFloat(removeCommDollSpacPerc(""+v)), 2, "")}},
						grid: { hoverable: false, clickable: false }

});


    function showTooltip(x, y, contents) {
        $('<div id="tooltip">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            top: y + 5,
            left: x + 5,
            border: '1px solid #fdd',
            padding: '2px',
            'background-color': '#fee',
            'font-size': '0px',
            'font-family': 'Arial, Verdana, Helvetica, sans-serif',
            opacity: 0.80
        }).appendTo("body").fadeIn(200);
    }

    var previousPoint = null;
    $("#flotAppletPlaceholder").bind("plothover", function (event, pos, item) {
        $("#x").text(pos.x.toFixed(2));
        $("#y").text(pos.y.toFixed(2));
        if (true) {
            if (item && item.seriesIndex != 3) {
                if (previousPoint != item.datapoint) {
                    previousPoint = item.datapoint;
                    
                    $("#tooltip").remove();
                    var x = item.datapoint[0].toFixed(2),
                        y = item.datapoint[1].toFixed(2);
                    
                    showTooltip(item.pageX, item.pageY,
                                item.series.label + " of " + x + " = " + y);
                }
            }
            else {
                $("#tooltip").remove();
                previousPoint = null;            
            }
        }
    });
}

