
//EXPENSE ANALYZER FUNCTIONS AND DATA VALIDATION CODE

/**********************************************************************
  BEGIN MODAL DIALOG CODE
***********************************************************************/
// Global for brower version branching.
var Nav4 = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))

// One object tracks the current modal dialog opened from this window.
var dialogWin = new Object()

// Generate a modal dialog.
// Parameters:
//    url -- URL of the page/frameset to be loaded into dialog
//    width -- pixel width of the dialog window
//    height -- pixel height of the dialog window
//    returnFunc -- reference to the function (on this page)
//                  that is to act on the data returned from the dialog
//    args -- [optional] any data you need to pass to the dialog
function openDialog(url, width, height, returnFunc, args) {
	if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
		// Initialize properties of the modal dialog object.
		dialogWin.returnFunc = returnFunc
		dialogWin.returnedValue = ""
		dialogWin.args = args
		dialogWin.url = url
		dialogWin.width = width
		dialogWin.height = height
		// Keep name unique so Navigator doesn't overwrite an existing dialog.
		dialogWin.name = (new Date()).getSeconds().toString()
		// Assemble window attributes and try to center the dialog.
		if (Nav4) {
			// Center on the main window.
			dialogWin.left = window.screenX +
			   ((window.outerWidth - dialogWin.width) / 2)
			dialogWin.top = window.screenY +
			   ((window.outerHeight - dialogWin.height) / 2)
			var attr = "screenX=" + dialogWin.left +
			   ",screenY=" + dialogWin.top + ",resizable=no,width=" +
			   dialogWin.width + ",height=" + dialogWin.height
		} else {
			// The best we can do is center in screen.
			dialogWin.left = (screen.width - dialogWin.width) / 2
			dialogWin.top = (screen.height - dialogWin.height) / 2
			var attr = "left=" + dialogWin.left + ",top=" +
			   dialogWin.top + ",resizable=yes,width=" + dialogWin.width +
			   ",height=" + dialogWin.height
		}

		// Generate the dialog and make sure it has focus.
		dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr)
		dialogWin.win.focus()
	} else {
		dialogWin.win.focus()
	}
}

// Event handler to inhibit Navigator form element
// and IE link activity when dialog window is active.
function deadend() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus()
		return false
	}
}

// Since links in IE4 cannot be disabled, preserve
// IE link onclick event handlers while they're "disabled."
// Restore when re-enabling the main window.
var IELinkClicks

// Disable form elements and links in all frames for IE.
function disableForms() {
	IELinkClicks = new Array()
	for (var h = 0; h < frames.length; h++) {
		for (var i = 0; i < frames[h].document.forms.length; i++) {
			for (var j = 0; j < frames[h].document.forms[i].elements.length; j++) {
				frames[h].document.forms[i].elements[j].disabled = true
			}
		}
		IELinkClicks[h] = new Array()
		for (i = 0; i < frames[h].document.links.length; i++) {
			IELinkClicks[h][i] = frames[h].document.links[i].onclick
			frames[h].document.links[i].onclick = deadend
		}
	}
}

// Restore IE form elements and links to normal behavior.
function enableForms() {
	for (var h = 0; h < frames.length; h++) {
		for (var i = 0; i < frames[h].document.forms.length; i++) {
			for (var j = 0; j < frames[h].document.forms[i].elements.length; j++) {
				frames[h].document.forms[i].elements[j].disabled = false
			}
		}
		for (i = 0; i < frames[h].document.links.length; i++) {
			frames[h].document.links[i].onclick = IELinkClicks[h][i]
		}
	}
}

// Grab all Navigator events that might get through to form
// elements while dialog is open. For IE, disable form elements.
function blockEvents() {
	if (Nav4) {
		window.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
		window.onclick = deadend
	} else {
		disableForms()
	}
	window.onfocus = checkModal
}
// As dialog closes, restore the main window's original
// event mechanisms.
function unblockEvents() {
	if (Nav4) {
		window.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
		window.onclick = null
		window.onfocus = null
	} else {
		enableForms()
	}
}

// Invoked by onFocus event handler of EVERY frame,
// return focus to dialog window if it's open.
function checkModal() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus()
	}
}

/**************************
  END MODAL DIALOG CODE
**************************/

function GlossaryWin(Glossary_Term) {
	window.open(Glossary_Term,'GlosWin','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=550,height=200');
} // End GlossaryWin()

function DiffFundTypes(){
	if ((document.expenses_form.FundType1.value != document.expenses_form.FundType2.value) && (document.expenses_form.FundType2.value != "")){
		alert("You'll get the best cost comparison if you use similar fund types.");
	}
}

function DiffFieldEntries(thisType){
	if (thisType == "FundType") {
		if ((document.expenses_form.FundType1.value != document.expenses_form.FundType2.value) && (document.expenses_form.FundType2.value != 0)){
			alert("You'll get the best cost comparison if you use similar fund types.");
		}
	}else if (thisType == "Holding") {
		if ((document.expenses_form.holding_period1.value != document.expenses_form.holding_period2.value) && (document.expenses_form.holding_period2.value != 0)){
			alert("You'll get the best cost comparison if you use similar holding periods.");
		}
	}else if (thisType == "II") {
		if ((document.expenses_form.dollar_amount1.value != document.expenses_form.dollar_amount2.value) && (document.expenses_form.dollar_amount2.value != 0)){
			alert("You'll get the best cost comparison if the investment amounts are equal.");
		}
	}else if (thisType == "ROR") {
		if ((document.expenses_form.ror1.value != document.expenses_form.ror2.value) && (document.expenses_form.ror2.value != 0)){
			alert("You'll get the best cost comparison if you use similar rates of return.");
		}
	}
}

function Check_DollarAmt(thisFund){
var DollarAmtWarning = false;
var DollarAmtWarningStr = "";
var DollarAmtFund;
DollarAmtFund = eval("document.expenses_form." + thisFund + ".value");
	//if ((DollarAmtFund >= 11000) && (DollarAmtFund < 250000)){
	//	DollarAmtWarning = true;
	//	DollarAmtWarningStr = "This investment amount may exceed the overall maximum contribution allowed.";
	//} else
	if (DollarAmtFund >= 200000){
		DollarAmtWarning = true;
		DollarAmtWarningStr = "This investment amount may exceed the overall maximum contribution allowed and may have gift tax implications.";
	}
	if (DollarAmtWarning){
		alert(DollarAmtWarningStr);
	}
}

function Check_CDSC(thisBload){
	if (thisBload == "bload1"){
		if ((document.expenses_form.bload1.value > 0) && (document.expenses_form.holding_period1.value > 1)) {
			alert("Reminder: A plan may have a contingent deferred sales charge (CDSC) that declines the longer you hold your shares. If the plan you're analyzing has a CDSC, please make sure you enter the sales charge percentage appropriate to the number of years you intend to hold the plan.");
		}
	}else if (thisBload == "bload2"){
		if ((document.expenses_form.bload2.value > 0) && (document.expenses_form.holding_period2.value > 1)) {
			alert("Reminder: A plan may have a contingent deferred sales charge (CDSC) that declines the longer you hold your shares. If the plan you're analyzing has a CDSC, please make sure you enter the sales charge percentage appropriate to the number of years you intend to hold the plan.");
		}
	}
}

function Check_UFExp(thisFee){
	//Checks the Underlying Fund Expenses and displays a warning if equal to zero.
	var UFEcheck;
	UFEcheck = eval("document.expenses_form." + thisFee + ".value");
	if (UFEcheck == 0) {
		alert("Most 529 plans charge underlying fund expenses.");
	}
}

function RORWarning(thisFund,thisFundType){
var RORwarn = false;
var RORFund;
var RORFundType;
RORFund = eval("document.expenses_form." + thisFund + ".value");
RORFundType = eval("document.expenses_form." + thisFundType + ".value");
	if ((RORFund > 12) && (RORFundType == "529 Plan")){
		RORwarn = true;
	}
	if (RORwarn){
		alert("This rate of return is above historical averages.");
	}
}

function ValidCY(thisElement,min,HP){
	var thisNumber = thisElement.value;
	var thisMin = parseInt(min);
	var thisHP = parseInt(HP.value);
	// 11/18/02 - HP max is bumped to HP+100 to eliminate this portion of the check. This allows the user to compare funds they may hold for less than the conversion period.
	//var thisHP = thisHP + 100;
	// 1/13/03 - Above CY bump has been removed to prevent this due to Class B fund problem w/calculation.
	if ((!((thisNumber >= thisMin) && (thisNumber <= thisHP))) || (isNaN(thisNumber))) {
		return false;
	}else{
		return true;
	}
}

function ValidPercent(thisElement,min,max){
	var thisNumber = thisElement.value;
	var thisMin = min;
	var thisMax = max;
	if ((!((thisNumber >= thisMin) && (thisNumber <= thisMax))) || (isNaN(thisNumber))){
		alert("Please enter a number between " + thisMin + " and " + thisMax + "%.\n\nDo not include any percent signs, commas or other characters.");
		thisElement.select();
		thisElement.focus();
	}
}

function ValidNumber(thisElement,min){
	var thisNumber = thisElement.value;
	var thisMin = min;
	if ((!(thisNumber >= thisMin)) || (isNaN(thisNumber))) {
		alert("Please enter a number greater than or equal to " + thisMin + ".\n\nDo not include any dollar signs, commas or other characters.");
		thisElement.select();
		thisElement.focus();
	}
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------

function CheckValues_529() {
// THIS FUNCTION CHECKS THE VALUES SUBMITTED FOR A 529 PLAN.


// DETERMINE IF FUND 2 EXISTS
var Fund2Exists;
if ((document.expenses_form.holding_period2.value !=0) || (document.expenses_form.dollar_amount2.value !=0) || (document.expenses_form.ror2.value !=0) || (document.expenses_form.fload2.value !=0) || (document.expenses_form.bload2.value !=0) || (document.expenses_form.comm2.value !=0)) {
	Fund2Exists = true;
	document.expenses_form.Fund2Exists.value = "Yes"
}else{
	Fund2Exists = false;
	document.expenses_form.Fund2Exists.value = "No"
}

var msgError = "";
var Fund1ErrorMsg = "";
var Fund2ErrorMsg = "";

// CHECK THE INITIAL FUND VALUES REPORTED
if (document.expenses_form.ProcessStep.value == "1") {

// FUND TYPE
if(document.expenses_form.FundType1.value == "") {
	Fund1ErrorMsg = Fund1ErrorMsg + "Fund Type\t\t- Select the fund type.\n";
}
if((document.expenses_form.FundType2.value == "") && Fund2Exists)  {
	Fund2ErrorMsg = Fund2ErrorMsg + "Fund Type\t\t- Select the fund type.\n";
}
// HOLDING PERIOD
if((document.expenses_form.holding_period1.value == 0) || ((!(document.expenses_form.holding_period1.value >= 1)) || (isNaN(document.expenses_form.holding_period1.value)))){
	Fund1ErrorMsg = Fund1ErrorMsg + "Holding Period\t\t- Enter a number greater than or equal to 1.\n";
}
if(((document.expenses_form.holding_period2.value == 0) || (document.expenses_form.holding_period2.value < 1) || (isNaN(document.expenses_form.holding_period2.value))) && Fund2Exists)  {
	Fund2ErrorMsg = Fund2ErrorMsg + "Holding Period\t\t- Enter a number greater than or equal to 1.\n";
}
// INITIAL INVESTMENT
if((document.expenses_form.dollar_amount1.value == 0) || ((!(document.expenses_form.dollar_amount1.value >= 1)) || (isNaN(document.expenses_form.dollar_amount1.value)))){
	Fund1ErrorMsg = Fund1ErrorMsg + "Investment Amount\t\t- Enter a number with no dollar signs or commas.\n";
}
if(((document.expenses_form.dollar_amount2.value == 0) || (document.expenses_form.dollar_amount2.value < 1) || (isNaN(document.expenses_form.dollar_amount2.value))) && Fund2Exists)  {
	Fund2ErrorMsg = Fund2ErrorMsg + "Investment Amount\t\t- Enter a number with no dollar signs or commas.\n";
}
// RATE OF RETURN
if((document.expenses_form.ror1.value == 0) || (isNaN(document.expenses_form.ror1.value)) || ((document.expenses_form.ror1.value < 1) || (document.expenses_form.ror1.value > 50)) ) {
	Fund1ErrorMsg = Fund1ErrorMsg + "Rate of Return\t\t- Enter a number between 1% and 50%.\n";
}
if(((document.expenses_form.ror2.value == 0) || (document.expenses_form.ror2.value < 1) || (document.expenses_form.ror2.value > 50) || (isNaN(document.expenses_form.ror2.value))) && Fund2Exists)  {
	Fund2ErrorMsg = Fund2ErrorMsg + "Rate of Return\t\t- Enter a number between 1% and 50%.\n";
}
// SALES CHARGE
if(((document.expenses_form.fload1.value != 0) && ((document.expenses_form.fload1.value < 0) || (document.expenses_form.fload1.value > 10)) || (isNaN(document.expenses_form.fload1.value)))) {
	Fund1ErrorMsg = Fund1ErrorMsg + "Sales Charge\t\t- Enter a number between 0% and 10%.\n";
}
if(((document.expenses_form.fload2.value != 0) && ((document.expenses_form.fload2.value < 0) || (document.expenses_form.fload2.value > 10) || (isNaN(document.expenses_form.fload2.value)))) && Fund2Exists) {
	Fund2ErrorMsg = Fund2ErrorMsg + "Sales Charge\t\t- Enter a number between 0% and 10%.\n";
}
// DEFERRED SALES CHARGE
if((document.expenses_form.bload1.value != 0) && ((document.expenses_form.bload1.value < 0) || (document.expenses_form.bload1.value > 10) || (isNaN(document.expenses_form.bload1.value)))) {
	Fund1ErrorMsg = Fund1ErrorMsg + "Deferred Sales Charge\t- Enter a number between 0% and 10%.\n";
}
if(((document.expenses_form.bload2.value != 0) && ((document.expenses_form.bload2.value < 0) || (document.expenses_form.bload2.value > 10) || (isNaN(document.expenses_form.bload2.value)))) && Fund2Exists) {
	Fund2ErrorMsg = Fund2ErrorMsg + "Deferred Sales Charge\t- Enter a number between 0% and 10%.\n";
}
if((document.expenses_form.bload1.value > 0) && (document.expenses_form.FundType1.value == "ETF")) {
	Fund1ErrorMsg = Fund1ErrorMsg + "Sales Charge\t\t- ETF's do not have Back-End Loads or Sales Charges.\n";
}
if((document.expenses_form.bload2.value > 0) && (document.expenses_form.FundType2.value == "ETF")) {
	Fund2ErrorMsg = Fund2ErrorMsg + "Sales Charge\t\t- ETF's do not have Back-End Loads or Sales Charges.\n";
}
// COMMISSIONS (aka Enrollment & other fees)
if(((document.expenses_form.comm1.value != 0) && ((!(document.expenses_form.comm1.value >= 1)) || (isNaN(document.expenses_form.comm1.value))))){
	Fund1ErrorMsg = Fund1ErrorMsg + "Enrollment/Other Fees\t- Enter a number greater than or equal to $0.00.\n";
}
if(((document.expenses_form.comm2.value != 0) && ((!(document.expenses_form.comm2.value >= 1)) || (isNaN(document.expenses_form.comm2.value))) && Fund2Exists))  {
	Fund2ErrorMsg = Fund2ErrorMsg + "Enrollment/Other Fees\t- Enter a number greater than or equal to $0.00.\n";
}
// ANNUAL RECURRING FEES
if(((document.expenses_form.Rcrng1.value != 0) && ((!(document.expenses_form.Rcrng1.value >= 1)) || (isNaN(document.expenses_form.Rcrng1.value))))){
	Fund1ErrorMsg = Fund1ErrorMsg + "Annual Recurring Fees\t- Enter a number greater than or equal to $0.00.\n";
}
if(((document.expenses_form.Rcrng2.value != 0) && ((!(document.expenses_form.Rcrng2.value >= 1)) || (isNaN(document.expenses_form.Rcrng2.value))) && Fund2Exists))  {
	Fund2ErrorMsg = Fund2ErrorMsg + "Annual Recurring Fees\t- Enter a number greater than or equal to $0.00.\n";
}
// CONVERT SETTINGS
if (!((document.expenses_form.convert1[0].checked) || (document.expenses_form.convert1[1].checked))) {
	Fund1ErrorMsg = Fund1ErrorMsg + "Convert\t\t\t- Check Yes or No.\n";
}
if ((!((document.expenses_form.convert2[0].checked) || (document.expenses_form.convert2[1].checked))) && Fund2Exists) {
	Fund2ErrorMsg = Fund2ErrorMsg + "Convert\t\t\t- Check Yes or No\n";
}
} //end if ProcessStep = 1

// CHECK CONVERSION-RELATED VALUES
if (document.expenses_form.ProcessStep.value == "2") {

	if (Fund2Exists) {
   // alert("convert1: " + document.expenses_form.convert1.value + "\n\nconvert2: " + document.expenses_form.convert2.value + "\n\nFund2Exists: " + Fund2Exists);

      if ((document.expenses_form.convert1.value=="Yes") && (document.expenses_form.convert2.value=="Yes")) {
      	// IF BOTH FUNDS CONVERT THEN
      	// alert("BOTH FUNDS CONVERT");
      	// CONVERSION YEAR - FUND 1
      	if (!(ValidCY(document.expenses_form.conversion_year1,1,document.expenses_form.holding_period1))){
      		Fund1ErrorMsg = Fund1ErrorMsg + "Conversion Year\n   - Enter a number greater than or equal to 1 and less than the " + document.expenses_form.holding_period1.value + " year holding period.\n\n";
      	}
      	// CONVERSION YEAR - FUND 2
      	if (!(ValidCY(document.expenses_form.conversion_year2,1,document.expenses_form.holding_period2))){
      		Fund2ErrorMsg = Fund2ErrorMsg + "Conversion Year\n   - Enter a number greater than or equal to 1 and less than the " + document.expenses_form.holding_period2.value + " year holding period.\n\n";
      	}
			// FIRST CLASS EXPENSES - BEFORE CONVERSION - FUND 1
			if (((!((document.expenses_form.expense_rate1F1a.value >= 0) && (document.expenses_form.expense_rate1F1a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1a.value))) || ((!((document.expenses_form.expense_rate1F1b.value >= 0) && (document.expenses_form.expense_rate1F1b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1b.value))) || ((!((document.expenses_form.expense_rate1F1c.value >= 0) && (document.expenses_form.expense_rate1F1c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1c.value)))){
				Fund1ErrorMsg = Fund1ErrorMsg + "Total Annual Plan Operating Expenses Before Conversion\n   - None of the three individual fees before the conversion year may exceed 10%.\n\n";
			}
			// FIRST CLASS EXPENSES - BEFORE CONVERSION - FUND 2
			if (((!((document.expenses_form.expense_rate1F2a.value >= 0) && (document.expenses_form.expense_rate1F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2a.value))) || ((!((document.expenses_form.expense_rate1F2b.value >= 0) && (document.expenses_form.expense_rate1F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2b.value))) || ((!((document.expenses_form.expense_rate1F2c.value >= 0) && (document.expenses_form.expense_rate1F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2c.value)))){
				Fund2ErrorMsg = Fund2ErrorMsg + "Total Annual Plan Operating Expenses Before Conversion\n   - None of the three individual fees before the conversion year may exceed 10%.\n\n";
			}
			// SECOND CLASS EXPENSES - AFTER CONVERSION - FUND 1
			if (((!((document.expenses_form.expense_rate2F1a.value >= 0) && (document.expenses_form.expense_rate2F1a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1a.value))) || ((!((document.expenses_form.expense_rate2F1b.value >= 0) && (document.expenses_form.expense_rate2F1b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1b.value))) || ((!((document.expenses_form.expense_rate2F1c.value >= 0) && (document.expenses_form.expense_rate2F1c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1c.value)))){
				Fund1ErrorMsg = Fund1ErrorMsg + "Total Annual Plan Operating Expenses After Conversion\n   - None of the three individual fees after the conversion year may exceed 10%.\n\n";
			}
			// SECOND CLASS EXPENSES - AFTER CONVERSION - FUND 2
			if (((!((document.expenses_form.expense_rate2F2a.value >= 0) && (document.expenses_form.expense_rate2F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2a.value))) || ((!((document.expenses_form.expense_rate2F2b.value >= 0) && (document.expenses_form.expense_rate2F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2b.value))) || ((!((document.expenses_form.expense_rate2F2c.value >= 0) && (document.expenses_form.expense_rate2F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2c.value)))){
				Fund2ErrorMsg = Fund2ErrorMsg + "Total Annual Plan Operating Expenses After Conversion\n   - None of the three individual fees after the conversion year may exceed 10%.\n\n";
			}
      }else if ((document.expenses_form.convert1.value=="Yes") && (document.expenses_form.convert2.value=="No")) {
      	// IF FUND 1 CONVERTS - FUND 2 DOES NOT CONVERT THEN
      	// alert("FUND 1 CONVERTS - FUND 2 DOES NOT CONVERT");
      	// CONVERSION YEAR - FUND 1
      	if (!(ValidCY(document.expenses_form.conversion_year1,1,document.expenses_form.holding_period1))){
      		Fund1ErrorMsg = Fund1ErrorMsg + "Conversion Year\n   - Enter a number greater than or equal to 1 and less than the " + expenses_form.holding_period1.value + " year holding period.\n\n";
      	}
			// FIRST CLASS EXPENSES - BEFORE CONVERSION - FUND 1
			if (((!((document.expenses_form.expense_rate1F1a.value >= 0) && (document.expenses_form.expense_rate1F1a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1a.value))) || ((!((document.expenses_form.expense_rate1F2a.value >= 0) && (document.expenses_form.expense_rate1F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2a.value))) || ((!((document.expenses_form.expense_rate1F1b.value >= 0) && (document.expenses_form.expense_rate1F1b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1b.value))) || ((!((document.expenses_form.expense_rate1F2b.value >= 0) && (document.expenses_form.expense_rate1F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2b.value))) || ((!((document.expenses_form.expense_rate1F1c.value >= 0) && (document.expenses_form.expense_rate1F1c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1c.value))) || ((!((document.expenses_form.expense_rate1F2c.value >= 0) && (document.expenses_form.expense_rate1F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2c.value)))){
				Fund1ErrorMsg = Fund1ErrorMsg + "Total Annual Plan Operating Expenses Before Conversion\n   - None of the three individual fees before the conversion year may exceed 10%.\n\n";
			}
			// SECOND CLASS EXPENSES - AFTER CONVERSION - FUND 1
			if (((!((document.expenses_form.expense_rate2F1a.value >= 0) && (document.expenses_form.expense_rate2F1a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1a.value))) || ((!((document.expenses_form.expense_rate2F2a.value >= 0) && (document.expenses_form.expense_rate2F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2a.value))) || ((!((document.expenses_form.expense_rate2F1b.value >= 0) && (document.expenses_form.expense_rate2F1b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1b.value))) || ((!((document.expenses_form.expense_rate2F2b.value >= 0) && (document.expenses_form.expense_rate2F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2b.value))) || ((!((document.expenses_form.expense_rate2F1c.value >= 0) && (document.expenses_form.expense_rate2F1c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1c.value))) || ((!((document.expenses_form.expense_rate2F2c.value >= 0) && (document.expenses_form.expense_rate2F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2c.value)))){
				Fund1ErrorMsg = Fund1ErrorMsg + "Total Annual Plan Operating Expenses After Conversion\n   - None of the three individual fees after the conversion year may exceed 10%.\n\n";
			}
			// ANNUAL OPERATING EXPENSES - FUND 2
      	if (((!((document.expenses_form.AnnualExpRate2a.value >= 0) && (document.expenses_form.AnnualExpRate2a.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate2a.value))) || ((!((document.expenses_form.AnnualExpRate2b.value >= 0) && (document.expenses_form.AnnualExpRate2b.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate2b.value))) || ((!((document.expenses_form.AnnualExpRate2c.value >= 0) && (document.expenses_form.AnnualExpRate2c.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate2c.value)))){
      		 Fund2ErrorMsg = Fund2ErrorMsg + "Operating Expenses\n   - None of the three individual fees may exceed 10%.\n\n";
      	}
      }else if ((document.expenses_form.convert1.value=="No") && (document.expenses_form.convert2.value=="Yes")) {
      	// IF FUND 1 DOES NOT CONVERT - FUND 2 DOES CONVERT THEN
      	// alert("FUND 1 DOES NOT CONVERT - FUND 2 DOES CONVERT");
			// ANNUAL OPERATING EXPENSES - FUND 1
      	if (((!((document.expenses_form.AnnualExpRate1a.value >= 0) && (document.expenses_form.AnnualExpRate1a.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1a.value))) || ((!((document.expenses_form.AnnualExpRate1b.value >= 0) && (document.expenses_form.AnnualExpRate1b.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1b.value))) || ((!((document.expenses_form.AnnualExpRate1c.value >= 0) && (document.expenses_form.AnnualExpRate1c.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1c.value)))){
      		 Fund1ErrorMsg = Fund1ErrorMsg + "Operating Expenses\n   - None of the three individual fees may exceed 10%.\n\n";
      	}
      	// CONVERSION YEAR - FUND 2
      	if (!(ValidCY(document.expenses_form.conversion_year2,1,document.expenses_form.holding_period2))){
      		Fund2ErrorMsg = Fund2ErrorMsg + "Conversion Year\n   - Enter a number greater than or equal to 1 and less than the " + expenses_form.holding_period2.value + " year holding period.\n\n";
      	}
			// FIRST CLASS EXPENSES - BEFORE CONVERSION - FUND 2
			if (((!((document.expenses_form.expense_rate1F2a.value >= 0) && (document.expenses_form.expense_rate1F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2a.value))) || ((!((document.expenses_form.expense_rate1F2b.value >= 0) && (document.expenses_form.expense_rate1F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2b.value))) || ((!((document.expenses_form.expense_rate1F2c.value >= 0) && (document.expenses_form.expense_rate1F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2c.value)))){
				Fund2ErrorMsg = Fund2ErrorMsg + "Total Annual Plan Operating Expenses Before Conversion\n   - None of the three individual fees before the conversion year may exceed 10%.\n\n";
			}
			// SECOND CLASS EXPENSES - AFTER CONVERSION - FUND 2
			if (((!((document.expenses_form.expense_rate2F2a.value >= 0) && (document.expenses_form.expense_rate2F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2a.value))) || ((!((document.expenses_form.expense_rate2F2b.value >= 0) && (document.expenses_form.expense_rate2F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2b.value))) || ((!((document.expenses_form.expense_rate2F2c.value >= 0) && (document.expenses_form.expense_rate2F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2c.value)))){
				Fund2ErrorMsg = Fund2ErrorMsg + "Total Annual Plan Operating Expenses After Conversion\n   - None of the three individual fees after the conversion year may exceed 10%.\n\n";
			}
      }else if ((document.expenses_form.convert1.value=="No") && (document.expenses_form.convert2.value=="No")) {
   	   // IF NEITHER FUND CONVERTS THEN
      	// alert("NEITHER FUND CONVERTS");
			// ANNUAL OPERATING EXPENSES - FUND 1
      	if (((!((document.expenses_form.AnnualExpRate1a.value >= 0) && (document.expenses_form.AnnualExpRate1a.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1a.value))) || ((!((document.expenses_form.AnnualExpRate1b.value >= 0) && (document.expenses_form.AnnualExpRate1b.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1b.value))) || ((!((document.expenses_form.AnnualExpRate1c.value >= 0) && (document.expenses_form.AnnualExpRate1c.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1c.value)))){
      		 Fund1ErrorMsg = Fund1ErrorMsg + "Operating Expenses\n   - None of the three individual fees may exceed 10%.\n\n";
      	}
			// ANNUAL OPERATING EXPENSES - FUND 2
      	if (((!((document.expenses_form.AnnualExpRate2a.value >= 0) && (document.expenses_form.AnnualExpRate2a.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate2a.value))) || ((!((document.expenses_form.AnnualExpRate2b.value >= 0) && (document.expenses_form.AnnualExpRate2b.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate2b.value))) || ((!((document.expenses_form.AnnualExpRate2c.value >= 0) && (document.expenses_form.AnnualExpRate2c.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate2c.value)))){
      		 Fund2ErrorMsg = Fund2ErrorMsg + "Operating Expenses\n   - None of the three individual fees may exceed 10%.\n\n";
      	}
      }

   }else{	//FUND 2 DOES NOT EXIST - ONLY FUND 1

      if (document.expenses_form.convert1.value=="Yes") {	//CONVERTS
      	// alert("FUND 2 DOES NOT EXIST - ONLY FUND 1 CONVERTS");
      	// CONVERSION YEAR - FUND 1
      	if (!(ValidCY(document.expenses_form.conversion_year1,1,document.expenses_form.holding_period1))){
      		Fund1ErrorMsg = Fund1ErrorMsg + "Conversion Year\n   - Enter a number greater than or equal to 1 and less than the " + expenses_form.holding_period1.value + " year holding period.\n\n";
      	}
			// FIRST CLASS EXPENSES - BEFORE CONVERSION - FUND 1
			if (((!((document.expenses_form.expense_rate1F1a.value >= 0) && (document.expenses_form.expense_rate1F1a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1a.value))) || ((!((document.expenses_form.expense_rate1F2a.value >= 0) && (document.expenses_form.expense_rate1F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2a.value))) || ((!((document.expenses_form.expense_rate1F1b.value >= 0) && (document.expenses_form.expense_rate1F1b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1b.value))) || ((!((document.expenses_form.expense_rate1F2b.value >= 0) && (document.expenses_form.expense_rate1F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2b.value))) || ((!((document.expenses_form.expense_rate1F1c.value >= 0) && (document.expenses_form.expense_rate1F1c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F1c.value))) || ((!((document.expenses_form.expense_rate1F2c.value >= 0) && (document.expenses_form.expense_rate1F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate1F2c.value)))){
				Fund1ErrorMsg = Fund1ErrorMsg + "Total Annual Plan Operating Expenses Before Conversion\n   - None of the three individual fees before the conversion year may exceed 10%.\n\n";
			}
			// SECOND CLASS EXPENSES - AFTER CONVERSION - FUND 1
			if (((!((document.expenses_form.expense_rate2F1a.value >= 0) && (document.expenses_form.expense_rate2F1a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1a.value))) || ((!((document.expenses_form.expense_rate2F2a.value >= 0) && (document.expenses_form.expense_rate2F2a.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2a.value))) || ((!((document.expenses_form.expense_rate2F1b.value >= 0) && (document.expenses_form.expense_rate2F1b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1b.value))) || ((!((document.expenses_form.expense_rate2F2b.value >= 0) && (document.expenses_form.expense_rate2F2b.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2b.value))) || ((!((document.expenses_form.expense_rate2F1c.value >= 0) && (document.expenses_form.expense_rate2F1c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F1c.value))) || ((!((document.expenses_form.expense_rate2F2c.value >= 0) && (document.expenses_form.expense_rate2F2c.value <= 10))) || (isNaN(document.expenses_form.expense_rate2F2c.value)))){
				Fund1ErrorMsg = Fund1ErrorMsg + "Total Annual Plan Operating Expenses After Conversion\n   - None of the three individual fees after the conversion year may exceed 10%.\n\n";
			}
      }else if (document.expenses_form.convert1.value=="No"){	//DOESN'T CONVERT
      	// alert("FUND 2 DOES NOT EXIST - ONLY FUND 1 DOESN'T CONVERT");
			// ANNUAL OPERATING EXPENSES - FUND 1
      	if (((!((document.expenses_form.AnnualExpRate1a.value >= 0) && (document.expenses_form.AnnualExpRate1a.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1a.value))) || ((!((document.expenses_form.AnnualExpRate1b.value >= 0) && (document.expenses_form.AnnualExpRate1b.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1b.value))) || ((!((document.expenses_form.AnnualExpRate1c.value >= 0) && (document.expenses_form.AnnualExpRate1c.value <= 10))) || (isNaN(document.expenses_form.AnnualExpRate1c.value)))){
      		 Fund1ErrorMsg = Fund1ErrorMsg + "Operating Expenses\n   - None of the three individual fees may exceed 10%.\n\n";
      	}
   	}

	}	//end if Fund2Exists

}	//end if ProcessStep = 2


if ((Fund1ErrorMsg != "") || (Fund2ErrorMsg != "")) {
	if (Fund2Exists) {
		if ((Fund1ErrorMsg != "") && (Fund2ErrorMsg != "")){
			msgError = "There is a problem with the information you entered: \n\n-- Plan 1 --\n\n" + Fund1ErrorMsg + "\n-- Plan 2 --\n\n" + Fund2ErrorMsg + "\n\nPlease enter only numbers that do not include any dollar or percent signs, commas or other characters."
		}
		if ((Fund1ErrorMsg != "") && (Fund2ErrorMsg == "")){
			msgError = "There is a problem with the information you entered: \n\n-- Plan 1 --\n\n" + Fund1ErrorMsg + "\n\n" + Fund2ErrorMsg + "\n\nPlease enter only numbers that do not include any dollar or percent signs, commas or other characters."
		}
		if ((Fund1ErrorMsg == "") && (Fund2ErrorMsg != "")){
			msgError = "There is a problem with the information you entered: \n\n-- Plan 2 --\n\n" + Fund2ErrorMsg + "\n\nPlease enter only numbers that do not include any dollar or percent signs, commas or other characters."
		}
	}else{					//ONLY 1 FUND
		msgError = "There is a problem with the information you entered: \n\n-- Plan 1 --\n\n" + Fund1ErrorMsg + "\n\nPlease enter only numbers that do not include any dollar or percent signs, commas or other characters."
	}
}
if (msgError == "") {	//NO ERRORS - SUBMIT
	//If Fund 2 does not exist set data defaults
	if (!(Fund2Exists)) {
		document.expenses_form.FundName2.value = "";
		document.expenses_form.FundType2.value = "";
		document.expenses_form.holding_period2.value = "0";
		document.expenses_form.dollar_amount2.value = "0";
		document.expenses_form.ror2.value = "0";
		document.expenses_form.fload2.value = "0";
		document.expenses_form.bload2.value = "0";
		document.expenses_form.comm2.value = "0";
		document.expenses_form.convert2.value = "";
	}
	//If any optional fields contain nulls set them to zero
	if (document.expenses_form.fload1.value == "") {
		document.expenses_form.fload1.value = "0";
	}
	if (document.expenses_form.fload2.value == "") {
		document.expenses_form.fload2.value = "0";
	}
	if (document.expenses_form.bload1.value == "") {
		document.expenses_form.bload1.value = "0";
	}
	if (document.expenses_form.bload2.value == "") {
		document.expenses_form.bload2.value = "0";
	}
	if (document.expenses_form.comm1.value == "") {
		document.expenses_form.comm1.value = "0";
	}
	if (document.expenses_form.comm2.value == "") {
		document.expenses_form.comm2.value = "0";
	}

	// SUBMIT THE FORM
	document.expenses_form.submit();

}else{						//DISPLAY ERRORS
	alert(msgError);
}

}	// End CheckValues_529()

//-------------------------------------------------------------------
//-------------------------------------------------------------------

