
function doSubmit() 
{
	if (isIncome() && isReplaced() && isEducation() && isDebt() && isSavings())
	{ 	  ReCalculate();  }
	else
	 {   return false; }
}

function isIncome()  {
	var field = document.estimateForm.income;
	
	if (field.value == "") {
		alert("\nYou must enter your Gross Annual Income in the field provided.\n");
		field.select();
		field.focus();
		return false;
	}
	return true;
}

function isReplaced()  {
	var field = document.estimateForm.replaced;
	
	if (field.value == "") {
		alert("\nYou must enter the number of years your Income\nwould need to be replaced in the field provided.\n");
		field.select();
		field.focus();
		return false;
	}
	return true;
}

function isEducation()  {
	var field = document.estimateForm.education;
	
	if (field.value == "") {
		alert("\nYou must enter an amount to provide for your children's\neducation after you die in the field provided.\n");
		field.select();
		field.focus();
		return false;
	}
	return true;
}

function isDebt()  {
	var field = document.estimateForm.debt;
	
	if (field.value == "") {
		alert("\nYou must enter an amount to provide for your children's\neducation after you die in the field provided.\n");
		field.select();
		field.focus();
		return false;
	}
	return true;
}

function isSavings()  {
	var field = document.estimateForm.savings;
	
	if (field.value == "") {
		alert("\nYou must enter an amount to provide for your children's\neducation after you die in the field provided.\n");
		field.select();
		field.focus();
		return false;
	}
	return true;
}

function GetValue(sValue)
	{         
	    var sRaw = "";
	    var sChar = "";
	    var bHasDecimal = 0;
	    var i = 0;

	    sValue += "";
	    for (i=0; i <= sValue.length; i++) {

	        sChar = sValue.substring(i, i+1);

	        if (sChar == ".") {
	            bHasDecimal = 1;
	            sRaw = sRaw + sChar;
	        }
	        else if ((sChar >= "0") && (sChar <= "9")) {
	            sRaw = sRaw + sChar;
	        }
	    }

	    if (bHasDecimal) {
	        return parseFloat(sRaw);
	    }
	    else if (sRaw.length > 0) {
	        return parseInt(sRaw);
	    }
	    else {
	        return 0;
	    }
	}

function FormatCurrency(iValue) {

    var bIsNegative = 0;
    var iPos = 0;
    var sChar = "";
    var sTempNumber = "";
    var sNoChars = "";
    var sDollars = "";
    var sCents = "";
    var sDollarAmount = "";
    var sFormated = "";
    var x = 0;

    if (iValue != "") {

        sTempNumber = iValue + "";
        if (sTempNumber.charAt(0) == "-") {
            bIsNegative = 1;
            sTempNumber = sTempNumber.substring(1,sTempNumber.length);
        }


        for (x=0; x<=((sTempNumber.length)-1); x++) {
            sChar = sTempNumber.charAt(x);
            if ( ((sChar >= "0") & (sChar <= "9")) || (sChar ==".")  ) {
                sNoChars += sTempNumber.charAt(x)
            }
        }
        sTempNumber = sNoChars;
        IndexOfDec = sTempNumber.indexOf(".");

        if (IndexOfDec == -1) {
            sDollars = sTempNumber;
            sCents = "00";
        }
        else if (IndexOfDec == 0) {
            sDollars = "0";
            sCents = sTempNumber.substring(IndexOfDec + 1,sTempNumber.length);
        }
        else {
            sDollars = sTempNumber.substring(0, IndexOfDec);
            if (IndexOfDec == (sTempNumber.length - 1)) {
                sCents = "00";
            }
            else {
                sCents = GetValue(sTempNumber.substring(IndexOfDec + 1, sTempNumber.length));
                sCents += "0";
                sCents = sCents.charAt(0) + sCents.charAt(1);
            }
        }
        sFormated = sDollars;
        x = sDollars.length;
        iPos = 0;
        while (x > 0) {
            x--;
            sChar = sDollars.charAt(x);
            rounded = Math.round(iPos/3);
            if ( (iPos/3 == rounded ) & (iPos != 0) ) {
                sDollarAmount = "," + sDollarAmount;
            }
            sDollarAmount = sChar +  sDollarAmount;
            iPos++;
        }

        if (bIsNegative) {
            sFormated = "$" + sDollarAmount + "." + sCents;
        }
        else {
            sFormated = "$" + sDollarAmount + "." + sCents;
        }

        return (sFormated);
    }
    else {

        return("$0.00");
    }
}

function ReCalculate() {

	var education = GetValue(document.estimateForm.education.value);
	var income = GetValue(document.estimateForm.income.value);
	var replaced = GetValue(document.estimateForm.replaced.value);	
	var debt = GetValue(document.estimateForm.debt.value);		
	var savings = GetValue(document.estimateForm.savings.value);		

	nper = replaced;
	pmt = income * 0.65;
	rate = 0.04;
  
	// Income replacement need = I * [ 1 / r - 1 / r(1+r)^n ] 
	var p = pmt*( (1 - (1/Math.pow((1+rate),nper)) )/rate );
	
	var result =  p + eval(education) + (eval(debt) - eval(savings));	 
	document.estimateForm.total.value = FormatCurrency(result);

	return true; 	
}