height
500px
config
[{"tag":"style","attributes":{},"children":[],"content":"\n /* Need Rendy to add this to main CSS */\n\t* {\n\t\tfont-family: 'inter', sans-serif, 'roboto-condensed-fallback';\n\t}\n\t\n"},{"tag":"link","attributes":{"rel":"stylesheet","href":"/styles/variables.css"},"children":[]},{"tag":"link","attributes":{"rel":"stylesheet","href":"/libs/calculators/css/clientlib-vma.min.css"},"children":[]},{"tag":"link","attributes":{"rel":"stylesheet","href":"/libs/calculators/css/clientlib-calculator.min.css"},"children":[]},{"tag":"link","attributes":{"rel":"stylesheet","href":"/libs/calculators/css/style-updated.css"},"children":[]},{"tag":"style","attributes":{},"children":[],"content":"\n .velocity-calculator .cta {\n max-width: 100%;\n margin: 0;\n border: 2px solid var(--colour-surface-interactive-default);\n border-radius: 4px;\n font-family: var(--body-font-family);\n font-style: normal;\n font-weight: 700;\n letter-spacing: -0.5px;\n text-decoration: none;\n background: var(--colour-surface-interactive-default);\n color: var(--colour-surface-interactive-inverse-default);\n font-size: var(--button-font-sm-size);\n padding: 14px 16px;\n line-height: 1;\n }\n\n .velocity-calculator .cta:hover {\n border: 2px solid var(--colour-surface-interactive-hover);\n background: var(--colour-surface-interactive-hover);\n }\n"},{"tag":"script","attributes":{"src":"/libs/calculators/jquery/jquery-1.8.2.min.js"},"children":[],"content":""},{"tag":"script","attributes":{"src":"/libs/calculators/jquery/jquery-ui-1.9.2.custom.js"},"children":[],"content":""},{"tag":"script","attributes":{"src":"/libs/calculators/jquery/clientlib-calculator.min.js"},"children":[],"content":""},{"tag":"div","attributes":{"data-show-cta":"true","id":"velocity-calculator","class":"vma-calculator velocity-calculator credit-card-calculator","data-cards":"flyer,high-flyer","data-cc-default-value":"2000"},"children":[{"tag":"div","attributes":{"class":"terms-and-conditions"},"children":[{"tag":"p","attributes":{},"children":[{"text":"Assumptions: Velocity Points calculations for credit card spend are based on retail spend only and do not include additional Points that you could earn if you spend with Virgin Australia; stated monthly credit card spend remains constant over the stated period; our Velocity Points earn rates for the above products do not change over the term. The Velocity Calculator does not display any additional bonus Velocity Points you may be eligible for if you take out a Virgin Australia Velocity credit card and meet any associated offer conditions."}]}]}]},{"tag":"script","attributes":{},"children":[],"content":"\n\n/* Default input settings */\nvar defaults = new Object();\n\ndefaults.loan = 400000; //default value should be in between loan range\ndefaults.loanMin = 75000;\ndefaults.loanMax = 2000000;\ndefaults.splitLoan = true;\ndefaults.creditCards = false;\ndefaults.creditCardType = 0; // 0 for Flyer card, 1 for High Flyer card\ndefaults.creditCardAmount = 0; //default value should be in between card range\ndefaults.cardMin = 0;\ndefaults.cardMax = 30000;\ndefaults.insurance = false;\ndefaults.homeInsurance = false;\ndefaults.lifeInsurance = false;\ndefaults.incomeInsurance = false;\ndefaults.hasBonusPoints = false;\ndefaults.hasTenure = false;\ndefaults.calcTenure = 10;\n\ndefaults.is_credit_card = false; /* decide whether this is for home loans or cards - default is home loans */\n\n/* Calculator defaults */\ndefaults.loanPointsRange = {\n '3': '70000',\n '6': '70000',\n '9': '70000'\n}\n\ndefaults.monthlyPoints = 1000;\ndefaults.anniversaryPoints = 30000;\n\ndefaults.flyerCardRange = 1500;\ndefaults.highFlyerCardRange = 8000;\n\ndefaults.homeInsurancePoints = 10000;\ndefaults.lifeInsurancePoints = 10000;\ndefaults.incomeInsurancePoints = 10000;\n\ndefaults.terms_and_conditions = '';\ndefaults.important_info = '';\n\n/*\nvar $velocity_calculator,\ncards = [],\nshow_cta;\n*/\n\n/* Calculator outputs */\ndefaults.yearlyPoints = [];\ndefaults.totalPoints = {\n 'total': 0,\n 'loan': 0,\n 'credit': 0,\n 'insurance': 0,\n 'flyer' : 0,\n 'high-flyer': 0,\n 'bonus': 0\n};\n\n\n/* Chart settings */\ndefaults.chartWidth = 610;\ndefaults.chartHeight = 276;\n\ndefaults.chartMaxPoints = 300000;\ndefaults.chartPointsStep = 50000;\n\ndefaults.chartStepNumber = defaults.chartMaxPoints / defaults.chartPointsStep;\ndefaults.chartStepHeight = Math.floor(defaults.chartHeight / defaults.chartStepNumber);\ndefaults.chartStepExtra = defaults.chartHeight - (defaults.chartStepNumber * defaults.chartStepHeight);\n\nvar calc_options = Object();\n\nfunction buildCalculator(calcId) {\n\n $velocity_calculator = jQuery('#' + calcId);\n calc_options[calcId]['hasBonusPoints'] = $velocity_calculator.data('hasBonus') == '1';\n calc_options[calcId]['hasTenure'] = $velocity_calculator.data('hasTenure') == '1';\n if(typeof $velocity_calculator.data('ccDefaultValue') != 'undefined'){\n calc_options[calcId]['creditCardAmount'] = $velocity_calculator.data('ccDefaultValue');\n }\n\n if ($velocity_calculator.hasClass('credit-card-calculator')) {\n calc_options[calcId]['is_credit_card'] = true;\n calc_options[calcId]['loanMin'] = 0;\n calc_options[calcId]['loan'] = 0;\n calc_options[calcId]['creditCards'] = true;\n calc_options[calcId]['splitLoan'] = false;\n }\n\n if ($velocity_calculator.children('.terms-and-conditions')[0] || $velocity_calculator.children('.vma-important-info')[0]) {\n if ($velocity_calculator.children('.terms-and-conditions')[0]) {\n calc_options[calcId]['terms_and_conditions'] = $velocity_calculator.children('.terms-and-conditions').html();\n }\n if ($velocity_calculator.children('.vma-important-info')[0] && calc_options[calcId]['hasBonusPoints']) {\n calc_options[calcId]['important_info'] = $velocity_calculator.children('.vma-important-info').html();\n }\n $velocity_calculator.html('');\n }\n\n if (calc_options[calcId]['is_credit_card']) {\n var loan = 0;\n var creditCards = true;\n var creditCardAmount = calc_options[calcId]['ccDefaultValue'];\n calc_options[calcId]['creditCardAmount'] = calc_options[calcId]['ccDefaultValue'];\n var show_cta = calc_options[calcId]['showCta'];\n var cards = calc_options[calcId]['cards'].split(',');\n }\n var calculatorHtml = '';\n\n calculatorHtml += '<div class=\"points-calculator calc-controls\">';\n\n calculatorHtml += '<div class=\"calculator-row calculator-row-1\">';\n calculatorHtml += '<div class=\"calculator-item calculator-item-left\">';\n calculatorHtml += '<div class=\"calculator-input\"><label for=\"loan-amount\">How much are you looking to borrow?</label><div class=\"calculator-wrapper\"><div class=\"input-type\">$</div><input type=\"text\" name=\"loan-amount\" id=\"loan-amount\" value=\"'+addCommas(calc_options[calcId]['loan'])+'\" /></div></div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calculator-item calculator-slider-container calculator-item-right\">';\n calculatorHtml += '<div class=\"calculator-slider\"><div class=\"slider-bar\" id=\"loan-slider\"></div><div class=\"slider-min minBalance\">$'+addCommas(calc_options[calcId]['loanMin'])+'</div><div class=\"slider-max\">$'+addCommas(calc_options[calcId]['loanMax'])+'</div></div>';\n calculatorHtml += '</div>';\n\n // Tenure Start\n if(calc_options[calcId]['hasTenure'] == 1){\n calculatorHtml += '<div class=\"calculator-item calculator-item-left tenure-div\">';\n calculatorHtml += '<div class=\"calculator-input\"><label for=\"loan-tenure\">See how many Points you could earn over the first 1 to 10 years of your loan?</label></div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calculator-item calculator-slider-container calculator-item-right tenure-div\">';\n calculatorHtml += '<div class=\"calculator-slider\"><div class=\"slider-bar\" id=\"tenure-slider\"></div><div class=\"slider-min\">1 year</div><div class=\"slider-max maxBalance\">10 years</div></div>';\n calculatorHtml += '</div>';\n }\n // calculatorHtml += '</div>';\n // Tenure end\n calculatorHtml += '<div class=\"calculator-item-choice calculator-item-left calculator-item-choice-inline\">';\n calculatorHtml += '<div class=\"calculator-input\">';\n calculatorHtml += '<label for=\"split-loan\">Split loan?</label>';\n calculatorHtml += '<div class=\"calculator-tooltip\"><div class=\"calculator-tooltip-wrapper\">';\n calculatorHtml += '<div class=\"calculator-tooltip-value\">Split loan means you split your borrowings into more than one loan (eg. a variable rate loan and a fixed rate loan). The calculator assumes a maximum of 2 loans.</div>';\n calculatorHtml += '</div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-choice\"><div class=\"slider-bar\" id=\"split-slider\"></div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calculator-row calculator-row-2\">';\n calculatorHtml += '<div class=\"calculator-item calculator-item-left calculator-item-choice\">';\n calculatorHtml += '<div class=\"calculator-input\"><label class=\"label-full\">Credit Cards: See how you could boost your Velocity Points </label></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-item calculator-item-right\">';\n calculatorHtml += '<div class=\"calculator-choice\"><div class=\"slider-bar\" id=\"credit-slider\"></div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"credit-block\">';\n calculatorHtml += '<div class=\"calculator-item\">';\n calculatorHtml += '<div class=\"calculator-radio\">';\n calculatorHtml += '<div class=\"calculator-radio-button calculator-tooltip-button\" id=\"flyer-card\">';\n calculatorHtml += 'Virgin Australia Velocity Flyer <div class=\"nowrap\">Card';\n calculatorHtml += '<div class=\"calculator-tooltip\"><div class=\"calculator-tooltip-wrapper\">';\n calculatorHtml += '<div class=\"calculator-tooltip-value\">Earn 1 Velocity Point per $1 of eligible spend with Virgin Australia<sup>12</sup>. On other retail purchases<sup>14</sup>, earn 0.66 Velocity Points per $1 spent, up to $1,500 per statement period, then 0.5 Velocity Points per $1 spent. Minimum income of $35,000 & minimum card credit limit of $6,000 required for this product. Credit assessment criteria apply.</div>';\n calculatorHtml += '</div></div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-radio\">';\n calculatorHtml += '<div class=\"calculator-radio-button calculator-tooltip-button\" id=\"high-flyer-card\">';\n calculatorHtml += 'Virgin Australia Velocity High Flyer <div class=\"nowrap\">Card';\n calculatorHtml += '<div class=\"calculator-tooltip\"><div class=\"calculator-tooltip-wrapper\">';\n calculatorHtml += '<div class=\"calculator-tooltip-value\">Earn 3 Velocity Points per $1 of eligible spend with Virgin Australia<sup>12</sup>. On other retail purchases<sup>14</sup>, earn 1 Velocity Point per $1 spent, up to $10,000 per statement period, then 0.5 Velocity Points per $1 spent. Minimum income of $75,000 & minimum card credit limit of $15,000 required for this product. Credit assessment criteria apply.</div>';\n calculatorHtml += '</div></div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-item calculator-item-left\">';\n calculatorHtml += '<div class=\"calculator-input ctrl-holder width-s\">';\n calculatorHtml += '<label for=\"credit-card-amount\">Monthly credit card spend:</label>';\n calculatorHtml += '<div class=\"ctrl\"><div class=\"addon-text-container calculator-wrapper\"><div class=\"addon-text\">$</div><input type=\"text\" title=\"Credit Card Amount\" data-type=\"range\" name=\"credit-card-amount\" id=\"credit-card-amount\" value=\"'+addCommas(calc_options[calcId]['creditCardAmount'])+'\" data-highlight=\"true\" class=\"vma-slider-values text\" idx=\"0\"></div><div class=\"status-msg\"></div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calculator-item calculator-slider-container calculator-item-right\">';\n calculatorHtml += '<div class=\"calculator-slider\"><div class=\"slider-bar\" id=\"credit-amount-slider\"></div><div class=\"slider-min minBalance\">$'+addCommas(calc_options[calcId]['cardMin'])+'</div><div class=\"slider-max maxBalance\">$'+addCommas(calc_options[calcId]['cardMax'])+'</div></div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calculator-item\">';\n calculatorHtml += '<label for=\"credit-bonus-points\">You can also earn bonus Velocity Points when you take out one of our Virgin Australia Velocity Cards. Find out more in our <a href=\"/credit-card/rewards-and-benefits/velocity-rewards\">Virgin Money benefits</a> section.</label>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calculator-row calculator-row-3\">';\n calculatorHtml += '<div class=\"calculator-item calculator-item-left calculator-item-choice\">';\n calculatorHtml += '<div class=\"calculator-input\"><label class=\"label-full\">Insurance products: See how you could boost your Velocity Points</label></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-item calculator-item-right\">';\n calculatorHtml += '<div class=\"calculator-choice\"><div class=\"slider-bar\" id=\"insurance-slider\"></div></div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"insurance-block\">';\n calculatorHtml += '<div class=\"calculator-item\">';\n calculatorHtml += '<div class=\"calculator-checkbox\">';\n calculatorHtml += '<div class=\"calculator-checkbox-button calculator-tooltip-button\" id=\"home-insurance\">';\n calculatorHtml += 'Home/and or Contents Insurance';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-checkbox\">';\n calculatorHtml += '<div class=\"calculator-checkbox-button calculator-tooltip-button\" id=\"life-insurance\">';\n calculatorHtml += 'Life Insurance';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"calculator-checkbox\">';\n calculatorHtml += '<div class=\"calculator-checkbox-button calculator-tooltip-button\" id=\"income-insurance\">';\n calculatorHtml += 'Income Protection';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n calculatorHtml += '</div>';\n\n calculatorHtml += '</div>';\n\n calculatorHtml += '<div class=\"calc-disclaimer\">' + calc_options[calcId]['terms_and_conditions'] + '</div>';\n\n calculatorHtml += '</div>';\n calculatorHtml += '<div class=\"velocity-calculator-result\"></div>';\n\n $velocity_calculator.html(calculatorHtml);\n\n activateCalculator(calcId);\n}\n\nfunction activateCalculator(calcId) {\n jQuery('#' + calcId + ' #loan-slider').slider({\n range: \"min\",\n value: calc_options[calcId]['loan'],\n min: calc_options[calcId]['loanMin'],\n max: calc_options[calcId]['loanMax'],\n slide: function(event, ui) {\n loan = ui.value;\n jQuery('#' + calcId + ' #loan-amount').val(addCommas(ui.value));\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(ui.value));\n if(calc_options[calcId]['loan'] < (calc_options[calcId]['loanMax'] / 2)){\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n //calculatePoints();\n },\n change: function(event, ui) {\n calc_options[calcId]['loan'] = ui.value;\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(ui.value));\n if(calc_options[calcId]['loan'] < (calc_options[calcId]['loanMax'] / 2)){\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n },\n create: function(event, ui) {\n jQuery('#' + calcId + ' #loan-slider .ui-slider-handle').append('<div class=\"ui-slider-value\">$'+addCommas(calc_options[calcId]['loan'])+'</div>');\n if(calc_options[calcId]['loan'] < (calc_options[calcId]['loanMax'] / 2)){\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n\n } else {\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n }\n });\n\n jQuery('#' + calcId + ' #loan-amount').keydown(function (e) {\n // Allow: backspace, delete, tab, escape, enter and .\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 188]) !== -1 ||\n // Allow: Ctrl+A, Command+A and Comma\n (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||\n // Allow: home, end, left, right, down, up\n (e.keyCode >= 35 && e.keyCode <= 40)) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is a number and stop the keypress\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\n e.preventDefault();\n }\n });\n\n jQuery('#' + calcId + ' #loan-amount').on(\"change keyup paste\", function(){\n var currentLoan = removeCommas(jQuery(this).val().replace(/[^0-9\\.,]/g,''));\n if(currentLoan < calc_options[calcId]['loanMin'] || currentLoan == ''){ // Below range - drop chart values, reset slider to min\n calc_options[calcId]['loan'] = 0;\n jQuery('#' + calcId + ' #loan-slider').slider('value', calc_options[calcId]['loanMin']);\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(loanMin));\n }\n else if(currentLoan > calc_options[calcId]['loanMax']){ // Over range - reset all to max\n jQuery(this).val(addCommas(calc_options[calcId]['loanMax']));\n calc_options[calcId]['loan'] = calc_options[calcId]['loanMax'];\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['loanMax']));\n jQuery('#' + calcId + ' #loan-slider').slider('value', loanMax);\n } else { //In range - calculate as usual\n calc_options[calcId]['loan'] = currentLoan;\n jQuery('#' + calcId + ' #loan-slider').slider('value', currentLoan);\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(currentLoan));\n }\n\n if(calc_options[calcId]['loan'] < (calc_options[calcId]['loanMax'] / 2)){\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n });\n\n jQuery('#' + calcId + ' #loan-amount').on(\"blur\", function(){\n var currentLoan = removeCommas(jQuery(this).val().replace(/[^0-9\\.,]/g,''));\n if(currentLoan < calc_options[calcId]['loanMin'] || currentLoan == ''){ // Below range - reset to min\n jQuery(this).val(addCommas(calc_options[calcId]['loanMin']));\n calc_options[calcId]['loan'] = calc_options[calcId]['loanMin'];\n jQuery('#' + calcId + ' #loan-slider').slider('value', calc_options[calcId]['loanMin']);\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['loanMin']));\n }\n else if(currentLoan > calc_options[calcId]['loanMax']){ // Over range - reset all to max\n jQuery(this).val(addCommas(calc_options[calcId]['loanMax']));\n loan = loanMax;\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['loanMax']));\n jQuery('#' + calcId + ' #loan-slider').slider('value', calc_options[calcId]['loanMax']);\n } else { //In range - calculate as usual\n jQuery(this).val(addCommas(currentLoan));\n loan = currentLoan;\n jQuery('#' + calcId + ' #loan-slider').slider('value', currentLoan);\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').html('$'+addCommas(currentLoan));\n }\n\n if(calc_options[calcId]['loan'] < (calc_options[calcId]['loanMax'] / 2)){\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #loan-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n });\n if(calc_options[calcId]['hasTenure']){\n $('#' + calcId + ' #tenure-slider').slider({\n range: \"min\",\n value: calc_options[calcId]['calcTenure'],\n min: 1,\n max: 10,\n create: function(event, ui) {\n $('#' + calcId + ' #tenure-slider .ui-slider-handle').append('<div class=\"ui-slider-value\">10 years</div>');\n },\n slide: function(event, ui) {\n calc_options[calcId]['calcTenure'] = ui.value;\n jQuery('#' + calcId + ' .tenure-range').html(calc_options[calcId]['calcTenure'] + \" year\" + ((calc_options[calcId]['calcTenure'] > 1) ? \"s\" : \"\"))\n jQuery('#' + calcId + ' .points-chart .columns').replaceWith(buildColumns(calcId));\n jQuery('#' + calcId + ' .points-chart .h-axis').replaceWith(buildHAxis(calcId));\n jQuery('.columns, .h-axis', '#' + calcId + ' .velocity-calculator-result .points-chart').width(jQuery('#' + calcId + ' .velocity-calculator-result .points-chart').innerWidth() - jQuery('#' + calcId + ' .velocity-calculator-result .points-chart .v-axis').outerWidth(true));\n jQuery('#' + calcId + ' .points-wrapper').hover(\n function() {\n jQuery(this).find('.chart-tooltip').fadeIn(100);\n },\n function() {\n jQuery(this).find('.chart-tooltip').fadeOut(100);\n }\n );\n $('#' + calcId + ' #tenure-slider .ui-slider-value').html(calc_options[calcId]['calcTenure'] + \" year\" + ((calc_options[calcId]['calcTenure'] > 1) ? \"s\" : \"\"));\n if(calc_options[calcId]['calcTenure'] < 6){\n $('#' + calcId + ' #tenure-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n $('#' + calcId + ' #tenure-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n },\n change: function(event, ui) {\n calc_options[calcId]['calcTenure'] = ui.value;\n jQuery('#' + calcId + ' .tenure-range').html(calc_options[calcId]['calcTenure'] + \" year\" + ((calc_options[calcId]['calcTenure'] > 1) ? \"s\" : \"\"))\n jQuery('#' + calcId + ' .points-chart .columns').replaceWith(buildColumns(calcId));\n jQuery('#' + calcId + ' .points-chart .h-axis').replaceWith(buildHAxis(calcId));\n jQuery('.columns, .h-axis', '#' + calcId + ' .velocity-calculator-result .points-chart').width(jQuery('#' + calcId + ' .velocity-calculator-result .points-chart').innerWidth() - jQuery('#' + calcId + ' .velocity-calculator-result .points-chart .v-axis').outerWidth(true));\n jQuery('#' + calcId + ' .points-wrapper').hover(\n function() {\n jQuery(this).find('.chart-tooltip').fadeIn(100);\n },\n function() {\n jQuery(this).find('.chart-tooltip').fadeOut(100);\n }\n );\n $('#' + calcId + ' #tenure-slider .ui-slider-value').html(calc_options[calcId]['calcTenure'] + \" year\" + ((calc_options[calcId]['calcTenure'] > 1) ? \"s\" : \"\"));\n if(calc_options[calcId]['calcTenure'] < 6){\n $('#' + calcId + ' #tenure-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n $('#' + calcId + ' #tenure-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n }\n });\n }\n\n\n jQuery('#' + calcId + ' #split-slider').slider({\n range: \"min\",\n value: calc_options[calcId]['splitLoan'],\n min: 0,\n max: 1,\n step: 1,\n start: function(event, ui) {\n jQuery('#' + calcId + ' #split-slider .ui-slider-value').hide();\n },\n stop: function(event, ui) {\n if(calc_options[calcId]['splitLoan']){\n calc_options[calcId]['splitLoan'] = false;\n jQuery('#' + calcId + ' #split-slider').slider('option', 'value', 0);\n } else {\n calc_options[calcId]['splitLoan'] = true;\n jQuery('#' + calcId + ' #split-slider').slider('option', 'value', 1);\n }\n\n jQuery('#' + calcId + ' #split-slider .ui-slider-value').html(choiceString(calc_options[calcId]['splitLoan'])).show();\n if(calc_options[calcId]['splitLoan']){\n jQuery('#' + calcId + ' #split-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #split-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n }\n\n calculatePoints(calcId);\n },\n create: function(event, ui) {\n jQuery('#' + calcId + ' #split-slider .ui-slider-handle').append('<div class=\"ui-slider-value\">'+choiceString(calc_options[calcId]['splitLoan'])+'</div>');\n\n if(calc_options[calcId]['splitLoan']){\n jQuery('#' + calcId + ' #split-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #split-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n }\n }\n });\n\n jQuery('#' + calcId + ' #credit-slider').slider({\n range: \"min\",\n value: calc_options[calcId]['creditCards'],\n min: 0,\n max: 1,\n step: 1,\n start: function(event, ui) {\n jQuery('#' + calcId + ' #credit-slider .ui-slider-value').hide();\n },\n stop: function(event, ui) {\n if(calc_options[calcId]['creditCards']){\n calc_options[calcId]['creditCards'] = false;\n jQuery('#' + calcId + ' #credit-slider').slider('option', 'value', 0);\n } else {\n calc_options[calcId]['creditCards'] = true;\n jQuery('#' + calcId + ' #credit-slider').slider('option', 'value', 1);\n }\n\n jQuery('#' + calcId + ' #credit-slider .ui-slider-value').html(choiceString(calc_options[calcId]['creditCards'])).show();\n if(calc_options[calcId]['creditCards']){\n jQuery('#' + calcId + ' #credit-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .credit-block').show();\n } else {\n jQuery('#' + calcId + ' #credit-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .credit-block').hide();\n }\n\n calculatePoints(calcId);\n },\n create: function(event, ui) {\n jQuery('#' + calcId + ' #credit-slider .ui-slider-handle').append('<div class=\"ui-slider-value\">'+choiceString(calc_options[calcId]['creditCards'])+'</div>');\n\n if(calc_options[calcId]['creditCards']){\n jQuery('#' + calcId + ' #credit-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .credit-block').show();\n\n } else {\n jQuery('#' + calcId + ' #credit-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .credit-block').hide();\n }\n\n if(calc_options[calcId]['creditCardType'] > 0){\n jQuery('#' + calcId + ' #high-flyer-card').addClass('calculator-radio-button-checked');\n } else {\n jQuery('#' + calcId + ' #flyer-card').addClass('calculator-radio-button-checked');\n }\n }\n });\n\n jQuery('#' + calcId + ' .calculator-radio-button').click(function() {\n jQuery('#' + calcId + ' .calculator-radio-button').removeClass('calculator-radio-button-checked');\n jQuery(this).addClass('calculator-radio-button-checked');\n if(jQuery(this).attr('id') == 'high-flyer-card'){\n calc_options[calcId]['creditCardType'] = 1;\n } else {\n calc_options[calcId]['creditCardType'] = 0;\n }\n\n calculatePoints(calcId);\n });\n\n jQuery('#' + calcId + ' #credit-amount-slider').slider({\n range: \"min\",\n value: calc_options[calcId]['creditCardAmount'],\n min: calc_options[calcId]['cardMin'],\n max: calc_options[calcId]['cardMax'],\n slide: function(event, ui) {\n calc_options[calcId]['creditCardAmount'] = ui.value;\n jQuery('#' + calcId + ' #credit-card-amount').val(addCommas(ui.value));\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(ui.value));\n if(calc_options[calcId]['creditCardAmount'] < (calc_options[calcId]['cardMax'] / 2)){\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n //calculatePoints();\n },\n change: function(event, ui) {\n calc_options[calcId]['creditCardAmount'] = ui.value;\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(ui.value));\n if(calc_options[calcId]['creditCardAmount'] < (calc_options[calcId]['cardMax'] / 2)){\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n },\n create: function(event, ui) {\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-handle').append('<div class=\"ui-slider-value\">$'+addCommas(calc_options[calcId]['creditCardAmount'])+'</div>');\n if(calc_options[calcId]['creditCardAmount'] < (calc_options[calcId]['cardMax'] / 2)){\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n }\n });\n\n\n jQuery('#' + calcId + ' #credit-card-amount').keydown(function (e) {\n // Allow: backspace, delete, tab, escape, enter and .\n if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 188]) !== -1 ||\n // Allow: Ctrl+A, Command+A and Comma\n (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||\n // Allow: home, end, left, right, down, up\n (e.keyCode >= 35 && e.keyCode <= 40)) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is a number and stop the keypress\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\n e.preventDefault();\n }\n });\n\n jQuery('#' + calcId + ' #credit-card-amount').on(\"change keyup paste\", function(){\n var currentCardAmount = removeCommas(jQuery(this).val().replace(/[^0-9\\.,]/g,''));\n if(currentCardAmount < calc_options[calcId]['cardMin'] || currentCardAmount == ''){ // Below range - drop chart values, reset slider to min\n calc_options[calcId]['creditCardAmount'] = 0;\n jQuery('#' + calcId + ' #credit-amount-slider').slider('value', calc_options[calcId]['cardMin']);\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['cardMin']));\n }\n else if(currentCardAmount > calc_options[calcId]['cardMax']){ // Over range - reset all to max\n jQuery(this).val(addCommas(calc_options[calcId]['cardMax']));\n calc_options[calcId]['creditCardAmount'] = calc_options[calcId]['cardMax'];\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['cardMax']));\n jQuery('#' + calcId + ' #credit-amount-slider').slider('value', calc_options[calcId]['cardMax']);\n } else { //In range - calculate as usual\n calc_options[calcId]['creditCardAmount'] = currentCardAmount;\n jQuery('#' + calcId + ' #credit-amount-slider').slider('value', currentCardAmount);\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(currentCardAmount));\n }\n\n if(calc_options[calcId]['creditCardAmount'] < (calc_options[calcId]['cardMax'] / 2)){\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n calculatePoints(calcId);\n });\n\n jQuery('#' + calcId + ' #credit-card-amount').on(\"blur\", function(){\n var currentCardAmount = removeCommas(jQuery(this).val().replace(/[^0-9\\.,]/g,''));\n if(currentCardAmount < calc_options[calcId]['cardMin'] || currentCardAmount == ''){ // Below range - reset to min\n jQuery(this).val(addCommas(calc_options[calcId]['cardMin']));\n calc_options[calcId]['creditCardAmount'] = calc_options[calcId]['cardMin'];\n jQuery('#' + calcId + ' #credit-amount-slider').slider('value', calc_options[calcId]['cardMin']);\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['cardMin']));\n }\n else if(currentCardAmount > calc_options[calcId]['cardMax']){ // Over range - reset all to max\n jQuery(this).val(addCommas(calc_options[calcId]['cardMax']));\n calc_options[calcId]['creditCardAmount'] = calc_options[calcId]['cardMax'];\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(calc_options[calcId]['cardMax']));\n jQuery('#' + calcId + ' #credit-amount-slider').slider('value', calc_options[calcId]['cardMax']);\n } else { //In range - calculate as usual\n jQuery(this).val(addCommas(currentCardAmount));\n calc_options[calcId]['creditCardAmount'] = currentCardAmount;\n jQuery('#' + calcId + ' #credit-amount-slider').slider('value', currentCardAmount);\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').html('$'+addCommas(currentCardAmount));\n }\n\n if(calc_options[calcId]['creditCardAmount'] < (calc_options[calcId]['cardMax'] / 2)){\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n } else {\n jQuery('#' + calcId + ' #credit-amount-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n }\n\n calculatePoints(calcId);\n });\n\n jQuery('#' + calcId + ' #insurance-slider').slider({\n range: \"min\",\n value: calc_options[calcId]['insurance'],\n min: 0,\n max: 1,\n step: 1,\n start: function(event, ui) {\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-value').hide();\n },\n stop: function(event, ui) {\n if(calc_options[calcId]['insurance']){\n calc_options[calcId]['insurance'] = false;\n jQuery('#' + calcId + ' #insurance-slider').slider('option', 'value', 0);\n } else {\n calc_options[calcId]['insurance'] = true;\n jQuery('#' + calcId + ' #insurance-slider').slider('option', 'value', 1);\n }\n\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-value').html(choiceString(calc_options[calcId]['insurance'])).show();\n if(calc_options[calcId]['insurance']){\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .insurance-block').show();\n } else {\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .insurance-block').hide();\n }\n\n calculatePoints(calcId);\n },\n create: function(event, ui) {\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-handle').append('<div class=\"ui-slider-value\">'+choiceString(calc_options[calcId]['insurance'])+'</div>');\n\n if(calc_options[calcId]['insurance']){\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-value').removeClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .insurance-block').show();\n } else {\n jQuery('#' + calcId + ' #insurance-slider .ui-slider-value').addClass('ui-slider-value-inversed');\n jQuery('#' + calcId + ' .insurance-block').hide();\n }\n\n if(calc_options[calcId]['homeInsurance']){\n jQuery('#' + calcId + ' #home-insurance').addClass('calculator-checkbox-button-checked');\n }\n if(calc_options[calcId]['lifeInsurance']){\n jQuery('#' + calcId + ' #life-insurance').addClass('calculator-checkbox-button-checked');\n }\n if(calc_options[calcId]['incomeInsurance']){\n jQuery('#' + calcId + ' #income-insurance').addClass('calculator-checkbox-button-checked');\n }\n }\n });\n\n jQuery('#' + calcId + ' .calculator-checkbox-button').click(function() {\n if(jQuery(this).hasClass('calculator-checkbox-button-checked')){\n jQuery(this).removeClass('calculator-checkbox-button-checked');\n switch(jQuery(this).attr('id')) {\n case 'home-insurance':\n calc_options[calcId]['homeInsurance'] = false;\n break;\n case 'life-insurance':\n calc_options[calcId]['lifeInsurance'] = false;\n break;\n case 'income-insurance':\n calc_options[calcId]['incomeInsurance'] = false;\n break;\n }\n } else {\n jQuery(this).addClass('calculator-checkbox-button-checked');\n switch(jQuery(this).attr('id')) {\n case 'home-insurance':\n calc_options[calcId]['homeInsurance'] = true;\n break;\n case 'life-insurance':\n calc_options[calcId]['lifeInsurance'] = true;\n break;\n case 'income-insurance':\n calc_options[calcId]['incomeInsurance'] = true;\n break;\n }\n }\n\n calculatePoints(calcId);\n });\n\n if(jQuery('body').hasClass('in-mobile')){\n jQuery('#' + calcId + ' .calculator-tooltip').bind('click', function(e) {\n e.preventDefault();\n jQuery('#' + calcId + ' .points-calculator').find('.calculator-tooltip-wrapper').fadeOut(100);\n jQuery(this).find('.calculator-tooltip-wrapper').fadeIn(100);\n return false;\n })\n\n jQuery('#' + calcId + ' .points-calculator').bind('click', function(e) {\n jQuery(this).find('.calculator-tooltip-wrapper').fadeOut(100);\n });\n } else{\n jQuery('#' + calcId + ' .calculator-tooltip').hover(\n function() {\n jQuery(this).find('.calculator-tooltip-wrapper').fadeIn(100);\n },\n function() {\n jQuery(this).find('.calculator-tooltip-wrapper').fadeOut(100);\n }\n );\n }\n\n calculatePoints(calcId);\n}\n\nfunction buildChart(calcId) {\n var chartHtml = '';\n var chartLabelsHtml = '';\n var totalPointsHtml = '';\n var breakdownPointsHtml = '';\n\n //Vertical axis\n chartHtml += '<div class=\"v-axis\"><div style=\"height: '+calc_options[calcId]['chartStepExtra']+'px\"></div>';\n for (var i=1; i<=calc_options[calcId]['chartStepNumber']; i++) {\n chartHtml += '<div class=\"grid\" style=\"height: '+calc_options[calcId]['chartStepHeight']+'px\"><div class=\"grid-value\">'+addCommas((calc_options[calcId]['chartStepNumber'] - i + 1) * calc_options[calcId]['chartPointsStep'])+'</div></div>';\n }\n chartHtml += '</div>';\n\n chartHtml += buildColumns(calcId);\n //Horizontal axis\n chartHtml += buildHAxis(calcId);\n\n chartHtml += '<div class=\"chart-legend\">';\n chartHtml += '<div class=\"legend-item\"><div class=\"legend-color legend-color-loan\"></div><div class=\"legend-description\">Home Loan Points</div></div>';\n chartHtml += (calc_options[calcId]['hasBonusPoints']) ? '<div class=\"legend-item\"><div class=\"legend-color legend-color-bonus\"></div><div class=\"legend-description\">Bonus Home Loan Points<br/>(settlement)</div></div>' : '';\n chartHtml += '<div class=\"legend-item\"><div class=\"legend-color legend-color-credit\"></div><div class=\"legend-description\">Credit Card Points</div></div>';\n chartHtml += '<div class=\"legend-item\"><div class=\"legend-color legend-color-insurance\"></div><div class=\"legend-description\">Insurance Points</div></div>';\n chartHtml += '</div>';\n\n //Total points\n if (calc_options[calcId]['is_credit_card']) {\n var cards = calc_options[calcId]['cards'].split(',');\n var show_cta = calc_options[calcId]['showCta'];\n\n totalPointsHtml += '<div class=\"total-points\">';\n if (cards.length > 1) {\n totalPointsHtml += '<div class=\"calc-results sl\">';\n }\n totalPointsHtml += '<h3 class=\"legend\">Velocity Points earn per year (excluding bonus Points)</h3>';\n totalPointsHtml += '<div class=\"results-wrapper\">';\n if (cards.length > 1) {\n totalPointsHtml += '<div class=\"sl-list has-2-items\">';\n }\n for (var i = 0; i < cards.length; i++) {\n if (cards.length > 1) {\n totalPointsHtml += '<div class=\"sl-item\">';\n }\n totalPointsHtml += '<section class=\"cm cm-product-tile\">';\n totalPointsHtml += '<div class=\"content-main\">';\n totalPointsHtml += '<div class=\"image\">';\n if (cards[i] == 'flyer') {\n totalPointsHtml += '<img class=\"img\" src=\"https://virginmoney.com.au/content/dam/virginmoney/cards/2026/VMA-Flyer-CC_Digital.png\" alt=\"f\">';\n }\n else if (cards[i] == 'high-flyer') {\n totalPointsHtml += '<img class=\"img\" src=\"https://virginmoney.com.au/content/dam/virginmoney/cards/2026/VMA-HighFlyer-CC-Digital.png\" alt=\"hf\">';\n }\n totalPointsHtml += '<div class=\"points-number vma-card-savings ' + cards[i] + '\">0</div>';\n totalPointsHtml += '</div>';\n totalPointsHtml += '<div class=\"content\">';\n totalPointsHtml += '<h4 class=\"points-heading product-name\">Virgin Australia Velocity <span class=\"sentence-cased\">' + cards[i].replace(/-/g, ' ') + '</span> Card</h4>';\n totalPointsHtml += '</div>';\n totalPointsHtml += '</div>';\n if (cards[i] === 'flyer') { cards[i] = 'f'; }\n else if (cards[i] === 'high-flyer') { cards[i] = 'hf'; }\n if (show_cta) { totalPointsHtml += '<a class=\"cta primary_id js_param-passthrough js_passthrough-universal\" href=\"https://application.virginmoney.com.au/virginmoney-form/credit-card/apply-now?productId=' + cards[i] + '\">Apply now</a>'; }\n totalPointsHtml += '</section>'\n if (cards.length > 1) {\n totalPointsHtml += '</div>';\n }\n }\n if (cards.length > 1) {\n totalPointsHtml += '</div></div>';\n }\n totalPointsHtml += '</div></div>';\n }\n else {\n totalPointsHtml += '<div class=\"total-points\">';\n totalPointsHtml += '<div class=\"points-number\">0</div>';\n totalPointsHtml += '<div class=\"points-info\">Velocity Points earned over the first <span class=\"tenure-range\">10 years</span></div>';\n totalPointsHtml += '</div>';\n }\n\n //Points breakdown\n breakdownPointsHtml += (calc_options[calcId]['important_info'] != '') ? '<div class=\"vma-important-info\">' + calc_options[calcId]['important_info'] + '</div>' : '';\n breakdownPointsHtml += '<div class=\"points-breakdown\">';\n if (!calc_options[calcId]['is_credit_card']) {\n breakdownPointsHtml += '<div class=\"breakdown-title\" style=\"line-height: 18px !important;\">See how each of our Virgin Money products <br>contribute to the total Velocity Points earned over <span class=\"tenure-range\">10 years</span></div>';\n breakdownPointsHtml += '<div class=\"breakdown-list\">';\n breakdownPointsHtml += '<div class=\"breakdown-item breakdown-loan\"><div class=\"breakdown-description\">Home Loan</div><div class=\"breakdown-value\">0 points</div></div>';\n breakdownPointsHtml += '<div class=\"breakdown-item breakdown-credit\"><div class=\"breakdown-description\">Credit card</div><div class=\"breakdown-value\">0 points</div></div>';\n breakdownPointsHtml += '<div class=\"breakdown-item breakdown-insurance\"><div class=\"breakdown-description\">Insurance</div><div class=\"breakdown-value\">0 points</div></div>';\n breakdownPointsHtml += '</div>';\n breakdownPointsHtml += '<div class=\"breakdown-info\">';\n breakdownPointsHtml += '<p>You’ll continue to earn Velocity Points on your loan along the way. We’ve just shown you the first <span class=\"tenure-range\">10 years</span> in this example.</p>';\n breakdownPointsHtml += '</div>';\n breakdownPointsHtml += '</div>';\n breakdownPointsHtml += '<div class=\"points-disclaimer\">';\n breakdownPointsHtml += calc_options[calcId]['terms_and_conditions'];\n }\n breakdownPointsHtml += '</div>';\n\n jQuery('#' + calcId + ' .velocity-calculator-result').html(totalPointsHtml+'<div class=\"points-chart\">'+chartHtml+'</div>'+breakdownPointsHtml);\n jQuery('.columns, .h-axis', '#' + calcId + ' .velocity-calculator-result .points-chart').width(jQuery('#' + calcId + ' .velocity-calculator-result .points-chart').innerWidth() - jQuery('#' + calcId + ' .velocity-calculator-result .points-chart .v-axis').outerWidth(true));\n\n jQuery('.points-wrapper').hover(\n function() {\n jQuery(this).find('.chart-tooltip').fadeIn(100);\n },\n function() {\n jQuery(this).find('.chart-tooltip').fadeOut(100);\n }\n );\n\n calculatePoints(calcId);\n}\n\nfunction buildColumns(calcId){\n //Colimns and Labels\n\n columnsHTML = '<div class=\"columns cols-' + calc_options[calcId]['calcTenure'] + '\">';\n for (var i=1; i<=calc_options[calcId]['calcTenure']; i++) {\n columnsHTML += '<div class=\"column-box column-box-'+i+'\">';\n columnsHTML += '<div class=\"blank-points\"></div>';\n columnsHTML += '<div class=\"points-wrapper\">';\n columnsHTML += '<div class=\"chart-tooltip\">';\n columnsHTML += '<div class=\"tooltip-box\">';\n columnsHTML += '<div class=\"tooltip-year\">Year '+i+'</div>';\n columnsHTML += '<div class=\"tooltip-points tooltip-points-loan\"></div>';\n columnsHTML += (calc_options[calcId]['hasBonusPoints']) ? '<div class=\"tooltip-points tooltip-points-bonus\"></div>' : '';\n columnsHTML += '<div class=\"tooltip-points tooltip-points-credit\"></div>';\n columnsHTML += '<div class=\"tooltip-points tooltip-points-insurance\"></div>';\n columnsHTML += '</div>';\n columnsHTML += '</div>';\n columnsHTML += '<div class=\"insurance-points\"></div>';\n columnsHTML += '<div class=\"credit-points\"></div>';\n columnsHTML += (calc_options[calcId]['hasBonusPoints']) ? '<div class=\"bonus-points\"></div>' : '';\n columnsHTML += '<div class=\"loan-points\"></div>';\n columnsHTML += '</div>';\n columnsHTML += '</div>';\n }\n columnsHTML += '</div>';\n\n return columnsHTML;\n}\nfunction buildHAxis(calcId){\n chartLabelsHtml = '';\n for (var i=1; i<=calc_options[calcId]['calcTenure']; i++) {\n chartLabelsHtml += '<div class=\"column-label\">Year '+i+'</div>';\n }\n return '<div class=\"h-axis cols-' + calc_options[calcId]['calcTenure'] + '\">'+chartLabelsHtml+'</div>';\n\n}\n\n\n\nfunction changeVAxis(calcId) {\n\n var vAxisHtml = '<div style=\"height: '+calc_options[calcId]['chartStepExtra']+'px\"></div>';\n\n for (var i=1; i<=calc_options[calcId]['chartStepNumber']; i++) {\n vAxisHtml += '<div class=\"grid\" style=\"height: '+calc_options[calcId]['chartStepHeight']+'px\"><div class=\"grid-value\">'+addCommas((calc_options[calcId]['chartStepNumber'] - i + 1) * calc_options[calcId]['chartPointsStep'])+'</div></div>';\n }\n\n jQuery('#' + calcId + ' .v-axis').html(vAxisHtml);\n}\n\nfunction changeChart(calcId) { // Amends the chart after new points have been calculated\n\n for (var i=1; i<=calc_options[calcId]['calcTenure']; i++) {\n var loanPoints = calc_options[calcId]['yearlyPoints'][i][1];\n var creditPoints = calc_options[calcId]['yearlyPoints'][i][2];\n var insurancePoints = calc_options[calcId]['yearlyPoints'][i][3];\n var bonusPoints = calc_options[calcId]['yearlyPoints'][i][4];\n\n var loanBoxHeight = Math.floor(loanPoints * calc_options[calcId]['chartHeight'] / calc_options[calcId]['chartMaxPoints']);\n var creditBoxHeight = Math.floor(creditPoints * calc_options[calcId]['chartHeight'] / calc_options[calcId]['chartMaxPoints']);\n var insuranceBoxHeight = Math.floor(insurancePoints * calc_options[calcId]['chartHeight'] / calc_options[calcId]['chartMaxPoints']);\n var bonusBoxHeight = Math.floor(bonusPoints * calc_options[calcId]['chartHeight'] / calc_options[calcId]['chartMaxPoints']);\n var blankBoxHeight = calc_options[calcId]['chartHeight'] - loanBoxHeight - creditBoxHeight - insuranceBoxHeight - bonusBoxHeight;\n\n var columnBox = jQuery('#' + calcId + ' .column-box-'+i);\n\n columnBox.find('.loan-points').css('height', loanBoxHeight+'px');\n columnBox.find('.credit-points').css('height', creditBoxHeight+'px');\n columnBox.find('.insurance-points').css('height', insuranceBoxHeight+'px');\n columnBox.find('.bonus-points').css('height', bonusBoxHeight+'px');\n columnBox.find('.blank-points').css('height', blankBoxHeight+'px');\n\n columnBox.find('.tooltip-points-loan').html(addCommas(loanPoints)+' Home Loan Points');\n columnBox.find('.tooltip-points-credit').html(addCommas(creditPoints)+' Credit Card Points');\n columnBox.find('.tooltip-points-insurance').html(addCommas(insurancePoints)+' Insurance Points');\n columnBox.find('.tooltip-points-bonus').html(addCommas(bonusPoints)+' bonus Home Loan Points (settlement)');\n }\n\n if (calc_options[calcId]['is_credit_card']) {\n if (jQuery('#' + calcId + ' .total-points .points-number.flyer').length > 0) {\n jQuery('#' + calcId + ' .total-points .points-number.flyer').html(addCommas(calc_options[calcId]['totalPoints']['flyer'] / 10));\n }\n if (jQuery('#' + calcId + ' .total-points .points-number.high-flyer').length > 0) {\n jQuery('#' + calcId + ' .total-points .points-number.high-flyer').html(addCommas(calc_options[calcId]['totalPoints']['high-flyer'] / 10));\n }\n }\n else {\n\n jQuery('#' + calcId + ' .total-points .points-number').html(addCommas(calc_options[calcId]['totalPoints']['total']));\n }\n jQuery('#' + calcId + ' .breakdown-loan .breakdown-value').html(addCommas(calc_options[calcId]['totalPoints']['loan'])+' Points' + ((calc_options[calcId]['hasBonusPoints']) ? ('<br/>' + addCommas(calc_options[calcId]['totalPoints']['bonus']) + ' bonus Points<br/>(settlement)') : ''));\n jQuery('#' + calcId + ' .breakdown-credit .breakdown-value').html(addCommas(calc_options[calcId]['totalPoints']['credit'])+' Points');\n jQuery('#' + calcId + ' .breakdown-insurance .breakdown-value').html(addCommas(calc_options[calcId]['totalPoints']['insurance'])+' Points');\n jQuery('#' + calcId + ' .breakdown-bonus .breakdown-value').html(addCommas(calc_options[calcId]['totalPoints']['bonus'])+' Points');\n}\n\nfunction calculatePoints(calcId) { //Recalculates all points when any of the inputs change\n var maxYearlyPoints = 0;\n calc_options[calcId]['yearlyPoints'] = [];\n calc_options[calcId]['totalPoints'] = {\n 'total': 0,\n 'loan': 0,\n 'credit': 0,\n 'insurance': 0,\n 'flyer': 0,\n 'high-flyer': 0,\n 'bonus' : 0\n };\n\n calc_options[calcId]['loan'] = parseInt(calc_options[calcId]['loan']);\n\n for (var i=1; i<=calc_options[calcId]['calcTenure']; i++) {\n var loanPoints = 0;\n var creditPoints = 0;\n var insurancePoints = 0;\n var bonusPoints = 0;\n\n var flyer_points = 0,\n high_flyer_points = 0;\n\n if(calc_options[calcId]['loan'] > 0){\n if (calc_options[calcId]['splitLoan']){\n loanPoints = 2 * 12 * calc_options[calcId]['monthlyPoints'];\n } else {\n loanPoints = 12 * calc_options[calcId]['monthlyPoints'];\n }\n }\n switch(i) {\n case 1:\n loanPoints += Math.floor(calc_options[calcId]['loan'] / 10000) * 1000;\n bonusPoints += (calc_options[calcId]['hasBonusPoints']) ? (Math.floor(calc_options[calcId]['loan'] / 10000) * 1000) : 0;\n\n if(calc_options[calcId]['insurance']){\n if(calc_options[calcId]['homeInsurance']){\n insurancePoints += calc_options[calcId]['homeInsurancePoints'];\n }\n if(calc_options[calcId]['lifeInsurance']){\n insurancePoints += calc_options[calcId]['lifeInsurancePoints'];\n }\n if(calc_options[calcId]['incomeInsurance']){\n insurancePoints += calc_options[calcId]['incomeInsurancePoints'];\n }\n }\n\n break;\n case 3:\n case 6:\n case 9:\n if (calc_options[calcId]['loan'] > calc_options[calcId]['loanPointsRange'][i]){\n loanPoints += calc_options[calcId]['anniversaryPoints'];\n }\n break;\n }\n\n if(calc_options[calcId]['creditCards']){\n if(calc_options[calcId]['creditCardType'] > 0){\n if(calc_options[calcId]['creditCardAmount'] > calc_options[calcId]['highFlyerCardRange']){\n creditPoints = calc_options[calcId]['highFlyerCardRange'] + (calc_options[calcId]['creditCardAmount'] - calc_options[calcId]['highFlyerCardRange']) * 0.5;\n } else {\n creditPoints = calc_options[calcId]['creditCardAmount'];\n }\n } else {\n if(calc_options[calcId]['creditCardAmount'] > calc_options[calcId]['flyerCardRange']){\n creditPoints = calc_options[calcId]['flyerCardRange'] * 0.66 + (calc_options[calcId]['creditCardAmount'] - calc_options[calcId]['flyerCardRange']) * 0.5;\n } else {\n creditPoints = calc_options[calcId]['creditCardAmount'] * 0.66;\n }\n }\n high_flyer_points = Math.floor((calc_options[calcId]['creditCardAmount'] > calc_options[calcId]['highFlyerCardRange'] ? calc_options[calcId]['highFlyerCardRange'] + (calc_options[calcId]['creditCardAmount'] - calc_options[calcId]['highFlyerCardRange']) * 0.5 : calc_options[calcId]['creditCardAmount']) * 12);\n flyer_points = Math.floor((calc_options[calcId]['creditCardAmount'] > calc_options[calcId]['flyerCardRange'] ? calc_options[calcId]['flyerCardRange'] * 0.66 + (calc_options[calcId]['creditCardAmount'] - calc_options[calcId]['flyerCardRange']) * 0.5 : calc_options[calcId]['creditCardAmount'] * 0.66) * 12);\n }\n creditPoints = creditPoints * 12;\n creditPoints = Math.floor(creditPoints);\n calc_options[calcId]['yearlyPoints'][i] = ['Year '+ i, loanPoints, creditPoints, insurancePoints, bonusPoints];\n calc_options[calcId]['totalPoints']['loan'] += loanPoints;\n calc_options[calcId]['totalPoints']['credit'] += creditPoints;\n calc_options[calcId]['totalPoints']['insurance'] += insurancePoints;\n calc_options[calcId]['totalPoints']['bonus'] += bonusPoints;\n calc_options[calcId]['totalPoints']['total'] += loanPoints + creditPoints + insurancePoints + bonusPoints;\n calc_options[calcId]['totalPoints']['flyer'] += flyer_points;\n calc_options[calcId]['totalPoints']['high-flyer'] += high_flyer_points;\n\n var thisYearlyPoints = loanPoints + creditPoints + insurancePoints + bonusPoints;\n if (maxYearlyPoints < thisYearlyPoints){\n maxYearlyPoints = thisYearlyPoints;\n }\n }\n\n maxYearlyPoints = (Math.floor(maxYearlyPoints / calc_options[calcId]['chartPointsStep']) + 1) * calc_options[calcId]['chartPointsStep'];\n if(calc_options[calcId]['chartMaxPoints'] != maxYearlyPoints){\n calc_options[calcId]['chartMaxPoints'] = maxYearlyPoints;\n calc_options[calcId]['chartStepNumber'] = calc_options[calcId]['chartMaxPoints'] / calc_options[calcId]['chartPointsStep'];\n calc_options[calcId]['chartStepHeight'] = Math.floor(calc_options[calcId]['chartHeight'] / calc_options[calcId]['chartStepNumber']);\n calc_options[calcId]['chartStepExtra'] = calc_options[calcId]['chartHeight'] - (calc_options[calcId]['chartStepNumber'] * calc_options[calcId]['chartStepHeight']);\n\n changeVAxis(calcId);\n changeChart(calcId);\n } else {\n changeChart(calcId);\n }\n\n //check if we need to rebuild axis\n}\n\nfunction addCommas(number) {\n var n= number.toString().split(\".\");\n\n n[0] = n[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n return n.join(\".\");\n}\n\nfunction removeCommas(number) {\n return number.replace(/,/g, \"\");\n}\n\nfunction choiceString(boolean) {\n if(boolean){\n return 'yes';\n } else {\n return 'no';\n }\n}\n\nfunction cloneObj(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n var temp = obj.constructor(); // give temp the original obj's constructor\n for (var key in obj) {\n temp[key] = cloneObj(obj[key]);\n }\n\n return temp;\n}\n\njQuery(document).ready(function() {\n jQuery('.velocity-calculator').each(function(idx, obj){\n if(typeof jQuery(obj).attr('id') != 'undefined'){\n // override defaults\n $id = jQuery(obj).attr('id');\n // copy values or else array is passed by reference\n calc_options[$id] = cloneObj(defaults);\n for (p in jQuery(obj).data()){\n calc_options[$id][p] = jQuery(obj).data(p);\n }\n buildCalculator($id);\n setTimeout('buildChart(\"' + $id + '\")', 1100);\n }\n });\n // the accordions on the landing pages do something funky with the\n // graphs, this triggers a rebuild on show.\n if(jQuery('.spb_accordion_section .velocity-calculator').length){\n jQuery('.spb_accordion_section').each(function(nIdx, nObj){\n if(jQuery('.velocity-calculator', nObj).length){\n jQuery(nObj).click(function(){\n jQuery('.velocity-calculator', nObj).each(function(cIdx, cObj){\n if(typeof jQuery(cObj).attr('id') != 'undefined'){\n // override defaults\n $id = jQuery(cObj).attr('id');\n buildChart($id);\n }\n });\n });\n }\n });\n }\n});\n"}]