var superFileURL = "../../documents/csv/superprices.csv"
var pensionFileURL = "../../documents/csv/pensionprices.csv"
var arrayOfRows_CSVfile
var NUMBEROFPOINTS=52
var AGGRESSIVE=0
var MOD_AGGRESSIVE=1
var BALANCED=2
var arrayLast52Records
var YMIN_PCTG = 0.97
var YMAX_PCTG = 1.02
var GLOBAL_MINMAX = true
/*
link to chart:
http://newsite.csf.com.au/files/fusioncharts/aggressive_super/aggressive.htm


CSV files:
newsite.csf.com.au/files/documents/performance_xls /pensionprices.csv
newsite.csf.com.au/files/documents/performance_xls /superprices.csv 
*/

var _captions
/*
Date,Aggressive,Moderately Aggressive,Balanced,Moderately Conservative,Conservative,,Australian Shares,Overseas Shares,Property,Fixed Interest,Cash
*/
var AGGRESSIVE = 1
var MODERATELY_AGGRESSIVE = 2
var BALANCED = 3
var MODERATELY_CONSERVATIVE = 4
var CONSERVATIVE = 5
var EMPTY_COLUMN = 6
var AUSTRALIAN_SHARES = 7
var OVERSEAS_SHARES = 8
var PROPERTY = 9
var FIXED_INTEREST = 10
var CASH = 11

var currentInvType=AGGRESSIVE
var superOrPension = 1;//= superFileURL// default is SUPER (1 = super, 2 = pension)
var graphColor="0066A4";


function makeRequest()
{
	//var httpRequest;// initially, httpRequest = null
	var url
	getInvTypeParam()

if(superOrPension == 2){
	url = pensionFileURL;
	graphColor="CC6600";
}
else
	url = superFileURL;


/*220908
	if(window.XMLHttpRequest) // Mozilla, Safari, ...
	{
		httpRequest = new XMLHttpRequest();
		if(httpRequest.overrideMimeType)
		{
			httpRequest.overrideMimeType('text/xml');
		}
	}
	else if(window.ActiveXObject) // IE
	{
		try
		{
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}


	if(!httpRequest)
	{
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	httpRequest.onreadystatechange = function() { processCSVfile(httpRequest); };

	var url1 = url + "?t="+((new Date()).valueOf());
	httpRequest.open('GET', url1, true);
	httpRequest.send('');

*/



/*230908 I AM NOT SURE WHT THIS FIRES SEVERAL TIMES FOR THE 'ERROR' ALERT ????


$('#imgPrevious').ajaxError(function()
{alert("ERROR")}
);
$('#imgPrevious').ajaxSuccess(function()
{alert("ajaxSuccess")}
);
*/
//220908: try to use jQuery here:
var url1 = url + "?t47="+((new Date()).valueOf());// try to avoid caching
$.get(url1, function (data)
{
//alert(data)
processCSVfile220908(data)
}
);


}






function processCSVfile(httpRequest)
{
	var s = "There was a problem with the request."
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			try
			{
				re = /\n/;//new line character

				arrayOfRows_CSVfile = null
				arrayOfRows_CSVfile = httpRequest.responseText.split(re);
				arrayLast52Records = new Array();
				_captions = arrayOfRows_CSVfile[0]

//alert(cptn.charCodeAt(cptn.length - 1))
//alert("_captions length: " +_captions.length +"  "+_captions.charCodeAt(_captions.length - 1))
				
				_captions = removeCarriageReturn(_captions)
//alert("_captions length: " +_captions.length +"  "+_captions.charCodeAt(_captions.length - 1))
				for(var i = 0; i < NUMBEROFPOINTS; i++)
				{
					arrayLast52Records[i] = removeCarriageReturn(arrayOfRows_CSVfile[arrayOfRows_CSVfile.length-(NUMBEROFPOINTS-i)])
				}

				arrayOfRows_CSVfile = null
				updateChart('myChartId');
			}
			catch(e)
			{
				alert(s + " " + e);
			}
		}
		else
		{
			alert(s);
		}
	}
		else
		{
			;//alert("s");
		}

}

function updateChart(domId)
{
//Update it's XML - set animate Flag from AnimateChart checkbox in form
//using updateChartXML method defined in FusionCharts.js
updateChartXML(domId, generateXML(true));


//var cptn = getSubcaption(getOptionSelectedNew())
//alert(cptn +"   " +cptn.length)
//alert(cptn.charCodeAt(cptn.length - 1))

//document.getElementById('spanInvOption').innerHTML = ("&nbsp;"+getSubcaption(getOptionSelectedNew())+"&nbsp;")
document.getElementById('spanInvOption').style.color="#"+graphColor
document.getElementById('spanInvOption').innerHTML = getSubcaption(getOptionSelectedNew())
setToolTipPrevious(document.getElementById('imgPrevious'), true)
setToolTipNext(document.getElementById('imgNext'), true)
}

function setToolTipPrevious(_element, trueFalse)
{
	var _currentInvType = getPreviousInvType()
	var sPrev = getSubcaption(_currentInvType)
	if(trueFalse)
		_element.title = "Go to " + sPrev
	else
		_element.title = "";
	return;
}

function setToolTipNext(_element, trueFalse)
{
	var _currentInvType = getNextInvType()
	var sNext = getSubcaption(_currentInvType)
	if(trueFalse)
		_element.title = "Go to " + sNext
	else
		_element.title = "";
	return;
}

function generateXML(animate)//true of false
{
	//Variable to store XML
	var strXML="";

	try
	{
		var yMin = YMIN_PCTG*get_yAxisMinValue()
		var yMax = YMAX_PCTG*get_yAxisMaxValue()
		var optionSelected = getOptionSelectedNew()
		var arrayOneRowEntries, _name, _value, _hoverText
		var _subcaption = ""

		strXML = "<graph caption='' subcaption='"+_subcaption+"' xAxisName='Date' yAxisMinValue='"+yMin+"' yAxisMaxValue='"+yMax+"' yAxisName='Unit price ($)' numberPrefix='' decimalPrecision='4' showNames='1' showValues='0' rotateNames='1' showColumnShadow='1' animation='" + ((animate==true)?"1":"0") + "' showAlternateHGridColor='1' AlternateHGridColor='0066A4' divLineColor='0066A4' divLineAlpha='20' alternateHGridAlpha='5' lineColor='"+ graphColor +"' canvasBorderColor='666666' baseFontColor='666666'>";

		for(var i = 0; i < arrayLast52Records.length; i++)
		{
			arrayOneRowEntries=null
			arrayOneRowEntries = arrayLast52Records[i].split(',');
			// date tags along X-axis: show the first one and then 4th, 8th, ... 52nd:
			if(i == 0 || ((i + 1) % 4) == 0)
			{
				_name = arrayOneRowEntries[0]
				_name = myFformatDate(_name) +"   "
			}
			else
				_name = ""

			_value = arrayOneRowEntries[optionSelected]
			_hoverText = myFformatDate(arrayOneRowEntries[0])

			strXML = strXML + "<set name='"+_name+"' value='"+_value+"' hoverText='"+_hoverText+"' />";
		}
		
	}
	catch(e)
	{
		;//alert(e)
	}
	strXML = strXML + "</graph>";
	return strXML;
}
function myFformatDate(sDate)
{
	// if DD or MM is read-in from CSV as only D or M, adjust (add "0" in front)
	var _date = null
	_date = sDate.split('/');
	var d = _date[0].toString()
	var m = _date[1].toString()
	var y = _date[2].toString()
	if(d.length < 2)
		d = "0" + d
	if(m.length < 2)
		m = "0" + m
	return (d + "/" + m + "/" + y)
}

function get_yAxisMinValue()
{

	var f=document.forms.frmName
	var arrayOneRowEntries, optionSelected, tmp
	var ret = 0, i;

	ret = 1000//dummy
	if(GLOBAL_MINMAX)
	{
		for(i = 0; i < arrayLast52Records.length; i++)
		{
			arrayOneRowEntries=null
			arrayOneRowEntries = arrayLast52Records[i].split(',');
			for(var j = 1; j < arrayOneRowEntries.length; j++)
			{
				if(j != EMPTY_COLUMN)
				{
					tmp = arrayOneRowEntries[j]
					ret = Math.min(ret, tmp)
				}
			}
		}
	}
	else
	{
		optionSelected = getOptionSelectedNew()
		for(i = 0; i < arrayLast52Records.length; i++)
		{
			arrayOneRowEntries=null
			arrayOneRowEntries = arrayLast52Records[i].split(',');
			tmp = arrayOneRowEntries[optionSelected]
			ret = Math.min(ret, tmp)
		}
	}
	
	return ret
}
function get_yAxisMaxValue()
{
	var f=document.forms.frmName
	var arrayOneRowEntries, optionSelected, tmp
	var ret = 0, i;

	ret = -1000//dummy
	if(GLOBAL_MINMAX)
	{
		for(i = 0; i < arrayLast52Records.length; i++)
		{
			arrayOneRowEntries=null
			arrayOneRowEntries = arrayLast52Records[i].split(',');
			for(var j = 1; j < arrayOneRowEntries.length; j++)
			{
				if(j != EMPTY_COLUMN)
				{
					tmp = arrayOneRowEntries[j]
					ret = Math.max(ret, tmp)
				}
			}
		}
	}
	else
	{
		optionSelected = getOptionSelectedNew()
		for(i = 0; i < arrayLast52Records.length; i++)
		{
			arrayOneRowEntries=null
			arrayOneRowEntries = arrayLast52Records[i].split(',');
			tmp = arrayOneRowEntries[optionSelected]
			ret = Math.max(ret, tmp)
		}
	}
	return ret
}

function getOptionSelectedNew()
{
	return currentInvType
}

function getSubcaption(optionSelected)
{
	var _caps = _captions.split(',');
	return _caps[optionSelected]
}

function updateChart2(rd)
{
	document.forms.frmName.rdInvType[rd].click()
}

function getNextInvType()
{
	var _currentInvType = currentInvType + 1
	if(_currentInvType == EMPTY_COLUMN)
		_currentInvType = _currentInvType + 1
	if(_currentInvType > CASH)
		_currentInvType = AGGRESSIVE
	return _currentInvType
}
function getPreviousInvType()
{
var _currentInvType = currentInvType - 1
if(_currentInvType == EMPTY_COLUMN)
	_currentInvType = _currentInvType - 1
if(_currentInvType < AGGRESSIVE)
	_currentInvType = CASH

return _currentInvType
}

function goToNext(_element)
{
currentInvType = getNextInvType()
updateChart('myChartId')

setToolTipNext(_element, true)
}
function goToPrevious()
{
currentInvType = getPreviousInvType()
updateChart('myChartId')
}
function removeCarriageReturn(_captions)
{
if(_captions.charCodeAt(_captions.length - 1) == 13)
	return _captions.substring(0, _captions.length - 1)
else
	return _captions
}
function goTop()
{
//location.href='#Top1';
}

function getInvTypeParam()
{
var par=(window.location.search).substring(1,(window.location.search).length)
//alert(par)
if(par!="")
{
	var pairs=new Array()
	var x = par.split('&');
	for(var i=0;i<x.length;i++)
	{
		var q=x[i].split('=')
		show_props(q, "pairs", pairs)
	}
	currentInvType = parseInt(getParamValue(pairs,"CSFInvType"))
	superOrPension = parseInt(getParamValue(pairs,"SORP"))
}
else
{
	currentInvType = AGGRESSIVE
}

if(currentInvType < AGGRESSIVE || currentInvType > CASH)
	currentInvType = AGGRESSIVE

	//alert("currentInvType: "+currentInvType)
/*
initName=""
initDOB=""
initDOC=""
initTotalETP=""
initUnrstrcdNP=""
initRstrcdNP=""
initUntaxed=""
initTaxed=""
doc=15072007
taxed=88
untaxed=99
if(par!="")
{
	myPortfolio=true
	var pairs=new Array()
	var x = par.split('&');
	for(var i=0;i<x.length;i++)
	{
		var q=x[i].split('=')
		show_props(q, "pairs", pairs)
	}
initName=getParamValue(pairs,"name")
initDOB=getParamValue(pairs,"dob")
initDOC=getParamValue(pairs,"doc")
initTotalETP=getParamValue(pairs,"tETP")
initUnrstrcdNP=getParamValue(pairs,"unrnp")
initRstrcdNP=getParamValue(pairs,"rnp")
initUntaxed=getParamValue(pairs,"untaxed")
initTaxed=getParamValue(pairs,"taxed")
}
else
	myPortfolio=false

try
{
	var f=document.forms.frmName

	f.txtDOB.value=myPortfolio?(myFormatDate(""+initDOB)):""
	f.txtDOC.value=myPortfolio?(myFormatDate(""+initDOC)):""
	f.txtTotalETP.value=(isInt(initTotalETP))?initTotalETP:""
	f.txtUNPAmount.value=(isInt(initUnrstrcdNP))?initUnrstrcdNP:""
	f.txtRNPAmount.value=(isInt(initRstrcdNP))?initRstrcdNP:""
	f.txtTaxFreeCompnnt.value=(isInt(initUntaxed))?initUntaxed:""
	f.txtTaxableCompnnt.value=(isInt(initTaxed))?initTaxed:""
}
catch(e)
{
	alert(e)
}

if(myPortfolio)
{
x1.style.display = "";

// disable fileds
		 f.txtName.contentEditable = false
		 f.txtName.disabled = true
		 f.txtName.className='InputBorderGray'

		 f.txtDOB.contentEditable = false
		 f.txtDOB.disabled = true
		 f.txtDOB.className='InputBorderGray'

		 f.txtDOC.contentEditable = false
		 f.txtDOC.disabled = true
		 f.txtDOC.className='InputBorderGray'

		 f.txtTotalETP.contentEditable = false
		 f.txtTotalETP.disabled = true
		 f.txtTotalETP.className='InputBorderGray'

		 f.txtUNPAmount.contentEditable = false
		 f.txtUNPAmount.disabled = true
		 f.txtUNPAmount.className='InputBorderGray'

		 f.txtRNPAmount.contentEditable = false
		 f.txtRNPAmount.disabled = true
		 f.txtRNPAmount.className='InputBorderGray'

		 f.txtTaxFreeCompnnt.contentEditable = false
		 f.txtTaxFreeCompnnt.disabled = true
		 f.txtTaxFreeCompnnt.className='InputBorderGray'

		 f.txtTaxableCompnnt.contentEditable = false
		 f.txtTaxableCompnnt.disabled = true
		 f.txtTaxableCompnnt.className='InputBorderGray'
}
else
{
x1.style.display = "none";

f.txtName.contentEditable = true
f.txtName.disabled = false
f.txtName.className=''
		 f.txtDOB.contentEditable = true
		 f.txtDOB.disabled = false
		 f.txtDOB.className=''

		 f.txtDOC.contentEditable = true
		 f.txtDOC.disabled = false
		 f.txtDOC.className=''

		 f.txtTotalETP.contentEditable = true
		 f.txtTotalETP.disabled = false
		 f.txtTotalETP.className=''

		 f.txtUNPAmount.contentEditable = true
		 f.txtUNPAmount.disabled = false
		 f.txtUNPAmount.className=''

		 f.txtRNPAmount.contentEditable = true
		 f.txtRNPAmount.disabled = false
		 f.txtRNPAmount.className=''


		 f.txtTaxFreeCompnnt.contentEditable = true
		 f.txtTaxFreeCompnnt.disabled = false
		 f.txtTaxFreeCompnnt.className=''

		 f.txtTaxableCompnnt.contentEditable = true
		 f.txtTaxableCompnnt.disabled = false
		 f.txtTaxableCompnnt.className=''
}
*/
}
function getParamValue(arr,s)
{
	var ret=""
	for(var i in arr)
	{
		if(i==s)
		{
			ret = arr[i]
			break;
		}
	}
	return ret
}
function show_props(obj, obj_name, arr)
{
	var result = ""   
	var x=obj[0]
	eval("arr['" + x + "'] = '" + obj[1] +"'")
}
function test1()
{
makeRequest('../superprices.csv');
goTop();
//getInvTypeParam()
}


function processCSVfile220908(_CSVfile)
{
	var s = "There was a problem with the request."
			try
			{
				re = /\n/;//new line character

				arrayOfRows_CSVfile = null
				arrayOfRows_CSVfile = _CSVfile.split(re);//httpRequest.responseText.split(re);
				arrayLast52Records = new Array();
				_captions = arrayOfRows_CSVfile[0]

//alert(cptn.charCodeAt(cptn.length - 1))
//alert("_captions length: " +_captions.length +"  "+_captions.charCodeAt(_captions.length - 1))
				
				_captions = removeCarriageReturn(_captions)
//alert("_captions length: " +_captions.length +"  "+_captions.charCodeAt(_captions.length - 1))
				for(var i = 0; i < NUMBEROFPOINTS; i++)
				{
					arrayLast52Records[i] = removeCarriageReturn(arrayOfRows_CSVfile[arrayOfRows_CSVfile.length-(NUMBEROFPOINTS-i)])
				}

				arrayOfRows_CSVfile = null
				updateChart('myChartId');
			}
			catch(e)
			{
				alert(s + " " + e);
			}

}


//220908 $(document).ready(test1);// versus: $(function() { ????


