function calculateCollegeCosts(formObject) {
	// alert("test in ccc");
	var currentPublicCost=6585;
	var currentPrivateCost=25143;
	var currentPublicInflationRate=.064;
	var currentPrivateInflationRate=.059;
	// alert("formObject is " + formObject);

	// alert(formObject.collegeType.value);
	if(formObject.collegeType.value=='public') {
		costToUse=currentPublicCost;
		rateToUse=currentPublicInflationRate
	}
	else {
		costToUse=currentPrivateCost;
		rateToUse=currentPrivateInflationRate
	}

	var d = new Date();
	var curr_year = d.getFullYear();
	// alert("curr_year is " + curr_year);

	var numberOfYears=getNumberOfYears(formObject);
	
	// alert("numberOfYears is " + numberOfYears);
	var compoundedRate = Math.pow(1+rateToUse,numberOfYears);
	// alert("compoundedRate is " + compoundedRate);

	// First Year Tuition
	var estimatedCollegeCosts=costToUse*compoundedRate;
	// alert("estimatedCollegeCosts is " + estimatedCollegeCosts);
	// Second Year Tuition
	var estimatedCollegeCosts2=estimatedCollegeCosts*Math.pow(1+rateToUse,1);
	// Third Year Tuition
	var estimatedCollegeCosts3=estimatedCollegeCosts*Math.pow(1+rateToUse,2);
	// Fourth Year Tuition
	var estimatedCollegeCosts4=estimatedCollegeCosts*Math.pow(1+rateToUse,3);
	var totalEstimatedCollegeCosts=estimatedCollegeCosts+estimatedCollegeCosts2+estimatedCollegeCosts3+estimatedCollegeCosts4;

	document.getElementById("estimatedCollegeCosts").innerHTML=formatCurrency(totalEstimatedCollegeCosts);

	if(document.getElementById("collegeCostsForm_updateValue"))
		document.getElementById("collegeCostsForm_updateValue").innerHTML=formatCurrency(totalEstimatedCollegeCosts);
}

function getNumberOfYears(formObject) {
	if(formObject.yearOfBirth)
		return getNumberOfYearsFromYOB(formObject.yearOfBirth.value);

	if(formObject.childAge)
		return 18-parseFloat(formObject.childAge.value);

	return 18;
}


function compareSavingsPlans(formObject) {
	// alert("test in csp");
	var d = new Date();
	var curr_year = d.getFullYear();
	// alert("curr_year is " + curr_year);

	var numberOfYears=getNumberOfYears(formObject);
	var taxableIncomeRate=0.3;
	// alert("test in csp5");

	var annualContributionToUse_Kidira=parseFloat(formObject.annualContribution.value);
	var annualContributionToUse_529=parseFloat(formObject.annualContribution.value)*(1-taxableIncomeRate);
	var rateToUse=parseFloat(formObject.interestReturn.value)/100;

	// alert("annualContributionToUse is " + annualContributionToUse_Kidira)	
	// alert("rateToUse is " + rateToUse)	


	var totalEstimate_Kidira=calculateTotalInvestment(0,annualContributionToUse_Kidira,rateToUse,null,numberOfYears);
	var totalEstimate_529=calculateTotalInvestment(0,annualContributionToUse_529,rateToUse,null,numberOfYears);
	
	var totalEstimate_Difference=totalEstimate_Kidira-totalEstimate_529;
	// alert("totalEstimate_Kidira is " + totalEstimate_Kidira);
	// alert("totalEstimate_529 is " + totalEstimate_529);	


	// Update Text Divs


		document.getElementById("divtext_Percent").innerHTML=formObject.interestReturn.value;
		document.getElementById("divtext_Years").innerHTML=numberOfYears;
		document.getElementById("divtext_TaxableIncomeRate").innerHTML=taxableIncomeRate*100;

		document.getElementById("annualContribution_Kidira").innerHTML=formatCurrency(annualContributionToUse_Kidira);
		document.getElementById("annualContribution_529").innerHTML=formatCurrency(annualContributionToUse_529) + "<sup>1</sup>";
		document.getElementById("investmentEstimate_Kidira").innerHTML=formatCurrency(totalEstimate_Kidira);
		document.getElementById("investmentEstimate_529").innerHTML=formatCurrency(totalEstimate_529);
		document.getElementById("difference_Kidira").innerHTML=formatCurrency(totalEstimate_Difference) + " (+" + parseInt((totalEstimate_Difference/totalEstimate_529)*100,0) + "%)";

		if(document.getElementById("compareSavingsPlans_updateValue"))
			document.getElementById("compareSavingsPlans_updateValue").innerHTML=formatCurrency(totalEstimate_Difference);
}

function howManySupporters(thisObject) {
	var collegeFormName="collegeCostsForm";
	var collegeForm=document.forms[collegeFormName];

	var earningsFormName="form_howMuchEarn-supporters";
	var earningsForm=document.forms[earningsFormName];

	var thisObjectFormName
	var otherObjectFormName
	var thisObjectForm
	var otherObjectForm

	var flag_displaySupporterAlert=true;
	// flag_displaySupporterAlert=false;

	if(collegeForm && earningsForm) {
		// alert("if c and e")			
		if(thisObject)
			var thisObjectFormName=thisObject.form.name

		if(thisObjectFormName==collegeFormName) {
			thisObjectForm=collegeForm;
			otherObjectForm=earningsForm;
		}
		else if(thisObjectFormName==earningsFormName) {
			thisObjectForm=earningsForm;
			otherObjectForm=collegeForm;
		}

		// Update otherObjectFrom age
			otherObjectForm.childAge.value=thisObjectForm.childAge.value

		// Execute other form
			if(thisObjectFormName==collegeFormName) {
				estimateEarnings(otherObjectForm);
			}
			else if(thisObjectFormName==earningsFormName) {
				calculateCollegeCosts(otherObjectForm);
			}

		// Update # supporters until earnings>expenses or until max	
			if(thisObjectFormName==collegeFormName) {

				// Start at 0
				earningsForm.numSupporters.selectedIndex=0;
				estimateEarnings(earningsForm);
				var count=1;

				// alert("before while")			
				var expensesAmount=Number(document.getElementById("estimatedCollegeCosts").innerHTML.replace(/[^0-9\.]+/g,""));			
				var earningsAmount=Number(document.getElementById("estimatedEarnings").innerHTML.replace(/[^0-9\.]+/g,""));
				// alert("expensesAmount is " + expensesAmount);
				// alert("earningsAmount is " + earningsAmount);

				while(earningsForm.numSupporters.selectedIndex<earningsForm.numSupporters.length && earningsAmount<expensesAmount) {
					// alert("in while")			
					earningsForm.numSupporters.selectedIndex=earningsForm.numSupporters.selectedIndex+1;
					estimateEarnings(earningsForm);
					earningsAmount=Number(document.getElementById("estimatedEarnings").innerHTML.replace(/[^0-9\.]+/g,""));			
				}
			
			var suggestedSupporterValue=earningsForm.numSupporters[earningsForm.numSupporters.selectedIndex].value
			// Update persistent value
				var pvObject=document.getElementById("howManySupporters_persistentValue");
				if(pvObject)
					pvObject.innerHTML=suggestedSupporterValue;

				if(flag_displaySupporterAlert)
					alert("Based on your information and college expenses, we recommend at least\n\n" + suggestedSupporterValue + " supporters\n\nfor you to achieve this goal.");

				if(document.getElementById("howManySupporters_updateValue1"))
					document.getElementById("howManySupporters_updateValue1").innerHTML=suggestedSupporterValue;
			}

		// alert("99");
	}
}

function getNumberOfYearsFromYOB(yobValue) {
	var d = new Date();
	var curr_year = d.getFullYear();

	return (parseFloat(yobValue) + 18 - curr_year +1);
}

function calculateSavings(formObject) {
	var annualContributionToUse=parseFloat(formObject.annualContribution.value);
	var rateToUse=parseFloat(formObject.rateOfReturn.value)/100;
	//alert("annualContributionToUse is " + annualContributionToUse);
	//alert("rateToUse is " + rateToUse);

	var numberOfYears=getNumberOfYears(formObject);
	// alert("numberOfYears is " + numberOfYears);

	var totalSavings=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,numberOfYears);

	document.getElementById("estimatedSavings").innerHTML=formatCurrency(totalSavings);
	document.getElementById("estimatedSavings2").innerHTML=formatCurrency(totalSavings);
}

function calculateTotalInvestment(principalAmount,annualContribution,returnRateToUse,inflationRateToUse,numberOfYears) {
	var totalInvestment=principalAmount;
	var useYearLoopFlag=true;
	// alert("numberOfYears is " + numberOfYears);

	if(useYearLoopFlag) {
		// alert("useYearLoopFlag is " + useYearLoopFlag);
		for (var i=0;i<=numberOfYears;i++) {
			// alert("totalSavings0 is now " + totalInvestment);
			totalInvestment=(totalInvestment)*(1+returnRateToUse);
			// alert("totalSavings5 is now " + totalInvestment);

			totalInvestment+=annualContribution;
			// alert("totalSavings10 is now " + totalSavings);
		}
	}
	else {
		var compoundedRate = Math.pow(1+returnRateToUse,numberOfYears);
		// alert("compoundedRate is " + compoundedRate);

		// alert("totalSavings is " + totalSavings);

		// First Year Tuition
		totalInvestment=totalInvestment+(annualContribution*compoundedRate);

	}

	// alert("totalInvestment is " + totalInvestment);
	return totalInvestment;
}

function estimateEarningsMonthly(formObject) {
	var numSupporters=parseFloat(formObject.numSupporters.value);
	var commissionRate=getCommissionRateFromNumSupporters(numSupporters);

	var annualContributionToUse=numSupporters*parseFloat(formObject.perSupporter.value)*commissionRate*12;
	var rateToUse=parseFloat(formObject.rateOfReturn.value)/100;

	/**
	alert("commissionRate is " + commissionRate);
	alert("annualContributionToUse is " + annualContributionToUse);
	alert("getNumberOfYearsUntil(formObject,18) is " + getNumberOfYearsUntil(formObject,18));
	alert("rateToUse is " + rateToUse);
	**/
	if(formObject.childAge)
		var totalSavings=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,getNumberOfYearsUntil(formObject,18));
	else
		var totalSavings=numSupporters*parseFloat(formObject.perSupporter.value);

	var elementToUpdate="estimatedMonthlyEarnings";
	var elementToUpdate_footer="perSupporterFooterValueMonthly";

	if(document.getElementById(elementToUpdate_footer))
		document.getElementById(elementToUpdate_footer).innerHTML=formObject.perSupporter.value;
	
	document.getElementById(elementToUpdate).innerHTML=formatCurrency(totalSavings);
}

function getCommissionRateFromNumSupporters(numSupporters) {
	var commissionRate=.6;
	
	if(numSupporters>=30)
		commissionRate=.9;
	else if(numSupporters>=20)
		commissionRate=.8;
	else if(numSupporters>=10)
		commissionRate=.7;

	return commissionRate;
}

function estimateEarnings(formObject) {
	var numSupporters=parseFloat(formObject.numSupporters.value);
	var commissionRate=getCommissionRateFromNumSupporters(numSupporters);

	var annualContributionToUse=numSupporters*parseFloat(formObject.perSupporter.value)*commissionRate*12;
	var rateToUse=parseFloat(formObject.rateOfReturn.value)/100;

	/**
	alert("commissionRate is " + commissionRate);
	alert("annualContributionToUse is " + annualContributionToUse);
	alert("getNumberOfYearsUntil(formObject,18) is " + getNumberOfYearsUntil(formObject,18));
	alert("rateToUse is " + rateToUse);
	**/


	var elementToUpdate;
	var updateValue1="howMuchEarn_updateValue1";
	var elementToUpdate_footer;

	if(formObject.childAge) {
		var totalSavings=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,getNumberOfYearsUntil(formObject,18));

		elementToUpdate="estimatedEarnings";
		elementToUpdate_footer="perSupporterFooterValue";
	}
	else { //Monthly
		var totalSavings=numSupporters*parseFloat(formObject.perSupporter.value);

		elementToUpdate="estimatedEarningsMonthly";
		elementToUpdate_footer="perSupporterFooterValueMonthly";
		updateValue1="howMuchEarn-monthly_updateValue1";
	}

	if(document.getElementById(updateValue1))
		document.getElementById(updateValue1).innerHTML=formatCurrency(totalSavings);

	if(document.getElementById(elementToUpdate_footer))
		document.getElementById(elementToUpdate_footer).innerHTML=formObject.perSupporter.value;
	
	if(document.getElementById(elementToUpdate))
		document.getElementById(elementToUpdate).innerHTML=formatCurrency(totalSavings);

	if(document.getElementById("howManySupporters_updateValue1"))
		document.getElementById("howManySupporters_updateValue1").innerHTML=numSupporters;

}

function getNumberOfYearsUntil(formObject,maxAge) {
	var d = new Date();
	var currYear=d.getFullYear();

	if(formObject.yearOfBirth)
		return parseFloat(formObject.yearOfBirth.value)+maxAge-currYear
	if(formObject.childAge)
		return maxAge-parseFloat(formObject.childAge.value);

	return maxAge;
}

function applyAgeToOneForm(formName,ageToApply) {
	var formObject=document.forms[formName]
	if(formObject && formObject.childAge) {
		formObject.childAge.value=ageToApply;
		formObject.submit();

		/**
		// Execute FormJsCall (due to formSubmit not working properly)
alert("formObject.name is " + formObject.name);
		if(formObject.name=="compareSavingsPlansForm") {
			compareSavingsPlans(formObject);
		}
		else if(formObject.name=="collegeCostsForm") {
			calculateCollegeCosts(formObject);
		}
		else if(formObject.name=="estimateEarningsForm") {
			estimateEarnings(formObject);
		}
		else if(formObject.name=="whySaveNow") {
			// calculateInvestWhen(formObject);
alert("about to submit");
			formObject.submit();
alert("after submit");

		}
		**/

	}
}

function applyAgeAcrossAllForms(formObject) {
	// alert("in applyAgeAcrossAllForms");
	if(formObject.childAge) {
		var ageToApply=formObject.childAge.value;
		
		// alert("in applyAgeAcrossAllForms, ageToApply is " + ageToApply);
		if(formObject.name=="compareSavingsPlansForm" || formObject.name=="form_compareSavingsPlans" || formObject.name=="form_compareSavingsPlans-all" || formObject.name=="form_compareSavingsPlans-529") {
			applyAgeToOneForm("collegeCostsForm",ageToApply);
			applyAgeToOneForm("estimateEarningsForm",ageToApply);
			
			applyAgeToOneForm("form_howMuchEarn",ageToApply);
			applyAgeToOneForm("form_howMuchEarn-supporters",ageToApply);
			applyAgeToOneForm("form_howMuchEarn-monthly",ageToApply);

			applyAgeToOneForm("whySaveNow",ageToApply);
		}
		else if(formObject.name=="collegeCostsForm") {
			applyAgeToOneForm("compareSavingsPlansForm",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans-all",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans-529",ageToApply);

			applyAgeToOneForm("estimateEarningsForm",ageToApply);
			applyAgeToOneForm("form_howMuchEarn",ageToApply);
			applyAgeToOneForm("form_howMuchEarn-supporters",ageToApply);
			applyAgeToOneForm("form_howMuchEarn-monthly",ageToApply);

			applyAgeToOneForm("whySaveNow",ageToApply);
		}
		else if(formObject.name=="estimateEarningsForm" || formObject.name=="form_howMuchEarn" || formObject.name=="form_howMuchEarn-supporters" || formObject.name=="form_howMuchEarn-monthly") {
			applyAgeToOneForm("compareSavingsPlansForm",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans-all",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans-529",ageToApply);

			applyAgeToOneForm("collegeCostsForm",ageToApply);
			applyAgeToOneForm("whySaveNow",ageToApply);
		}
		else if(formObject.name=="whySaveNow") {
			applyAgeToOneForm("compareSavingsPlansForm",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans-all",ageToApply);
			applyAgeToOneForm("form_compareSavingsPlans-529",ageToApply);

			applyAgeToOneForm("collegeCostsForm",ageToApply);

			applyAgeToOneForm("estimateEarningsForm",ageToApply);
			applyAgeToOneForm("form_howMuchEarn",ageToApply);
			applyAgeToOneForm("form_howMuchEarn-supporters",ageToApply);
			applyAgeToOneForm("form_howMuchEarn-monthly",ageToApply);
		}
	}
}

function calculateInvestWhen(formObject) {
	// alert("in calculateInvestWhen");
	var collegeAge=18;
	var retirementAge=65;

	var startLater_NumOfYears=parseFloat(formObject.investWhen.value);

	var annualContributionToUse=5000;
	var rateToUse=.12; //parseFloat(formObject.rateOfReturn.value)/100;
	
	// alert("in calculateInvestWhen4");
	var yearsUntilCollege=getNumberOfYearsUntil(formObject,collegeAge);
	var yearsUntilRetirement=getNumberOfYearsUntil(formObject,retirementAge);

	// alert("yearsUntilCollege is " + yearsUntilCollege);
	// alert("yearsUntilRetirement is " + yearsUntilRetirement);

	var startToday_AtCollege=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,yearsUntilCollege);
	var startToday_AtRetirement=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,yearsUntilRetirement);

	var startLater_AtCollege=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,yearsUntilCollege-startLater_NumOfYears);
	var startLater_AtRetirement=calculateTotalInvestment(0,annualContributionToUse,rateToUse,null,yearsUntilRetirement-startLater_NumOfYears);

	var difference_AtCollege=startToday_AtCollege-startLater_AtCollege;
	var difference_AtRetirement=startToday_AtRetirement-startLater_AtRetirement;

	/**
	alert("startToday_AtCollege is " + startToday_AtCollege);
	alert("startToday_AtRetirement is " + startToday_AtRetirement);

	alert("startLater_AtCollege is " + startLater_AtCollege);
	alert("startLater_AtRetirement is " + startLater_AtRetirement);
	**/
	
	document.getElementById("startToday_AtCollege").innerHTML=formatCurrency(startToday_AtCollege);
	document.getElementById("startToday_AtRetirement").innerHTML=formatCurrency(startToday_AtRetirement);
	document.getElementById("startLater_AtCollege").innerHTML=formatCurrency(startLater_AtCollege);
	document.getElementById("startLater_AtRetirement").innerHTML=formatCurrency(startLater_AtRetirement);
	document.getElementById("difference_AtCollege").innerHTML=formatCurrency(difference_AtCollege);
	document.getElementById("difference_AtRetirement").innerHTML=formatCurrency(difference_AtRetirement);


	if(document.getElementById("whySaveNow_updateValue1"))
		document.getElementById("whySaveNow_updateValue1").innerHTML=formatCurrency(difference_AtCollege);
	if(document.getElementById("whySaveNow_updateValue2"))
		document.getElementById("whySaveNow_updateValue2").innerHTML=formatCurrency(difference_AtRetirement);
}


function formatCurrencyRound(num,roundFlag) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
// alert("cents are "  +cents);
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	if(roundFlag)
		return (((sign)?'':'-') + '$' + num /**+ '.' + cents**/);
	else
		return (((sign)?'':'-') + '$' + num + '.' + cents);
	
}

function formatCurrency(num) {
	return formatCurrencyRound(num,true)
}

	function metatag_update(metatagName,newValue,appendFlag) {
		// alert("in metatag_update BEG");
		// First, get the array of meta-tag elements
		if(metatagName!=null) {

			var metatags = document.getElementsByTagName("meta");
			var flag_MetatagUpdated=false;

			// Iterate through the array, listing them all
			// Update only the metatagName metatag

			// alert("metatagName = " + metatagName);
			// alert("newValue = " + newValue);

			// alert("metatags.length = " + metatags.length);

			for (var cnt = 0; cnt < metatags.length; cnt++) {
				var metatag_name = metatags[cnt].getAttribute("name");
				var metatag_content = metatags[cnt].getAttribute("content");

				//alert("current name = " + metatag_name);
				//alert("current content = " + metatag_content);

				// List the original meta tag name=content
				// alert(metatag_name + " = " + metatag_content);

				// Update the Title meta tag

				// alert("new metatag name is " + metatags[cnt].getAttribute("name"));
				// alert("metatagName = " + metatagName);

				if (metatags[cnt].getAttribute("name")!=null && metatags[cnt].getAttribute("name").toLowerCase() == metatagName.toLowerCase()) {
					// alert("in IF");
					if(appendFlag)
						metatags[cnt].setAttribute("content", content + newValue);
					else
						metatags[cnt].setAttribute("content", newValue);

					flag_MetatagUpdated=true;				
					// alert("new metatag content is " + metatags[cnt].getAttribute("content"));
					}

				}

			// alert("flag_MetatagUpdated is " + flag_MetatagUpdated);

			if(!flag_MetatagUpdated) {
				// Add Meta Tag

				var metatagToAdd;
				if (document.createElement && (metatagToAdd = document.createElement('meta'))) {
					// set properties
					metatagToAdd.name = metatagName;
					metatagToAdd.content = newValue;

					// now add the meta element to the head
					document.getElementsByTagName('head').item(0).appendChild(metatagToAdd);
					// alert("in metatag_update ADD SUCCESS");
				}


			}
		}
	// alert("in metatag_update END");
	}


function kidira_leaveMessage_Disable() {
	leaveMessage_needToConfirm=false;
	// alert("leaveMessage_needToConfirm is now " + leaveMessage_needToConfirm);
}

function kidira_leaveMessage_Enable() {
	leaveMessage_needToConfirm=true;
	// alert("leaveMessage_needToConfirm is now " + leaveMessage_needToConfirm);
}

function kidira_leaveMessage(){
	// alert("lhref is " + location.href);
	// alert("leaveMessage_needToConfirm is " + leaveMessage_needToConfirm);
	// alert("leaveMessage_needToConfirm in klm is " + leaveMessage_needToConfirm);
	if(leaveMessage_needToConfirm){
		if(leaveMessage_Message==null) {
			leaveMessage_Message="Are you sure you want to leave this page and not sign up?\n";
			leaveMessage_Message="Remember, a Kid IRAŽ is the best way for kids to save and grow their money.";
			leaveMessage_Message+="\nIt's tax free, costs nothing, and it's easy to do. Press 'Cancel' to sign up today!";
		}

		return leaveMessage_Message;
	}
}
