{"id":20770,"date":"2026-09-12T17:00:28","date_gmt":"2026-09-12T09:00:28","guid":{"rendered":"https:\/\/aionlinehk.com\/?page_id=20770"},"modified":"2026-09-14T17:18:51","modified_gmt":"2026-09-14T09:18:51","slug":"mortgage-calculator-pro","status":"publish","type":"page","link":"https:\/\/aionlinehk.com\/zh\/mortgage-calculator-pro\/","title":{"rendered":"\u6309\u63ed\u8a08\u7b97\u6a5f (\u5c08\u696d\u7248)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20770\" class=\"elementor elementor-20770\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-74364d6 elementor-section-height-min-height animated-slow elementor-section-boxed elementor-section-height-default elementor-section-items-middle elementor-invisible\" data-id=\"74364d6\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c2a5e11\" data-id=\"c2a5e11\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f59eba8 elementor-widget elementor-widget-heading\" data-id=\"f59eba8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Mortgage Calculator Pro<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f12cbe1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f12cbe1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dad22ab\" data-id=\"dad22ab\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e15e09f elementor-widget elementor-widget-html\" data-id=\"e15e09f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en-US\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Mortgage Calculator Pro<\/title>\r\n    <style>\r\n        body {\r\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\r\n            background-color: #f4f6f9;\r\n            color: #333;\r\n            margin: 0;\r\n            padding: 20px;\r\n        }\r\n        .calculator-container {\r\n            max-width: 1100px;\r\n            margin: 0 auto;\r\n            background: #fff;\r\n            padding: 30px;\r\n            border-radius: 12px;\r\n            box-shadow: 0 4px 20px rgba(0,0,0,0.08);\r\n        }\r\n        h2 {\r\n            color: #0073e6;\r\n            margin-bottom: 20px;\r\n            border-bottom: 2px solid #eef2f5;\r\n            padding-bottom: 10px;\r\n            text-align: center;\r\n        }\r\n        .grid {\r\n            display: grid;\r\n            grid-template-columns: 1.3fr 1fr;\r\n            gap: 30px;\r\n        }\r\n        @media (max-width: 900px) {\r\n            .grid { grid-template-columns: 1fr; }\r\n        }\r\n        .section-title {\r\n            font-size: 16px;\r\n            font-weight: bold;\r\n            color: #0073e6;\r\n            margin-top: 20px;\r\n            margin-bottom: 12px;\r\n            padding-left: 8px;\r\n            border-left: 4px solid #0073e6;\r\n        }\r\n        .input-group {\r\n            margin-bottom: 12px;\r\n        }\r\n        .input-group label {\r\n            display: block;\r\n            font-weight: 600;\r\n            margin-bottom: 6px;\r\n            color: #444;\r\n            font-size: 13.5px;\r\n        }\r\n        .input-wrapper {\r\n            position: relative;\r\n            display: flex;\r\n            align-items: center;\r\n        }\r\n        .input-wrapper input, .input-wrapper select {\r\n            width: 100%;\r\n            padding: 9px 12px;\r\n            border: 1px solid #ccd4dc;\r\n            border-radius: 6px;\r\n            font-size: 14.5px;\r\n            box-sizing: border-box;\r\n            background-color: #fff;\r\n        }\r\n        .input-wrapper .unit {\r\n            position: absolute;\r\n            right: 15px;\r\n            color: #777;\r\n            font-size: 13px;\r\n        }\r\n        .radio-group {\r\n            display: flex;\r\n            gap: 15px;\r\n            margin-top: 5px;\r\n        }\r\n        .radio-group label {\r\n            font-weight: normal;\r\n            font-size: 13.5px;\r\n            cursor: pointer;\r\n        }\r\n        .checkbox-group {\r\n            margin: 10px 0;\r\n        }\r\n        .checkbox-group label {\r\n            font-weight: bold;\r\n            color: #e67e22;\r\n            cursor: pointer;\r\n        }\r\n        .nested-box {\r\n            background: #fdfefe;\r\n            border: 1px dashed #cbd5e1;\r\n            padding: 15px;\r\n            border-radius: 6px;\r\n            margin-top: 8px;\r\n        }\r\n        button {\r\n            width: 100%;\r\n            background-color: #ff9900;\r\n            color: white;\r\n            border: none;\r\n            padding: 14px;\r\n            font-size: 18px;\r\n            font-weight: bold;\r\n            border-radius: 6px;\r\n            cursor: pointer;\r\n            transition: background 0.2s;\r\n            margin-top: 20px;\r\n        }\r\n        button:hover { background-color: #e68a00; }\r\n        \r\n        \/* \u7d50\u679c\u9762\u677f *\/\r\n        .result-box {\r\n            background-color: #fafbfc;\r\n            border: 1px solid #e1e8ed;\r\n            border-radius: 8px;\r\n            padding: 20px;\r\n            position: sticky;\r\n            top: 20px;\r\n        }\r\n        .result-block {\r\n            margin-bottom: 18px;\r\n            background: #fff;\r\n            padding: 14px;\r\n            border-radius: 6px;\r\n            border: 1px solid #eaeaea;\r\n        }\r\n        .result-item {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            margin-bottom: 10px;\r\n            font-size: 14.5px;\r\n            color: #555;\r\n        }\r\n        .result-item:last-child { margin-bottom: 0; }\r\n        .result-item .value { font-weight: bold; color: #333; }\r\n        .result-item.highlight { font-size: 15.5px; color: #000; font-weight: bold; }\r\n        .result-item.highlight .value { color: #ff9900; font-size: 22px; }\r\n        .sub-value { font-size: 13px; color: #666; margin-left: 5px; }\r\n        \r\n        .status-badge {\r\n            padding: 3px 8px;\r\n            border-radius: 4px;\r\n            font-size: 13px;\r\n            font-weight: bold;\r\n            color: #fff;\r\n        }\r\n        .status-pass { background-color: #2ecc71; }\r\n        .status-fail { background-color: #e74c3c; }\r\n\r\n        .table-container {\r\n            margin-top: 30px;\r\n            max-height: 400px;\r\n            overflow-y: auto;\r\n            border: 1px solid #e1e8ed;\r\n            border-radius: 6px;\r\n        }\r\n        table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            text-align: left;\r\n            font-size: 13.5px;\r\n        }\r\n        th, td { padding: 10px 12px; border-bottom: 1px solid #eee; }\r\n        th { background-color: #f8f9fa; position: sticky; top: 0; z-index: 1; color: #555; }\r\n        tr:hover { background-color: #fcfdfe; }\r\n\r\n        \r\n\r\n        \/* \ud83d\ude80 1. \u8de8\u700f\u89bd\u5668\u6a19\u6e96\u5316\u6838\u5fc3\uff1a\u5f37\u8feb\u6240\u6709\u5143\u7d20\u5957\u7528\u6a19\u6e96\u76d2\u5b50\u6a21\u578b\uff0c\u78ba\u4fdd Padding \u548c Border \u4e0d\u6703\u6490\u5927\u5bec\u5ea6 *\/\r\n        *, *::before, *::after {\r\n            box-sizing: border-box !important;\r\n            -webkit-box-sizing: border-box !important;\r\n            -moz-box-sizing: border-box !important;\r\n        }\r\n\r\n        \/* \ud83d\ude80 2. \u5168\u9762\u56fa\u5b9a\u8f38\u5165\u6b04\u4f4d\uff08Input Box\uff09\u7684\u5916\u89c0\u8207\u9ad8\u5ea6\uff0c\u6d88\u9664\u4e0d\u540c\u700f\u89bd\u5668\u7684\u9810\u8a2d\u5dee\u7570 *\/\r\n        .input-wrapper input, \r\n        .input-wrapper select {\r\n            width: 100% !important;\r\n            height: 42px !important; \/* \ud83c\udf1f \u5f37\u5236\u9396\u5b9a\u5b8c\u7f8e\u4e00\u81f4\u7684\u9ad8\u5ea6 *\/\r\n            padding: 0 45px 0 12px !important; \/* \u53f3\u5074\u7559\u51fa 45px \u7a7a\u9593\u7d66\u55ae\u4f4d\u6a19\u7c64\uff0c\u9632\u6b62\u6587\u5b57\u91cd\u758a *\/\r\n            border: 1px solid #ccd4dc !important;\r\n            border-radius: 6px !important;\r\n            font-size: 15px !important;\r\n            line-height: 42px !important; \/* \u78ba\u4fdd\u8f38\u5165\u6587\u5b57\u5728\u5404\u700f\u89bd\u5668\u5782\u76f4\u7f6e\u4e2d *\/\r\n            outline: none !important;\r\n            background-color: #fff !important;\r\n            -webkit-appearance: none; \/* \u79fb\u9664 Safari\/Chrome \u7684\u539f\u751f\u5167\u5efa\u6a23\u5f0f\u9670\u5f71 *\/\r\n            -moz-appearance: none;\r\n            appearance: none;\r\n        }\r\n\r\n        \/* \ud83d\ude80 3. \u512a\u5316\u53f3\u5074\u7684\u55ae\u4f4d\u6a19\u7c64 (\u5982 HKD, %)\uff0c\u78ba\u4fdd\u5b83\u4e0d\u8ad6\u5728\u4ec0\u9ebc\u700f\u89bd\u5668\u90fd\u7cbe\u6e96\u5782\u76f4\u7f6e\u4e2d *\/\r\n        .input-wrapper .unit {\r\n            position: absolute !important;\r\n            right: 15px !important;\r\n            top: 50% !important;\r\n            transform: translateY(-50%) !important; \/* \u5b8c\u7f8e\u7684\u7269\u7406\u7f6e\u4e2d\u6f14\u7b97\u6cd5 *\/\r\n            color: #777 !important;\r\n            font-size: 13px !important;\r\n            pointer-events: none !important; \/* \u9632\u6b62\u4f7f\u7528\u8005\u9ede\u64ca\u5230\u6587\u5b57\u800c\u7121\u6cd5\u89f8\u767c\u8f38\u5165\u6846 *\/\r\n            z-index: 2;\r\n        }\r\n\r\n        \/* \ud83d\ude80 4. \u540c\u884c\u6309\u9215\u5bb9\u5668 (Flex Row) \u8207\u9ad8\u5ea6\u540c\u6b65\u6821\u6b63 *\/\r\n        .button-row-container {\r\n            display: flex !important;\r\n            gap: 12px !important;\r\n            margin-top: 20px !important;\r\n            width: 100% !important;\r\n        }\r\n\r\n        .button-row-container button {\r\n            height: 44px !important; \/* \ud83c\udf1f \u8b93\u6309\u9215\u9ad8\u5ea6\u8207 42px \u7684\u8f38\u5165\u6846\u52a0\u4e0a\u5fae\u8abf\u5f8c\u5728\u6a6b\u5411\u6392\u7248\u4e0a\u8996\u89ba\u5b8c\u7f8e\u5c0d\u9f4a *\/\r\n            margin: 0 !important;\r\n            padding: 0 15px !important;\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            line-height: 1 !important;\r\n        }\r\n\r\n        \r\n        \/* \ud83d\ude80 1. \u5f37\u5236\u6bcf\u4e00\u884c\u8f38\u5165\u6846\u63a1\u7528 Flex \u6a6b\u5411\u4f48\u5c40\uff0c\u5782\u76f4\u5c45\u4e2d\u5c0d\u9f4a *\/\r\n        .input-group {\r\n            display: flex !important;\r\n            flex-direction: row !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            margin-bottom: 14px !important;\r\n            width: 100% !important;\r\n        }\r\n\r\n        \/* \ud83d\ude80 2. \u5de6\u5074\u6a19\u7c64\uff08Label\uff09\uff1a\u5f37\u5236\u56fa\u5b9a\u4f54\u7528 50% \u5bec\u5ea6\uff0c\u4e26\u79fb\u9664\u6bcd\u7db2\u9801\u53ef\u80fd\u7684 margin \u5e72\u64fe *\/\r\n        .input-group label {\r\n            flex: 1 !important;\r\n            width: 50% !important;\r\n            max-width: 50% !important;\r\n            margin: 0 !important;\r\n            padding-right: 15px !important; \/* \u8207\u8f38\u5165\u6846\u7559\u51fa\u7f8e\u89c0\u9593\u8ddd *\/\r\n            font-weight: 600 !important;\r\n            color: #444 !important;\r\n            font-size: 14px !important;\r\n            text-align: left !important;\r\n            display: block !important;\r\n        }\r\n\r\n        \/* \ud83d\ude80 3. \u53f3\u5074\u8f38\u5165\u6846\u5bb9\u5668\uff08Wrapper\uff09\uff1a\u540c\u6a23\u5f37\u5236\u7cbe\u6e96\u4f54\u7528 50% \u5bec\u5ea6 *\/\r\n        .input-group .input-wrapper {\r\n            flex: 1 !important;\r\n            width: 49% !important;\r\n            max-width: 49% !important;\r\n            position: relative !important;\r\n            display: flex !important;\r\n            align-items: center !important;\r\n        }\r\n\r\n        \/* \ud83d\ude80 4. \u8f38\u5165\u6846\u672c\u9ad4\u9ad8\u5ea6\u8207\u5c3a\u5bf8\u9396\u5b9a\uff0c100% \u6490\u6eff\u5b83\u7684 50% \u5bb9\u5668 *\/\r\n        .input-wrapper input, \r\n        .input-wrapper select {\r\n            width: 100% !important;\r\n            height: 40px !important; \/* \u56fa\u5b9a\u9ad8\u5ea6 *\/\r\n            padding: 0 45px 0 12px !important; \r\n            border: 1px solid #ccd4dc !important;\r\n            border-radius: 6px !important;\r\n            font-size: 14.5px !important;\r\n            background-color: #fff !important;\r\n            box-sizing: border-box !important;\r\n        }\r\n\r\n        \/* \ud83d\ude80 5. \u78ba\u4fdd\u4e8c\u6309\u88ab\u505c\u7528\u8b8a\u7070\u6642\uff0c\u6574\u500b\u6a6b\u5411\u6a6b\u689d\u4e00\u8d77\u8b8a\u7070\u7684\u8996\u89ba\u512a\u5316 *\/\r\n        .input-group.disabled-row {\r\n            opacity: 0.5 !important;\r\n        }\r\n\r\n        \/* \ud83d\udda8\ufe0f \u5c08\u5c6c\u5217\u5370\u512a\u5316\uff1a\u62c9\u8d77\u5217\u5370\u6642\uff0c\u81ea\u52d5\u96b1\u85cf\u8f38\u5165\u6846\u548c\u6309\u9215\uff0c\u53ea\u4fdd\u7559\u5831\u8868\u7d50\u679c *\/\r\n        @media print {\r\n            \/* 1. \u5168\u9762\u96b1\u85cf\u6bcd\u7db2\u9801\u7684\u6240\u6709\u7121\u95dc\u5143\u7d20\uff08Header, Footer, Sidebar\u7b49\uff09 *\/\r\n            body * {\r\n                visibility: hidden !important;\r\n            }\r\n            \r\n            \/* 2. \u7cbe\u6e96\u4fdd\u7559\uff1a\u53ea\u6709\u8a08\u7b97\u6a5f\u5916\u6bbc\u53ca\u5176\u5167\u90e8\u7684\u6240\u6709\u5b50\u5143\u7d20\u4fdd\u6301\u5b8c\u5168\u53ef\u898b *\/\r\n            .calculator-container,\r\n            .calculator-container * {\r\n                visibility: visible !important;\r\n            }\r\n            \r\n            \/* 3. \ud83d\ude80 \u96f6\u7559\u767d\u95dc\u9375\u795e\u6280\uff1a\u4f7f\u7528 fixed \u5b9a\u4f4d\uff0c\u5f37\u8feb\u8a08\u7b97\u6a5f\u5fb9\u5e95\u812b\u96e2\u6bcd\u7db2\u9801\u7684\u6587\u4ef6\u6d41\u7a7a\u9593\u9650\u5236\uff0c\u76f4\u63a5\u91d8\u6b7b\u5728 A4 \u7d19\u5f35\u6700\u9802\u7aef\uff01 *\/\r\n            .calculator-container {\r\n                margin-top: -300px !important;\r\n                position: absolute !important;\r\n                left: 0 !important;\r\n                top: 0 !important; \/* \u5f37\u5236\u8cbc\u9f4a 0 \u6efe\u52d5\u6b7b\u89d2 *\/\r\n                width: 100% !important;\r\n                max-width: 100% !important;\r\n                \/* margin: 0 !important; *\/\r\n                padding: 0 !important;\r\n                box-shadow: none !important;\r\n                background: #fff !important;\r\n            }\r\n            \r\n            \/* 4. \u8a2d\u5b9a A4 \u7d19\u5f35\u6a19\u6e96\u7cbe\u7f8e\u5217\u5370\u908a\u8ddd *\/\r\n            @page {\r\n                size: A4;\r\n                margin: 1.2cm 1.2cm 1.2cm 1.2cm;\r\n            }\r\n            \r\n            body {\r\n                background-color: #fff !important;\r\n                color: #000 !important;\r\n            }\r\n            \r\n            \/* 5. \u5b8c\u7f8e\u5c4f\u853d\uff1a\u5728\u5217\u5370\u51fa\u7684\u7d19\u5f35\u4e0a\uff0c\u7d55\u5c0d\u4e0d\u6703\u5370\u51fa\u300c\u8f38\u5165\u683c\u300d\u8207\u300c\u4efb\u4f55\u529f\u80fd\u6309\u9215\u300d *\/\r\n            h2, button, .print-btn-container, #secondDisabledTips, #hos95Tips, .checkbox-group, .radio-group,\r\n            .grid > div:first-child { \r\n                display: none !important; \r\n            }\r\n            \r\n            \/* 6. 100% \u5bec\u5ea6\u81ea\u9069\u61c9\u8207\u8de8\u9801\u9632\u6587\u5b57\u8170\u65ac\u65b7\u884c *\/\r\n            .grid { \r\n                display: block !important;\r\n                width: 100% !important;\r\n            }\r\n            .result-box {\r\n                background-color: #fff !important;\r\n                border: none !important;\r\n                padding: 0 !important;\r\n                width: 100% !important;\r\n            }\r\n            .result-block {\r\n                border: 1px solid #ddd !important;\r\n                margin-bottom: 15px !important;\r\n                page-break-inside: avoid !important; \/* \u9632\u6b62\u7f6e\u696d\u6578\u64da\u9762\u677f\u88ab\u5207\u9801 *\/\r\n            }\r\n            .table-container { \r\n                max-height: none !important; \r\n                overflow: visible !important; \r\n                width: 99.9% !important;\r\n            }\r\n            table { \r\n                width: 100% !important; \r\n                table-layout: fixed !important;\r\n                border-collapse: collapse !important;\r\n            }\r\n            th, td { \r\n                padding: 8px 6px !important; \r\n                border: 1px solid #ccc !important; \r\n                font-size: 12px !important;\r\n                word-wrap: break-word !important;\r\n            }\r\n            th { \r\n                background-color: #f2f2f2 !important; \r\n                -webkit-print-color-adjust: exact;\r\n                print-color-adjust: exact;\r\n            }\r\n            tr { \r\n                page-break-inside: avoid !important; \/* \u9632\u6b62\u5e74\u8868\u67d0\u4e00\u884c\u88ab\u5207\u5728\u5169\u9801\u4e2d\u9593 *\/\r\n            }\r\n        }\r\n\r\n    <\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<div class=\"calculator-container\">\r\n    <h2>Mortgage Calculator Pro<\/h2>\r\n    \r\n    <div class=\"grid\">\r\n        <!-- \u5de6\u5074\uff1a\u8f38\u5165\u5340\u57df -->\r\n        <div>\r\n            <div class=\"section-title\">\ud83c\udfe0 First Mortgage Base Setting<\/div>\r\n\r\n            <div class=\"input-group\">\r\n                <label for=\"propertyValue\">Property Value (HKD)<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"propertyValue\" value=\"8000000\" oninput=\"autoCalculateLoans()\">\r\n                    <span class=\"unit\">HKD<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div class=\"input-group\">\r\n                <label for=\"firstMortgagePercent\">First Mortgage LTV Ratio<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"firstMortgagePercent\" value=\"70\" min=\"1\" max=\"95\" step=\"0.1\" oninput=\"autoCalculateLoans()\">\r\n                    <span class=\"unit\">%<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- \ud83d\udd34 1. \u4e00\u6309\u6210\u6578\u904e\u8f09\u63d0\u793a & 95%\u5c45\u5c4b\u63d0\u793a\u5408\u4f75\/\u7368\u7acb -->\r\n            <div id=\"firstPctTips\" style=\"display: none; color: #e74c3c; font-size: 12px; font-weight: bold; margin: -8px 0 12px auto; width: 100%; padding-left: 0px;\">\r\n                <!-- \u6587\u5b57\u7531 JS \u52d5\u614b\u5beb\u5165\uff0c\u4fbf\u65bc\u65e5\u5f8c\u591a\u8a9e\u8a00\u64f4\u5145 -->\r\n            <\/div>\r\n\r\n            <div class=\"input-group\">\r\n                <label for=\"firstLoanAmount\">First Mortgage Loan Amount (Automatically Calculate)<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"firstLoanAmount\" value=\"5600000\">\r\n                    <span class=\"unit\">HKD<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"input-group\">\r\n                <label for=\"firstInterestRate\">First Mortgage Interest Rate<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"firstInterestRate\" value=\"3.25\" step=\"0.001\">\r\n                    <span class=\"unit\">%<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"input-group\">\r\n                <label for=\"firstLoanTerm\">First Mortgage Loan Tenor (Max.30years)<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"firstLoanTerm\" value=\"30\" min=\"1\" max=\"30\" oninput=\"autoCalculateLoans()\">\r\n                    <span class=\"unit\">Years<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n             <!-- \ud83d\udd34 2. \u4e00\u6309\u5e74\u671f\u904e\u8f09\u63d0\u793a -->\r\n            <div id=\"firstTermTips\" style=\"display: none; color: #e74c3c; font-size: 12px; font-weight: bold; margin: -8px 0 12px auto; width: 50%; padding-left: 2px;\">    * \u4f4f\u5b85\u6309\u63ed\u8cb8\u6b3e\u5e74\u671f\u4e0a\u9650\u70ba 30 \u5e74\uff01<\/div>\r\n\r\n            <div class=\"input-group\">\r\n                <label>First Mortgage Insurance Payment Method (HKMC 2026)<\/label>\r\n                <!-- \u8abf\u6574\u70ba flex-start \u4e26\u79fb\u9664\u591a\u9918\u7684\u53f3\u5074\u6ea2\u51fa\uff0c\u5f37\u8feb\u5167\u90e8\u5143\u7d20\u7dca\u8cbc\u5de6\u5074\u8d77\u9ede -->\r\n                <div class=\"radio-group\" style=\"justify-content: flex-start !important; align-items: center !important; gap: 20px;\">\r\n                    <label style=\"width: auto !important; max-width: none !important; flex: none !important; font-weight: normal !important; padding: 0 !important; display: flex !important; align-items: center !important; gap: 6px; cursor: pointer; color: #444;\">\r\n                        <input type=\"radio\" name=\"firstMipFinanced\" value=\"yes\" checked style=\"width: 17px !important; height: 17px !important; margin: 0 !important; cursor: pointer;\"> Additional Loan\r\n                    <\/label>\r\n                    <label style=\"width: auto !important; max-width: none !important; flex: none !important; font-weight: normal !important; padding: 0 !important; display: flex !important; align-items: center !important; gap: 6px; cursor: pointer; color: #444;\">\r\n                        <input type=\"radio\" name=\"firstMipFinanced\" value=\"no\" style=\"width: 17px !important; height: 17px !important; margin: 0 !important; cursor: pointer;\"> Direct Pay\r\n                    <\/label>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- \u4e8c\u6309\u7368\u7acb\u5206\u6d41\u5340\u584a -->\r\n            <div class=\"section-title\">\ud83c\udfe0 Second Mortgage Setting (Option)\r\n                <span id=\"secondDisabledTips\" style=\"display: none; color: #e74c3c; font-size: 12px; font-weight: bold; margin-left: 8px;\">\r\n                    (Disable, if 1st Mortgage LTV Ratio >70%)\r\n                <\/span>\r\n            <\/div>\r\n\r\n            <div class=\"checkbox-group\">\r\n                <label style=\"font-size: 16px;\"><input type=\"checkbox\" id=\"secondMortgageEnable\" onchange=\"toggleSecondMortgage()\"> Second Mortgage Loan<\/label>\r\n            <\/div>\r\n       \r\n            \r\n            <div id=\"secondMortgageBlock\" class=\"nested-box\" style=\"padding: 12px 0 0 0; background: none; border: none; margin: 0;\">\r\n                <div class=\"input-group\" id=\"secPctRow\">\r\n                    <label for=\"secondMortgagePercent\">Second Mortgage LTV Ratio<\/label>\r\n                    <div class=\"input-wrapper\">\r\n                        <input type=\"number\" id=\"secondMortgagePercent\" value=\"10\" min=\"0\" max=\"100\" step=\"0.1\" oninput=\"autoCalculateLoans()\">\r\n                        <span class=\"unit\">%<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- \ud83d\udd34 3. \u4e00\u6309 + \u4e8c\u6309\u7e3d\u548c\u904e\u8f09\u63d0\u793a -->\r\n                <div id=\"combinedPctTips\" style=\"display: none; color: #e74c3c; font-size: 12px; font-weight: bold; margin: -8px 0 12px auto; width: 50%; padding-left: 2px;\">\r\n                    <!-- \u6587\u5b57\u7531 JS \u52d5\u614b\u5beb\u5165 -->\r\n                <\/div>\r\n\r\n                <div class=\"input-group\" id=\"secAmtRow\">\r\n                    <label for=\"secondLoanAmount\">Second Mortgage Loan Amount (Automatically Calculate)<\/label>\r\n                    <div class=\"input-wrapper\">\r\n                        <input type=\"number\" id=\"secondLoanAmount\" value=\"800000\">\r\n                        <span class=\"unit\">HKD<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"input-group\" id=\"secRateRow\">\r\n                    <label for=\"secondInterestRate\">Second Mortgage Interest Rate<\/label>\r\n                    <div class=\"input-wrapper\">\r\n                        <input type=\"number\" id=\"secondInterestRate\" value=\"3.25\" step=\"0.001\">\r\n                        <span class=\"unit\">%<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"input-group\" id=\"secTermRow\">\r\n                    <label for=\"secondLoanTerm\">Second Mortgage Loan Tenor (Max.30years)<\/label>\r\n                    <div class=\"input-wrapper\">\r\n                        <input type=\"number\" id=\"secondLoanTerm\" value=\"30\" min=\"1\" max=\"30\" oninput=\"autoCalculateLoans()\">\r\n                        <span class=\"unit\">Years<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            \r\n\r\n                <!-- \ud83d\udd34 4. \u4e8c\u6309\u5e74\u671f\u904e\u8f09\u63d0\u793a -->\r\n                <div id=\"secondTermTips\" style=\"display: none; color: #e74c3c; font-size: 12px; font-weight: bold; margin: -8px 0 12px auto; width: 50%; padding-left: 2px;\"> * Max. 30 Years<\/div>\r\n\r\n            <\/div>    \r\n\r\n            <!-- \u5176\u4ed6\u7f6e\u696d\u96dc\u8cbb\u958b\u652f -->\r\n            <div class=\"section-title\">\ud83d\udccb Other Expenses, Miscellaneous Items and Rebates (Setting)<\/div>\r\n            <div class=\"input-group\">\r\n                <label for=\"agentCommission\">Agent Commission<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"agentCommission\" value=\"80000\">\r\n                    <span class=\"unit\">HKD<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"input-group\">\r\n                <label for=\"lawyerFee\">Legal Fee<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"lawyerFee\" value=\"10000\">\r\n                    <span class=\"unit\">HKD<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"input-group\">\r\n                <label for=\"decorationFee\">Renovation Costs<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"decorationFee\" value=\"0\">\r\n                    <span class=\"unit\">HKD<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"input-group\">\r\n                <label for=\"firstCashRebatePercent\">First Mortgage Cash Rebate<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"firstCashRebatePercent\" value=\"1.0\" step=\"0.1\">\r\n                    <span class=\"unit\">%<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"input-group\" id=\"secondRebateGroup\">\r\n                <label for=\"secondCashRebatePercent\">Second Mortgage Cash Rebate<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"secondCashRebatePercent\" value=\"0.0\" step=\"0.1\">\r\n                    <span class=\"unit\">%<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"section-title\">\ud83d\udcb0 Affordability & Income Test<\/div>\r\n\r\n            <div class=\"input-group\">\r\n                <label for=\"monthlyIncome\">Applicant's Total Monthly Income<\/label>\r\n                <div class=\"input-wrapper\">\r\n                    <input type=\"number\" id=\"monthlyIncome\" value=\"70000\">\r\n                    <span class=\"unit\">HKD<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            \r\n            <div class=\"button-row-container\"style=\"display: flex; gap: 5px; margin-top: 20px;\">\r\n                <button onclick=\"calculateAllPro()\" style=\"flex: 1; margin-top: 0; padding: 12px;\">All-around Calculations<\/button>\r\n                <button onclick=\"resetCalculator()\" style=\"flex: 1; margin-top: 0; padding: 12px; background-color: #7f8c8d;\">Reset<\/button>\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n        <!-- \u53f3\u5074\uff1a\u7d50\u679c\u5c55\u793a\u5340\u57df -->\r\n        <div>\r\n            <div class=\"result-box\">\r\n                <div class=\"section-title\" style=\"margin-top:0;\">\ud83d\udccb Estimated Initial Total Cash Expenditure<\/div>\r\n                <div class=\"result-block\">\r\n                    <div class=\"result-item\">\r\n                        <span>Down Payment\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resDownPayment\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\">\r\n                        <span>Ad Valorem Stamp Duty (AVD)\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resStampDuty\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\" id=\"mipCashRow\" style=\"display:none;\">\r\n                        <span>1st Mortgage Insurance Premium\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resMipCashPaid\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\">\r\n                        <span>Agency Commission + Legal Fees\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resOtherFees\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\">\r\n                        <span>Renovation Costs\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resDecorationPaid\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\" style=\"color: #27ae60;\">\r\n                        <span>Total Bank Cash Rebate (Deduct expenses)\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resTotalRebate\" style=\"color: #27ae60;\">-$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\" style=\"border-top:1px dashed #ddd; padding-top:8px; margin-top:8px; font-weight:bold;\">\r\n                        <span>Total Initial Cost\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resTotalInitialCash\" style=\"color:#d35400;\">$0<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"section-title\">\ud83d\udcb3 Breakdown of Monthly Repayment<\/div>\r\n                <div class=\"result-block\">\r\n                    <div class=\"result-item\">\r\n                        <span>1st Mortgage Loan \uff1a<\/span>\r\n                        <span class=\"value\" id=\"resFirstMonthly\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\" id=\"resSecondMonthlyRow\">\r\n                        <span>2nd Mortgage Loan \uff1a<\/span>\r\n                        <span class=\"value\" id=\"resSecondMonthly\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item id='mipFinancedRow'\">\r\n                        <span>1st Mortgage Insurance Premium\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resMipFinancedMonthly\" style=\"font-size:12px; color:#777;\">$0<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item highlight\" style=\"border-top:2px solid #0073e6; padding-top:8px; margin-top:8px;\">\r\n                        <span>Total Monthly Repayment\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resTotalMonthlyPayment\">$0<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"section-title\">\ud83d\udea6 Bank Stress Test (1st & 2nd Mortgage)<\/div>\r\n                <div class=\"result-block\">\r\n                    <div class=\"result-item\">\r\n                        <span>Debt-to-income (DTI) Ratio (50% cap)\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resDsrRatio\">0%<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\">\r\n                        <span>Debt-to-income (DTI) Ratio Under Stress Testing (60% cap)\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resStressDsrRatio\">0%<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\" style=\"border-top:1px dashed #ddd; padding-top:8px; margin-top:8px;\">\r\n                        <span>1st & 2nd Mortgage Stress Test\uff1a<\/span>\r\n                        <span id=\"resStressStatus\" class=\"status-badge\">Not calculated<\/span>\r\n                    <\/div>\r\n                    <div class=\"result-item\" style=\"font-size: 13px; color: #555; margin-top: 5px;\">\r\n                        <span>Minimum Monthly Income Requirement\uff1a<\/span>\r\n                        <span class=\"value\" id=\"resMinIncomeReq\" style=\"color:#2c3e50;\">$0<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- \u5e74\u8868 -->\r\n    <div id=\"scheduleSection\" style=\"display:none;\">\r\n        \r\n\r\n        <!-- \ud83d\ude80 \u6a19\u984c\u8207\u5217\u5370\u6309\u9215\u4e26\u6392\u4f48\u5c40 -->\r\n        <div class=\"print-btn-container\" style=\"display: flex; justify-content: space-between; align-items: center; margin-top: 30px; border-bottom: 2px solid #0073e6; padding-bottom: 6px;\">\r\n            <div style=\"font-size:17px; font-weight:bold; color:#0073e6; padding-left:8px; border-left:4px solid #0073e6; margin:0;\">\ud83d\udcc5 1st & 2nd Mortagage Contribution Table<\/div>\r\n            <button onclick=\"window.print()\" style=\"width: auto; background-color: #2ecc71; margin: 0; padding: 8px 18px; font-size: 14px; border-radius: 4px;\">\ud83d\udda8\ufe0f Print<\/button>\r\n        <\/div>\r\n        <div class=\"table-container\">\r\n            <table id=\"amortizationTable\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>Annual<\/th>\r\n                        <th>Principal Repayment<\/th>\r\n                        <th>Interest Pay<\/th>\r\n                        <th>Contribution<\/th>\r\n                        <th>Remaining Loan<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody><\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<p style=\"font-size:14px;\">This calculator assumed the applicants' income derived mainly in Hong Kong, \r\n    have not borrowed or guaranteed other outstanding mortgage(s) and be bought for self-use purpose.The above information is for reference only. \r\n    No guarantee or representation is given by Midland as to its accuracy, completeness and\/or applicability. \r\n    All terms and conditions are subject to HKMA, HKMC, Inland Revenue Department, financial institution's final announcement\/approval.<\/p>\r\n<\/div>\r\n\r\n<script>\r\n    window.onload = function() {\r\n        autoCalculateLoans();\r\n        calculateAllPro();\r\n    };\r\n\r\n    function toggleSecondMortgage() {\r\n        const enable = document.getElementById('secondMortgageEnable').checked;\r\n        document.getElementById('secondMortgageBlock').style.display = enable ? 'block' : 'none';\r\n        document.getElementById('secondRebateGroup').style.display = enable ? 'block' : 'none';\r\n        autoCalculateLoans();\r\n    }\r\n\r\n     \/\/\ud83d\ude80 \u6838\u5fc3\u512a\u5316\uff1a\u7576\u4e00\u6309 > 70% \u6642\uff0c\u5f37\u5236\u95dc\u9589\u4e8c\u6309\u3001\u7981\u7528\u6b04\u4f4d\u3001\u4e26\u81ea\u52d5\u6536\u5408 (Collapse) \u5340\u584a\r\n    function autoCalculateLoans() {\r\n        const propertyValue = parseFloat(document.getElementById('propertyValue').value) || 0;\r\n        \r\n        \/\/ 1. \u81ea\u52d5\u8a08\u7b97 1% \u5730\u7522\u4ee3\u7406\u4f63\u91d1\r\n        const commission = propertyValue * 0.01;\r\n        document.getElementById('agentCommission').value = Math.round(commission);\r\n        \r\n        let firstPct = parseFloat(document.getElementById('firstMortgagePercent').value) || 0;\r\n\r\n        \/\/ \ud83d\udea8 1. \u4e00\u6309\u6210\u6578\u4e0a\u9650\u5b89\u5168\u6aa2\u67e5\uff08\u4e0d\u5f48\u7a97\uff0c\u6539\u70ba\u7d05\u5b57\u63d0\u793a\uff09\r\n        const firstPctTips = document.getElementById('firstPctTips');\r\n        if (firstPct > 95) {\r\n            firstPct = 95;\r\n            document.getElementById('firstMortgagePercent').value = 95;\r\n        }\r\n        if (firstPct > 70) {\r\n            firstPctTips.innerText = \"  *[Mortgage Caps] For (HOS) maximum mortgage loan-to-value (LTV) ratio is 95% for (Green Form) applicants and 90% for (White Form) applicants. If mortgage insurance is utilized, the maximum LTV is 90%. The cap for non-residential properties is 70%.\";\r\n            firstPctTips.style.display = 'block';\r\n          \r\n        } else {\r\n            firstPctTips.style.display = 'none';\r\n        } \r\n\r\n        \/\/ \/\/ \ud83d\ude80 \u5224\u65b7\u7576\u6210\u6578 >= 95% \u6642\u89f8\u767c\u7d05\u8272\u6eab\u99a8\u63d0\u793a\r\n        \/\/ const hosTips = document.getElementById('hos95Tips');\r\n        \/\/ hosTips.style.display = (firstPct >= 95) ? 'block' : 'none';\r\n\r\n        \/\/ \ud83d\udea8 2. \u4e00\u6309\u5e74\u671f\u5b89\u5168\u6aa2\u67e5\uff08\u4e0d\u5f48\u7a97\uff0c\u6539\u70ba\u7d05\u5b57\u63d0\u793a\uff09\r\n        let firstYears = parseInt(document.getElementById('firstLoanTerm').value) || 0;\r\n        const firstTermTips = document.getElementById('firstTermTips');\r\n        if (firstYears > 30) {\r\n            firstTermTips.style.display = 'block';\r\n            firstYears = 30;\r\n            document.getElementById('firstLoanTerm').value = 30;\r\n        } else {\r\n            firstTermTips.style.display = 'none';\r\n        }\r\n\r\n        \/\/ \ud83d\udea8 \u6838\u5fc3\u908f\u8f2f\uff1a\u6aa2\u6e2c\u4e00\u6309\u6210\u6578\u662f\u5426\u5927\u65bc 70%\r\n        const secondChk = document.getElementById('secondMortgageEnable');\r\n        const secondTips = document.getElementById('secondDisabledTips');\r\n        const secondBlock = document.getElementById('secondMortgageBlock');\r\n        \r\n        \/\/ \u4e8c\u6309\u6846\u5167\u6240\u6709\u7684 input \u6b04\u4f4d\r\n        const secondInputs = secondBlock.querySelectorAll('input');\r\n\r\n        const secRows = ['secPctRow', 'secAmtRow', 'secRateRow', 'secTermRow'];\r\n        if (firstPct > 70) {\r\n            secondChk.checked = false;\r\n            secondChk.disabled = true;\r\n            secondTips.style.display = 'inline';\r\n            secondBlock.style.display = 'none';\r\n            if (document.getElementById('secondRebateGroup')) {\r\n                document.getElementById('secondRebateGroup').style.display = 'none';\r\n            }\r\n            \/\/ \ud83d\ude80 \u70ba\u6bcf\u4e00\u884c\u52a0\u5165 disabled-row \u985e\u5225\u8b8a\u7070\r\n            secRows.forEach(id => {\r\n                const el = document.getElementById(id);\r\n                if (el) el.classList.add('disabled-row');\r\n            });\r\n            secondInputs.forEach(input => { input.disabled = true; });\r\n        } else {\r\n            secondChk.disabled = false;\r\n            secondTips.style.display = 'none';\r\n            secondBlock.style.display = secondChk.checked ? 'block' : 'none';\r\n            if (document.getElementById('secondRebateGroup')) {\r\n                document.getElementById('secondRebateGroup').style.display = secondChk.checked ? 'block' : 'none';\r\n            }\r\n            \/\/ \ud83d\ude80 \u6062\u5fa9\u6b63\u5e38\u7684\u984f\u8272\r\n            secRows.forEach(id => {\r\n                const el = document.getElementById(id);\r\n                if (el) el.classList.remove('disabled-row');\r\n            });\r\n            secondInputs.forEach(input => { input.disabled = !secondChk.checked; });\r\n        }\r\n\r\n        let secondPct = 0;\r\n\r\n        \/\/ 2. \u7372\u53d6\u4e00\u6309\u8207\u4e8c\u6309\u6210\u6578\u6bd4\u4f8b\r\n        if (document.getElementById('secondMortgageEnable').checked) {\r\n            secondPct = parseFloat(document.getElementById('secondMortgagePercent').value) || 0;\r\n            \r\n            \/\/ \ud83d\udea8 3. \u4e00\u6309 + \u4e8c\u6309\u4e0d\u80fd\u5927\u65bc 100% \u5b89\u5168\u6aa2\u67e5\uff08\u4e0d\u5f48\u7a97\uff0c\u6539\u70ba\u7d05\u5b57\u63d0\u793a\uff09\r\n            if (firstPct + secondPct > 100) {\r\n                combinedPctTips.innerText = `1st Mortgage (${firstPct}%) + 2nd Mortgage (${secondPct}%) cannot exceed 100%. The system has automatically adjusted the values.`;\r\n                combinedPctTips.style.display = 'block';\r\n                \r\n                secondPct = 100 - firstPct;\r\n                secondPct = Math.round(secondPct * 10) \/ 10;\r\n                document.getElementById('secondMortgagePercent').value = secondPct.toString();\r\n            } else {\r\n                combinedPctTips.style.display = 'none';\r\n            }\r\n\r\n            \/\/ \ud83d\udea8 4. \u4e8c\u6309\u5e74\u671f\u5b89\u5168\u6aa2\u67e5\uff08\u4e0d\u5f48\u7a97\uff0c\u6539\u70ba\u7d05\u5b57\u63d0\u793a\uff09\r\n            let secondYears = parseInt(document.getElementById('secondLoanTerm').value) || 0;\r\n            const secondTermTips = document.getElementById('secondTermTips');\r\n            if (secondYears > 30) {\r\n                secondTermTips.style.display = 'block';\r\n                document.getElementById('secondLoanTerm').value = 30;\r\n            } else {\r\n                secondTermTips.style.display = 'none';\r\n            }\r\n        } else {\r\n            combinedPctTips.style.display = 'none';\r\n        }\r\n       \r\n\r\n        \/\/ 3. \u8a08\u7b97\u4e00\u6309\u8207\u4e8c\u6309\u5be6\u969b\u8cb8\u6b3e\u984d\r\n        const firstLoan = propertyValue * (firstPct \/ 100);\r\n        document.getElementById('firstLoanAmount').value = Math.round(firstLoan);\r\n\r\n        if (document.getElementById('secondMortgageEnable').checked) {\r\n            const secondLoan = propertyValue * (secondPct \/ 100);\r\n            document.getElementById('secondLoanAmount').value = Math.round(secondLoan);\r\n        } else {\r\n            document.getElementById('secondLoanAmount').value = 0;\r\n        }        \r\n    }\r\n\r\n    \/\/ \u4e00\u9375\u6e05\u9664 (Reset) \u529f\u80fd\uff1a\u6062\u5fa9\u6240\u6709\u6b04\u4f4d\u81f3\u521d\u59cb\u9810\u8a2d\u503c\r\n    function resetCalculator() {\r\n        document.getElementById('propertyValue').value = 8000000;\r\n        document.getElementById('firstMortgagePercent').value = \"70\";\r\n        document.getElementById('firstInterestRate').value = 3.25;\r\n        document.getElementById('firstLoanTerm').value = 30;\r\n        document.querySelector('input[name=\"firstMipFinanced\"][value=\"yes\"]').checked = true;\r\n        \r\n        \r\n        document.getElementById('secondMortgagePercent').value = \"0\";\r\n        document.getElementById('secondInterestRate').value = 3.25;\r\n        document.getElementById('secondLoanTerm').value = 30;\r\n        \r\n        document.getElementById('lawyerFee').value = 10000;\r\n        document.getElementById('decorationFee').value = 0;\r\n        document.getElementById('firstCashRebatePercent').value = 1.0;\r\n        document.getElementById('secondCashRebatePercent').value = 0.0;\r\n        document.getElementById('monthlyIncome').value = 70000;\r\n\r\n        \/\/ \ud83d\ude80 \u4e00\u9375\u91cd\u8a2d\u6240\u6709 Tips \u7684\u986f\u793a\u72c0\u614b\r\n        document.getElementById('firstPctTips').style.display = 'none';\r\n        document.getElementById('firstTermTips').style.display = 'none';\r\n        document.getElementById('combinedPctTips').style.display = 'none';\r\n        document.getElementById('secondTermTips').style.display = 'none';\r\n\r\n        const minIncomeElement = document.getElementById('resMinIncomeReq');\r\n        if (minIncomeElement) {\r\n            minIncomeElement.style.color = '#2c3e50';\r\n            minIncomeElement.style.fontWeight = 'bold';\r\n        }\r\n\r\n        \/\/ \u91cd\u65b0\u806f\u52d5\u8207\u8a08\u7b97\r\n        autoCalculateLoans();\r\n        calculateAllPro();\r\n    }\r\n\r\n    function formatCurrency(num) {\r\n        return '$' + Math.round(num).toLocaleString('en-US');\r\n    }\r\n\r\n    \r\n    \/\/ 1. \u6700\u65b0\u9999\u6e2f\u5f9e\u50f9\u5370\u82b1\u7a05\u8a08\u7b97\u516c\u5f0f\uff08\u6700\u65b02026\uff09\r\n    function calculateStampDuty(price) {\r\n        if (price <= 4000000) return 100;\r\n        if (price <= 4323780) return 100 + (price - 4000000) * 0.20;\r\n        if (price <= 4500000) return price * 0.015;\r\n        if (price <= 4935480) return 67500 + (price - 4500000) * 0.10;\r\n        if (price <= 6000000) return price * 0.0225;\r\n        if (price <= 6642860) return 135000 + (price - 6000000) * 0.10;\r\n        if (price <= 9000000) return price * 0.03;\r\n        if (price <= 10080000) return 270000 + (price - 9000000) * 0.10;\r\n        if (price <= 20000000) return price * 0.0375;\r\n        if (price <= 21739120) return 750000 + (price - 20000000) * 0.10;\r\n        if (price <= 100000000) return price * 0.0425;\r\n        if (price <= 109574470) return 4250000 + (price - 100000000) * 0.30;\r\n        return price * 0.065; \/\/ \u8d85\u904e1\u5104\u6e2f\u5143\u8c6a\u5b85\u70ba 6.5%\r\n    }\r\n\r\n    \/\/ 2. \u66f4\u65b0 2026 \u5e74 HKMC \u6700\u65b0\u6309\u63ed\u4fdd\u96aa\u8cbb\u7387\u8868\u57fa\u6e96 \r\n    function getHkmc2026MipRate(price, ltvPercent, termYears) {\r\n        if (ltvPercent <= 70 && price <= 15000000) return 0;\r\n\r\n        if (price <= 6000000) {\r\n            if (termYears <= 10) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0050; \r\n                if (ltvPercent <= 85) return 0.0086; \r\n                if (ltvPercent <= 90) return 0.0125; \r\n            }\r\n            if (termYears <= 15) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0060; \r\n                if (ltvPercent <= 85) return 0.0102; \r\n                if (ltvPercent <= 90) return 0.0148; \r\n            }\r\n            if (termYears <= 20) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0076; \r\n                if (ltvPercent <= 85) return 0.0125; \r\n                if (ltvPercent <= 90) return 0.0179; \r\n            }\r\n            if (termYears <= 25) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0083; \r\n                if (ltvPercent <= 85) return 0.0135; \r\n                if (ltvPercent <= 90) return 0.0203; \r\n            }\r\n            if (termYears <= 30) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0092; \r\n                if (ltvPercent <= 85) return 0.0141; \r\n                if (ltvPercent <= 90) return 0.0216; \r\n            }\r\n        }\r\n        \r\n        if (price <= 15000000) {\r\n            if (termYears <= 10) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0060; \r\n                if (ltvPercent <= 85) return 0.0101; \r\n                if (ltvPercent <= 90) return 0.0146; \r\n            }\r\n            if (termYears <= 15) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0071; \r\n                if (ltvPercent <= 85) return 0.0120; \r\n                if (ltvPercent <= 90) return 0.0172; \r\n            }\r\n            if (termYears <= 20) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0090; \r\n                if (ltvPercent <= 85) return 0.0146; \r\n                if (ltvPercent <= 90) return 0.0208; \r\n            }\r\n            if (termYears <= 25) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0097; \r\n                if (ltvPercent <= 85) return 0.0157; \r\n                if (ltvPercent <= 90) return 0.0235; \r\n            }\r\n            if (termYears <= 30) {\r\n                if (ltvPercent <= 75) return 0.0000; \r\n                if (ltvPercent <= 80) return 0.0109; \r\n                if (ltvPercent <= 85) return 0.0164; \r\n                if (ltvPercent <= 90) return 0.0250; \r\n            }\r\n        }\r\n\r\n        if (price > 15000000) {\r\n            if (termYears <= 10) {\r\n                if (ltvPercent <= 70) return 0.0000;\r\n                if (ltvPercent <= 75) return 0.0045; \r\n                if (ltvPercent <= 80) return 0.0086; \r\n            }\r\n            if (termYears <= 15) {\r\n                if (ltvPercent <= 70) return 0.0000;\r\n                if (ltvPercent <= 75) return 0.0045; \r\n                if (ltvPercent <= 80) return 0.0112;\r\n            }\r\n            if (termYears <= 20) {\r\n                if (ltvPercent <= 70) return 0.0000;\r\n                if (ltvPercent <= 75) return 0.0045; \r\n                if (ltvPercent <= 80) return 0.0138;\r\n            }\r\n            if (termYears <= 25) {\r\n                if (ltvPercent <= 70) return 0.0000;\r\n                if (ltvPercent <= 75) return 0.0045; \r\n                if (ltvPercent <= 80) return 0.0150;\r\n            }\r\n            if (termYears <= 30) {\r\n                if (ltvPercent <= 70) return 0.0000;\r\n                if (ltvPercent <= 75) return 0.0045; \r\n                if (ltvPercent <= 80) return 0.0161;\r\n            }\r\n        }\r\n        return 0.0000; \/\/ \u9810\u8a2d\u5b89\u5168\u56de\u50b3\r\n    }\r\n\r\n    \/\/ PMT \u8a08\u7b97\u901a\u7528\u51fd\u6578\r\n    function calculatePMT(principal, annualRate, years) {\r\n        if (principal <= 0 || annualRate <= 0 || years <= 0) return 0;\r\n        const monthlyRate = (annualRate \/ 100) \/ 12;\r\n        const totalMonths = years * 12;\r\n        return principal * (monthlyRate * Math.pow(1 + monthlyRate, totalMonths)) \/ (Math.pow(1 + monthlyRate, totalMonths) - 1);\r\n    }\r\n\r\n        \/\/ \u4e3b\u904b\u7b97\u908f\u8f2f\r\n    function calculateAllPro() {\r\n        const propertyValue = parseFloat(document.getElementById('propertyValue').value) || 0;\r\n        const firstBaseLoan = parseFloat(document.getElementById('firstLoanAmount').value) || 0;\r\n        const firstRate = parseFloat(document.getElementById('firstInterestRate').value) || 0;\r\n        const firstYears = parseInt(document.getElementById('firstLoanTerm').value) || 0;\r\n        const isMipFinanced = document.querySelector('input[name=\"firstMipFinanced\"]:checked').value === 'yes';\r\n\r\n        const secondEnable = document.getElementById('secondMortgageEnable').checked;\r\n        const secondBaseLoan = secondEnable ? (parseFloat(document.getElementById('secondLoanAmount').value) || 0) : 0;\r\n        const secondRate = secondEnable ? (parseFloat(document.getElementById('secondInterestRate').value) || 0) : 0;\r\n        const secondYears = secondEnable ? (parseInt(document.getElementById('secondLoanTerm').value) || 0) : 0;\r\n\r\n        const agentFee = parseFloat(document.getElementById('agentCommission').value) || 0;\r\n        const lawyerFee = parseFloat(document.getElementById('lawyerFee').value) || 0;\r\n        const decorationFee = parseFloat(document.getElementById('decorationFee').value) || 0;\r\n        const firstRebatePct = parseFloat(document.getElementById('firstCashRebatePercent').value) || 0;\r\n        const secondRebatePct = secondEnable ? (parseFloat(document.getElementById('secondCashRebatePercent').value) || 0) : 0;\r\n        const monthlyIncome = parseFloat(document.getElementById('monthlyIncome').value) || 0;\r\n\r\n        \/\/ \u52a0\u5e74\u671f\u96d9\u91cd\u9632\u932f\u5224\u5b9a\r\n        if (firstYears > 30 || secondYears > 30) return;\r\n\r\n        \/\/ \u8a08\u7b97\u4e00\u6309\u6309\u4fdd (MIP)\r\n        const firstLtv = (firstBaseLoan \/ propertyValue) * 100;\r\n        const mipRate = getHkmc2026MipRate(propertyValue, firstLtv, firstYears);\r\n        const mipAmount = firstBaseLoan * mipRate;\r\n\r\n        let finalFirstLoanAmount = firstBaseLoan;\r\n        let mipCashPaid = 0;\r\n        let mipFinancedMonthly = 0;\r\n\r\n        if (mipAmount > 0) {\r\n            if (isMipFinanced) {\r\n                finalFirstLoanAmount = firstBaseLoan + mipAmount; \r\n            } else {\r\n                mipCashPaid = mipAmount; \r\n            }\r\n        }\r\n\r\n        \/\/ \u6838\u5fc3\uff1a\u8a08\u7b97\u4e00\u6309\u548c\u4e8c\u6309\u7684\u73fe\u91d1\u56de\u8d08\u91d1\u984d\r\n        const firstRebateAmount = firstBaseLoan * (firstRebatePct \/ 100);\r\n        const secondRebateAmount = secondBaseLoan * (secondRebatePct \/ 100);\r\n        const totalRebateAmount = firstRebateAmount + secondRebateAmount;\r\n\r\n        \/\/ \u8a08\u7b97\u6bcf\u6708\u4f9b\u6b3e\r\n        const firstMonthly = calculatePMT(finalFirstLoanAmount, firstRate, firstYears);\r\n        const secondMonthly = secondEnable ? calculatePMT(secondBaseLoan, secondRate, secondYears) : 0;\r\n        \r\n        if (mipAmount > 0 && isMipFinanced) {\r\n            mipFinancedMonthly = calculatePMT(mipAmount, firstRate, firstYears);\r\n        }\r\n\r\n        const totalMonthly = firstMonthly + secondMonthly;\r\n\r\n        \/\/ \u9996\u671f\u8207\u521d\u59cb\u73fe\u91d1\u958b\u652f\r\n        const totalLoanBase = firstBaseLoan + secondBaseLoan;\r\n        const baseDownPayment = Math.max(0, propertyValue - totalLoanBase);\r\n        const stampDuty = calculateStampDuty(propertyValue);\r\n        const otherFees = agentFee + lawyerFee;\r\n        const totalInitialCash = baseDownPayment + stampDuty + mipCashPaid + otherFees + decorationFee - totalRebateAmount;\r\n\r\n        \/\/ \u6e32\u67d3\u7d50\u679c\u9762\u677f\r\n        document.getElementById('resDownPayment').innerText = formatCurrency(baseDownPayment);\r\n        document.getElementById('resStampDuty').innerText = formatCurrency(stampDuty);\r\n        document.getElementById('resOtherFees').innerText = formatCurrency(otherFees);\r\n        document.getElementById('resDecorationPaid').innerText = formatCurrency(decorationFee);\r\n        document.getElementById('resTotalRebate').innerText = '-' + formatCurrency(totalRebateAmount);\r\n        document.getElementById('resTotalInitialCash').innerText = formatCurrency(totalInitialCash);\r\n        \r\n        if (mipAmount > 0 && !isMipFinanced) {\r\n            document.getElementById('mipCashRow').style.display = 'flex';\r\n            document.getElementById('resMipCashPaid').innerText = formatCurrency(mipCashPaid);\r\n        } else {\r\n            document.getElementById('mipCashRow').style.display = 'none';\r\n        }\r\n\r\n        document.getElementById('resFirstMonthly').innerText = formatCurrency(firstMonthly - mipFinancedMonthly);\r\n        document.getElementById('resSecondMonthly').innerText = formatCurrency(secondMonthly);\r\n        document.getElementById('resMipFinancedMonthly').innerText = formatCurrency(mipFinancedMonthly);\r\n        document.getElementById('resTotalMonthlyPayment').innerText = formatCurrency(totalMonthly);\r\n        \r\n        document.getElementById('resSecondMonthlyRow').style.display = secondEnable ? 'flex' : 'none';\r\n\r\n        \/\/ 3. \u7d9c\u5408\u58d3\u529b\u6e2c\u8a66 (\u4e00\u6309\u8207\u4e8c\u6309\u4f9b\u6b3e\u5408\u4f75\u8a08\u7b97)\r\n        const currentDsr = (totalMonthly \/ monthlyIncome) * 100;\r\n\r\n        \/\/ \u8a08\u7b97\u58d3\u6e2c\u4f9b\u6b3e (\u5229\u7387\u7686\u52a0\u58d3 +2%)\r\n        const firstStressMonthly = calculatePMT(finalFirstLoanAmount, firstRate + 2, firstYears);\r\n        const secondStressMonthly = secondEnable ? calculatePMT(secondBaseLoan, secondRate + 2, secondYears) : 0;\r\n        const totalStressMonthly = firstStressMonthly + secondStressMonthly;\r\n        const stressDsr = (totalStressMonthly \/ monthlyIncome) * 100;\r\n\r\n        const minIncomeReq = Math.max((totalMonthly \/ 0.5), (totalStressMonthly \/ 0.6));\r\n\r\n        document.getElementById('resDsrRatio').innerText = currentDsr.toFixed(2) + '%';\r\n        document.getElementById('resStressDsrRatio').innerText = stressDsr.toFixed(2) + '%';\r\n        document.getElementById('resMinIncomeReq').innerText = formatCurrency(minIncomeReq);\r\n\r\n        \/\/ \ud83d\ude80 \u6838\u5fc3\u66f4\u65b0\uff1a\u7d9c\u5408\u58d3\u529b\u6e2c\u8a66\u5224\u5b9a\u8207\u6700\u4f4e\u6708\u5165\u8981\u6c42\u52d5\u614b\u8b8a\u8272\r\n        const statusBadge = document.getElementById('resStressStatus');\r\n        const minIncomeElement = document.getElementById('resMinIncomeReq');\r\n\r\n        \/\/ \u66f4\u65b0\u6700\u4f4e\u6708\u5165\u8981\u6c42\u7684\u6578\u503c\u6587\u5b57\r\n        minIncomeElement.innerText = formatCurrency(minIncomeReq);\r\n\r\n        if (currentDsr <= 50 && stressDsr <= 60) {\r\n            statusBadge.innerText = '\u2705 PASS';\r\n            statusBadge.className = 'status-badge status-pass';\r\n\r\n            \/\/ \u6062\u5fa9\u5b89\u5168\u3001\u7a69\u5065\u7684\u6df1\u85cd\u504f\u9ed1\u9ad4\r\n            minIncomeElement.style.color = '#2c3e50';\r\n            minIncomeElement.style.fontWeight = 'bold';\r\n\r\n        } else {\r\n            statusBadge.innerText = '\u274c FAIL(OVERLOAD)';\r\n            statusBadge.className = 'status-badge status-fail';\r\n\r\n            \/\/ \ud83d\udea8 \u5f37\u5236\u555f\u52d5\u9ad8\u4eae\u7d05\u8272\u7c97\u9ad4\u8b66\u793a\r\n            minIncomeElement.style.color = '#e74c3c'; \/\/ \u660e\u4eae\u7684\u7d05\u8272\r\n            minIncomeElement.style.fontWeight = '900';   \/\/ \u6975\u7c97\u9ad4\r\n        }\r\n\r\n        generateCombinedTable(finalFirstLoanAmount, firstRate, firstYears, secondBaseLoan, secondRate, secondYears);\r\n    }\r\n\r\n    \/\/ \u5408\u4f75\u751f\u6210\u6524\u92b7\u5e74\u8868\r\n    function generateCombinedTable(fLoan, fRate, fYears, sLoan, sRate, sYears) {\r\n        const tbody = document.querySelector('#amortizationTable tbody');\r\n        tbody.innerHTML = '';\r\n        \r\n        const maxYears = Math.max(fYears, sYears);\r\n        let fRemaining = fLoan;\r\n        let sRemaining = sLoan;\r\n        \r\n        const fMonthlyRate = (fRate \/ 100) \/ 12;\r\n        const sMonthlyRate = (sRate \/ 100) \/ 12;\r\n        \r\n        const fMonthlyPay = calculatePMT(fLoan, fRate, fYears);\r\n        const sMonthlyPay = sLoan > 0 ? calculatePMT(sLoan, sRate, sYears) : 0;\r\n\r\n        for (let year = 1; year <= maxYears; year++) {\r\n            let yearlyPrincipal = 0;\r\n            let yearlyInterest = 0;\r\n\r\n            for (let month = 1; month <= 12; month++) {\r\n                if (year <= fYears && fRemaining > 0) {\r\n                    let fInt = fRemaining * fMonthlyRate;\r\n                    let fPri = fMonthlyPay - fInt;\r\n                    if (fPri > fRemaining) { fPri = fRemaining; fInt = 0; }\r\n                    yearlyPrincipal += fPri;\r\n                    yearlyInterest += fInt;\r\n                    fRemaining -= fPri;\r\n                }\r\n                if (sLoan > 0 && year <= sYears && sRemaining > 0) {\r\n                    let sInt = sRemaining * sMonthlyRate;\r\n                    let sPri = sMonthlyPay - sInt;\r\n                    if (sPri > sRemaining) { sPri = sRemaining; sInt = 0; }\r\n                    yearlyPrincipal += sPri;\r\n                    yearlyInterest += sInt;\r\n                    sRemaining -= sPri;\r\n                }\r\n            }\r\n\r\n            const totalYearlyPaid = yearlyPrincipal + yearlyInterest;\r\n            const totalRemainingBalance = Math.max(0, fRemaining) + Math.max(0, sRemaining);\r\n\r\n            const row = document.createElement('tr');\r\n            row.innerHTML = `\r\n                <td>${year}<\/td>\r\n                <td>${formatCurrency(yearlyPrincipal)}<\/td>\r\n                <td>${formatCurrency(yearlyInterest)}<\/td>\r\n                <td>${formatCurrency(totalYearlyPaid)}<\/td>\r\n                <td>${formatCurrency(totalRemainingBalance)}<\/td>\r\n            `;\r\n            tbody.appendChild(row);\r\n        }\r\n        document.getElementById('scheduleSection').style.display = 'block';\r\n    }\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Mortgage Calculator Pro Mortgage Calculator Pro Mortgage Calculator Pro \ud83c\udfe0 First Mortgage Base Setting Property Value (HKD) HKD First Mortgage LTV Ratio % First Mortgage Loan Amount (Automatically Calculate) HKD First Mortgage Interest Rate % First Mortgage Loan Tenor (Max.30years) Years * \u4f4f\u5b85\u6309\u63ed\u8cb8\u6b3e\u5e74\u671f\u4e0a\u9650\u70ba 30 \u5e74\uff01 First Mortgage Insurance Payment Method (HKMC 2026) Additional Loan Direct [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template\/template-homepage.php","meta":{"footnotes":""},"class_list":["post-20770","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.6 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Mortgage Calculator Pro - AI ONLINE PROPERTY<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/aionlinehk.com\/zh\/mortgage-calculator-pro\/\" \/>\n<meta property=\"og:locale\" content=\"zh_HK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mortgage Calculator Pro | \u804a\u5929\u6a5f\u5668\u4eba\" \/>\n<meta property=\"og:description\" content=\"AI ChatBot \u804a\u5929\u6a5f\u5668\u4eba\" \/>\n<meta property=\"og:url\" content=\"https:\/\/aionlinehk.com\/zh\/mortgage-calculator-pro\/\" \/>\n<meta property=\"og:site_name\" content=\"AI ONLINE PROPERTY\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/AI-Online-Property-\/100064067259009\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T09:18:51+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Mortgage Calculator Pro\" \/>\n<meta name=\"twitter:label1\" content=\"\u9810\u8a08\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 \u5206\u9418\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/mortgage-calculator-pro\\\/\",\"url\":\"https:\\\/\\\/aionlinehk.com\\\/mortgage-calculator-pro\\\/\",\"name\":\"Mortgage Calculator Pro - AI ONLINE PROPERTY\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/#website\"},\"datePublished\":\"2026-09-12T09:00:28+00:00\",\"dateModified\":\"2026-09-14T09:18:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/mortgage-calculator-pro\\\/#breadcrumb\"},\"inLanguage\":\"zh-HK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/aionlinehk.com\\\/mortgage-calculator-pro\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/mortgage-calculator-pro\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/aionlinehk.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mortgage Calculator Pro\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/\",\"name\":\"AI ONLINE PROPERTY\",\"description\":\"Your Professional Property Agency\",\"publisher\":{\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-HK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/#organization\",\"name\":\"AI ONLINE PROPERTY\",\"url\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-HK\",\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/aionlinehk.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/aionline_logo-blue_Small_300.png\",\"contentUrl\":\"https:\\\/\\\/aionlinehk.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/aionline_logo-blue_Small_300.png\",\"width\":308,\"height\":119,\"caption\":\"AI ONLINE PROPERTY\"},\"image\":{\"@id\":\"https:\\\/\\\/aionlinehk.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/AI-Online-Property-\\\/100064067259009\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mortgage Calculator Pro - AI ONLINE PROPERTY","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/aionlinehk.com\/zh\/mortgage-calculator-pro\/","og_locale":"zh_HK","og_type":"article","og_title":"Mortgage Calculator Pro | \u804a\u5929\u6a5f\u5668\u4eba","og_description":"AI ChatBot \u804a\u5929\u6a5f\u5668\u4eba","og_url":"https:\/\/aionlinehk.com\/zh\/mortgage-calculator-pro\/","og_site_name":"AI ONLINE PROPERTY","article_publisher":"https:\/\/www.facebook.com\/people\/AI-Online-Property-\/100064067259009\/","article_modified_time":"2026-09-14T09:18:51+00:00","twitter_card":"summary_large_image","twitter_title":"Mortgage Calculator Pro","twitter_misc":{"\u9810\u8a08\u95b1\u8b80\u6642\u9593":"4 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/aionlinehk.com\/mortgage-calculator-pro\/","url":"https:\/\/aionlinehk.com\/mortgage-calculator-pro\/","name":"Mortgage Calculator Pro - AI ONLINE PROPERTY","isPartOf":{"@id":"https:\/\/aionlinehk.com\/zh\/#website"},"datePublished":"2026-09-12T09:00:28+00:00","dateModified":"2026-09-14T09:18:51+00:00","breadcrumb":{"@id":"https:\/\/aionlinehk.com\/mortgage-calculator-pro\/#breadcrumb"},"inLanguage":"zh-HK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/aionlinehk.com\/mortgage-calculator-pro\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/aionlinehk.com\/mortgage-calculator-pro\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/aionlinehk.com\/"},{"@type":"ListItem","position":2,"name":"Mortgage Calculator Pro"}]},{"@type":"WebSite","@id":"https:\/\/aionlinehk.com\/zh\/#website","url":"https:\/\/aionlinehk.com\/zh\/","name":"AI ONLINE PROPERTY","description":"Your Professional Property Agency","publisher":{"@id":"https:\/\/aionlinehk.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/aionlinehk.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-HK"},{"@type":"Organization","@id":"https:\/\/aionlinehk.com\/zh\/#organization","name":"AI ONLINE PROPERTY","url":"https:\/\/aionlinehk.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"zh-HK","@id":"https:\/\/aionlinehk.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/aionlinehk.com\/wp-content\/uploads\/2020\/12\/aionline_logo-blue_Small_300.png","contentUrl":"https:\/\/aionlinehk.com\/wp-content\/uploads\/2020\/12\/aionline_logo-blue_Small_300.png","width":308,"height":119,"caption":"AI ONLINE PROPERTY"},"image":{"@id":"https:\/\/aionlinehk.com\/zh\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/AI-Online-Property-\/100064067259009\/"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/pages\/20770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/comments?post=20770"}],"version-history":[{"count":99,"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/pages\/20770\/revisions"}],"predecessor-version":[{"id":20872,"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/pages\/20770\/revisions\/20872"}],"wp:attachment":[{"href":"https:\/\/aionlinehk.com\/zh\/wp-json\/wp\/v2\/media?parent=20770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}