var xmlDoc;
var IE = true;

/* ----- */
function importXML( file ) 
	{ 
	try //Internet Explorer
  		{
		xmlDoc = new ActiveXObject( "Microsoft.XMLDOM" );
		IE = true;
  		}
		catch(e)
  			{
			try //Firefox, Mozilla, Opera, etc.
    			{
    			xmlDoc = document.implementation.createDocument( "", "", null );
				IE = false;
    			}
  				catch( e ) 
					{
					alert( e.message )
					}
		  }

		  
		  

	try 
  		{
  		xmlDoc.async = false;
		xmlDoc.load( file ); 
  		}
		catch( e ) 
			{
			try
				{
				var xml = new XMLHttpRequest();
				xml.open("GET", file, false);
				xml.send(null);
				xmlDoc = xml.responseXML;			
				}
				catch( e )
					{
					alert( e.message )
					}
			
			
			
			
//			alert( e.message )
			}
	}
/* ----- */


  
/* ----- */
function loadInitalValues( xmlFile ) 
	{ 
	xmlFile = "client_000" + xmlFile +".xml";
	var path = "data/";
	importXML( path + xmlFile )
 	xmlObj = xmlDoc.documentElement; 
	parseXML();
	}
/* ----- */



/* ----- */
function getNodeLength( pathRoot, tagName, root )
	{
	if( !IE )	  
		{
		return root.getElementsByTagName( tagName ).length;
		}
		else
			{
			if( pathRoot.length > 1 )
				pathRoot += "/";
				
			return root.selectNodes( pathRoot + tagName ).length;
			}
				
	}
/* ----- */



/* ----- */
function getNode( pathRoot, tagName, root )
	{
	if( !IE )	  
		{
		return root.getElementsByTagName( tagName );
		}
		else
			{
			if( pathRoot.length > 1 )
				pathRoot += "/";

			return root.selectNodes( pathRoot + tagName);
			}

	}
/* ----- */



/* ----- */
function parseXML()
	{
	var xpDb_id;
	var xpFundName;
	var xpAssestAllocation;
	var xpMonthlyDistributionFactor;
	var xpNetAssetValue;
	var	xmDb_id;
	var	xmAnnualIncome;
	var	xmOtherIncome;
	var	xmCapitalGains;
	var	xmTaxRate;
	var	xfDb_id;
	var	xfFilterName;
	var	xfRate;

	nodeLen = getNodeLength(  "clientScenarios", "scenario", xmlDoc );
	var tagPathNodes = getNode( "clientScenarios", "scenario", xmlDoc )	
	var scenariosArray = new Array( nodeLen );
	s_HISTORY_numScenarios = nodeLen;
	
	for( i=0; i < scenariosArray.length; i++ )
		{
		scenariosArray[i]=new Array( s_HISTORY_numScenarioFields);
		}
	
	for( var i = 0; i < tagPathNodes.length; i++ )
		{
		var x = tagPathNodes[i];
		var xPortfolioFunds;
		var xMarginalTaxRates;
		var xFilters;

		scenariosArray[i][s_INDEX_monthNum] = eval( getNode( "", "xMonthNum", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][s_INDEX_annualIncome] = eval( getNode( "", "xAnnualIncome", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][s_INDEX_primeRate_Plus] = eval( getNode( "", "xPrimeRate_Plus", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][s_INDEX_primeRate] = eval( getNode( "", "xPrimeRate", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][s_INDEX_securedInvestmentLoan] = setBool( getNode( "", "xSecuredInvestmentLoan", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][s_INDEX_mAmount] =  eval(getNode( "", "xMortgageAmount", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_termYears] = eval(getNode( "", "xTermYears", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_anualInterestRate] = eval(getNode( "", "xAnualInterestRate", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_numPayments] = eval(getNode( "", "xNumPayments", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_potentialSavingsPerMonth] = eval(getNode( "", "xPotentialSavingsPerMonth", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_propertyValue] = eval(getNode( "", "xPropertyValue", x )[0].childNodes[0].nodeValue);		
		scenariosArray[i][s_INDEX_rateOfReturn] = eval(getNode( "", "xRateOfReturn", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_defaultInvestmentPrincipal] = eval(getNode( "", "xDefaultInvestmentPrincipal", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_housingGrowthRate] = eval(getNode( "", "xHousingGrowthRate", x )[0].childNodes[0].nodeValue);
		scenariosArray[i][s_INDEX_redirectPaymentsToInvestments] = setBool( getNode( "", "xRedirectPaymentsToInvestments", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][s_INDEX_updateDate] = getNode( "", "xUpdateDate", x )[0].childNodes[0].nodeValue;

		var tempRate = scenariosArray[i][s_INDEX_primeRate]
		
		if( !scenariosArray[i][s_INDEX_securedInvestmentLoan] )
			tempRate += scenariosArray[i][s_INDEX_primeRate_Plus];

		scenariosArray[i][s_INDEX_loanPrincipal] = getLoanAmount( scenariosArray[i][s_INDEX_potentialSavingsPerMonth], tempRate );	
		if( !IE ) 
			{
			xPortfolioFunds = getNode( "", "xPortfolioFunds", x );
			xPortfolioFunds = getNode( "", "xFund", xPortfolioFunds[0] );

			xMarginalTaxRates = getNode( "", "xMarginalTaxRates", x );
			xMarginalTaxRates = getNode( "", "xRate", xMarginalTaxRates[0] );

			xFilters = getNode( "", "xFilters", x );
			xFilters = getNode( "", "xFilter", xFilters[0] );
			}
			else
				{
				xPortfolioFunds = getNode( "", "xPortfolioFunds", x )[0].childNodes;
				xMarginalTaxRates = getNode( "", "xMarginalTaxRates", x )[0].childNodes;
				xFilters = getNode( "", "xFilters", x )[0].childNodes;
				}

		scenariosArray[i][ s_INDEX_fundArr ] = new Array(); 
		for( var j = 0; j < xPortfolioFunds.length; j++ )
			{		
			xpDb_id = getNode( "", "xDb_id", xPortfolioFunds[j] )[0].childNodes[0].nodeValue;
			xpFundName = getNode( "", "xFundName", xPortfolioFunds[j] )[0].childNodes[0].nodeValue;
			xpAssestAllocation = eval( getNode( "", "xAssestAllocation", xPortfolioFunds[j] )[0].childNodes[0].nodeValue );
			xpMonthlyDistributionFactor = eval( getNode( "", "xMonthlyDistributionFactor", xPortfolioFunds[j] )[0].childNodes[0].nodeValue );
			xpNetAssetValue = eval( getNode( "", "xNetAssetValue", xPortfolioFunds[j] )[0].childNodes[0].nodeValue );

			scenariosArray[i][ s_INDEX_fundArr ][ j ] = new portfolioFund( xpDb_id, xpFundName, xpAssestAllocation, xpMonthlyDistributionFactor, xpNetAssetValue, "date", scenariosArray[i][s_INDEX_loanPrincipal] );
			}


		scenariosArray[i][ s_INDEX_taxRateArr ] = new Array(); 
		for( var j = 0; j < xMarginalTaxRates.length; j++ )
			{		
			xmDb_id = getNode( "", "xDb_id", xMarginalTaxRates[j] )[0].childNodes[0].nodeValue; 
			xmAnnualIncome = eval( getNode( "", "xAnnualIncome", xMarginalTaxRates[j] )[0].childNodes[0].nodeValue );
			xmOtherIncome = eval( getNode( "", "xOtherIncome", xMarginalTaxRates[j] )[0].childNodes[0].nodeValue );
			xmCapitalGains = eval( getNode( "", "xCapitalGains", xMarginalTaxRates[j] )[0].childNodes[0].nodeValue ); 
			xmTaxRate = eval( getNode( "", "xCapitalGains", xMarginalTaxRates[j] )[0].childNodes[0].nodeValue );

			scenariosArray[i][ s_INDEX_taxRateArr ][ j ] = new marginalTaxRateAttributes( xmDb_id, xmAnnualIncome, xmOtherIncome, xmCapitalGains );
			}


		scenariosArray[i][ s_INDEX_filtersArr ] = new Array(); 
		for( var j = 0; j < xFilters.length; j++ )
			{		

			xfDb_id = getNode( "", "xDb_id", xFilters[j] )[0].childNodes[0].nodeValue;
			xfFilterName = getNode( "", "xFilterName", xFilters[j] )[0].childNodes[0].nodeValue;
			xfRate = eval( getNode( "", "xRate", xFilters[j] )[0].childNodes[0].nodeValue);

			scenariosArray[i][ s_INDEX_filtersArr ][ j ] = new moneyFilters( xfDb_id, xfFilterName, xfRate );
			}


		scenariosArray[i][ s_INDEX_enableMortgageAccelerator ] = setBool( getNode( "", "xEnableMortgageAccelerator", x )[0].childNodes[0].nodeValue );
		scenariosArray[i][ s_INDEX_monthlyPayment ] = 0;
		}

	global_historyArr = scenariosArray;
	global_pFunds = scenariosArray[0][s_INDEX_fundArr]
	global_lMarginalTRA = scenariosArray[0][s_INDEX_taxRateArr]
	global_annualIncome = scenariosArray[0][s_INDEX_annualIncome];
	global_primeRate_Plus = scenariosArray[0][s_INDEX_primeRate_Plus];
	global_primeRate = scenariosArray[0][s_INDEX_primeRate];
	global_securedInvestmentLoan = scenariosArray[0][s_INDEX_securedInvestmentLoan];
	global_potentialSavingsPerMonth = scenariosArray[0][s_INDEX_potentialSavingsPerMonth];
	global_propertyValue = scenariosArray[0][s_INDEX_propertyValue];
	global_rateOfReturn = scenariosArray[0][s_INDEX_rateOfReturn];
	global_housingGrowthRate = scenariosArray[0][s_INDEX_housingGrowthRate];
	global_redirectPaymentsToInvestments = scenariosArray[0][s_INDEX_redirectPaymentsToInvestments];
	global_housingGrowthRate = scenariosArray[0][s_INDEX_housingGrowthRate];
	global_startDate = scenariosArray[0][s_INDEX_updateDate];
	var tempRate = global_primeRate
	if( !global_securedInvestmentLoan )
		tempRate += global_primeRate_Plus;

	global_investmentLoanPrincipal = getLoanAmount( global_potentialSavingsPerMonth, tempRate );	
	}
/* ----- */




