{"id":1115,"date":"2025-09-01T15:06:48","date_gmt":"2025-09-01T15:06:48","guid":{"rendered":"https:\/\/uj.okoshitel.hu\/?page_id=1115"},"modified":"2025-09-15T15:23:09","modified_gmt":"2025-09-15T15:23:09","slug":"hitelkalkulator","status":"publish","type":"page","link":"https:\/\/uj.okoshitel.hu\/index.php\/hitelkalkulator\/","title":{"rendered":"Hitelkalkul\u00e1tor"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1115\" class=\"elementor elementor-1115\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9995e51 e-flex e-con-boxed e-con e-parent\" data-id=\"9995e51\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c3d494 elementor-widget elementor-widget-heading\" data-id=\"0c3d494\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Hitelkalkul\u00e1tor<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d2505e8 elementor-widget elementor-widget-text-editor\" data-id=\"d2505e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Kalkul\u00e1ljon vel\u00fcnk!<\/strong>\u00a0Azonnali eredm\u00e9nyek a legjobb v\u00e1laszt\u00e1s el\u0151seg\u00edt\u00e9se \u00e9rdek\u00e9ben!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b24101a e-flex e-con-boxed e-con e-parent\" data-id=\"b24101a\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-ce917d9 e-con-full e-flex e-con e-child\" data-id=\"ce917d9\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b90cc6 elementor-widget__width-initial elementor-widget elementor-widget-shortcode\" data-id=\"9b90cc6\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"bm-calc-wrapper\" aria-label=\"okoshitel Lak\u00e1skalkul\u00e1tor\">\r\n    <div class=\"upper-input-wrapper\">\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_loanGoal\">Hitel c\u00e9lja                <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"Milyen c\u00e9lra szeretn\u00e9d felvenni a hitelt!\">?<\/span>\r\n            <\/label>\r\n            <select id=\"bm_loanGoal\" aria-required=\"true\" aria-describedby=\"loanGoalError\">\r\n                <option value=\"\">V\u00e1lasszon hitelc\u00e9lt<\/option>\r\n                <option value=\"UJ_LAKAS\">\u00daj ingatlan v\u00e1s\u00e1rl\u00e1sa<\/option>\r\n                <option value=\"EPITES\">\u00daj ingatlan \u00e9p\u00edt\u00e9se<\/option>\r\n                <option value=\"KORSZERUSITES\">Fel\u00faj\u00edt\u00e1s, korszer\u0171s\u00edt\u00e9s<\/option>\r\n                <option value=\"HASZNALT_LAKAS\">Haszn\u00e1lt ingatlan v\u00e1s\u00e1rl\u00e1sa<\/option>\r\n                <option value=\"BOVITES\">B\u0151v\u00edt\u00e9s<\/option>\r\n                <option value=\"HITELKIVALTAS\">Hitelkiv\u00e1lt\u00e1s<\/option>\r\n                <option value=\"FELUJITAS\">Fel\u00faj\u00edt\u00e1s<\/option>\r\n                <option value=\"SZAB_FEL\">Szabad felhaszn\u00e1l\u00e1s\u00fa hitel<\/option>\r\n            <\/select>\r\n            <div id=\"loanGoalError\" class=\"bm-calc-validate-error\">K\u00e9rem, v\u00e1lasszon hitelc\u00e9lt!<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_loanAmount\">Hitel\u00f6sszeg (Ft)                <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"Mekkora hitelt szeretn\u00e9l felvenni?\">?<\/span><\/label>\r\n            <div class=\"input\">\r\n                <span class=\"input-icon\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"money-bill-1\" class=\"svg-inline--fa fa-money-bill-1 \" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"><path fill=\"currentColor\" d=\"M112 112c0 35.3-28.7 64-64 64l0 160c35.3 0 64 28.7 64 64l352 0c0-35.3 28.7-64 64-64l0-160c-35.3 0-64-28.7-64-64l-352 0zM0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16l0 64-8 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l24 0 24 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-8 0 0-80c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"><\/path><\/svg><\/span>\r\n                <input id=\"bm_loanAmount\" type=\"text\" style=\"padding: 7px 10px;\" class=\"number_input\" min=\"0\" aria-required=\"true\" aria-describedby=\"loanAmountError\" placeholder=\"Pl.: 10000000\" \/>\r\n                <span>Ft<\/span>\r\n            <\/div>\r\n            <div id=\"loanAmountError\" class=\"bm-calc-validate-error\">K\u00e9rem, adjon meg \u00e9rv\u00e9nyes hitel\u00f6sszeget! (> 100000)<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_realEstateValue\">Ingatlan \u00e9rt\u00e9ke (Ft)                <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"\u00cdrja be az ingatlan \u00e9rt\u00e9k\u00e9t!\">?<\/span><\/label>\r\n            <div class=\"input\">\r\n                <span class=\"input-icon\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"house\" class=\"svg-inline--fa fa-house \" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"><path fill=\"currentColor\" d=\"M303.5 5.7c-9-7.6-22.1-7.6-31.1 0l-264 224c-10.1 8.6-11.3 23.7-2.8 33.8s23.7 11.3 33.8 2.8L64 245.5 64 432c0 44.2 35.8 80 80 80l288 0c44.2 0 80-35.8 80-80l0-186.5 24.5 20.8c10.1 8.6 25.3 7.3 33.8-2.8s7.3-25.3-2.8-33.8l-264-224zM112 432l0-227.2L288 55.5 464 204.8 464 432c0 17.7-14.3 32-32 32l-48 0 0-152c0-22.1-17.9-40-40-40l-112 0c-22.1 0-40 17.9-40 40l0 152-48 0c-17.7 0-32-14.3-32-32zm128 32l0-144 96 0 0 144-96 0z\"><\/path><\/svg><\/span>\r\n                <input id=\"bm_realEstateValue\" type=\"text\" style=\"padding: 7px 10px;\" class=\"number_input\" min=\"0\" aria-required=\"true\" aria-describedby=\"realEstateValueError\" placeholder=\"Pl.: 20000000\" \/>\r\n                <span>Ft<\/span>\r\n            <\/div>\r\n            <div id=\"realEstateValueError\" class=\"bm-calc-validate-error\">K\u00e9rem, adjon meg \u00e9rv\u00e9nyes ingatlan\u00e9rt\u00e9ket!<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_maturity\">Futamid\u0151 (\u00e9v)                <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"Ennyi id\u0151n kereszt\u00fcl fogod visszafizetni a hitelt.\">?<\/span><\/label>\r\n            <div class=\"input\">\r\n                <span class=\"input-icon\">\r\n                    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"calendar-days\" class=\"svg-inline--fa fa-calendar-days \" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\"><path fill=\"currentColor\" d=\"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l80 0 0 56-80 0 0-56zm0 104l80 0 0 64-80 0 0-64zm128 0l96 0 0 64-96 0 0-64zm144 0l80 0 0 64-80 0 0-64zm80-48l-80 0 0-56 80 0 0-56zm0 160l0 40c0 8.8-7.2 16-16 16l-64 0 0-56 80 0zm-128 0l0 56-96 0 0-56 96 0zm-144 0l0 56-64 0c-8.8 0-16-7.2-16-16l0-40 80 0zM272 248l-96 0 0-56 96 0 0 56z\"><\/path><\/svg>\r\n                <\/span>\r\n                <input id=\"bm_maturity\" type=\"number\" min=\"1\" max=\"40\" aria-required=\"true\" aria-describedby=\"maturityError\" placeholder=\"Pl.: 20\" \/>\r\n                <span>\u00e9v<\/span>\r\n            <\/div>\r\n            <div id=\"maturityError\" class=\"bm-calc-validate-error\">K\u00e9rem, adjon meg \u00e9rv\u00e9nyes futamid\u0151t (1-40 \u00e9v)<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_income\">J\u00f6vedelem (havi, Ft)<\/label>\r\n            <div class=\"input\">\r\n                <span class=\"input-icon\">\r\n                    <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"calendar\" class=\"svg-inline--fa fa-calendar \" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\"><path fill=\"currentColor\" d=\"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l352 0 0 256c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256z\"><\/path><\/svg>\r\n                <\/span>\r\n                <input id=\"bm_income\" type=\"text\" style=\"padding: 7px 10px;\" class=\"number_input\" min=\"0\" aria-required=\"true\" aria-describedby=\"incomeError\" placeholder=\"Pl.: 200000\" \/>\r\n                <span>Ft<\/span>\r\n            <\/div>\r\n            <div id=\"incomeError\" class=\"bm-calc-validate-error\">K\u00e9rem, adjon meg \u00e9rv\u00e9nyes j\u00f6vedelmet!<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_age\">\u00c9letkor<\/label>\r\n            <div class=\"input\">\r\n                <span class=\"input-icon\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" role=\"img\" aria-labelledby=\"title-desc\">\r\n                        <title id=\"title-desc\">\u00c9letkor ikon (\u00f3ra)<\/title>\r\n                        <desc>K\u00f6r alak\u00fa \u00f3ra mutat\u00f3kkal.<\/desc>\r\n                        <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/>\r\n                        <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/>\r\n                        <line x1=\"12\" y1=\"12\" x2=\"15\" y2=\"12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/>\r\n                    <\/svg>\r\n                <\/span>\r\n                <input id=\"bm_age\" type=\"number\" min=\"18\" max=\"90\" aria-required=\"true\" aria-describedby=\"ageError\" placeholder=\"Pl.: 30\" \/>\r\n                <span>\u00e9v<\/span>\r\n            <\/div>\r\n            <div id=\"ageError\" class=\"bm-calc-validate-error\">Az \u00e9letkornak 18 \u00e9s 90 k\u00f6z\u00f6tt kell lennie!<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"bm-calc-checkbox-group\">\r\n        <label><input type=\"checkbox\" id=\"bm_qualifiesForHigherLtv\" \/> Megfelel a magasabb LTV-nek            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n        <label><input type=\"checkbox\" id=\"bm_wantsFirstHouse\" \/> Els\u0151 k\u00f6z\u00f6s lak\u00e1s v\u00e1s\u00e1rl\u00e1sa            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n        <label><input type=\"checkbox\" id=\"bm_eligibleForCsok\" checked \/> Jogosult CSOK-ra            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n        <label><input type=\"checkbox\" id=\"bm_eligibleForCsokPlus\" checked \/> Jogosult CSOK Pluszra            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n        <label><input type=\"checkbox\" id=\"bm_onlyCsok\" \/> Csak CSOK term\u00e9kek            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n        <label><input type=\"checkbox\" id=\"bm_onlyCsokPlus\" \/> Csak CSOK Plusz term\u00e9kek            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n        <label><input type=\"checkbox\" id=\"bm_eligibleForHomeStart\" \/> Otthon Start term\u00e9kek            <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"V\u00e1lassza ki, mire szeretn\u00e9 felhaszn\u00e1lni a hitelt!\">?<\/span><\/label>\r\n    <\/div>\r\n    \r\n    <div class=\"upper-input-wrapper\">\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_numberOfChildrenCurrent\">Jelenlegi gyermekek sz\u00e1ma<\/label>\r\n            <input id=\"bm_numberOfChildrenCurrent\" type=\"number\" min=\"0\" max=\"10\" value=\"0\" \/>\r\n        <\/div>\r\n        <div class=\"input-wrapper\">\r\n            <label for=\"bm_numberOfChildrenCommitment\">V\u00e1llalt gyermekek sz\u00e1ma                <span class=\"bm-tooltip input-tooltip\" tabindex=\"0\" data-tooltip=\"CSOK PLUSZ hitel eset\u00e9n minimum 1 v\u00e1llalt gyermek sz\u00fcks\u00e9ges. A 12 hetes magzat m\u00e9g v\u00e1llaltnak min\u0151s\u00fcl.\">?<\/span><\/label>\r\n            <input id=\"bm_numberOfChildrenCommitment\" type=\"number\" min=\"0\" max=\"10\" value=\"0\" \/>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <button class=\"bm-calc-btn\" id=\"bm_calcBtn\">Keres\u00e9s<\/button>\r\n    <div id=\"bm_result\" role=\"alert\" aria-live=\"polite\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\nconst pluginUrl = \"https:\/\/uj.okoshitel.hu\/wp-content\/plugins\/okoshitel-kalkulator\/assets\/\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', function(){\r\n    const fields = ['loanGoal', 'loanAmount', 'realEstateValue', 'maturity', 'income', 'age'];\r\n    \r\n    \/\/ Store results globally for sorting\r\n    let currentResultsData = [];\r\n    let currentParams = {};\r\n    let currentSortState = { key: 'default', dir: 'asc' };\r\n\r\n    const numberInputs = document.querySelectorAll(\".number_input\");\r\n    numberInputs.forEach(numberInput => {\r\n        numberInput.addEventListener(\"input\", function () {\r\n            let value = this.value.replace(\/\\D\/g, \"\"); \r\n            if (value) {\r\n                this.value = value.replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \" \");\r\n            } else {\r\n                this.value = \"\";\r\n            }\r\n        });\r\n    });\r\n\r\n    const addSpacesToInt = (number) => {\r\n        let digits = String(number).replace(\/\\D\/g, \"\");\r\n        return digits.replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \" \");\r\n    };\r\n\r\n    const formatPercent = (val) => {\r\n        return val ? (val * 100).toFixed(2) + '%' : 'N\/A';\r\n    }\r\n\r\n    const validations = {\r\n        loanGoal: value => value !== '',\r\n        loanAmount: value => strToInt(value) > 100000,\r\n        realEstateValue: value => strToInt(value) > 0,\r\n        maturity: value => value > 0 && value <= 40,\r\n        income: value => strToInt(value) > 0,\r\n        age: value => value >= 18 && value <= 90\r\n    };\r\n\r\n    function strToInt(str) {\r\n        if (!str) return 0;\r\n        return parseInt(str.replace(\/\\s+\/g, \"\"), 10);\r\n    }\r\n\r\n    function validateField(name, value) {\r\n        const valid = validations[name](value);\r\n        const errorElem = document.getElementById(name + \"Error\");\r\n        if (!valid) {\r\n            errorElem.style.display = 'block';\r\n        } else {\r\n            errorElem.style.display = 'none';\r\n        }\r\n        return valid;\r\n    }\r\n\r\n    fields.forEach(field => {\r\n        const elem = document.getElementById('bm_' + field);\r\n        if(!elem) return;\r\n        elem.addEventListener('input', () => {\r\n            validateField(field, elem.value);\r\n        });\r\n        elem.addEventListener('change', () => {\r\n            validateField(field, elem.value);\r\n        });\r\n    });\r\n\r\n    \/\/ Helper to generate result HTML\r\n    function renderResults(data, params, sortState) {\r\n        const loanGoalSelect = document.getElementById('bm_loanGoal');\r\n        const loanGoalText = loanGoalSelect.options[loanGoalSelect.selectedIndex].text;\r\n\r\n        const getImageUrl = (name) => {\r\n            let imageUrl = pluginUrl;\r\n            const lower = name.toLowerCase();\r\n            if (lower.includes(\"cib\")) imageUrl += \"cib.png\";\r\n            else if (lower.includes(\"k&h\") || lower.includes(\"kh\")) imageUrl += \"k&h.webp\";\r\n            else if (lower.includes(\"gr\u00e1nit\") || lower.includes(\"granit\")) imageUrl += \"granit.png\";\r\n            else if (lower.includes(\"mbh\")) imageUrl += \"mbh.png\";\r\n            else if (lower.includes(\"otp\")) imageUrl += \"otp.png\";\r\n            else if (lower.includes(\"duna\")) imageUrl += \"duna.png\";\r\n            else if (lower.includes(\"erste\")) imageUrl += \"erste.jpg\";\r\n            else if (lower.includes(\"unicredit\")) imageUrl += \"unicredit.png\";\r\n            else if (lower.includes(\"magnet\")) imageUrl += \"magnet.png\";\r\n            return imageUrl;\r\n        }\r\n\r\n        \/\/ Helper to render sort button with arrow (except for 'default')\r\n        const getSortBtn = (key, label) => {\r\n            let isActive = sortState.key === key;\r\n            \r\n            \/\/ No arrow for 'default'\r\n            if (key === 'default') {\r\n                return `<button class=\"bm-sort-btn ${isActive ? 'active' : ''}\" data-sort=\"${key}\">${label}<\/button>`;\r\n            }\r\n            \r\n            let arrow = '';\r\n            if (isActive) {\r\n                arrow = sortState.dir === 'asc' ? '\u25b2' : '\u25bc';\r\n            }\r\n            return `<button class=\"bm-sort-btn ${isActive ? 'active' : ''}\" data-sort=\"${key}\">${label} ${isActive ? `<span class=\"arrow\">${arrow}<\/span>` : ''}<\/button>`;\r\n        };\r\n\r\n        \/\/ Sorting UI HTML\r\n        const sortingUI = `\r\n        <div class=\"bm-sorting-wrapper\">\r\n            <span>Rendez\u00e9s:<\/span>\r\n            ${getSortBtn('default', 'Alap\u00e9rtelmezett')}\r\n            ${getSortBtn('apr', 'THM')}\r\n            ${getSortBtn('startUpCost', 'Kezdeti k\u00f6lts\u00e9g')}\r\n            ${getSortBtn('installmentStart', 'T\u00f6rleszt\u0151r\u00e9szlet')}\r\n        <\/div>`;\r\n\r\n        return `\r\n            <div class=\"total_results\">\r\n                <span>${data.length} bank legkedvez\u0151bb aj\u00e1nlata.<\/span>\r\n            <\/div>\r\n            ${sortingUI}\r\n            <div class=\"bm-results-list\">\r\n            ${data.map(item => {\r\n                \/\/ Generate Details Table HTML\r\n                const detailsTable = `\r\n                <table class=\"bm-details-table\">\r\n                    <tr><td colspan=\"2\" class=\"section-header\">Hitel Adatok<\/td><\/tr>\r\n                    <tr><td>Hitelt\u00edpus<\/td><td>${item.loanTypeName || 'N\/A'}<\/td><\/tr>\r\n                    <tr><td>Hitelc\u00e9l<\/td><td>${loanGoalText}<\/td><\/tr>\r\n                    <tr><td>Hitel\u00f6sszeg<\/td><td>${addSpacesToInt(params.loanAmount)} Ft<\/td><\/tr>\r\n                    <tr><td>Futamid\u0151<\/td><td>${params.maturity} \u00e9v<\/td><\/tr>\r\n                    <tr><td>Indul\u00f3 t\u00f6rleszt\u00e9s<\/td><td>${addSpacesToInt(item.installmentStart)} Ft \/ h\u00f3<\/td><\/tr>\r\n                    <tr><td>Kamat<\/td><td>${formatPercent(item.interestNotAided || item.interestAided)}<\/td><\/tr>\r\n                    <tr><td>Kamatperi\u00f3dus (fix t\u00f6rleszt\u0151r\u00e9szlet)<\/td><td>${item.interestPeriodNotAided ? item.interestPeriodNotAided.name : (item.interestPeriodAided ? item.interestPeriodAided.name : 'N\/A')}<\/td><\/tr>\r\n                    <tr><td>Teljes visszafizet\u00e9s (csak t\u00f6rleszt\u0151r\u00e9szlet)<\/td><td>${addSpacesToInt(item.allRecovered || 0)} Ft<\/td><\/tr>\r\n                    <tr><td>Teljes visszafizet\u00e9s (t\u00f6rleszt\u0151r\u00e9szletek + k\u00f6lts\u00e9gek)<\/td><td>${addSpacesToInt(item.fullPayableAmount)} Ft<\/td><\/tr>\r\n                    <tr><td>THM<\/td><td>${formatPercent(item.apr)}<\/td><\/tr>\r\n                    <tr><td>Szocpol \/ CSOK<\/td><td>${(item.csok || item.csokPlus) ? '<span class=\"bm-highlight-green\">El\u00e9rhet\u0151<\/span>' : 'Nem el\u00e9rhet\u0151'}<\/td><\/tr>\r\n                    <tr><td colspan=\"2\" class=\"section-header\">Indul\u00f3 K\u00f6lts\u00e9gek<\/td><\/tr>\r\n                    <tr>\r\n                        <td>\u00d6sszesen<\/td>\r\n                        <td>\r\n                            <span style=\"text-decoration: line-through; color: #999; margin-right: 8px;\">${addSpacesToInt(item.startUpCostWithoutDiscounts)} Ft<\/span>\r\n                            <span class=\"bm-highlight-red\">${addSpacesToInt(item.startUpCost)} Ft<\/span>\r\n                            ${item.startUpCostRefund ? `<br><small style=\"color: green;\">(Ebb\u0151l ${addSpacesToInt(item.startUpCostRefund)} Ft visszat\u00e9r\u00edt\u00e9sre ker\u00fcl)<\/small>` : ''}\r\n                        <\/td>\r\n                    <\/tr>\r\n                    ${item.discountsOnExpenses && item.discountsOnExpenses.length > 0 ? `\r\n                    <tr><td>Kedvezm\u00e9nyek r\u00e9szletez\u00e9se<\/td><td><ul class=\"bm-discount-list\">${item.discountsOnExpenses.map(disc => `<li>${disc}<\/li>`).join('')}<\/ul><\/td><\/tr>\r\n                    ` : ''}\r\n                <\/table>`;\r\n\r\n                return `\r\n                <div class=\"bm-calc-result-box\">\r\n                    <div class=\"bm-calc-result-box-header\">\r\n                        <img class=\"bm-calc-result-box-header-img\" src=${getImageUrl(item.name)}>\r\n                        <h3>${item.bankName || (item.bank && item.bank.name) || 'N\/A'} | ${item.name}<\/h3>\r\n                    <\/div>\r\n                    <div class=\"bm-calc-stat-wrapper\">\r\n                        <p class=\"bm-calc-stat-right-border\"><span class=\"bm-calc-stat-header\">Havi t\u00f6rleszt\u0151:<\/span><b class=\"bm-calc-stat-yellow-text\">${item.installmentStart ? `${addSpacesToInt(item.installmentStart)}`+' Ft' : 'N\/A'}<\/b><\/p>\r\n                        <p class=\"bm-calc-stat-right-border\"><span class=\"bm-calc-stat-header\">THM:<\/span><b>${formatPercent(item.apr)}<\/b><\/p>\r\n                        <p><span class=\"bm-calc-stat-header\">T\u00edpus:<\/span><b>${item.loanTypeName || item.loanType || 'N\/A'}<\/b><\/p>\r\n                        <svg width=\"50px\" height=\"50px\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" transform=\"rotate(0)\"><path d=\"M7 4l6 6-6 6\" fill=\"none\" stroke=\"#cccdcd\" stroke-width=\"0.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n                        <p><span class=\"bm-calc-stat-header\">Visszafizetend\u0151:<\/span><b>${item.fullPayableAmount ? `${addSpacesToInt(item.fullPayableAmount)}`+' Ft' : 'N\/A'}<\/b><\/p>\r\n                        <ul class=\"bm-discount-list\" style=\"width:25%;color:#aca8a5;font-size:10px;padding-left: 2%;border-left: 1px solid #cccdcd;\"><li>${item.discountsOnExpenses[0] || ''}<\/li><\/ul>\r\n                        <div class=\"bm-toggle-btn\" onclick=\"window.toggleDetails('details-${item.id}', this)\">\r\n                            <span>R\u00e9szletek<\/span>\r\n                            <svg class=\"bm-chevron\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"><\/polyline><\/svg>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div id=\"details-${item.id}\" class=\"bm-details-panel\">\r\n                        <div class=\"bm-details-inner\">${detailsTable}<\/div>\r\n                    <\/div>\r\n                <\/div>`; \r\n            }).join('')}\r\n            <\/div>`;\r\n    }\r\n\r\n    \/\/ Event Delegation for Sorting Buttons\r\n    document.getElementById('bm_result').addEventListener('click', function(e) {\r\n        const btn = e.target.closest('.bm-sort-btn');\r\n        if (!btn) return;\r\n\r\n        const clickedKey = btn.getAttribute('data-sort');\r\n        \r\n        \/\/ Logic: First click -> ASC, Second click -> DESC\r\n        if (currentSortState.key === clickedKey) {\r\n            \/\/ Toggle direction\r\n            currentSortState.dir = currentSortState.dir === 'asc' ? 'desc' : 'asc';\r\n        } else {\r\n            \/\/ New key, default to ASC\r\n            currentSortState.key = clickedKey;\r\n            currentSortState.dir = 'asc';\r\n        }\r\n\r\n        \/\/ Clone and sort\r\n        let sortedData = [...currentResultsData];\r\n\r\n        if (currentSortState.key === 'apr') {\r\n            sortedData.sort((a, b) => currentSortState.dir === 'asc' ? (a.apr || 0) - (b.apr || 0) : (b.apr || 0) - (a.apr || 0));\r\n        } else if (currentSortState.key === 'startUpCost') {\r\n            sortedData.sort((a, b) => currentSortState.dir === 'asc' ? (a.startUpCost || 0) - (b.startUpCost || 0) : (b.startUpCost || 0) - (a.startUpCost || 0));\r\n        } else if (currentSortState.key === 'installmentStart') {\r\n            sortedData.sort((a, b) => currentSortState.dir === 'asc' ? (a.installmentStart || 0) - (b.installmentStart || 0) : (b.installmentStart || 0) - (a.installmentStart || 0));\r\n        } else {\r\n            \/\/ Default sort (usually by THM or API order)\r\n             sortedData.sort((a, b) => (a.apr || 0) - (b.apr || 0)); \r\n        }\r\n\r\n        \/\/ Re-render with new sort state\r\n        document.getElementById('bm_result').innerHTML = renderResults(sortedData, currentParams, currentSortState);\r\n    });\r\n\r\n\r\n    document.getElementById('bm_calcBtn').onclick = async function(e) {\r\n        e.preventDefault(); \r\n\r\n        let allValid = true;\r\n        let params = {};\r\n        for(let name of fields) {\r\n            let value = document.getElementById('bm_' + name).value;\r\n            if(!validateField(name, value)) allValid = false;\r\n            if(('bm_'+ name) === \"bm_loanGoal\") params[name] = value;\r\n            else params[name] = strToInt(value);\r\n        }\r\n        \r\n        if(!allValid){\r\n            document.getElementById('bm_result').innerHTML = '<div class=\"bm-calc-error\">K\u00e9rem, jav\u00edtsa ki a hib\u00e1kat a mez\u0151kben.<\/div>';\r\n            return;\r\n        }\r\n\r\n        params.qualifiesForHigherLtv = document.getElementById('bm_qualifiesForHigherLtv').checked ? 'true' : 'false';\r\n        params.numberOfChildrenCurrent = document.getElementById('bm_numberOfChildrenCurrent').value;\r\n        params.numberOfChildrenCommitment = document.getElementById('bm_numberOfChildrenCommitment').value;\r\n        params.wantsFirstHouse = document.getElementById('bm_wantsFirstHouse').checked ? 'true' : 'false';\r\n        params.eligibleForCsok = document.getElementById('bm_eligibleForCsok').checked ? 'true' : 'false';\r\n        params.eligibleForCsokPlus = document.getElementById('bm_eligibleForCsokPlus').checked ? 'true' : 'false';\r\n        params.onlyCsok = document.getElementById('bm_onlyCsok').checked ? 'true' : 'false';\r\n        params.onlyCsokPlus = document.getElementById('bm_onlyCsokPlus').checked ? 'true' : 'false';\r\n        params.eligibleForHomeStart = document.getElementById('bm_eligibleForHomeStart').checked ? 'true' : 'false';\r\n\r\n        document.getElementById('bm_result').innerHTML = '<div class=\"bm-calc-loading\">Sz\u00e1m\u00edt\u00e1s... k\u00e9rj\u00fck v\u00e1rjon.<\/div>';\r\n\r\n        const url = \"https:\/\/uj.okoshitel.hu\/wp-admin\/admin-ajax.php?action=okoshitel_calc\"\r\n            + \"&\" + Object.keys(params).map(key => key + \"=\" + encodeURIComponent(params[key])).join(\"&\");\r\n\r\n        try {\r\n            const res = await fetch(url);\r\n            if (!res.ok) throw new Error(res.statusText);\r\n            const data = await res.json();\r\n\r\n            if (data.error || data.message) {\r\n                document.getElementById('bm_result').innerHTML = `<div class=\"bm-calc-error\"><b>Hiba:<\/b> ${data.error || data.message}<\/div>`;\r\n                return;\r\n            }\r\n            if (data.status && data.status !== 200) {\r\n                document.getElementById('bm_result').innerHTML = `<div class=\"bm-calc-error\"><b>\u00c1llapot:<\/b> ${data.status}<br>${data.message || 'Ismeretlen API hiba'}<\/div>`;\r\n                return;\r\n            }\r\n            \r\n            if (!data || !data.length) {\r\n                document.getElementById('bm_result').innerHTML = `<div class=\"bm-calc-error\">Nincs tal\u00e1lat a megadott param\u00e9terekkel.<\/div>`;\r\n                return;\r\n            }\r\n\r\n            \/\/ Store data globally\r\n            currentResultsData = data;\r\n            currentParams = params;\r\n            currentSortState = { key: 'default', dir: 'asc' }; \/\/ Reset sort state on new search\r\n\r\n            \/\/ Render initial results\r\n            document.getElementById('bm_result').innerHTML = renderResults(data, params, currentSortState);\r\n\r\n        } catch (err) {\r\n            document.getElementById('bm_result').innerHTML = `<div class=\"bm-calc-error\">V\u00e1ratlan hiba: ${err.message}<\/div>`;\r\n        }\r\n    };\r\n\r\n    \/\/ Global toggle function for details\r\n    window.toggleDetails = function(elementId, btn) {\r\n        const panel = document.getElementById(elementId);\r\n        const isOpen = panel.style.maxHeight;\r\n        \r\n        if (isOpen) {\r\n            panel.style.maxHeight = null;\r\n            btn.classList.remove('open');\r\n            btn.querySelector('span').textContent = \"R\u00e9szletek\";\r\n        } else {\r\n            panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n            btn.classList.add('open');\r\n            btn.querySelector('span').textContent = \"R\u00e9szletek\";\r\n        }\r\n    };\r\n});\r\n<\/script>\r\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Kalkul\u00e1ljon vel\u00fcnk!\u00a0Azonnali eredm\u00e9nyek a legjobb v\u00e1laszt\u00e1s el\u0151seg\u00edt\u00e9se \u00e9rdek\u00e9ben!<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-1115","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/pages\/1115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/comments?post=1115"}],"version-history":[{"count":25,"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/pages\/1115\/revisions"}],"predecessor-version":[{"id":1472,"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/pages\/1115\/revisions\/1472"}],"wp:attachment":[{"href":"https:\/\/uj.okoshitel.hu\/index.php\/wp-json\/wp\/v2\/media?parent=1115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}