(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.mortgageCalculator=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o+options.monthlyIncome){options.monthlyExpenses=options.monthlyIncome}var findMaxPay=function(monthlyIncome,monthlyExpenses){var maxPay=(monthlyIncome-monthlyExpenses)*settings.riskRate;return maxPay};var findMortgage=function(pay,monthlyInterest,totalPeriods){var mortgage=pay*(1-Math.pow(1+monthlyInterest/100,-totalPeriods))/(monthlyInterest/100);return mortgage};var periodsRequested=options.payments||options.term*12,totalPeriods=getMaxTerm(options.age,settings.maxAge,periodsRequested),maxMonthlyPayment=findMaxPay(options.monthlyIncome,options.monthlyExpenses),mortgageTotal=findMortgage(maxMonthlyPayment,options.interest/12,totalPeriods),totalPriceHouse=mortgageTotal+options.initialDeposit,totalInterest=0;if(mortgageTotal!==0){totalInterest=totalAmortization({mortgageTotal:mortgageTotal,maxMonthlyPayment:maxMonthlyPayment,term:periodsRequested,interest:options.interest/12})}return{maxMonthlyPayment:maxMonthlyPayment,mortgageTotal:+mortgageTotal.toFixed(7),totalPriceHouse:+totalPriceHouse.toFixed(7),totalInterest:+totalInterest.toFixed(7)}}function getMaxTerm(age,maxAge,periodsRequested){var maxPeriods=(maxAge-age)*12;if(maxPeriods>periodsRequested){return periodsRequested}else{return maxPeriods}}function totalAmortization(argument){var amortizationResult=amortization(argument.mortgageTotal,argument.maxMonthlyPayment,argument.term,argument.interest/100);var totalInterest=0;function getTotalInterest(element){totalInterest+=element.amortizationInterest}amortizationResult.forEach(getTotalInterest);return totalInterest}if(typeof module!=="undefined"){module.exports=calculateMortgage}},{"./amortization.js":1,"lodash/collection/forEach":6,"lodash/function/compose":7,"lodash/object/defaults":51}],3:[function(require,module,exports){if(typeof require!=="undefined"){var defaults=require("lodash/object/defaults");var compose=require("lodash/function/compose")}var defaultOptions={places:2,symbol:"$",thousand:",",decimal:"."},clone=compose(JSON.parse,JSON.stringify);function negativeValue(number){return number<0?"-":""}function formatMoney(number,options){number=+number||0;options=defaults(clone(options||{}),defaultOptions);var negative=negativeValue(number),i=parseInt(number=Math.abs(number).toFixed(options.places),10)+"",j=(j=i.length)>3?j%3:0;return options.symbol+negative+(j?i.substr(0,j)+options.thousand:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+options.thousand)+(options.places?options.decimal+Math.abs(number-i).toFixed(options.places).slice(2):"")}if(typeof module!=="undefined"){module.exports=formatMoney}},{"lodash/function/compose":7,"lodash/object/defaults":51}],4:[function(require,module,exports){module.exports={formatMoney:require("./format_money.js"),calculateMortgage:require("./calculate_mortgage.js"),amortization:require("./amortization.js")}},{"./amortization.js":1,"./calculate_mortgage.js":2,"./format_money.js":3}],5:[function(require,module,exports){var LazyWrapper=require("../internal/LazyWrapper"),LodashWrapper=require("../internal/LodashWrapper"),baseLodash=require("../internal/baseLodash"),isArray=require("../lang/isArray"),isObjectLike=require("../internal/isObjectLike"),wrapperClone=require("../internal/wrapperClone");var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function lodash(value){if(isObjectLike(value)&&!isArray(value)&&!(value instanceof LazyWrapper)){if(value instanceof LodashWrapper){return value}if(hasOwnProperty.call(value,"__chain__")&&hasOwnProperty.call(value,"__wrapped__")){return wrapperClone(value)}}return new LodashWrapper(value)}lodash.prototype=baseLodash.prototype;module.exports=lodash},{"../internal/LazyWrapper":10,"../internal/LodashWrapper":11,"../internal/baseLodash":22,"../internal/isObjectLike":40,"../internal/wrapperClone":45,"../lang/isArray":47}],6:[function(require,module,exports){var arrayEach=require("../internal/arrayEach"),baseEach=require("../internal/baseEach"),createForEach=require("../internal/createForEach");var forEach=createForEach(arrayEach,baseEach);module.exports=forEach},{"../internal/arrayEach":13,"../internal/baseEach":19,"../internal/createForEach":30}],7:[function(require,module,exports){module.exports=require("./flowRight")},{"./flowRight":8}],8:[function(require,module,exports){var createFlow=require("../internal/createFlow");var flowRight=createFlow(true);module.exports=flowRight},{"../internal/createFlow":29}],9:[function(require,module,exports){var FUNC_ERROR_TEXT="Expected a function";var nativeMax=Math.max;function restParam(func,start){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}start=nativeMax(start===undefined?func.length-1:+start||0,0);return function(){var args=arguments,index=-1,length=nativeMax(args.length-start,0),rest=Array(length);while(++index2?sources[length-2]:undefined,guard=length>2?sources[2]:undefined,thisArg=length>1?sources[length-1]:undefined;if(typeof customizer=="function"){customizer=bindCallback(customizer,thisArg,5);length-=2}else{customizer=typeof thisArg=="function"?thisArg:undefined;length-=customizer?1:0}if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1}while(++index-1&&value%1==0&&value-1&&value%1==0&&value<=MAX_SAFE_INTEGER}module.exports=isLength},{}],40:[function(require,module,exports){function isObjectLike(value){return!!value&&typeof value=="object"}module.exports=isObjectLike},{}],41:[function(require,module,exports){(function(global){var getNative=require("./getNative");var WeakMap=getNative(global,"WeakMap");var metaMap=WeakMap&&new WeakMap;module.exports=metaMap}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./getNative":34}],42:[function(require,module,exports){var realNames={};module.exports=realNames},{}],43:[function(require,module,exports){var isArguments=require("../lang/isArguments"),isArray=require("../lang/isArray"),isIndex=require("./isIndex"),isLength=require("./isLength"),keysIn=require("../object/keysIn");var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;function shimKeys(object){var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length;var allowIndexes=!!length&&isLength(length)&&(isArray(object)||isArguments(object));var index=-1,result=[];while(++index0;while(++index