// Data Read for FASP-Calculator
// Copyright (c) Student Financial Assistance Agency, HKSARG
// ************************************************************
// Amendment notes start from 12-APR-2011
// Jeff LAI        12-APR-2001             Assistance tier adjustment

//declaration of arrays
var arrInst = new Array();
var arrInst_code = new Array();
var arrInst_name = new Array();

var arrCourseCode = new Array();
var arrCourseFee = new Array();

var arrAFIBound = new Array();
var arrIncomePer = new Array();
//Start - added on 14 Aug 2008 for catering LE Loan Enhancement
var arrIncomePerLE = new Array();
//End   - added on 14 Aug 2008 for catering LE Loan Enhancement

var arrAssetBound = new Array();
var arrAssetPer = new Array();

var curMaxAE=0;
var curMaxME=0;
var curMaxLoan=0;
//Start - added on 14 Aug 2008 for catering LE Loan Enhancement
var curMaxLE=0;
//End   - added on 14 Aug 2008 for catering LE Loan Enhancement
var datestr = "";
var datestr2 = "";
var MaxMedicalExpense = 0;

var yearStart = "";
var yearLast = "";
var yearBeforeStart = "";


//declaration of reference node variables
var calculator_node, institutions_node;
var grantandloan_node, asset_node, maxloan_node, maxME_node,maxAE_node;
//Start - added on 14 Aug 2008 for catering LE Loan Enhancement
var maxLE_node;
//End   - added on 14 Aug 2008 for catering LE Loan Enhancement
var datestr_node; 

//Regular expression used to match any non-whitespace character
var notWhitespace = /\S/

// start - 12-APR-2011 assistance tier adjustment
var adjSingleFamily2=0;
var adjSingleFamily3=0;
var adjNonSingleFamily3=0;
var adjNonSingleFamily=0;
// end - 12-APR-2011


//load xml file
if (window.ActiveXObject)
{
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async = false; //Enforce download of XML file first. IE only.
	//alert("Internet Explorer");
}
else if (document.implementation && document.implementation.createDocument)
{
	var xmlDoc = document.implementation.createDocument("","doc",null);
	//alert("Netscape Navigator");
}

if (typeof xmlDoc!="undefined")
{
	xmlDoc.load("data.xml");	
	//alert("xmlDoc =");	//ok
	//alert(xmlDoc);	//ok
}


if (typeof xmlDoc!="undefined")
{
	if (window.ActiveXObject) //if IE, simply execute script (due to async prop).
	{	//alert("call iegetdata");
		iegetdata();
	}
	else
	{	
		//else if NS6, execute script when XML object has loaded
		//alert("call nsgetdata");	
		xmlDoc.onload=nsgetdata
	}
}


////////////////////////////////////ie getdata functions///////////////////////////////////////////////
function iegetdata()
{
	//Cache "messages" element of xml file
	//var msgobj=xmlDoc.getElementsByTagName("messages")[0]
	var msgobj=xmlDoc.getElementsByTagName("calculator")[0]
	
	//REMOVE white spaces in XML file. Intended mainly for NS6/Mozilla
	for (i=0;i<msgobj.childNodes.length;i++)
	{
		if ((msgobj.childNodes[i].nodeType == 3)&&(!notWhitespace.test(msgobj.childNodes[i].nodeValue)))
		{
			// that is, if it's a whitespace text node
			msgobj.removeChild(msgobj.childNodes[i])
			i--
		}
	}

	/////////////////////////////////////////////////// Sample code //////////////////////////////////////////////////////////////////
	//var dateobj=new Date()
	//var today=dateobj.getDay() //returns 0-6. 0=Sunday
	//Get today's message and display it in DIV:
	//document.getElementById("container").innerHTML=xmlDoc.getElementsByTagName("messages")[0].childNodes[today].firstChild.nodeValue
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
	calculator_node = xmlDoc.documentElement;
	institutions_node = calculator_node.firstChild;
	grantandloan_node = institutions_node.nextSibling;
	asset_node = grantandloan_node.nextSibling;
	maxloan_node = asset_node.nextSibling;
	maxAE_node = maxloan_node.nextSibling;
	maxME_node = maxAE_node.nextSibling;
//Start - updated on 14 Aug 2008 for catering LE Loan Enhancement
	maxLE_node = maxME_node.nextSibling;
	datestr_node = maxLE_node.nextSibling;
//	datestr_node = maxME_node.nextSibling;
//End   - updated on 14 Aug 2008 for catering LE Loan Enhancement
//Start - 12-APR-2011 Assistance tier adjustment
	adjSingleFamily2_node = datestr_node.nextSibling;
	adjSingleFamily3_node = adjSingleFamily2_node.nextSibling;
	adjNonSingleFamily3_node = adjSingleFamily3_node.nextSibling;
	adjNonSingleFamily_node = adjNonSingleFamily3_node.nextSibling;
//End - 12-APR-2011
				
	iereadinstitution();
	iereadcoursefee();
	iereadgrantloan();
	iereadasset();
	iereadmaxloan();
	iereadmaxAE();
	iereadmaxME();
//Start - added on 14 Aug 2008 for catering LE Loan Enhancement
	iereadmaxLE();
//End   - added on 14 Aug 2008 for catering LE Loan Enhancement
//Start - 12-APR-2011 Assistance tier adjustment
	iereadadjSingleFamily2();
	iereadadjSingleFamily3();
	iereadadjNonSingleFamily3();
	iereadadjNonSingleFamily();
//End - 12-APR-2011
	iereaddatestr();
	
	
}


function iereadinstitution()
{
	var i, k;
	var j = 0;
	
	for (k=0; k<parseInt(institutions_node.childNodes.length); k++)
	{
		arrInst_code[k] = institutions_node.childNodes[k].attributes.getNamedItem("code").value;
		arrInst_name[k] = institutions_node.childNodes[k].attributes.getNamedItem("name").value;
	}
	
	arrInst[0] = "--Select an institution--";
	arrInst[1] = "";
	for (i=2; i<(parseInt(institutions_node.childNodes.length) + 1)*2; i++)
	{
		arrInst[i] = institutions_node.childNodes[(i/2)-1].attributes.getNamedItem("name").value;
		//arrInst[i+1] = institutions_node.childNodes[(i/2)-1].attributes.getNamedItem("code").value;
		arrInst[i+1] = j;
		i++;
		j++;
	}
}


function iereadgrantloan()
{
	var i;
	for (i=0; i<grantandloan_node.childNodes.length; i++)
	{
		arrAFIBound[i] = grantandloan_node.childNodes[i].attributes.getNamedItem("lbound").value;
//Start - updated on 14 Aug 2008 for LE Loan Enhancement
		arrIncomePer[i] = grantandloan_node.childNodes[i].attributes.getNamedItem("grantpercent").value;
		arrIncomePerLE[i] = grantandloan_node.childNodes[i].attributes.getNamedItem("loanpercent").value;
//End   - updated on 14 Aug 2008 for LE Loan Enhancement
	}
}


function iereadasset()
{
	var i;
	for (i=0; i<asset_node.childNodes.length; i++)
	{
		arrAssetBound[i] = asset_node.childNodes[i].attributes.getNamedItem("lbound").value;
		arrAssetPer[i] = asset_node.childNodes[i].attributes.getNamedItem("assetpercent").value;
	}
}


function iereadcoursefee()
{
	var i, j, k;
	var temp_node;
	
	for (k=0; k<institutions_node.childNodes.length; k++)
	{
		arrCourseCode[k] = new Array();
		arrCourseFee[k] = new Array();
	}
	
	for (i=0; i<institutions_node.childNodes.length; i++)
	{
		//document.write("loop " + i + "<br>");
		temp_node = institutions_node.childNodes[i];
		for (j=0; j<temp_node.childNodes.length; j++)
		{
			
			arrCourseCode[i][j] = temp_node.childNodes[j].attributes.getNamedItem("coursecode").value;
			//alert(arrCourseCode[i][j]);
			arrCourseFee[i][j] = institutions_node.childNodes[i].childNodes[j].attributes.getNamedItem("fee").value;
			//alert(arrCourseFee[i][j]);
		}
		//document.write("<br> <br>");
	}
	
	//document.write("<br> <br> <br> <br>");
	//for (i=0; i<arrCourseCode.length; i++)
	//{
	//	document.write("loop " + i + "<br>");
	//	for (j=0; j<arrCourseCode[i].length; j++)
	//	{
	//		document.write("element " + j + "  ");
	//		document.write(arrCourseCode[i][j] + "       ");
	//		document.write(arrCourseFee[i][j]+ " <br>");
	//	}
	//	document.write("<br>");
	//}
	//document.write("<br> <br> <br> <br>");
}


function iereadmaxloan()
{
	curMaxLoan = maxloan_node.firstChild.nodeValue;
	//alert("Read max loan = " + curMaxLoan);
}


function iereadmaxME()
{
	curMaxME = maxME_node.firstChild.nodeValue;
	//alert("Read max ME = " + curMaxME);
}

function iereadmaxAE()
{
	curMaxAE = maxAE_node.firstChild.nodeValue;
	//alert("Read max AE = " + curMaxAE);
}

//Start - added on 14 Aug 2008 for catering LE Loan Enhancement
function iereadmaxLE()
{
	curMaxLE = maxLE_node.firstChild.nodeValue;
	//alert("Read max LE = " + curMaxLE);
}
//End - added on 14 Aug 2008 for catering LE Loan Enhancement
//Start - 12-APR-2011 Assistance tier adjustment
function iereadadjSingleFamily2()
{
	adjSingleFamily2 = adjSingleFamily2_node.firstChild.nodeValue;
}

function iereadadjSingleFamily3()
{
	adjSingleFamily3 = adjSingleFamily3_node.firstChild.nodeValue;
}

function iereadadjNonSingleFamily3()
{
	adjNonSingleFamily3 = adjNonSingleFamily3_node.firstChild.nodeValue;
}

function iereadadjNonSingleFamily()
{
	adjNonSingleFamily = adjNonSingleFamily_node.firstChild.nodeValue;
}
//End - 12-APR-2011

function iereaddatestr()
{
	datestr = datestr_node.firstChild.nodeValue;
	yearStart = datestr.substring(0,4) + "";
	yearLast = datestr.substring(5,7) + "";
	yearBeforeStart = parseInt(yearStart) - 1;
	
	var temp1 = parseInt(yearStart)+1 + "";
	var temp2 = parseInt(yearStart)+2 + "";
	datestr2 = temp1 + "/" + temp2.substring(2,4) + "";
	//alert("datestr = " + datestr);
	//alert("datestr2 = " + datestr2);
	//alert(yearStart);
	//alert(yearLast);
	//alert(yearBeforeStart);
}




////////////////////////////////////netscape getdata functions///////////////////////////////////////////////
function nsgetdata()
{
	//Cache "messages" element of xml file
	//var msgobj=xmlDoc.getElementsByTagName("messages")[0]
	var msgobj=xmlDoc.getElementsByTagName("calculator")[0]
	
	//REMOVE white spaces in XML file. Intended mainly for NS6/Mozilla
	for (i=0;i<msgobj.childNodes.length;i++)
	{
		if ((msgobj.childNodes[i].nodeType == 3)&&(!notWhitespace.test(msgobj.childNodes[i].nodeValue)))
		{
			// that is, if it's a whitespace text node
			msgobj.removeChild(msgobj.childNodes[i])
			i--
		}
	}

	/////////////////////////////////////////////////// Sample code //////////////////////////////////////////////////////////////////
	//var dateobj=new Date()
	//var today=dateobj.getDay() //returns 0-6. 0=Sunday
	//Get today's message and display it in DIV:
	//document.getElementById("container").innerHTML=xmlDoc.getElementsByTagName("messages")[0].childNodes[today].firstChild.nodeValue
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	
	//document.getElementById("container").innerHTML=
	//xmlDoc.getElementsByTagName("subjects")[1].childNodes[5].attributes.getNamedItem("discipline").value + "<br>" +
	//xmlDoc.getElementsByTagName("asset")[0].childNodes[3].attributes.getNamedItem("lbound").value + "<br>" + 	//work
	//xmlDoc.getElementsByTagName("fee")[0].childNodes[1].firstChild.nodeValue + "<br>" + 		//work
	//xmlDoc.getElementsByTagName("calculator")[0].childNodes[5].firstChild.nodeValue + "<br>" 	//work
	//
	//xmlDoc.getElementsByTagName("calculator")[0].childNodes[6].firstChild.nodeValue;
	//fee_node.childNodes[0].firstChild.nodeValue;
	//xmlDoc.getElementsByTagName("test1")[0].childNodes[0].firstChild.nodeValue

	//institutions_node = xmlDoc.getElementsByTagName("institutions")[0].childNodes;
	//xmlDoc.getElementsByTagName("asset")[0].childNodes[3].attributes.getNamedItem("lbound").value + "<br>" + 	//work
	//xmlDoc.getElementsByTagName("fee")[0].childNodes[1].firstChild.nodeValue + "<br>" + 		//work
	//xmlDoc.getElementsByTagName("calculator")[0].childNodes[5].firstChild.nodeValue + "<br>" 	//work
	//
	//xmlDoc.getElementsByTagName("calculator")[0].childNodes[6].firstChild.nodeValue;
	//fee_node.childNodes[0].firstChild.nodeValue;
	//xmlDoc.getElementsByTagName("test1")[0].childNodes[0].firstChild.nodeValue

	nsreadinstitution();
	nsreadcoursefee();
	nsreadgrantloan();
	nsreadasset();
	nsreadmaxloan();
	nsreadmaxAE();
	nsreadmaxME();
//Start - added on 14 Aug 2008 for catering LE Loan Enhancement
	nsreadmaxLE();
//End   - added on 14 Aug 2008 for catering LE Loan Enhancement
//Start - 12-APR-2011 Assistance tier adjustment
	nsreadadjSingleFamily2();
	nsreadadjSingleFamily3();
	nsreadadjNonSingleFamily3();
	nsreadadjNonSingleFamily();
//End - 12-APR-2011
	nsreaddatestr();
}

function nsreadinstitution()
{
	var i, k;
	var j = 0;
	
	//alert("institution = " + (xmlDoc.getElementsByTagName("institutions")[0].childNodes.length-1)/2);
	for (k=0; k<xmlDoc.getElementsByTagName("institutions")[0].childNodes.length-1; k++)
	{
		arrInst_code[k/2] = xmlDoc.getElementsByTagName("institutions")[0].childNodes[k+1].attributes.getNamedItem("code").value;
		//alert("code = " + arrInst_code[k/2]);
		arrInst_name[k/2] = xmlDoc.getElementsByTagName("institutions")[0].childNodes[k+1].attributes.getNamedItem("name").value;
		//alert("name = " + arrInst_name[k/2]);
		k++;
	}
	arrInst[0] = "--Select an institution--";
	arrInst[1] = "";
	
	for (i=2; i<xmlDoc.getElementsByTagName("institutions")[0].childNodes.length; i++)
	{
		//alert(xmlDoc.getElementsByTagName("institutions")[0].childNodes[1].attributes.getNamedItem("name").value);
		arrInst[i] = xmlDoc.getElementsByTagName("institutions")[0].childNodes[i-1].attributes.getNamedItem("name").value;
		arrInst[i+1] = j;
		//alert("name = " + arrInst[i] + "\n   value = " + arrInst[i+1]);
		j++;
		i++;
	}
	//alert("finish!!");
}


function nsreadcoursefee()
{
	var i, j, k, l;
	var temp_node;
	
	for (l=0; l<xmlDoc.getElementsByTagName("institutions")[0].childNodes.length-1; l++)
	{
		arrCourseCode[l/2] = new Array();
		arrCourseFee[l/2] = new Array();
		l++;
	}
		
	j=0;
	for (i=0; i<xmlDoc.getElementsByTagName("institutions")[0].childNodes.length-1; i++)
	{
		l=1;
		for (k=0; k<xmlDoc.getElementsByTagName("institution")[j].childNodes.length-1; k++)
		{
			arrCourseCode[i/2][k/2] = xmlDoc.getElementsByTagName("institution")[j].childNodes[l].attributes.getNamedItem("coursecode").value;
			arrCourseFee[i/2][k/2] = xmlDoc.getElementsByTagName("institution")[j].childNodes[l].attributes.getNamedItem("fee").value;
			//alert("i/2 = " + i/2 + "\n k/2 = " + k/2 + "\n coursecode = " + xmlDoc.getElementsByTagName("institution")[j].childNodes[l].attributes.getNamedItem("coursecode").value);
			l=l+2;
			k++;
		}
		j++;
		i++;
	}
}


function nsreadgrantloan()
{
	var i,j=1;
	for (i=0; i<(xmlDoc.getElementsByTagName("grantandloan")[0].childNodes.length - 1)/2; i++)
	{
		arrAFIBound[i] = xmlDoc.getElementsByTagName("grantandloan")[0].childNodes[j].attributes.getNamedItem("lbound").value;
		arrIncomePer[i] = xmlDoc.getElementsByTagName("grantandloan")[0].childNodes[j].attributes.getNamedItem("loanpercent").value;
		j = j + 2;
	}
}


function nsreadasset()
{
	var i,j=1;
	for (i=0; i<(xmlDoc.getElementsByTagName("asset")[0].childNodes.length -1)/2; i++)
	{
		arrAssetBound[i] = xmlDoc.getElementsByTagName("asset")[0].childNodes[j].attributes.getNamedItem("lbound").value;
		arrAssetPer[i] = xmlDoc.getElementsByTagName("asset")[0].childNodes[j].attributes.getNamedItem("assetpercent").value;
		j = j + 2;
	}
}


function nsreadmaxloan()
{
	curMaxLoan = xmlDoc.getElementsByTagName("maxloan")[0].firstChild.nodeValue;
	//alert("max loan = " + curMaxLoan);
}


function nsreadmaxAE()
{
	curMaxAE = xmlDoc.getElementsByTagName("maxAE")[0].firstChild.nodeValue;
}
function nsreadmaxME()
{
	curMaxME = xmlDoc.getElementsByTagName("maxME")[0].firstChild.nodeValue;
	//alert("max ME = " + curMaxME);
}

//Start - added on 14 Aug 2008 for catering LE Loan Enhancement

function nsreadmaxLE()
{
	curMaxLE = xmlDoc.getElementsByTagName("maxLE")[0].firstChild.nodeValue;
	//alert("max LE = " + curMaxLE);
}

//end - added on 14 Aug 2008 for catering LE Loan Enhancement
//Start - 12-APR-2011 Assistance tier adjustment
function nsreadadjSingleFamily2()
{
	adjSingleFamily2 = xmlDoc.getElementsByTagName("adjSingleFamily2").firstChild.nodeValue;
}

function nsreadadjSingleFamily3()
{
	adjSingleFamily3 = xmlDoc.getElementsByTagName("adjSingleFamily3").firstChild.nodeValue;
}

function nsreadadjNonSingleFamily3()
{
	adjNonSingleFamily3 = xmlDoc.getElementsByTagName("adjNonSingleFamily3").firstChild.nodeValue;
}

function nsreadadjNonSingleFamily()
{
	adjNonSingleFamily = xmlDoc.getElementsByTagName("adjNonSingleFamily").firstChild.nodeValue;
}
//End - 12-APR-2011

function nsreaddatestr()
{
	datestr = xmlDoc.getElementsByTagName("datestr")[0].firstChild.nodeValue;
	yearStart = datestr.substring(0,4) + "";
	yearLast = datestr.substring(5,7) + "";
	yearBeforeStart = parseInt(yearStart) - 1;
	
	var temp1 = parseInt(yearStart)+1 + "";
	var temp2 = parseInt(yearStart)+2 + "";
	datestr2 = temp1 + "/" + temp2.substring(2,4) + "";
	//alert("datestr = " + datestr);
	//alert("datestr2 = " + datestr2);
	//alert(yearStart);
	//alert(yearLast);
	//alert(yearBeforeStart);
}



