

//////////////////////////////////////////////////////////////////////////////
// Remove $,-() or any alpha characters a user may have typed in
function filterStringToNumber(val) {
	var n;
	var retVal = "";
	allowableChars = "1234567890."; 

    // loop over string a character at a time and remove any non numeric characters (ie. [$,-a-zA-Z] etc.
	for (n = 0; n < val.length; n++) {
		var ch = val.charAt(n);
		if (allowableChars.indexOf(ch) != -1) 
            retVal += ch;
	}

    // always return a number either 0.0 or a valid number
    if (retVal == '') { return(0.0); } else { return(retVal); }
}

//////////////////////////////////////////////////////////////////////////////
function formatAsCurrency(num) {
    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;
    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));

    return (((sign)?'':'-') + '$' + num + '.' + cents);
}

//////////////////////////////////////////////////////////////////////////////
function calculatePurchaseForm() {
	var contractPriceEl = document.getElementById('contractPricePurchase');
    if (contractPriceEl.value == '') {
        var contractPrice = 0.0;
    } else {
	    var contractPrice = parseFloat(filterStringToNumber(contractPriceEl.value));
    }

	var loanAmountEl = document.getElementById('loanAmountPurchase');
    if (loanAmountEl.value == '') {
        var loanAmount = 0.0;
    } else {
	    var loanAmount = parseFloat(filterStringToNumber(loanAmountEl.value));
    }

	var mortgagePagesEl = document.getElementById('mortgagePagesPurchase');
    if (mortgagePagesEl.value == '') {
	    var mortgagePages = 0.0;
    } else {
	    var mortgagePages = parseFloat(filterStringToNumber(mortgagePagesEl.value));
    }
	
	if(contractPrice == 0) {  
		alert("Please enter a Contract Price!");
		contractPriceEl.focus();
		return false; 
	} 
	if(loanAmount == 0) {  
		alert("Please enter a Loan Amount!");
		loanAmountEl.focus();
		return false; 
	} 
    if (mortgagePages == 0) {
		alert("Please enter a value for Mortgage Page Count!");
		mortgagePagesEl.focus();
		return false; 
    }
	if(loanAmount>10000000) {
		alert("Please call our office for a Quote:  813-672-3333");
    }

	// Calculate Buyer fields the various fields in the form
	var bClosingFee = bClosingFeePurchaseRate;
	var bTitleSearchFee = bTitleSearchFeePurchaseRate;
	var bTitleInsurance= bTitleInsurancePurchaseRate;
    if (mortgagePages == 0) {
        var bRecordingFee = 10.0;
    } else {
        var bRecordingFee = (1 * deedPgRate) + 10.0 + (((parseFloat(mortgagePages)) - 1.0) * mortgagePgRate);
    }
    var bIntangibleFee = loanAmount * intangibleRate;
    var bDocStampFee = (Math.ceil(loanAmount/100)*100) * bDocStampRate;
	var bTotalClosingCosts = bTitleSearchFee + bClosingFee + bTitleInsurance + bRecordingFee + bDocStampFee + bIntangibleFee;

	// Calculate Seller fields the various fields in the form
	var sClosingFee = sClosingFeePurchaseRate;
	var sTitleSearchFee = sTitleSearchFeePurchaseRate;
	var sTitleInsurance = 0;
    var adjustedContractPrice = (Math.ceil(contractPrice/100)*100)
    if (adjustedContractPrice <= 100000) {
        sTitleInsurance = adjustedContractPrice * titleInsuranceRate1;
    }else if (adjustedContractPrice <= 1000000) {
        sTitleInsurance = (100000 * titleInsuranceRate1) + ((adjustedContractPrice - 100000) * titleInsuranceRate2);
    }else if (adjustedContractPrice <= 5000000) {
        sTitleInsurance = (100000 * titleInsuranceRate1) + (900000 * titleInsuranceRate2) + ((adjustedContractPrice - 1000000) * titleInsuranceRate3);
    }else if (adjustedContractPrice <= 10000000) {
        sTitleInsurance = (100000 * titleInsuranceRate1) + (900000 * titleInsuranceRate2) + (4000000 * titleInsuranceRate3) + ((adjustedContractPrice - 5000000) * titleInsuranceRate4);
    }
    var sRecordingFee = 0.0;
    var sIntangibleFee = 0.0;
    var sDocStampFee = (Math.ceil(contractPrice/100)*100) * sDocStampRate;
	var sTotalClosingCosts = sTitleSearchFee + sClosingFee + sTitleInsurance + sRecordingFee + sDocStampFee + sIntangibleFee;
	
	// Calculate Seller fields the various fields in the form
	var bsClosingFee = bClosingFee + sClosingFee;
	var bsTitleSearchFee = bTitleSearchFee + sTitleSearchFee;
	var bsTitleInsurance = bTitleInsurance + sTitleInsurance;
    var bsRecordingFee = bRecordingFee + sRecordingFee; 
    var bsDocStampFee =  bDocStampFee + sDocStampFee;
    var bsIntangibleFee =  bIntangibleFee + sIntangibleFee;
	var bsTotalClosingCosts = bTotalClosingCosts + sTotalClosingCosts;

    // Pretty up the loan amount field
	loanAmountEl.value = formatAsCurrency(loanAmount);
	contractPriceEl.value = formatAsCurrency(contractPrice);

    // SET THE BUYER FIELDS
    if (document.all) {
	    document.getElementById('bClosingFeePurchase').innerText = formatAsCurrency(bClosingFee);
	    document.getElementById('bTitleSearchFeePurchase').innerText = formatAsCurrency(bTitleSearchFee);
	    document.getElementById('bTitleInsurancePurchase').innerText = formatAsCurrency(bTitleInsurance);
	    document.getElementById('bRecordingFeePurchase').innerText = formatAsCurrency(bRecordingFee);
	    document.getElementById('bDocStampFeePurchase').innerText = formatAsCurrency(bDocStampFee);
	    document.getElementById('bIntangibleFeePurchase').innerText = formatAsCurrency(bIntangibleFee);
	    document.getElementById('bTotalClosingCostsPurchase').innerText = formatAsCurrency(bTotalClosingCosts);
    
        // SET THE SELLER FIELDS 
	    document.getElementById('sClosingFeePurchase').innerText = formatAsCurrency(sClosingFee);
	    document.getElementById('sTitleSearchFeePurchase').innerText = formatAsCurrency(sTitleSearchFee);
	    document.getElementById('sTitleInsurancePurchase').innerText = formatAsCurrency(sTitleInsurance);
	    document.getElementById('sRecordingFeePurchase').innerText = formatAsCurrency(sRecordingFee);
	    document.getElementById('sDocStampFeePurchase').innerText = formatAsCurrency(sDocStampFee);
	    document.getElementById('sIntangibleFeePurchase').innerText = formatAsCurrency(sIntangibleFee);
	    document.getElementById('sTotalClosingCostsPurchase').innerText = formatAsCurrency(sTotalClosingCosts);
    
        // SET THE TOTAL FIELDS 
	    document.getElementById('bsClosingFeePurchase').innerText = formatAsCurrency(bsClosingFee);
	    document.getElementById('bsTitleSearchFeePurchase').innerText = formatAsCurrency(bsTitleSearchFee);
	    document.getElementById('bsTitleInsurancePurchase').innerText = formatAsCurrency(bsTitleInsurance);
	    document.getElementById('bsRecordingFeePurchase').innerText = formatAsCurrency(bsRecordingFee);
	    document.getElementById('bsDocStampFeePurchase').innerText = formatAsCurrency(bsDocStampFee);
	    document.getElementById('bsIntangibleFeePurchase').innerText = formatAsCurrency(bsIntangibleFee);
	    document.getElementById('bsTotalClosingCostsPurchase').innerText = formatAsCurrency(bsTotalClosingCosts);
    } else {
	    document.getElementById('bClosingFeePurchase').textContent = formatAsCurrency(bClosingFee);
	    document.getElementById('bTitleSearchFeePurchase').textContent = formatAsCurrency(bTitleSearchFee);
	    document.getElementById('bTitleInsurancePurchase').textContent = formatAsCurrency(bTitleInsurance);
	    document.getElementById('bRecordingFeePurchase').textContent = formatAsCurrency(bRecordingFee);
	    document.getElementById('bDocStampFeePurchase').textContent = formatAsCurrency(bDocStampFee);
	    document.getElementById('bIntangibleFeePurchase').textContent = formatAsCurrency(bIntangibleFee);
	    document.getElementById('bTotalClosingCostsPurchase').textContent = formatAsCurrency(bTotalClosingCosts);
    
        // SET THE SELLER FIELDS 
	    document.getElementById('sClosingFeePurchase').textContent = formatAsCurrency(sClosingFee);
	    document.getElementById('sTitleSearchFeePurchase').textContent = formatAsCurrency(sTitleSearchFee);
	    document.getElementById('sTitleInsurancePurchase').textContent = formatAsCurrency(sTitleInsurance);
	    document.getElementById('sRecordingFeePurchase').textContent = formatAsCurrency(sRecordingFee);
	    document.getElementById('sDocStampFeePurchase').textContent = formatAsCurrency(sDocStampFee);
	    document.getElementById('sIntangibleFeePurchase').textContent = formatAsCurrency(sIntangibleFee);
	    document.getElementById('sTotalClosingCostsPurchase').textContent = formatAsCurrency(sTotalClosingCosts);
    
        // SET THE TOTAL FIELDS 
	    document.getElementById('bsClosingFeePurchase').textContent = formatAsCurrency(bsClosingFee);
	    document.getElementById('bsTitleSearchFeePurchase').textContent = formatAsCurrency(bsTitleSearchFee);
	    document.getElementById('bsTitleInsurancePurchase').textContent = formatAsCurrency(bsTitleInsurance);
	    document.getElementById('bsRecordingFeePurchase').textContent = formatAsCurrency(bsRecordingFee);
	    document.getElementById('bsDocStampFeePurchase').textContent = formatAsCurrency(bsDocStampFee);
	    document.getElementById('bsIntangibleFeePurchase').textContent = formatAsCurrency(bsIntangibleFee);
	    document.getElementById('bsTotalClosingCostsPurchase').textContent = formatAsCurrency(bsTotalClosingCosts);
    }
}

//////////////////////////////////////////////////////////////////////////////
function resetPurchase() {
    // Pretty up the loan amount field
	document.getElementById('contractPricePurchase').value= ' ';
	document.getElementById('loanAmountPurchase').value= ' ';
	document.getElementById('mortgagePagesPurchase').value= ' ';

    // SET THE BUYER FIELDS
    if (document.all) {
	    document.getElementById('bClosingFeePurchase').innerText = ' ';
	    document.getElementById('bTitleSearchFeePurchase').innerText = ' ';
	    document.getElementById('bTitleInsurancePurchase').innerText = ' ';
	    document.getElementById('bRecordingFeePurchase').innerText = ' ';
	    document.getElementById('bDocStampFeePurchase').innerText = ' ';
	    document.getElementById('bIntangibleFeePurchase').innerText = ' ';
	    document.getElementById('bTotalClosingCostsPurchase').innerText = ' ';
    
        // SET THE SELLER FIELDS 
	    document.getElementById('sClosingFeePurchase').innerText = ' ';
	    document.getElementById('sTitleSearchFeePurchase').innerText = ' ';
	    document.getElementById('sTitleInsurancePurchase').innerText = ' ';
	    document.getElementById('sRecordingFeePurchase').innerText = ' ';
	    document.getElementById('sDocStampFeePurchase').innerText = ' ';
	    document.getElementById('sIntangibleFeePurchase').innerText = ' ';
	    document.getElementById('sTotalClosingCostsPurchase').innerText = ' ';
    
        // SET THE TOTAL FIELDS 
	    document.getElementById('bsClosingFeePurchase').innerText = ' ';
	    document.getElementById('bsTitleSearchFeePurchase').innerText = ' ';
	    document.getElementById('bsTitleInsurancePurchase').innerText = ' ';
	    document.getElementById('bsRecordingFeePurchase').innerText = ' ';
	    document.getElementById('bsDocStampFeePurchase').innerText = ' ';
	    document.getElementById('bsIntangibleFeePurchase').innerText = ' ';
	    document.getElementById('bsTotalClosingCostsPurchase').innerText = ' ';
    } else {
	    document.getElementById('bClosingFeePurchase').textContent = ' ';
	    document.getElementById('bTitleSearchFeePurchase').textContent = ' ';
	    document.getElementById('bTitleInsurancePurchase').textContent = ' ';
	    document.getElementById('bRecordingFeePurchase').textContent = ' ';
	    document.getElementById('bDocStampFeePurchase').textContent = ' ';
	    document.getElementById('bIntangibleFeePurchase').textContent = ' ';
	    document.getElementById('bTotalClosingCostsPurchase').textContent = ' ';
    
        // SET THE SELLER FIELDS 
	    document.getElementById('sClosingFeePurchase').textContent = ' ';
	    document.getElementById('sTitleSearchFeePurchase').textContent = ' ';
	    document.getElementById('sTitleInsurancePurchase').textContent = ' ';
	    document.getElementById('sRecordingFeePurchase').textContent = ' ';
	    document.getElementById('sDocStampFeePurchase').textContent = ' ';
	    document.getElementById('sIntangibleFeePurchase').textContent = ' ';
	    document.getElementById('sTotalClosingCostsPurchase').textContent = ' ';
    
        // SET THE TOTAL FIELDS 
	    document.getElementById('bsClosingFeePurchase').textContent = ' ';
	    document.getElementById('bsTitleSearchFeePurchase').textContent = ' ';
	    document.getElementById('bsTitleInsurancePurchase').textContent = ' ';
	    document.getElementById('bsRecordingFeePurchase').textContent = ' ';
	    document.getElementById('bsDocStampFeePurchase').textContent = ' ';
	    document.getElementById('bsIntangibleFeePurchase').textContent = ' ';
	    document.getElementById('bsTotalClosingCostsPurchase').textContent = ' ';
    }
}

//////////////////////////////////////////////////////////////////////////////
function calculateRefinanceForm() {
	var loanAmountEl = document.getElementById('loanAmountRefi');
    if (loanAmountEl.value == '') {
        var loanAmount = 0.0;
    } else {
	    var loanAmount = parseFloat(filterStringToNumber(loanAmountEl.value));
    }

	var mortgagePagesEl = document.getElementById('mortgagePagesRefi');
    if (mortgagePagesEl.value == '') {
	    var mortgagePages = 0.0;
    } else {
	    var mortgagePages = parseFloat(filterStringToNumber(mortgagePagesEl.value));
    }
	
	if(loanAmount == 0) {  
		alert("Please enter a Loan Amount!");
		loanAmountEl.focus();
		return false; 
	} 
    if (mortgagePages == 0) {
		alert("Please enter a value for Mortgage Page Count!");
		mortgagePagesEl.focus();
		return false; 
    }
	if(loanAmount>10000000) {
		alert("Please call our office for a Quote:  813-672-3333");
    }

	// Calculate Buyer fields the various fields in the form
	var bClosingFee = bClosingFeeRefiRate;
	var bTitleSearchFee = bTitleSearchFeeRefiRate;
	var bTitleInsurance = 0;
    if (loanAmount <= 100000) {
        bTitleInsurance = loanAmount * titleInsuranceRate1;
    }else if (loanAmount <= 1000000) {
        bTitleInsurance = (100000 * titleInsuranceRate1) + ((loanAmount - 100000) * titleInsuranceRate2);
    }else if (loanAmount <= 5000000) {
        bTitleInsurance = (100000 * titleInsuranceRate1) + (900000 * titleInsuranceRate2) + ((loanAmount - 1000000) * titleInsuranceRate3);
    }else if (loanAmount <= 10000000) {
        bTitleInsurance = (100000 * titleInsuranceRate1) + (900000 * titleInsuranceRate2) + (4000000 * titleInsuranceRate3) + ((loanAmount - 5000000) * titleInsuranceRate4);
    }
    if (mortgagePages == 0) {
        var bRecordingFee = 10.0;
    } else {
        var bRecordingFee = 10.0 + ((parseFloat(mortgagePages)) - 1.0) * mortgagePgRate;
    }
    var bDocStampFee = loanAmount * bDocStampRate;
    var bIntangibleFee = (Math.ceil(loanAmount/100)*100) * intangibleRate;
	var bTotalClosingCosts = bTitleSearchFee + bClosingFee + bTitleInsurance + bRecordingFee + bDocStampFee + bIntangibleFee;

    // Pretty up the loan amount field
	loanAmountEl.value = formatAsCurrency(loanAmount);

    // SET THE BUYER FIELDS
    if (document.all) {
	    document.getElementById('bClosingFeeRefi').innerText = formatAsCurrency(bClosingFee);
	    document.getElementById('bTitleSearchFeeRefi').innerText = formatAsCurrency(bTitleSearchFee);
	    document.getElementById('bTitleInsuranceRefi').innerText = formatAsCurrency(bTitleInsurance);
	    document.getElementById('bRecordingFeeRefi').innerText = formatAsCurrency(bRecordingFee);
	    document.getElementById('bDocStampFeeRefi').innerText = formatAsCurrency(bDocStampFee);
	    document.getElementById('bIntangibleFeeRefi').innerText = formatAsCurrency(bIntangibleFee);
	    document.getElementById('bTotalClosingCostsRefi').innerText = formatAsCurrency(bTotalClosingCosts);
    
    } else {
	    document.getElementById('bClosingFeeRefi').textContent = formatAsCurrency(bClosingFee);
	    document.getElementById('bTitleSearchFeeRefi').textContent = formatAsCurrency(bTitleSearchFee);
	    document.getElementById('bTitleInsuranceRefi').textContent = formatAsCurrency(bTitleInsurance);
	    document.getElementById('bRecordingFeeRefi').textContent = formatAsCurrency(bRecordingFee);
	    document.getElementById('bDocStampFeeRefi').textContent = formatAsCurrency(bDocStampFee);
	    document.getElementById('bIntangibleFeeRefi').textContent = formatAsCurrency(bIntangibleFee);
	    document.getElementById('bTotalClosingCostsRefi').textContent = formatAsCurrency(bTotalClosingCosts);
    
    }
}

//////////////////////////////////////////////////////////////////////////////
function resetRefi() {
    // Pretty up the loan amount field
	document.getElementById('loanAmountRefi').value = ' ';
	document.getElementById('mortgagePagesRefi').value = ' ';

    // SET THE BUYER FIELDS
    if (document.all) {
	    document.getElementById('bClosingFeeRefi').innerText = ' ';
	    document.getElementById('bTitleSearchFeeRefi').innerText = ' ';
	    document.getElementById('bTitleInsuranceRefi').innerText = ' ';
	    document.getElementById('bRecordingFeeRefi').innerText = ' ';
	    document.getElementById('bDocStampFeeRefi').innerText = ' ';
	    document.getElementById('bIntangibleFeeRefi').innerText = ' ';
	    document.getElementById('bTotalClosingCostsRefi').innerText = ' ';
    
    } else {
	    document.getElementById('bClosingFeeRefi').textContent = ' ';
	    document.getElementById('bTitleSearchFeeRefi').textContent = ' ';
	    document.getElementById('bTitleInsuranceRefi').textContent = ' ';
	    document.getElementById('bRecordingFeeRefi').textContent = ' ';
	    document.getElementById('bDocStampFeeRefi').textContent = ' ';
	    document.getElementById('bIntangibleFeeRefi').textContent = ' ';
	    document.getElementById('bTotalClosingCostsRefi').textContent = ' ';
    
    }
}
