// This javascript is used in assisting the page display.
var bpaMoneyFormatter 				=	MochiKit.Format.numberFormatter('$###,###');
var bpaTwoDecimalNumberFormatter 	=	MochiKit.Format.numberFormatter('#.##');
var bpaPercentFormatter 			=	MochiKit.Format.numberFormatter('#%');

// need this?:  if (navigator.appName=="Microsoft Internet Explorer") chartReload();

// toggle used by calculation method to see if calculations should run
var pageIsLoaded = false;


//***************************************************************************************
//                             BEGIN CHART RELATED METHODS
//
var chartRenderers = [];	// global variable for renderers
var chartYAxisLabels = [];	// global variable for the yAxis labels.


// Setup charts and add to the chartRenderers global variable
function setupCharts(){
   var chart1LayoutOptions = {
      "xOriginIsZero": false, 
      "yNumberOfTicks": 5,
      "yTickPrecision": 0,
      "xTicks":[{label: "Year 1", v: 1},{label: "2", v: 2},{label: "3", v: 3},{label: "4", v: 4},{label: "5", v: 5}]
      
   };

   var chart1RendererOptions = {
      "padding": {left: 60, right:0, top: 10, bottom: 12},
      //"backgroundColor": Color.zirousBlueColor(),
      "colorScheme": [Color.zirousOrangeColor(), Color.zirousBlueColor()]
   };
   
   var chart3LayoutOptions = {
	"xOriginIsZero": false, 
	"yOriginIsZero": false, 
	"yTickPrecision": 2,
	"yNumberOfTicks": 5,
	"xTicks":[{label: "Year 1", v: 1},{label: "2", v: 2},{label: "3", v: 3},{label: "4", v: 4},{label: "5", v: 5}]
   };
   
   var chart1Layout = new PlotKit.Layout("bar", chart1LayoutOptions);
   var chart1Renderer = new SweetCanvasRenderer($('processExpensesCanvas'), chart1Layout, chart1RendererOptions);

   var chart2Layout = new PlotKit.Layout("bar", chart1LayoutOptions);
   var chart2Renderer = new SweetCanvasRenderer($('projectExpensesCanvas'), chart2Layout, chart1RendererOptions);

   //var chart3Layout = new PlotKit.Layout("line", {"xOriginIsZero": false, "yOriginIsZero": false, "yTickPrecision": 2,"yNumberOfTicks": 5});
   var chart3Layout = new PlotKit.Layout("line", chart3LayoutOptions);
   var chart3Renderer = new SweetCanvasRenderer($('annualRoiCanvas'), chart3Layout, chart1RendererOptions);

	chartRenderers[0] = chart1Renderer;
	chartRenderers[1] = chart2Renderer;
	chartRenderers[2] = chart3Renderer;
	
}



//IE is goofy.  When using the sliders in IE it's very choppy.  Every other browser is fine, 
//but no IE.  I added this method to reload the charts in the background, every 500 milliseconds
//instead of reloading them when the field has changed.  This makes IE much better, the others are
//ok too.  It's a compromise to get it to work good in IE and good in other browsers, instead of 
//Excellent in other browsers and ok in IE.  See the recalculateTotals() method for what I
//removed to disable the auto loading of the charts on change of the sliders.
function timedChartLoader(){
	reloadAllCharts();
	setTimeout('timedChartLoader()', 500);	
}

// reload all the charts data and call the refreshCharts method to display
function reloadAllCharts(){
	var chart1DataSets = reloadChart1DataSets();
	ttProcessExpensesGraphData = generateChartToolTip(1,chart1DataSets,'processExpenseDataDiv',bpaMoneyFormatter);
	
	var chart2DataSets = reloadChart2DataSets();
	ttProjectExpensesGraphData = generateChartToolTip(2,chart2DataSets,'projectExpenseDataDiv',bpaMoneyFormatter);

	var chart3DataSets = reloadChart3DataSets();
	ttRoiGraphData = generateChartToolTip(3,chart3DataSets,'annualRoiDataDiv',bpaTwoDecimalNumberFormatter);

	refreshCharts();
}

// 	creates a tooltip and html table with chart data for print view
//	chartNumber: 			which chart we're updating		valid values: 1,2,3
//	dataSets:				array of current and bpa datapoints used in graphs
//	chartDataTableDivId:	id of the div element to update
//  this method returns text that will be assigned as a tooltip
function generateChartToolTip(chartNumber, dataSets, chartDataTableDivId, dataValueFormatter){
    var tdSize = 60;	
	var htmlRowArray = [];
	for(var i = 0; i < dataSets.length; i++){
		var tempArray = dataSets[i];
		var tempText = "";
		for(var j = 0; j < tempArray.length; j++){
			tempText += "<td>"+dataValueFormatter(tempArray[j][1])+"</td>";
		}	
		htmlRowArray[i] = tempText;
	}

	var toolTip = "<table border='0' cellspacing='0' style='text-align:center;'>"+
					"<tr><td>&nbsp;</td><td width='"+tdSize+"px'>Y1</td><td width='"+tdSize+"px'>Y2</td><td width='"+tdSize+"px'>Y3</td><td width='"+tdSize+"px'>Y4</td><td width='"+tdSize+"px'>Y5</td></tr>";
	var chartDataTable = "<table border='1' cellspacing='0' class='dataTable printViewOnly'>"+
					"<tr><td>Year</td><td width='"+tdSize+"px'>Y1</td><td width='"+tdSize+"px'>Y2</td><td width='"+tdSize+"px'>Y3</td><td width='"+tdSize+"px'>Y4</td><td width='"+tdSize+"px'>Y5</td></tr>";
					
	switch(chartNumber){
		case 1:
            toolTip += "<tr><td style='text-align:right; white-space: nowrap;'>Current Process Expense:</td>"+htmlRowArray[0]+"</tr>";
            toolTip += "<tr><td style='text-align:right; white-space: nowrap;'>BPA Process Expense:</td>"+htmlRowArray[1]+"</tr></table>";
      		chartDataTable += "<tr><td style='white-space: nowrap;'>Current</td>"+htmlRowArray[0]+"</tr>";
			chartDataTable += "<tr><td style='white-space: nowrap;'>BPA</td>"+htmlRowArray[1]+"</tr>";
			break;
		case 2:
            toolTip += "<tr><td style='text-align:right; white-space: nowrap;'>Current Project Expense:</td>"+htmlRowArray[0]+"</tr>";
            toolTip += "<tr><td style='text-align:right; white-space: nowrap;'>BPA Project Expense:</td>"+htmlRowArray[1]+"</tr></table>";
      		chartDataTable += "<tr><td style='white-space: nowrap;'>Current</td>"+htmlRowArray[0]+"</tr>";
			chartDataTable += "<tr><td style='white-space: nowrap;'>BPA</td>"+htmlRowArray[1]+"</tr>";
			break;
		case 3:
            toolTip += "<tr><td style='text-align:right; white-space: nowrap;'>Total ROI:</td>"+htmlRowArray[0]+"</tr>";
      		chartDataTable += "<tr><td style='white-space: nowrap;'>ROI</td>"+htmlRowArray[0]+"</tr>";
			break;
	}

    toolTip += "</table>";
    chartDataTable += "</table>";
	
	document.getElementById(chartDataTableDivId).innerHTML = chartDataTable;
	
	return toolTip;
}

function reloadChartYAxisLabels(chartRenderer, highValue){

	var progression = Math.floor((highValue)/5);
	var first = 0;
	var second = progression;
	var third = second + progression;
	var fourth = third + progression;
	var fifth = fourth + progression;
	var sixth = fifth + progression;

	chartRenderer.layout.options.yTicks = [{label: '$' + addCommas(first), v: first}, {label: '$' + addCommas(second), v: second}, {label: "$" + addCommas(third), v: third}, {label: "$" + addCommas(fourth), v: fourth},{label: "$" + addCommas(fifth), v: fifth},{label: "$" + addCommas(sixth), v: sixth}];
	
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}




function reloadChart1DataSets(){
	var maxValue = 0;

	var chartRenderer = chartRenderers[0];
	var currentDataPoints = [];
	var bpaDataPoints = [];
	for(var i = 1; i <= 5; i++){
		var tempCurrentArray = [];
		
		var currentValue = bpaDataSet.getProcessCurrentExpensesByYear(i);
		if(currentValue > maxValue){
			maxValue = currentValue;
		}
		
		tempCurrentArray[0] = i;
		tempCurrentArray[1] = currentValue;
		
		currentDataPoints[currentDataPoints.length] = tempCurrentArray;
		
		currentValue = bpaDataSet.getProcessBPAExpensesByYear(i);
		if(currentValue > maxValue){
			maxValue = currentValue;
		}
		
		var tempBPAArray = [];
		tempBPAArray[0] = i;
		tempBPAArray[1] = currentValue;
		bpaDataPoints[bpaDataPoints.length] = tempBPAArray;
		
	}
	
	reloadChartYAxisLabels(chartRenderer, maxValue);	
	
	chartRenderer.layout.addDataset("currentDataPoints",currentDataPoints);
	chartRenderer.layout.addDataset("bpaDataPoints",bpaDataPoints);
	return [currentDataPoints,bpaDataPoints];
}

function reloadChart2DataSets(){
	var maxValue = 0;
	var chartRenderer = chartRenderers[1];
	var currentDataPoints = [];
	var bpaDataPoints = [];
	for(var i = 1; i <= 5; i++){
		var tempCurrentArray = [];
		
		var currentValue = bpaDataSet.getProjectCurrentExpensesByYear(i);
		if(currentValue > maxValue){
			maxValue = currentValue;
		}
		
		tempCurrentArray[0] = i;
		tempCurrentArray[1] = currentValue;
		
		currentDataPoints[currentDataPoints.length] = tempCurrentArray;
		
		var tempBPAArray = [];
		
		currentValue = bpaDataSet.getProjectBPAExpensesByYear(i);
		if(currentValue > maxValue){
			maxValue = currentValue;
		}
		
		tempBPAArray[0] = i;
		tempBPAArray[1] = currentValue;
		bpaDataPoints[bpaDataPoints.length] = tempBPAArray;
	}
	
	reloadChartYAxisLabels(chartRenderer, maxValue);
	
	chartRenderer.layout.addDataset("currentDataPoints",currentDataPoints);
	chartRenderer.layout.addDataset("bpaDataPoints",bpaDataPoints);
	return [currentDataPoints,bpaDataPoints];
}

function reloadChart3DataSets(){
	var chartRenderer = chartRenderers[2];
	var roiDataPoints = bpaDataSet.getROIDatapoints();
	chartRenderer.layout.addDataset("roiDataPoints",roiDataPoints);
	return [roiDataPoints];
}


function refreshCharts(){
	for(var i=0; i < chartRenderers.length; i++){
		chartRenderers[i].layout.evaluate();
		chartRenderers[i].clear();
		chartRenderers[i].render();
    }
}
//
//                             END CHART RELATED METHODS
//***************************************************************************************
//***************************************************************************************
//                             BEGIN GENERAL METHODS
//
/*Should be called only from the print view*/
function calcView(){
  	//document.getElementById('ROI').innerHTML += " <span style='font-size:90%'>("+MochiKit.Format.percentFormat(parseInt(document.getElementById('ROI').innerHTML.substring(2))/100)+" gain on investment)</span>";
  	toggleShownProcesses();

}

function recalculateTotals(){
	// only continue if the page has already been loaded, otherwise the onchange event for all the fields that are initialized will call this method resulting in many useless iterations
	if(pageIsLoaded){
	
		//due to issues with choppiness in rendering the charts in realtime in IE
		//I removed the reloadAllCharts() method from here.  See the timedChartLoader()
		//method for details on how the chart is being rendered now.  If you want to go
		//back to ok slider behavior in IE and Excellent behavior in all other browsers
		//uncomment this and remove the invocation of timedChartLoader() method on click of
		//the button on the initial screen.
		reloadAllCharts();

		// reload calculation results fields
		setCalculationResultsTotals(bpaDataSet);
	}
}

function getParameter (parameterName) {
   var queryString = window.top.location.search.substring(1);

   // Add "=" to the parameter name (i.e. parameterName=value)
   var parameterName = parameterName + "=";
   if ( queryString.length > 0 ) {
	  // Find the beginning of the string
	  begin = queryString.indexOf ( parameterName );
	  // If the parameter name is not found, skip it, otherwise return the value
	  if ( begin != -1 ) {
		 // Add the length (integer) to the beginning
		 begin += parameterName.length;
		 // Multiple parameters are separated by the "&" sign
		 end = queryString.indexOf ( "&" , begin );
	  if ( end == -1 ) {
		 end = queryString.length
	  }
	  // Return the string
	  return unescape ( queryString.substring ( begin, end ) );
   }
   // Return "null" if no parameter has been found
   return "null";
   }
}

function popup( url, title, options ){
	var newWin = window.open( url, title, options );
	if( !newWin ){
		newWin = window.open('',title, options);
		newWin.location.href = url;
	}
}

function zTip(msgCode){
	var stylesheetName = document.getElementById('stylesheet').href;
	if(stylesheetName.indexOf("print") < 0){
		Tip(msgCode);
	}
}

function browserCheck(){
	var browser=navigator.appName;
	if(browser == 'Microsoft Internet Explorer'){
		if (isIE7) {
		  // IE 7, mozilla, safari, opera 9
		  //alert('your browser is good!');
		} else {
		  // IE6, older browsers
		  //alert('your browser is bad!');
		  window.location.href='badBrowserVersion.html';
		}

	}else{
		//alert('non IE, your good!');
	}
	
	

}

//
//                             END GENERAL METHODS
//***************************************************************************************
//***************************************************************************************
//                             BEGIN OBJECT/PAGE TRANSFER METHODS
//
// page to object methods.  Call the recalculate method after updating the object
function setAvgCycleTimeOfProcessToObject(inputField){				bpaDataSet.avgCycleTimeOfProcess = inputField.value; 									recalculateTotals();	}
function setAvgCostPerHourOneFTECurrentProcessToObject(inputField){	bpaDataSet.avgCostPerHourOneFTECurrentProcess = inputField.value;						recalculateTotals();	}
function setProcessVolumeNumberToObject(inputField){				bpaDataSet.processVolumeNumber = inputField.value;										recalculateTotals();	}
function setProcessVolumeUnitToObject(selectField){					bpaDataSet.processVolumeUnit = selectField[selectField.selectedIndex].value;			recalculateTotals();	}
function setAvgErrorRateToObject(inputField){						bpaDataSet.avgErrorRate = inputField.value;												recalculateTotals();	}
function setAvgTimeForErrorRateHandlingToObject(inputField){		bpaDataSet.avgTimeForErrorRateHandling = inputField.value;								recalculateTotals();	}
function setProjectTimeframeToObject(inputField){					bpaDataSet.projectTimeframe = inputField.value;											recalculateTotals();	}
function setAvgCostPerHourOneFTECurrentProjectToObject(inputField){	bpaDataSet.avgCostPerHourOneFTECurrentProject = inputField.value;						recalculateTotals();	}
function setAvgNumEnhancementsPerProjectToObject(inputField){		bpaDataSet.avgNumEnhancementsPerProject = inputField.value;								recalculateTotals();	}
function setEnhancementProjectTimeframeToObject(inputField){		bpaDataSet.enhancementProjectTimeframe = inputField.value;								recalculateTotals();	}
//function setTimeBetweenEnhancementsNumberToObject(inputField){		bpaDataSet.timeBetweenEnhancementsNumber = inputField.value;						recalculateTotals();	}
//function setTimeBetweenEnhancementsUnitToObject(selectField){		bpaDataSet.timeBetweenEnhancementsUnit = selectField[selectField.selectedIndex].value;	recalculateTotals();	}
function setHardwareMiddlewareCostToObject(inputField){				bpaDataSet.hardwareMiddlewareCost = inputField.value;									recalculateTotals();	}
function setConsultingCostToObject(inputField){						bpaDataSet.consultingCost = inputField.value;											recalculateTotals();	}
function setTrainingCostToObject(inputField){						bpaDataSet.trainingCost = inputField.value;												recalculateTotals();	}
function setYear1ProcessesToObject(inputField){						bpaDataSet.year1Processes = inputField.value;											recalculateTotals();	}
function setYear2ProcessesToObject(inputField){						bpaDataSet.year2Processes = inputField.value;											recalculateTotals();	}
function setYear3ProcessesToObject(inputField){						bpaDataSet.year3Processes = inputField.value;											recalculateTotals();	}
function setYear4ProcessesToObject(inputField){						bpaDataSet.year4Processes = inputField.value;											recalculateTotals();	}
function setYear5ProcessesToObject(inputField){						bpaDataSet.year5Processes = inputField.value;											recalculateTotals();	}
function setYear2to5ProcessesToObject(inputField){					bpaDataSet.year2to5Processes = inputField.value;										recalculateTotals();	}

// generic object to page method
function setPageElementToValue(pageElementId, newValue){
	var field = document.getElementById(pageElementId);
	var fieldTagName = field.tagName;
	
	if(fieldTagName == 'INPUT'){
		// alert('found text field: ' + field);
		field.value = newValue;
	} else if(fieldTagName == 'SELECT'){
		//alert('found select dropdown: ' + field + '\nnewValue: ' + newValue);
		for(var i=0; i < field.length; i++){
			if(newValue == field.options[i].value){
				field.options[i].selected = true;
				break;
			}
		}
		field.selectedValue = newValue;
	} else if(fieldTagName == 'SPAN'){	
		//alert('found HTMLElement: ' + field + '\nnewValue: ' + newValue);
		field.innerHTML = newValue;
	} else {
		alert('Error: unknown field type.\nCurrent type:  ' + field);
	}
}

// object to page methods
function setAvgCycleTimeOfProcessToPage(value){					setPageElementToValue('avgCycleTimeOfProcess', value);				}
function setAvgCostPerHourOneFTECurrentProcessToPage(value){	setPageElementToValue('avgCostPerHourOneFTECurrentProcess', value);	}
function setProcessVolumeNumberToPage(value){					setPageElementToValue('processVolumeNumber', value);				}
function setProcessVolumeUnitToPage(value){						setPageElementToValue('processVolumeUnit', value);					}
function setAvgErrorRateToPage(value){							setPageElementToValue('avgErrorRate', value);						}
function setAvgTimeForErrorRateHandlingToPage(value){			setPageElementToValue('avgTimeForErrorRateHandling', value);		}
function setProjectTimeframeToPage(value){						setPageElementToValue('projectTimeframe', value);					}
function setAvgCostPerHourOneFTECurrentProjectToPage(value){	setPageElementToValue('avgCostPerHourOneFTECurrentProject', value);	}
function setAvgNumEnhancementsPerProjectToPage(value){			setPageElementToValue('avgNumEnhancementsPerProject', value);		}
function setEnhancementProjectTimeframeToPage(value){			setPageElementToValue('enhancementProjectTimeframe', value);		}
function setTimeBetweenEnhancementsNumberToPage(value){			setPageElementToValue('timeBetweenEnhancementsNumber', value);		}
function setTimeBetweenEnhancementsUnitToPage(value){			setPageElementToValue('timeBetweenEnhancementsUnit', value);		}
function setHardwareMiddlewareCostToPage(value){				setPageElementToValue('hardwareMiddlewareCost', value);				}
function setConsultingCostToPage(value){						setPageElementToValue('consultingCost', value);						}
function setTrainingCostToPage(value){							setPageElementToValue('trainingCost', value);						}
function setYear1ProcessesToPage(value){						setPageElementToValue('year1SliderInput', value);		setPageElementToValue('year1SliderBackingInput', value);		document.getElementById('year1SliderInput').onkeyup();		}
function setYear2ProcessesToPage(value){						setPageElementToValue('year2SliderInput', value);		setPageElementToValue('year2SliderBackingInput', value);		document.getElementById('year2SliderInput').onkeyup();		}
function setYear3ProcessesToPage(value){						setPageElementToValue('year3SliderInput', value);		setPageElementToValue('year3SliderBackingInput', value);		document.getElementById('year3SliderInput').onkeyup();		}
function setYear4ProcessesToPage(value){						setPageElementToValue('year4SliderInput', value);		setPageElementToValue('year4SliderBackingInput', value);		document.getElementById('year4SliderInput').onkeyup();		}
function setYear5ProcessesToPage(value){						setPageElementToValue('year5SliderInput', value);		setPageElementToValue('year5SliderBackingInput', value);		document.getElementById('year5SliderInput').onkeyup();		}
function setYear2to5ProcessesToPage(value){						setPageElementToValue('year2to5SliderInput', value);	setPageElementToValue('year2to5SliderBackingInput', value);		document.getElementById('year2to5SliderInput').onkeyup();	}

// Set Calculation Results to page
function setCalculationResultsCurentExpenseTotalToPage(value){		setPageElementToValue('currentTotalExpense', value);	}
function setCalculationResultsBPAExpenseTotalToPage(value){			setPageElementToValue('bpaTotalExpense', value);		}
function setCalculationResultsBPAInvestmentTotalToPage(value){		setPageElementToValue('totalInvestment', value);		}
function setCalculationResultsNetPresentValueTotalToPage(value){	setPageElementToValue('totalNPV', value);				}
function setCalculationResultsReturnOnInvestmentToPage(value){		setPageElementToValue('totalROI', value);				}

function setCalculationResultsTotals(object){
	setCalculationResultsCurentExpenseTotalToPage(object.getCurrentExpenseTotal());
	setCalculationResultsBPAExpenseTotalToPage(object.getAutomationExpenseTotal());
	setCalculationResultsBPAInvestmentTotalToPage(object.getAutomationInvestmentTotal());
	setCalculationResultsNetPresentValueTotalToPage(object.getNetPresentValueTotal());
	setCalculationResultsReturnOnInvestmentToPage(object.getReturnOnInvestmentValueTotalDecimalFormat() + " <span style='font-size:90%' class=\"screenViewOnly\">("+ object.getReturnOnInvestmentValueTotalPercentFormat() + " gain on investment)</span>");
}

function setPageValuesByObject(object){
	setAvgCycleTimeOfProcessToPage(object.avgCycleTimeOfProcess);
	setAvgCostPerHourOneFTECurrentProcessToPage(object.avgCostPerHourOneFTECurrentProcess);
	setProcessVolumeNumberToPage(object.processVolumeNumber);
	setProcessVolumeUnitToPage(object.processVolumeUnit);
	setAvgErrorRateToPage(object.avgErrorRate);
	setAvgTimeForErrorRateHandlingToPage(object.avgTimeForErrorRateHandling);
	setProjectTimeframeToPage(object.projectTimeframe);
	setAvgCostPerHourOneFTECurrentProjectToPage(object.avgCostPerHourOneFTECurrentProject);
	setAvgNumEnhancementsPerProjectToPage(object.avgNumEnhancementsPerProject);
	setEnhancementProjectTimeframeToPage(object.enhancementProjectTimeframe);
	setHardwareMiddlewareCostToPage(object.hardwareMiddlewareCost);
	setConsultingCostToPage(object.consultingCost);
	setTrainingCostToPage(object.trainingCost);
	setYear1ProcessesToPage(object.year1Processes);
	setYear2ProcessesToPage(object.year2Processes);
	setYear3ProcessesToPage(object.year3Processes);
	setYear4ProcessesToPage(object.year4Processes);
	setYear5ProcessesToPage(object.year5Processes);
	setYear2to5ProcessesToPage(object.year2to5Processes);
}
//
//                             END OBJECT/PAGE TRANSFER METHODS
//***************************************************************************************
//***************************************************************************************
//                             BEGIN PAGE VIEW CHANGING METHODS
//
function testme(){
	alert('test me');
}

function initializeScenario(type){
	if(type == 'simple'){
		bpaDataSet.simpleCalculation = true; 		
		bpaDataSet.initializeSimpleScenario();
	} else if(type == 'complex'){
		bpaDataSet.simpleCalculation = true; 		
		bpaDataSet.initializeComplexScenario();
	} else {
		alert('Error scenario type not recognized.  type = ' + type);
	}
	// must setup charts before setting the page values because the onchange of the sliderinput fields try's to refresh the chart and you get an error if they haven't been setup yet
	setupCharts();

	// setup href to switch views
	setViewSwitchHref();

	toggleShownProcesses();

	setPageValuesByObject(bpaDataSet);

	// unhide content
	document.getElementById('content').style.display='';

	//all sliders on the page have to be recalulated after unhiding the parent div to display the correct value
	recalculateSliderArray();

	pageIsLoaded = true;	//recalculateTotals only runs if this variable is true.  This saves the page from spinning away on useless recaluations while initializeing the page
	recalculateTotals();
}

// alter the things that are different between the views
// type - 'simple' or 'advanced'
function switchToSelectedView(type){
	// set pageIsLoaded to false so that values can be reset in the page without having to recalulate everything.  At the end of this method call the recalulateTotals method after resetting the pageIsLoaded variable to true
	pageIsLoaded = false;
	
	if(type == 'simple'){
		bpaDataSet.simpleCalculation = true; 		
	} else if(type == 'advanced'){
		bpaDataSet.simpleCalculation = false; 
		bpaDataSet.copy2to5ProcessesToYearValues();
		
		setYear2ProcessesToPage(bpaDataSet.year2Processes);
		setYear3ProcessesToPage(bpaDataSet.year3Processes);
		setYear4ProcessesToPage(bpaDataSet.year4Processes);
		setYear5ProcessesToPage(bpaDataSet.year5Processes);
	}			

	setViewSwitchHref();

	toggleShownProcesses();

	pageIsLoaded = true;
	recalculateTotals();
	
}



function setViewSwitchHref(){
	// switch values of href to the opposite of what is currently selected.  
	// ie. if simple is selected, make the onclick method and text refer to advanced  
	var switchViewHref = document.getElementById('switchViewHrefId');
	
	if(bpaDataSet.simpleCalculation){
		switchViewHref.onclick = function(){switchToSelectedView('advanced');}
		switchViewHref.innerHTML = 'Switch to Advanced View';
	} else {
		switchViewHref.onclick = function(){switchToSelectedView('simple');}
		switchViewHref.innerHTML = 'Switch to Simple View';
	}
	
}

// this function changes the css properties of the simpleProcesses and advancedProcesses classes to show or hide them
// function is in the shawnOlson.js file
function toggleShownProcesses(){
  	if(bpaDataSet.simpleCalculation){
  		document.getElementById('stylesheet').href = 'css/calcStyle.css';
  		document.getElementById('year2SliderCell').style.display = 'none';
  		document.getElementById('year3SliderCell').style.display = 'none';
  		document.getElementById('year4SliderCell').style.display = 'none';
  		document.getElementById('year5SliderCell').style.display = 'none';
  		document.getElementById('year2to5SliderCell').style.display = '';
  		
  	}else{
  		document.getElementById('stylesheet').href = 'css/calcStyleAdvanced.css';
  		document.getElementById('year2to5SliderCell').style.display = 'none';
  		document.getElementById('year2SliderCell').style.display = '';
  		document.getElementById('year3SliderCell').style.display = '';
  		document.getElementById('year4SliderCell').style.display = '';
  		document.getElementById('year5SliderCell').style.display = '';
  	}


	recalculateSliderArray();
}

/*Should be called only from the calc view*/	
function printView(){
	var money = MochiKit.Format.numberFormatter('$###,###');
	   
	//document.getElementById('printViewOnlyTotalInvestments').innerHTML=money(bpaDataSet.getTotalInvestment());
	document.getElementById('printViewOnlyFutureReturns').innerHTML=money(bpaDataSet.netPresentValue);
	document.getElementById('assumptionsText').innerHTML=asmpText;
	
	
	if(bpaDataSet.simpleCalculation){
		document.getElementById('stylesheet').href = 'css/printView.css';
	} else {
		document.getElementById('stylesheet').href = 'css/printViewAdvanced.css';
	}
	
}
//                             END PAGE VIEW CHANGING METHODS
//***************************************************************************************