{"id":4156,"date":"2025-12-01T11:38:41","date_gmt":"2025-12-01T09:38:41","guid":{"rendered":"https:\/\/www.bthk.org\/?page_id=4156"},"modified":"2025-12-01T13:58:09","modified_gmt":"2025-12-01T11:58:09","slug":"deniz-telsiz-islemleri","status":"publish","type":"page","link":"https:\/\/www.bthk.org\/en\/deniz-telsiz-islemleri\/","title":{"rendered":"Deniz Telsiz \u0130\u015flemleri"},"content":{"rendered":"  \n  <!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <title>\ud83d\udce1 Radio Renewal & Certificate Inquiry<\/title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/css\/bootstrap.min.css\"\/>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/js\/bootstrap.bundle.min.js\"><\/script>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"><\/script>\n  <style>  \n\/* \ud83d\udd25 SweetAlert2 \u0130ngilizce sayfada WPML taraf\u0131ndan gizlenmesin *\/\n  .swal2-title,\n.swal2-html-container {\n    display: block !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n}\n  \/* Mobilde radiolar alt alta *\/\n\/* === Radyolar\u0131n temel stili === *\/\n.radio-area {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 20px;\n}\n\n@media (max-width: 1400px){\n   .radio-area{\n      flex-direction: column !important;\n      align-items: flex-start !important;\n      gap: 6px !important;\n   }\n\n\/* Mobilde radiolar alt alta gelsin *\/\n@media (max-width: 1400px){\n    .radio-area label{\n        display: block !important;\n        margin: 4px 0 !important;\n    }\n}\n\n<\/style>\n    <script>\n        const GlobalSwal = Swal.mixin({\n            confirmButtonText: \"OK\",\n            cancelButtonText: \"Cancel\",\n        });\n        const _originalSwalFire = Swal.fire.bind(Swal);\n        Swal.fire = function(options = {}) {\n            if (typeof options.confirmButtonText === \"undefined\") {\n                options.confirmButtonText = \"OK\";\n            }\n            if (options.showCancelButton && typeof options.cancelButtonText === \"undefined\") {\n                options.cancelButtonText = \"Cancel\";\n            }\n            return _originalSwalFire(options);\n        };\n    <\/script>\n\n    <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?render=6Lds8DcrAAAAAIZIjdJcWCa1eGU7xzSwuHmXfpmJ\"><\/script>\n    <script src=\"https:\/\/www.google.com\/recaptcha\/api.js\" async defer><\/script>\n    <style>\n        body { background:#f5f6fa; }\n        .box-left { background:#f7f7f9; border-right:3px solid #ddd; }\n        .radio-area label { cursor:pointer; font-weight:500; }\n        .scenario-box { margin-top:10px; }\n        .row-hover:hover { background:#f1faff; cursor:pointer; }\n        .result-checkbox {\n            cursor: pointer !important;\n        }\n        .text-warning {\n            color: #fd0d0d !important; \/* Bootstrap primary blue *\/\n        }\n    <\/style>\n<\/head>\n<body>\n<div class=\"container my-5\">\n    <!-- ==================== YEN\u0130LEME \u0130\u015eLEMLER\u0130 ==================== -->\n       <div class=\"card shadow border-0 mb-4\">\n        <div class=\"row g-0\">\n                 <div class=\"col-md-4 p-4 box-left\">\n                <h5>Renewal Operations<\/h5>\n                <p class=\"text-muted\">Radio usage fees must be paid until the end of February each year except for professional fishing vessels.<\/p>\n\n                <p class=\"text-danger small\" style=\"font-weight: 600;\">\n                    In cases where a vessel is equipped with multiple radio devices, payments can be processed via the 'Bulk Payment'  option by entering the ID\/M\u015e Number and the Vessel Number. The specific devices for which payment is to be made can be selected individually. The M\u015e Number must be entered in the format: M.\u015eXXXXX.                <\/p>\n            <\/div>\n            <div class=\"col-md-8 p-4\">\n                <form id=\"renewForm\" method=\"POST\" action=\"#\" autocomplete=\"off\">\n                    <div class=\"radio-area mb-3\">\n                        <label><input type=\"radio\" name=\"scenario\" value=\"1\" checked> By Radio Serial No & Vessel No<\/label>\n                  <label class=\"ms-3\">\n                      <input type=\"radio\" name=\"scenario\" value=\"2\"> \n                      By ID\/M.\u015e No & Vessel No                                                <span style=\"color: red; font-weight: bold;\"> (Bulk Payment)<\/span>\n                                        <\/label>                      \n                  <label class=\"ms-3\"><input type=\"radio\" name=\"scenario\" value=\"3\"> Renew canceled radios before 2026<\/label>\n                    <\/div>\n                    <!-- Scenario 1: Seri No + Tekne No -->\n                    <div id=\"r1\" class=\"scenario-box\">\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"MwdSrlNum_s1\" name=\"MwdSrlNum_s1\" placeholder=\"Radio Serial No\">\n                            <label for=\"MwdSrlNum_s1\">Radio Serial No<\/label>\n                        <\/div>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"BoadIdNumber_s1\" name=\"BoadIdNumber_s1\" placeholder=\"Vessel Number\">\n                            <label for=\"BoadIdNumber_s1\">Vessel Number<\/label>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Scenario 2: Kimlik No + Tekne No -->\n                    <div id=\"r2\" class=\"scenario-box d-none\">\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"IdNum_s2\" name=\"IdNum_s2\" placeholder=\"ID\/M.\u015e Number\">\n                            <label for=\"IdNum_s2\">ID\/M.\u015e Number<\/label>\n                        <\/div>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"BoadIdNumber_s2\" name=\"BoadIdNumber_s2\" placeholder=\"Vessel Number\">\n                            <label for=\"BoadIdNumber_s2\">Vessel Number<\/label>\n                        <\/div>\n                    <\/div>\n                    <!-- Scenario 3: Yenileme (\u00f6nceki izinli) -->\n                    <div id=\"r3\" class=\"scenario-box d-none\">\n                        <p class=\"text-warning fw-bold\">Enter the information of the previously authorized radio!<\/p>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"MwdSrlNum_s3\" name=\"MwdSrlNum_s3\" placeholder=\"Radio Serial No\">\n                            <label for=\"MwdSrlNum_s3\">Radio Serial No<\/label>\n                        <\/div>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"BoadIdNumber_s3\" name=\"BoadIdNumber_s3\" placeholder=\"Vessel Number\">\n                            <label for=\"BoadIdNumber_s3\">Vessel Number<\/label>\n                        <\/div>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"IdNum_s3\" name=\"IdNum_s3\" placeholder=\"ID\/M.\u015e Number\">\n                            <label for=\"IdNum_s3\">ID\/M.\u015e Number<\/label>\n                        <\/div>\n                    <\/div>\n                    <button class=\"btn btn-primary w-100\">List<\/button>\n                <\/form>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- ==================== ONAY BELGES\u0130 SORGULAMA ==================== -->\n    <div class=\"card shadow border-0 mb-4\">\n        <div class=\"row g-0\">\n            <div class=\"col-md-4 p-4 box-left\">\n                <h5>Certificate Inquiry<\/h5>\n                <p class=\"text-muted\">You can query and download radio installation and usage certificates.<\/p>\n            <\/div>\n            <div class=\"col-md-8 p-4\">\n                <form id=\"certForm\" method=\"POST\" action=\"#\" autocomplete=\"off\">\n                    <div class=\"radio-area mb-3\">\n                        <label><input type=\"radio\" name=\"scenario\" value=\"1\" checked> By Radio Serial No & Vessel No<\/label>\n                        <label class=\"ms-3\"><input type=\"radio\" name=\"scenario\" value=\"2\"> By ID\/M.\u015e No & Vessel No<\/label>\n                        <label class=\"ms-3\"><input type=\"radio\" name=\"scenario\" value=\"3\"> Certificate Number<\/label>\n                    <\/div>\n                    <div id=\"c1\" class=\"scenario-box\">\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"serial_c1\" name=\"serial\" placeholder=\"Radio Serial No\">\n                            <label for=\"serial_c1\">Radio Serial No<\/label>\n                        <\/div>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"boat_c1\" name=\"boat\" placeholder=\"Vessel Number\">\n                            <label for=\"boat_c1\">Vessel Number<\/label>\n                        <\/div>\n                    <\/div>\n                    <div id=\"c2\" class=\"scenario-box d-none\">\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"idno_c2\" name=\"idno\" placeholder=\"ID\/M.\u015e Number\">\n                            <label for=\"idno_c2\">ID\/M.\u015e Number<\/label>\n                        <\/div>\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"boat2_c2\" name=\"boat2\" placeholder=\"Vessel Number\">\n                            <label for=\"boat2_c2\">Vessel Number<\/label>\n                        <\/div>\n                    <\/div>\n                    <div id=\"c3\" class=\"scenario-box d-none\">\n                        <div class=\"form-floating mb-3\">\n                            <input class=\"form-control\" id=\"certno_c3\" name=\"certno\"\n                                   value=\"TK-D-2026\/\" placeholder=\"Certificate Number\">\n                            <label for=\"certno_c3\">Certificate Number<\/label>\n                        <\/div>\n                    <\/div>\n                    <button class=\"btn btn-primary w-100\">Search<\/button>\n                <\/form>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- ==================== ONAY BELGES\u0130 MODAL ==================== -->\n    <div class=\"modal fade\" id=\"certificateModal\" tabindex=\"-1\" aria-labelledby=\"certificateModalLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog modal-xl modal-dialog-scrollable\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h5 class=\"modal-title\" id=\"certificateModalLabel\">Certificate Inquiry<\/h5>\n                    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><\/button>\n                <\/div>\n                <div class=\"modal-body\">\n                    <table class=\"table table-bordered table-hover\" id=\"certificateTable\">\n                        <thead class=\"table-light\">\n                        <tr>\n                            <th>Year<\/th>\n                            <th>Online Payment Number<\/th>\n                            <th>Approval Document<\/th>\n                            <th>Cost Document<\/th>\n                        <\/tr>\n                        <\/thead>\n                        <tbody>\n                        <!-- AJAX ile doldurulacak -->\n                        <\/tbody>\n                    <\/table>\n                <\/div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- ==================== SONU\u00c7 (RESULT) MODAL - ESK\u0130 result.php ==================== -->\n    <div class=\"modal fade\" id=\"resultModal\" tabindex=\"-1\" aria-hidden=\"true\">\n        <div class=\"modal-dialog modal-xl modal-dialog-scrollable\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header bg-light\">\n                    <h5 class=\"modal-title\">\ud83d\udce1 Marine Radios \u2013 Renewal Procedures<\/h5>\n                    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><\/button>\n                <\/div>\n                <div class=\"modal-body\">\n                    <p id=\"resultSummary\" class=\"mb-3\"><\/p>\n                    <div class=\"table-responsive\">\n                        <table class=\"table table-hover table-bordered\" id=\"resultTable\">\n                            <thead>\n                            <tr>\n                                <th>Select<\/th>\n                                <th>Serial No<\/th>\n                                <th>Name<\/th>\n                                <th>Surname<\/th>\n                                <th>ID Number<\/th>\n                                <th>Group<\/th>\n                                <th>Boat No<\/th>\n                                <th>Boat Name<\/th>\n                                <th>Usage<\/th>\n                                <th>Status<\/th>\n                            <\/tr>\n                            <\/thead>\n                            <tbody>\n                            <!-- JS ile doldurulacak -->\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/div>\n                <div class=\"modal-footer justify-content-between\">\n                    <div id=\"selInfo\" class=\"small text-muted\"><\/div>\n                    <div>\n                        <button type=\"button\" id=\"btnRenew\" class=\"btn btn-primary me-2\" style=\"display:none;\">\n                            Proceed to Renewal                        <\/button>\n                        <button type=\"button\" id=\"btnPaymentActions\" class=\"btn btn-danger me-2\" style=\"display:none;\">\n                            Cancel Pending Payment and Restart Payment                        <\/button>\n                        <button type=\"button\" id=\"btnCancelRenewal\" class=\"btn btn-secondary\" style=\"display:none;\">\n                            Cancel Renewal Request                        <\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- ==================== YEN\u0130LEME FORMU MODALI (renew_form.php) ==================== -->\n    <div class=\"modal fade\" id=\"renewFormModal\" tabindex=\"-1\" aria-hidden=\"true\">\n        <div class=\"modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header bg-primary text-white\">\n                    <h5 class=\"modal-title\">\ud83d\udce1 Maritime Radio - Online Usage Renewal<\/h5>\n                    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"modal\"\n                            aria-label=\"Close\"><\/button>\n                <\/div>\n                <div class=\"modal-body\">\n                    <!-- Sahip Bilgileri -->\n                    <div class=\"border rounded-3 p-3 mb-3\">\n                        <h6 class=\"mb-3\">\ud83d\udcc4 Owner Information<\/h6>\n                        <div class=\"row g-3\">\n                            <div class=\"col-md-6\">\n                                <label class=\"form-label\">First Name<\/label>\n                                <input id=\"ownerName\" class=\"form-control\" readonly>\n                            <\/div>\n                            <div class=\"col-md-6\">\n                                <label class=\"form-label\">Last Name<\/label>\n                                <input id=\"ownerSurname\" class=\"form-control\" readonly>\n                            <\/div>\n                            <!-- Telefonlar -->\n                            <div class=\"col-md-12\">\n                                <label class=\"form-label\">Phone Numbers<\/label>\n                                <div class=\"input-group mb-2\">\n                                    <input id=\"phoneInput\" type=\"text\" class=\"form-control\" placeholder=\"Add phone (10 digits, no leading 0)\" minlength=\"10\" maxlength=\"10\">\n                                    <button type=\"button\" class=\"btn btn-success\" onclick=\"addPhone()\">\n                                        Add                                    <\/button>\n                                <\/div>\n                                <ul id=\"phoneList\" class=\"list-group\"><\/ul>\n                            <\/div>\n                            <!-- E-postalar -->\n                            <div class=\"col-md-12 mt-3\">\n                                <label class=\"form-label\">Email Addresses<\/label>\n                                <div class=\"input-group mb-2\">\n                                    <input id=\"emailInput\" type=\"email\" class=\"form-control\"\n                                           placeholder=\"Add email\">\n                                    <button type=\"button\" class=\"btn btn-success\" onclick=\"addEmail()\">\n                                        Add                                    <\/button>\n                                <\/div>\n                                <ul id=\"emailList\" class=\"list-group\"><\/ul>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <!-- Tekne Bilgileri -->\n                    <div class=\"border rounded-3 p-3 mb-3\">\n                        <h6 class=\"mb-3\">\u26f5 Boat Information<\/h6>\n                        <div class=\"row g-3\">\n                            <div class=\"col-md-6\">\n                                <label class=\"form-label\">Boat Number<\/label>\n                                <input id=\"boatNumber\" class=\"form-control\" readonly>\n                            <\/div>\n                            <div class=\"col-md-6\">\n                                <label class=\"form-label\">Boat Name<\/label>\n                                <input id=\"boatName\" class=\"form-control\" readonly>\n                            <\/div>\n                            <div class=\"col-md-6\">\n                                <label class=\"form-label\">Boat Length (m)<\/label>\n                                <input id=\"boatLength\" class=\"form-control\" readonly>\n                            <\/div>\n                            <div class=\"col-md-6\">\n                                <label class=\"form-label\">Usage Type<\/label>\n                                <input id=\"boatUsage\" class=\"form-control\" readonly>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <!-- Telsiz Cihaz Bilgileri -->\n                    <div id=\"radioDevicesContainer\"><\/div>\n                <\/div>\n                <div class=\"modal-footer\">\n                    <button id=\"renewBtn\" type=\"button\" class=\"btn btn-primary btn-lg px-4\">\n                        Renew Usage                    <\/button>\n                    <button type=\"button\" class=\"btn btn-secondary btn-lg px-4\" data-bs-dismiss=\"modal\">\n                        Cancel                    <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- ==================== \u00dcCRET TABLOSU MODALI (RegistrationProcessTableRequest sonucu) ==================== -->\n    <div class=\"modal fade\" id=\"renewResultModal\" tabindex=\"-1\" aria-hidden=\"true\">\n        <div class=\"modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header bg-primary text-white\">\n                    <h5 class=\"modal-title\">\ud83d\udce1 Maritime Radio - Online Usage Renewal<\/h5>\n                    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><\/button>\n                <\/div>\n                <div class=\"modal-body\">\n                    <div class=\"table-responsive\">\n                        <table class=\"table table-striped table-bordered align-middle\">\n                            <thead class=\"table-light\">\n                            <tr>\n                                <th>#<\/th>\n                                <th>Brand<\/th>\n                                <th>Model<\/th>\n                                <th>Type<\/th>\n                                <th>Permit (\u20ba)<\/th>\n                                <th>Usage Cost (\u20ba)<\/th>\n                                <th>Tax Rate<\/th>\n                                <th>Tax Amount (\u20ba)<\/th>\n                                <th>Total (\u20ba)<\/th>\n                            <\/tr>\n                            <\/thead>\n                            <tbody id=\"renewResultTableBody\"><\/tbody>\n                            <tfoot>\n                            <tr class=\"table-secondary fw-bold\">\n                                <td colspan=\"8\" class=\"text-end\">Grand Total (\u20ba):<\/td>\n                                <td id=\"grandTotal\">0<\/td>\n                            <\/tr>\n                            <\/tfoot>\n                        <\/table>\n                    <\/div>\n                <\/div>\n                <div class=\"modal-footer\">\n                    <button id=\"proceedPaymentBtn\" type=\"button\" class=\"btn btn-primary\">Proceed to Payment                    <\/button>\n                    <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Close                    <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <!-- ==================== reCAPTCHA V2 MODAL (PREMIUM UI) ==================== -->\n    <div class=\"modal fade\" id=\"recaptchaV2Modal\" tabindex=\"-1\" aria-hidden=\"true\"\n         data-bs-backdrop=\"static\" data-bs-keyboard=\"false\">\n        <div class=\"modal-dialog modal-dialog-centered\">\n            <div class=\"modal-content shadow-lg border-0\">\n                <div class=\"modal-header bg-dark text-white\">\n                    <h5 class=\"modal-title\">\ud83d\udd12 Ek Do\u011frulama Gerekli<\/h5>\n                <\/div>\n                <div class=\"modal-body text-center\">\n                    <p class=\"mb-3\">\n                        reCAPTCHA low score. Please tick the box.                    <\/p>\n\n                    <div id=\"recaptchaV2Container\" class=\"d-inline-block\"><\/div>\n\n                    <small class=\"text-muted d-block mt-3\">\n                        This extra security step is only required for suspicious activity.                    <\/small>\n                <\/div>\n                <div class=\"modal-footer justify-content-between\">\n                    <button type=\"button\" class=\"btn btn-outline-secondary btn-sm\"\n                            id=\"recaptchaV2CancelBtn\">\n                        Cancel                    <\/button>\n                    <button type=\"button\" class=\"btn btn-primary\" id=\"recaptchaV2VerifiedBtn\" disabled>Verified <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div><!-- \/container -->\n<script>\n    \/\/ ====================== ORTAK DE\u011e\u0130\u015eKENLER ======================\n    \/\/ ======== RECAPTCHA GLOBALS ========\n    let v2Token = null;\n    let lastRecaptchaForm = null;     \/\/ 'renew' | 'cert'\n    let v2ModalInstance = null;\n    let v2WidgetId = null;\n\n    function renderV2() {\n        const container = document.getElementById('recaptchaV2Container');\n        if (!container) return;\n\n        \/\/ \u00d6nce eski i\u00e7erik tamamen sil\n        container.innerHTML = \"\";\n\n        \/\/ Yeni bir div olu\u015ftur\n        const newDiv = document.createElement(\"div\");\n        newDiv.className = \"g-recaptcha\";\n        newDiv.setAttribute(\"data-sitekey\", \"6Le402srAAAAAFxPb06cskNK8yu_y959Y7Pdlhma\");\n        newDiv.setAttribute(\"data-callback\", \"onV2Success\");\n\n        \/\/ container i\u00e7ine ekle\n        container.appendChild(newDiv);\n\n        \/\/ Google API y\u00fckl\u00fcyse yeniden render et\n        if (typeof grecaptcha !== \"undefined\") {\n            v2WidgetId = grecaptcha.render(newDiv);\n        }\n    }\n    function onV2Success(token) {\n        v2Token = token;\n        const btn = document.getElementById('recaptchaV2VerifiedBtn');\n        if (btn) btn.disabled = false;\n    }\n\n    function getV2Modal() {\n        if (!v2ModalInstance) {\n            const el = document.getElementById('recaptchaV2Modal');\n            if (el) v2ModalInstance = new bootstrap.Modal(el);\n        }\n        return v2ModalInstance;\n    }\n    function showV2Modal(formName) {\n        lastRecaptchaForm = formName;\n        v2Token = null;\n        const btn = document.getElementById('recaptchaV2VerifiedBtn');\n        if (btn) btn.disabled = true;\n        renderV2(); \/\/ \ud83d\udd25 V2 her a\u00e7\u0131l\u0131\u015fta s\u0131f\u0131rdan y\u00fckleniyor!\n        const m = getV2Modal();\n        if (m) m.show();\n    }\n    function hideV2Modal() {\n        const m = getV2Modal();\n        if (m) m.hide();\n    }\n    const lang = \"en\";\n    const TXT = {\n        select_warning: \"Please select a record.\",\n        confirm_renew: \"Proceed to renewal form for selected device?\",\n        confirm_cancel_renewal: \"Cancel the renewal request for selected record?\",\n        confirm_restart_payment: \"Restart payment for selected record?\",\n        selected_info: \"Selected ID: %s\",\n        no_records: \"No records to display\",\n        result_title: \"\ud83d\udce1 Marine Radios \u2013 Renewal Procedures\",\n        loading: \"Please wait...\",\n        processing: \"Processing...\",\n        canceling: \"Canceling...\",\n        payment_already_taken: \"This payment has already been processed.\",\n\n    };\n    const ERROR_TEXT = {\n    NO_RECORDS: \"No records found for the given criteria!\",\n    SERVER: \"Server error.\"};\n\n    function showAlert(title, icon='info') {\n        Swal.fire({\n            icon: icon,\n            title: title,\n            timer: 2000,\n            toast: true,\n            position: 'top-end',\n            showConfirmButton: false\n        });\n    }\n    \/\/ ====================== SCENARIO SWITCHLER\u0130 ======================\n    document.querySelectorAll('#renewForm input[name=\"scenario\"]').forEach(r=>{\n        r.addEventListener('change',()=>{\n            document.querySelectorAll('#renewForm .scenario-box').forEach(x=>x.classList.add('d-none'));\n            const box = document.getElementById('r'+r.value);\n            if (box) box.classList.remove('d-none');\n            if(r.value==='3'){\n                Swal.fire({\n                    icon: 'warning',\n                    title: \"Enter the information of the previously authorized radio!\",\n                    confirmButtonText: \"OK\"                });\n            }\n        });\n    });\n    document.querySelectorAll('#certForm input[name=\"scenario\"]').forEach(r=>{\n        r.addEventListener('change',()=>{\n            document.querySelectorAll('#certForm .scenario-box').forEach(x=>x.classList.add('d-none'));\n            const box = document.getElementById('c'+r.value);\n            if (box) box.classList.remove('d-none');\n            if(r.value==='3') document.querySelector('input[name=\"certno\"]').value=\"TK-D-2026\\\/\";\n        });\n    });\n    \/\/ ====================== ONAY BELGES\u0130 FORMU ======================\n    document.getElementById('certForm').addEventListener('submit', async function(e) {\n        e.preventDefault();\n        const scenario = document.querySelector('#certForm input[name=\"scenario\"]:checked').value;\n        const submitBtn = this.querySelector(\"button\");\n        lockButton(submitBtn, \"loading\");   \/\/ \ud83d\udd12\n        let payload = { scenario };\n        if (scenario === \"1\") {\n            const serial = document.querySelector('#c1 input[name=\"serial\"]').value.trim();\n            const boat   = document.querySelector('#c1 input[name=\"boat\"]').value.trim();\n            if (!serial || !boat) {\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: \"Required fields are missing.\"                });\n                unlockButton(submitBtn);\n                return;\n            }\n            payload.serial = serial;\n            payload.boat   = boat;\n        }\n        else if (scenario === \"2\") {\n            const idno  = document.querySelector('#c2 input[name=\"idno\"]').value.trim();\n            const boat2 = document.querySelector('#c2 input[name=\"boat2\"]').value.trim();\n            if (!idno || !boat2) {\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: \"Required fields are missing.\"                });\n                unlockButton(submitBtn);\n                return;\n            }\n            payload.idno  = idno;\n            payload.boat2 = boat2;\n        }\n        else if (scenario === \"3\") {\n            const prefix = \"TK-D-2026\\\/\";\n            const certno = document.querySelector('#c3 input[name=\"certno\"]').value.trim();\n            const suffix = certno.replace(prefix, '').trim();\n            if (!suffix) {\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: \"Required fields are missing.\"                });\n                unlockButton(submitBtn);\n                return;\n            }\n            payload.certno = certno;\n        }\n        try {\n            \/\/ ======= \u00f6nce V3 token \u00fcret =======\n            let v3token = null;\n            try {\n                v3token = await grecaptcha.execute('6Lds8DcrAAAAAIZIjdJcWCa1eGU7xzSwuHmXfpmJ', { action: 'cert_search' });\n            } catch (err) {\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: \"reCAPTCHA error.\"\n                });\n                unlockButton(submitBtn);\n                return;\n            }\n\/\/ ======= V2 varsa \u2192 V2 g\u00f6nder, yoksa \u2192 V3 g\u00f6nder =======\n            if (v2Token) {\n                payload.recaptcha_token = v2Token;\n                payload.recaptcha_version = \"v2\";\n            } else {\n                payload.recaptcha_token = v3token;\n                payload.recaptcha_version = \"v3\";\n            }\n            const res = await fetch('https:\/\/www.bthk.org\/dtm\/certificate_endpoint.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/json' },\n                body: JSON.stringify(payload)\n            });         \n            if (!res.ok) {\n                const text = await res.text();\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: text || \"Server error.\"                });\n                unlockButton(submitBtn);\n                return;\n            }\n\n            const data = await res.json();\n            if (data && data.status === false) {\n\n                \/\/ \ud83d\udd39 1) V3 skoru d\u00fc\u015f\u00fck \/ reCAPTCHA fail \u2192 V2'ye ge\u00e7\n                if (data.require_v2 === true) {\n                    showV2Modal('cert');\n                    Swal.fire({\n                        icon: 'warning',\n                        title: \"Warning\",\n                        text: \"reCAPTCHA low score. Please tick the box.\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n\n                \/\/ \ud83d\udd39 2) Hi\u00e7 kay\u0131t yok\n                if (data.msg_code === \"NO_RECORDS\") {\n                    Swal.fire({\n                        icon: \"warning\",\n                        title: TXT.result_title,\n                        text: \"No records found for the given criteria!\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n\n                \/\/ \ud83d\udd39 3) Sunucu hatas\u0131\n                if (data.msg_code === \"SERVER_ERROR\") {\n                    Swal.fire({\n                        icon: \"error\",\n                        title: \"Error\",\n                        text: \"Server error.\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n\n                \/\/ \ud83d\udd39 4) Di\u011fer t\u00fcm durumlar \u2192 bilinmeyen hata\n                Swal.fire({\n                    icon: \"error\",\n                    title: \"Error\",\n                    text: \"Unknown error\"                });\n                unlockButton(submitBtn);\n                return;\n            }         \n            const tbody = document.querySelector('#certificateTable tbody');\n            tbody.innerHTML = '';\n            data.forEach(row => {\n                const year = row.year || '';\n                const onlineNum = row.documnetNum || '';\n                const approvalDoc = row.procDoc && row.procDoc.approval_Doc\n                    ? `<button class=\"btn btn-sm btn-outline-primary\" onclick=\"downloadDocument('${row.procDoc.approval_Doc}')\"> View Approval Document<\/button>`\n                    : '';\n                const costDoc = row.costDoc && row.costDoc.cost_Document\n                    ? `<button class=\"btn btn-sm btn-outline-primary\" onclick=\"downloadDocument('${row.costDoc.cost_Document}')\">View Cost Document<\/button>`\n                    : '';\n                const tr = document.createElement('tr');\n                tr.innerHTML = `\n                <td>${year}<\/td>\n                <td>${onlineNum}<\/td>\n                <td>${approvalDoc}<\/td>\n                <td>${costDoc}<\/td>\n            `;\n                tbody.appendChild(tr);\n            });\n            new bootstrap.Modal(document.getElementById('certificateModal')).show();\n            unlockButton(submitBtn);\n        } catch (err) {\n            Swal.fire({\n                icon:'error',\n                title: \"Error\",\n                text: \"Server error.\"            });\n            unlockButton(submitBtn);\n            console.error(err);\n        }\n    });\n    async function downloadDocument(documentPath) {\n        try {\n            const res = await fetch('https:\/\/www.bthk.org\/dtm\/dtm_download_document.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/json' },\n                body: JSON.stringify({ DocumentPath: documentPath })\n            });\n            if (!res.ok) {\n                const text = await res.text();\n                Swal.fire({\n                    icon:'error',\n                    title: \"Error\",\n                    text: text || \"File could not be downloaded.\"                });\n                return;\n            }\n            const data = await res.json();\n            if (data && data.status === false) {\n              Swal.fire({\n                  icon:'error',\n                  title: \"Error\",\n                  text: data.message || \"File could not be downloaded.\"              });\n              return;\n          }\n            const byteCharacters = atob(data.fileArray);\n            const byteNumbers = new Array(byteCharacters.length);\n            for (let i = 0; i < byteCharacters.length; i++) {\n                byteNumbers[i] = byteCharacters.charCodeAt(i);\n            }\n            const byteArray = new Uint8Array(byteNumbers);\n            const blob = new Blob([byteArray], { type: data.type });\n            const link = document.createElement('a');\n            link.href = URL.createObjectURL(blob);\n            link.download = data.fileName;\n            document.body.appendChild(link);\n            link.click();\n            link.remove();\n        } catch (err) {\n            Swal.fire({\n                icon:'error',\n                title: \"Error\",\n                text: \"File could not be downloaded.\"            });\n            console.error(err);\n        }\n    }\n    \/\/ ====================== YEN\u0130LEME L\u0130STELEME (SearchRegistrationRequestProcess) ======================\n    let renewSearchList = [];   \/\/ flatten edilmi\u015f kay\u0131tlar\n    let selectedRows = [];\/\/ se\u00e7ili sat\u0131r\u0131n objesi\n    function usageTypeLabel(v) {\n        v = parseInt(v,10);\n        switch (v) {\n            case 1: return \"Touristic\\\/Commercial\";\n            case 2: return \"Fishing\";\n            case 3: return \"Amateur Boat\";\n            case 0:\n            default: return \"Education\\\/Sports\";\n        }\n    }\n    function radioTypeLabel(v) {\n        return {\n            0: \"Mobile Satellite Terminal\",\n            1: \"Navigation Aid\",\n            2: \"Fixed\",\n            3: \"Handheld\",\n        }[v] ?? '-';\n    }\n    function fillResultTableFromList(list) {\n        const tbody = document.querySelector('#resultTable tbody');\n        const hasFlag1 = list.some(x => parseInt(x.online_Payment_Flag) === 1);\n        if (hasFlag1) {\n            list = list.filter(x => parseInt(x.online_Payment_Flag) === 1);\n        }\n        tbody.innerHTML = '';\n        renewSearchList = [];\n        selectedRows = [];\n        hideActionButtons();\n        const selInfoEl = document.getElementById('selInfo');\n        if (selInfoEl) selInfoEl.textContent = '';\n\n        list.forEach(item => {\n            const rowId = item.id || item.Id || item.mwd_Application_Id || '';\n            const serial = item.mwd_Srl_Num ?? item.mwd_SrlNum ?? '-';\n            const name   = item.name ?? '-';\n            const surname= item.surname ?? '-';\n            const idNum  = item.id_Num ?? item.IdNum ?? '-';\n            const groupId= item.group_Id ?? '-';\n            const boatId = item.boat_Id_Number ?? item.BoadIdNumber ?? '-';\n            const shipName = item.name_Of_Ship_Hull ?? '-';\n            const usageType = item.usage_Type ?? null;\n            const onlineFlag = parseInt(item.online_Payment_Flag ?? 0,10);\n            const documentNum = item.document_Num ?? '';\n\n            const tr = document.createElement('tr');\n            tr.classList.add('row-hover');\n            tr.dataset.id = rowId;\n            tr.dataset.receipt = onlineFlag;\n            tr.dataset.name = name;\n            tr.dataset.surname = surname;\n            tr.dataset.phone = item.phone ?? '';\n            tr.dataset.email = item.email ?? '';\n            tr.dataset.boatIdNumber = boatId;\n            tr.dataset.shipName = shipName;\n            tr.dataset.lengthHull = item.length_Of_Hull ?? '';\n            tr.dataset.usageType = usageType;\n            tr.dataset.mwdBrand = item.mwd_Brand ?? '';\n            tr.dataset.mwdModel = item.mwd_Model ?? '';\n            tr.dataset.mwdMaxPower = item.mwd_Max_Output_Power ?? '';\n            tr.dataset.mwdSerial = serial;\n            tr.dataset.mwdType = item.mwd_Type ?? '';\n            tr.dataset.documentNum = documentNum;\n\n            const checkbox = document.createElement('input');\n            checkbox.type = 'checkbox';\n            checkbox.classList.add('result-checkbox');\n            checkbox.value = rowId;\n            const td0 = document.createElement('td');\n            td0.appendChild(checkbox);\n            const statusHtml = (onlineFlag === 1)\n                ? `<span class=\"badge bg-warning text-dark\">WAITING FOR BANK APPROVAL<\/span>`\n                : `<span class=\"badge bg-success\">-<\/span>`;\n            const docHtml = documentNum ? `<div class=\"small\">${documentNum}<\/div>` : '';\n            tr.innerHTML =\n                td0.outerHTML +\n                `<td>${serial}<\/td>\n             <td>${name}<\/td>\n             <td>${surname}<\/td>\n             <td>${idNum}<\/td>\n             <td>${groupId}<\/td>\n             <td>${boatId}<\/td>\n             <td>${shipName}<\/td>\n             <td>${usageTypeLabel(usageType)}<\/td>\n             <td>${statusHtml}${docHtml}<\/td>`;\n            \/\/ sat\u0131ra event\n            tr.addEventListener('click', (e) => {\n                const cb = tr.querySelector('input[type=\"checkbox\"]');\n                if (!cb) return;\n                \/\/ T\u0131klama kayna\u011f\u0131 ne olursa olsun ayn\u0131 davran\u0131\u015f\n                cb.checked = !cb.checked;\n                onRowSelected(tr, item, true);\n            });\n            tbody.appendChild(tr);\n            renewSearchList.push(item);\n        });\n        document.getElementById('resultSummary').innerHTML =\n            list.length\n                ? \"Total <strong>%s<\\\/strong> records found.\".replace('%s', list.length)\n                : TXT.no_records;\n    }\n    function onRowSelected(tr, obj, isClick = false) {\n        const checkbox = tr.querySelector('input[type=\"checkbox\"]');\n        if (!checkbox) return;\n        const rowId = String(tr.dataset.id || '');\n        \/\/ Se\u00e7imi g\u00fcncelle\n        if (checkbox.checked) {\n            tr.classList.add('table-active');\n            const exists = selectedRows.some(r => String(r.id || r.Id || r.mwd_Application_Id || '') === rowId);\n            if (!exists) {\n                selectedRows.push(obj);\n            }\n        } else {\n            tr.classList.remove('table-active');\n            selectedRows = selectedRows.filter(r => String(r.id || r.Id || r.mwd_Application_Id || '') !== rowId);\n        }\n        updateSelectionInfo();\n        const doc = tr.dataset.documentNum;\n        if (doc && doc !== \"null\" && doc !== \"\") {\n            document.querySelectorAll('#resultTable tbody tr').forEach(other => {\n                if (other === tr) return;\n                if (other.dataset.documentNum === doc) {\n                    const otherCheckbox = other.querySelector('input[type=\"checkbox\"]');\n                    if (otherCheckbox) {\n                        otherCheckbox.checked = checkbox.checked;\n                        \/\/ recursive olarak listeyi g\u00fcncelle\n                        if (checkbox.checked) {\n                            other.classList.add('table-active');\n                            const found = renewSearchList.find(r =>\n                                String(r.document_Num) === doc\n                            );\n                            if (found && !selectedRows.includes(found)) {\n                                selectedRows.push(found);\n                            }\n                        }\n                        else {\n                            other.classList.remove('table-active');\n                            selectedRows = selectedRows.filter(r =>\n                                String(r.document_Num) !== doc\n                            );\n                        }\n                    }\n                }\n            });\n        }\n    }\n    function hideActionButtons() {\n        document.getElementById('btnRenew').style.display = 'none';\n        document.getElementById('btnPaymentActions').style.display = 'none';\n        document.getElementById('btnCancelRenewal').style.display = 'none';\n    }\n    function updateSelectionInfo() {\n        const selInfo = document.getElementById('selInfo');\n        if (!selectedRows || selectedRows.length === 0) {\n            if (selInfo) selInfo.textContent = '';\n            hideActionButtons();\n            return;\n        }\n        const ids = selectedRows\n            .map(r => r.id || r.Id || r.mwd_Application_Id)\n            .filter(Boolean)\n            .join(', ');\n\n        if (selInfo) {\n            \/\/selInfo.textContent = TXT.selected_info.replace('%s', ids);\n        }\n        hideActionButtons();\n        if (selectedRows.length === 1) {\n            const recFlag = parseInt(selectedRows[0].online_Payment_Flag ?? 0, 10);\n            if (recFlag === 1) {\n                document.getElementById('btnPaymentActions').style.display = 'inline-block';\n                document.getElementById('btnCancelRenewal').style.display = 'inline-block';\n            } else {\n                document.getElementById('btnRenew').style.display = 'inline-block';\n            }\n        } else {\n            \/\/ \u00c7oklu se\u00e7im: sadece yenileme yap\u0131labilir.\n            const anyEligibleForRenew = selectedRows.some(r => parseInt(r.online_Payment_Flag ?? 0, 10) === 0);\n            if (anyEligibleForRenew) {\n                document.getElementById('btnRenew').style.display = 'inline-block';\n            }\n        }\n    }\n    \/\/ YEN\u0130LEME FORMUNU SE\u00c7\u0130MLERDEN DOLDUR (ilk kay\u0131t baz al\u0131n\u0131r)\n    function fillRenewFormFromSelected() {\n        if (!selectedRows || selectedRows.length === 0) return;\n        const first = selectedRows[0];\n        const firstId = String(first.id || first.Id || first.mwd_Application_Id || '');\n        const tr = [...document.querySelectorAll('#resultTable tbody tr')].find(row => row.dataset.id === firstId) || null;\n        const get = (field, def='') => (tr ? (tr.dataset[field] || def) : def);\n        document.getElementById('ownerName').value    = get('name');\n        document.getElementById('ownerSurname').value = get('surname');\n        document.getElementById('boatNumber').value = get('boatIdNumber');\n        document.getElementById('boatName').value   = get('shipName');\n        document.getElementById('boatLength').value = get('lengthHull');\n        document.getElementById('boatUsage').value  = usageTypeLabel(get('usageType'));\n        \/\/ \u274c TEK C\u0130HAZ INPUT DOLDURMA KALDIRILDI\n        \/\/ \u2714 \u00c7oklu cihaz render edilir:\n        renderRadioDevices(selectedRows);\n        \/\/ Telefon ve eposta doldurma\n        clearList('phoneList');\n        clearList('emailList');\n        document.getElementById('phoneInput').value = '';\n        document.getElementById('emailInput').value = '';\n        const phone = get('phone');\n        const email = get('email');\n       if (phone) {\n    phone.split(',').forEach(p => {\n        const trimmed = p.trim();\n        if (trimmed) addPhoneFromValue(trimmed);\n    });\n}\n\/\/ E-postalar\u0131 virg\u00fclden b\u00f6l\nif (email) {\n    email.split(',').forEach(m => {\n        const trimmed = m.trim();\n        if (trimmed) addEmailFromValue(trimmed);\n    });\n}\n    }\n    function getSingleSelectedRowOrAlert() {\n        if (!selectedRows || selectedRows.length === 0) {\n            showAlert(TXT.select_warning, 'warning');\n            return null;\n        }\n        return selectedRows[0];\n    }\n    \/\/ ====================== DINAM\u0130K TELEFON \/ EPOSTA ======================\n    function clearList(listId) {\n        const list = document.getElementById(listId);\n        if (list) list.innerHTML = '';\n    }\n    function isDuplicate(listId, value) {\n        const items = document.querySelectorAll(`#${listId} input[type=\"hidden\"]`);\n        for (let i = 0; i < items.length; i++) {\n            if (items[i].value.trim() === value.trim()) return true;\n        }\n        return false;\n    }\n    function removeItem(button, listId) {\n        const list = document.getElementById(listId);\n        if (!list) return;\n        if (list.children.length <= 1) {\n            showAlert(\n                    \"At least one item must remain.\",\n                'warning'\n            );\n            return;\n        }\n        button.parentElement.remove();\n    }\n    function addPhoneFromValue(val) {\n        if (!val) return;\n        const list = document.getElementById('phoneList');\n        const li = document.createElement('li');\n        li.className = \"list-group-item d-flex justify-content-between align-items-center\";\n        li.innerHTML = `${val}<input type=\"hidden\" name=\"phones[]\" value=\"${val}\">\n        <button type=\"button\" class=\"btn btn-danger btn-sm\" onclick=\"removeItem(this,'phoneList')\">\n            Delete        <\/button>`;\n        list.appendChild(li);\n    }\n    function addEmailFromValue(val) {\n        if (!val) return;\n        const list = document.getElementById('emailList');\n        const li = document.createElement('li');\n        li.className = \"list-group-item d-flex justify-content-between align-items-center\";\n        li.innerHTML = `${val}<input type=\"hidden\" name=\"emails[]\" value=\"${val}\">\n        <button type=\"button\" class=\"btn btn-danger btn-sm\" onclick=\"removeItem(this,'emailList')\">\n            Delete        <\/button>`;\n        list.appendChild(li);\n    }\n    function addPhone() {\n        const input = document.getElementById('phoneInput');\n        const val = (input.value || '').trim();\n        if (!\/^[1-9][0-9]{9}$\/.test(val)) {\n            showAlert(\"Phone must be 10 digits and cannot start with 0\");\n            return;\n        }\n        if (isDuplicate('phoneList', val)) {\n            showAlert(\"This phone already exists\", 'warning');\n            return;\n        }\n        addPhoneFromValue(val);\n        input.value = '';\n    }\n    function addEmail() {\n        const input = document.getElementById('emailInput');\n        const val = (input.value || '').trim();\n        const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n        if (!emailRegex.test(val)) {\n            showAlert(\"Invalid email format\", 'warning');\n            return;\n        }\n        if (isDuplicate('emailList', val)) {\n            showAlert(\"This email already exists\", 'warning');\n            return;\n        }\n        addEmailFromValue(val);\n        input.value = '';\n    }\n    \/\/ ====================== YEN\u0130LEME FORMU: RegistrationProcessTableRequest ======================\n    let lastRegistrationResponse = null;\n    function showRenewResult(data) {\n        const tbody = document.getElementById('renewResultTableBody');\n        tbody.innerHTML = '';\n        let grandTotal = 0;\n        data.forEach((item, index) => {\n            \/\/ mwd_Type a\u00e7\u0131klamas\u0131\n            const typeText = radioTypeLabel(item.mwd_Type);\n            \/\/ \u2714 SATIR TOTAL = cumulative_Cost (DO\u011eRU OLAN)\n            const rowTotal = parseFloat(item.cumulative_Cost) || 0;\n            const tr = document.createElement('tr');\n            tr.innerHTML = `\n            <td>${index + 1}<\/td>\n            <td>${item.mwd_Brand}<\/td>\n            <td>${item.mwd_Model}<\/td>\n            <td>${typeText}<\/td>\n            <td>${item.permit_Cost.toFixed(2)}<\/td>\n            <td>${item.usage_Cost.toFixed(2)}<\/td>\n            <td>${(item.tax_Rate * 100).toFixed(2)}%<\/td>\n            <td>${item.tax_Usage_Cost.toFixed(2)}<\/td>\n            <td>${rowTotal.toFixed(4)}<\/td>\n        `;\n            tbody.appendChild(tr);\n        });\n        \/\/ \u2714 Grand total = API total_Cost (her sat\u0131rda ayn\u0131 d\u00f6ner)\n        const grand = parseFloat(data[0].total_Cost) || 0;\n        document.getElementById('grandTotal').textContent = grand.toFixed(2);\n        new bootstrap.Modal(document.getElementById('renewResultModal')).show();\n    }\n    async function callRegistrationProcess(keys) {     \n        if (!selectedRows || selectedRows.length === 0) {\n            showAlert(TXT.select_warning, 'warning');\n            return null;\n        }\n        const selectedIds = selectedRows\n            .map(r => r.id || r.Id || r.mwd_Application_Id)\n            .filter(v => v !== null && v !== undefined)\n            .map(v => parseInt(v, 10))\n            .filter(v => !Number.isNaN(v));\n        if (selectedIds.length === 0) {\n            showAlert(TXT.select_warning, 'warning');\n            return null;\n        }\n        const phones = Array.from(document.querySelectorAll('#phoneList input[name=\"phones[]\"]'))\n            .map(i => i.value);\n        const emails = Array.from(document.querySelectorAll('#emailList input[name=\"emails[]\"]'))\n            .map(i => i.value);\n        if (phones.length === 0) {\n            alert(\"At least one phone is required.\");\n            return null;\n        }\n        const payload = {\n            keys: keys,\n            selected_ids: selectedIds,\n            phones: phones,\n            emails: emails\n        };\n        const res = await fetch('https:\/\/www.bthk.org\/dtm\/dtm_registration.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify(payload)\n        });\n        return res.json();\n    }\n    \/\/ ====================== EVENT BA\u011eLANTILARI ======================\n    document.addEventListener('DOMContentLoaded', () => {\n        \/* ============================================================\n           1) YEN\u0130LEME FORMU (SearchRegistrationRequestProcess)\n        ============================================================ *\/\n        document.getElementById('renewForm').addEventListener('submit', async function (e) {\n            e.preventDefault();\n            const submitBtn = this.querySelector(\"button\");\n            lockButton(submitBtn, \"loading\");\n            const scenario = document.querySelector('#renewForm input[name=\"scenario\"]:checked').value;\n            let payload = {};\n            \/\/ ----- SCENARIO 1 -----\n            if (scenario === \"1\") {\n                const s = this.querySelector('input[name=\"MwdSrlNum_s1\"]').value.trim();\n                const b = this.querySelector('input[name=\"BoadIdNumber_s1\"]').value.trim();\n                if (!s || !b) {\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: \"Serial Number and Vessel Number are required\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n                payload = {\n                    SelectedProcessId: 1,\n                    MwdSrlNum: s,\n                    BoadIdNumber: b,\n                    IdNum: null,\n                    CertificateNumber: null\n                };\n            }\n            \/\/ ----- SCENARIO 2 -----\n            else if (scenario === \"2\") {\n                const idno = this.querySelector('input[name=\"IdNum_s2\"]').value.trim();\n                const boat2 = this.querySelector('input[name=\"BoadIdNumber_s2\"]').value.trim();\n                if (!idno || !boat2) {\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: \"ID Number and Vessel Number are required\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n                payload = {\n                    SelectedProcessId: 2,\n                    IdNum: idno,\n                    BoadIdNumber: boat2,\n                    MwdSrlNum: null,\n                    CertificateNumber: null\n                };\n            }\n            \/\/ ----- SCENARIO 3 -----\n            else {\n                const s3 = this.querySelector('input[name=\"MwdSrlNum_s3\"]').value.trim();\n                const b3 = this.querySelector('input[name=\"BoadIdNumber_s3\"]').value.trim();\n                const i3 = this.querySelector('input[name=\"IdNum_s3\"]').value.trim();\n\n                   if (!s3 || !b3 || !i3) {\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: \"Required fields are missing.\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n                payload = {\n                    SelectedProcessId: 6,\n                    MwdSrlNum: s3 || null,\n                    BoadIdNumber: b3 || null,\n                    IdNum: i3 || null,\n                    CertificateNumber: null\n                };\n            }\n\/\/ ========== RECAPTCHA V3 TOKEN AL ==========\n            let v3token = null;\n            try {\n                v3token = await grecaptcha.execute('6Lds8DcrAAAAAIZIjdJcWCa1eGU7xzSwuHmXfpmJ', { action: 'telsiz_search' });\n            } catch (err) {\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: \"reCAPTCHA error.\"                });\n                unlockButton(submitBtn);\n                return;\n            }\n            if (v2Token) {\n                payload.recaptcha_token = v2Token;\n                payload.recaptcha_version = \"v2\";\n            }\n\/\/ 3) Aksi halde \u2192 V3 g\u00f6nder\n            else {\n                payload.recaptcha_token = v3token;\n                payload.recaptcha_version = \"v3\";\n            }\n            \/* ---- API CALL ---- *\/\n            try {\n                const res = await fetch(\"https:\/\/www.bthk.org\/dtm\/dtm_search.php\", {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json' },\n                    body: JSON.stringify(payload)\n                });\n                const data = await res.json();\n            if (data && (data.status === false || data.success === false)) {\n\n                \/\/ \ud83d\udd39 1) V3 d\u00fc\u015f\u00fck skor \u2192 V2'ye ge\u00e7\n                if (data.require_v2 === true || (data.score !== undefined && data.score < 0.5)) {\n                    showV2Modal('renew');\n                    unlockButton(submitBtn);\n                    return;\n                }\n\n                \/\/ \ud83d\udd39 2) Hi\u00e7 kay\u0131t yok\n                if (data.msg_code === 'NO_RECORDS') {\n                    Swal.fire({\n                        icon:'warning',\n                        title: TXT.result_title,\n                        text: \"No records found for the given criteria!\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n\n                \/\/ \ud83d\udd39 3) reCAPTCHA invalid\n                if (data.error === 'RECAPTCHA_FAIL') {\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: \"reCAPTCHA error.\"                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n\n                \/\/ \ud83d\udd39 4) Di\u011fer backend hatalar\u0131\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: data.message || \"Server error.\"                });\n                unlockButton(submitBtn);\n                return;\n            }\n     \n                let list = [];\n                if (Array.isArray(data)) {\n                    list = data;\n                } else {\n                    if (Array.isArray(data.dtmApplicationPaymentFlag0List))\n                        list = list.concat(data.dtmApplicationPaymentFlag0List);\n                    if (Array.isArray(data.dtmApplicationPaymentFlag1List))\n                        list = list.concat(data.dtmApplicationPaymentFlag1List);\n                }\n                if (!list.length) {\n                    Swal.fire({\n                        icon: \"warning\",\n                        title: TXT.result_title,\n                        text: TXT.no_records\n                    });\n                    unlockButton(submitBtn);\n                    return;\n                }\n                fillResultTableFromList(list);\n                if (scenario === \"3\") {\n                    const warn = \"Since the usage fee due date for the selected radio devices has passed, your radio license and usage permit have been canceled. To reactivate and use these radio devices again, a license fee will be charged in addition to the annual usage fee.\";\n                    document.getElementById('resultSummary').innerHTML =\n                        `<p class=\"text-warning fw-bold mb-2\">${warn}<\/p>` +\n                        document.getElementById('resultSummary').innerHTML;\n                }\n                new bootstrap.Modal(document.getElementById('resultModal')).show();\n            }\n            catch (err) {\n                console.error(err);\n                Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: \"Server error.\"                });\n            }\n            finally {\n                unlockButton(submitBtn);\n            }\n        });\n        \/* ============================================================\n           2) RESULT MODAL \u2192 YEN\u0130LE\n        ============================================================ *\/\n        const btnRenew = document.getElementById('btnRenew');\n        btnRenew.addEventListener('click', () => {\n            if (!selectedRows || selectedRows.length === 0) {\n                showAlert(TXT.select_warning, 'warning');\n                return;\n            }\n            Swal.fire({\n                title: TXT.confirm_renew,\n                icon: 'question',\n                showCancelButton: true,\n                confirmButtonText: \"Continue\",\n                cancelButtonText: \"Cancel\"            }).then(res => {\n                if (!res.isConfirmed) return;\n\n                fillRenewFormFromSelected();\n                new bootstrap.Modal(document.getElementById('renewFormModal')).show();\n            });\n        });\n        \/* ============================================================\n           3) RESULT MODAL \u2192 \u00d6DEMEN\u0130N TEKRARI\n        ============================================================ *\/\n        const btnPaymentActions = document.getElementById('btnPaymentActions');\n        btnPaymentActions.addEventListener('click', () => {         \n            const row = getSingleSelectedRowOrAlert();\n            if (!row) return;\n            Swal.fire({\n                title: TXT.confirm_restart_payment,\n                icon: 'question',\n                showCancelButton: true,\n                confirmButtonText: \"Yes\",\n                cancelButtonText: \"No\"            }).then(res => {\n                if (!res.isConfirmed) return;\n                lockBoth();\n                fetch('https:\/\/www.bthk.org\/dtm\/payment_actions_ajax.php', {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json' },\n                    body: JSON.stringify({\n                        selected_id: row.id || row.Id || row.mwd_Application_Id,\n                        action: 'restartPayment'\n                    })\n                })\n                    .then(r => r.json())\n                    .then(data => {                    \n                        if (data.status === 'redirect' && data.paymentUrl) {\n                            window.location.href = data.paymentUrl;\n                            return;\n                        }\n                        if (data.status === 'success' && data.encryptedData && data.paymentUrl) {\n                            fetch(data.paymentUrl, {\n                                method: 'POST',\n                                headers: { 'Content-Type': 'application\/json' },\n                                body: JSON.stringify({ encryptedData: data.encryptedData })\n                            })\n                                .then(r => r.json())\n                                .then(result => {\n                                    window.location.href = result.payment_Url;\n                                })\n                                .catch(err => {\n                                     Swal.fire({\n                                icon: 'error',\n                                title: \"Error\",\n                                text: err?.message || \"Server error.\"                            });\n\n                                    unlockBoth();\n                                });\n\n                            return;\n                        }                    \n                        const embedded = extractEmbeddedJson(data?.message);\n                    \/\/ \ud83c\udfaf SADECE result=1 & errorCode=25\n                    if (embedded && embedded.result === 1 && String(embedded.errorCode) === \"25\") \n                    {\n                        Swal.fire({\n                            icon: 'warning',\n                            title: \"Warning\",\n                            text: TXT.payment_already_taken,\n                            confirmButtonText: \"OK\"                        }).then(() => {\n                            window.location.reload();                      \n                        });\n\n                        return; \/\/ \u26d4 alt ak\u0131\u015f DURUR\n                    }\n                      Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: data?.errorMessage || data?.message || \"Unknown error\"                      });\n\n                        unlockBoth();\n                    })\n                    .catch(err => {\n                     Swal.fire({\n                    icon: 'error',\n                    title: \"Error\",\n                    text: err?.message || \"Server error.\"                });\n                    });\n            });\n        });\n        \/* ============================================================\n           4) RESULT MODAL \u2192 YEN\u0130LEME \u0130PTAL\n        ============================================================ *\/\n        const btnCancelRenewal = document.getElementById('btnCancelRenewal');\n        btnCancelRenewal.addEventListener('click', () => {\n            const row = getSingleSelectedRowOrAlert();\n            if (!row) return;\n            Swal.fire({\n                title: TXT.confirm_cancel_renewal,\n                icon: 'warning',\n                showCancelButton: true,\n                confirmButtonText: \"Yes\",\n                cancelButtonText: \"No\"            }).then(res => {\n                if (!res.isConfirmed) return;\n                lockBoth();\n                fetch('https:\/\/www.bthk.org\/dtm\/payment_actions_ajax.php', {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json' },\n                    body: JSON.stringify({\n                        selected_id: row.id || row.Id || row.mwd_Application_Id,\n                        action: 'cancelRenewal'\n                    })\n                })\n                    .then(r => r.json())\n                    .then(data => {\n                        if (data.status === 'redirect' && data.paymentUrl) {\n                            window.location.href = data.paymentUrl;\n                            return;\n                        }\n                        showAlert(data.message || \"Unknown error\", data.status || 'info');\n                        setTimeout(() => location.href = 'https:\/\/www.bthk.org\/deniz-telsiz-islemleri', 2000);\n                    })\n                    .catch(() => {\n                        showAlert(\"Server error.\", 'error');\n                        unlockBoth();\n                    });\n            });\n        });\n        \/* ============================================================\n           5) RENEW FORM \u2192 KEYS=1 (\u00dccret Tablosu)\n        ============================================================ *\/\n        const renewBtnModal = document.getElementById('renewBtn');\n        if (renewBtnModal) {\n            renewBtnModal.addEventListener('click', async () => {          \n                lockButton(renewBtnModal, \"processing\");\n                try {\n                    const res = await callRegistrationProcess(1);  \n                    if (res && res.status === false) {\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: res.message || \"Request failed.\"                    });\n                    unlockButton(renewBtnModal);\n                    return;\n                }\n                \/\/ null\/undefined vs. (fetch hata alm\u0131\u015f olabilir)\n                  if (!res) {\n                      Swal.fire({\n                          icon: 'error',\n                          title: \"Error\",\n                          text: \"Request failed.\"                      });\n                      unlockButton(renewBtnModal);\n                      return;\n                  }\n                    if (res && res.message) {\n                   console.log(\"Message:\", res.message);\n                   }\n                    if (!Array.isArray(res) || res.length === 0) {                        \n                        Swal.fire({\n                            icon: 'error',\n                            title: \"Error\",\n                            text: \"Unexpected response format\"                        });\n                        unlockButton(renewBtnModal);\n                        return;\n                    }\n                    lastRegistrationResponse = res;\n                    showRenewResult(res);\n                }\n                catch (err) {\n                    console.error(err);\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: \"Request failed.\"                    });\n                }\n                finally {\n                    unlockButton(renewBtnModal);\n                }\n            });\n        }\n        \/* ============================================================\n           6) \u00dcCRET TABLOSU MODAL \u2192 KEYS=2 (Payment Redirect)\n        ============================================================ *\/\n        const proceedPaymentBtn = document.getElementById('proceedPaymentBtn');\n        if (proceedPaymentBtn) {         \n            proceedPaymentBtn.addEventListener('click', async () => {            \n                const m = bootstrap.Modal.getInstance(document.getElementById(\"renewResultModal\"));\n                const modalEl = document.getElementById(\"renewResultModal\");\n                m._config.backdrop = \"static\";\n                m._config.keyboard = false;\n                const closeBtn = modalEl.querySelector('.btn-close');\n                const cancelBtn = modalEl.querySelector('.btn-secondary');\n                cancelBtn.disabled = true;\n                closeBtn.style.pointerEvents = \"none\";\n                closeBtn.style.opacity = \"0.3\";\n                lockButton(proceedPaymentBtn, \"loading\");\n                const res = await callRegistrationProcess(2);\n                if (res && res.status === false) {\n                 Swal.fire({\n                  icon: 'error',\n                  title: \"Error\",\n                  text: res.errorMessage || res.message || \"Payment could not be initiated.\"              });\n                  unlockButton(proceedPaymentBtn);\n                  cancelBtn.disabled = false;\n                  closeBtn.style.pointerEvents = \"auto\";\n                  closeBtn.style.opacity = \"1\";\n                  return;\n                }             \n                if (!res || !res.encryptedData) {\n                    Swal.fire({\n                        icon: 'error',\n                        title: \"Error\",\n                        text: \"Payment could not be initiated.\"                    });\n                    unlockButton(proceedPaymentBtn);\n                    cancelBtn.disabled = false;\n                    closeBtn.style.pointerEvents = \"auto\";\n                    closeBtn.style.opacity = \"1\";\n                    return;\n                }\n                fetch('https:\/\/www.bthk.org\/dtm\/payment_redirect.php', {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                    body: new URLSearchParams({\n                        encryptedData: res.encryptedData,\n                        posUrl: res.payment_Sanal_Pos_Url\n                    })\n                })\n                    .then(r => r.json())\n                    .then(result => {                   \n                        if (result.status && result.payment_Url) {\n                            window.location.href = result.payment_Url;\n                            return;\n                        }\n                        Swal.fire({\n                            icon: 'error',\n                            title: \"Error\",\n                            text: result.message || \"Payment could not be initiated.\"                        });\n                        unlockButton(proceedPaymentBtn);\n                        cancelBtn.disabled = false;\n                        closeBtn.style.pointerEvents = \"auto\";\n                        closeBtn.style.opacity = \"1\";\n                    })\n                    .catch(err => {\n                        console.error(err);\n                        Swal.fire({\n                            icon: 'error',\n                            title: \"Error\",\n                            text: \"Server error.\"                        });\n                        unlockButton(proceedPaymentBtn);\n                        cancelBtn.disabled = false;\n                        closeBtn.style.pointerEvents = \"auto\";\n                        closeBtn.style.opacity = \"1\";\n                    });\n            });\n        }\n        const v2CancelBtn = document.getElementById('recaptchaV2CancelBtn');\n        const v2VerifiedBtn = document.getElementById('recaptchaV2VerifiedBtn');\n        if (v2CancelBtn) {\n            v2CancelBtn.addEventListener('click', () => {\n                v2Token = null;\n                hideV2Modal();\n            });\n        }\n        if (v2VerifiedBtn) {\n            v2VerifiedBtn.addEventListener('click', () => {\n                if (!v2Token) return; \/\/ hen\u00fcz i\u015faretlenmediyse\n                hideV2Modal();\n                if (lastRecaptchaForm === 'renew') {\n                    document\n                        .getElementById('renewForm')\n                        .dispatchEvent(new Event('submit', { cancelable: true, bubbles: true }));\n                } else if (lastRecaptchaForm === 'cert') {\n                    document\n                        .getElementById('certForm')\n                        .dispatchEvent(new Event('submit', { cancelable: true, bubbles: true }));\n                }\n            });\n        }\n    }); \n   function extractEmbeddedJson(message) {\n    if (!message || typeof message !== \"string\") return null;\n\n    const match = message.match(\/\\{.*\\}$\/s); \/\/ sondaki JSON'u yakala\n    if (!match) return null;\n\n    try {\n        return JSON.parse(match[0]);\n    } catch (e) {\n        return null;\n    }\n}\n    function lockButton(btn, key=\"loading\") {\n        btn.disabled = true;\n        btn.style.pointerEvents = \"none\";\n        btn.dataset.originalText = btn.innerHTML;\n        btn.innerHTML = `\n        <span class=\"spinner-border spinner-border-sm me-2\"><\/span>\n        ${TXT[key]}\n    `;\n    }\n    function unlockButton(btn) {\n        btn.disabled = false;\n        btn.style.pointerEvents = \"auto\";\n        if (btn.dataset.originalText) {\n            btn.innerHTML = btn.dataset.originalText;\n        }\n    }\n    function lockBoth() {\n        lockButton(document.getElementById('btnPaymentActions'));\n        lockButton(document.getElementById('btnCancelRenewal'));\n        modalLock(\"resultModal\");\n    }\n\n    function unlockBoth() {\n        unlockButton(document.getElementById('btnPaymentActions'));\n        unlockButton(document.getElementById('btnCancelRenewal'));\n        modalUnlock(\"resultModal\");\n    }\n    function modalLock(modalId) {\n        const el = document.getElementById(modalId);\n        const modal = bootstrap.Modal.getInstance(el);\n        modal._config.backdrop = \"static\";\n        modal._config.keyboard = false;\n\n        el.querySelectorAll(\".btn-close, .btn-secondary\").forEach(btn => {\n            btn.dataset.__disabled = \"1\";\n            btn.style.pointerEvents = \"none\";\n            btn.style.opacity = \"0.3\";\n        });\n    }\n    function modalUnlock(modalId) {\n        const el = document.getElementById(modalId);\n        const modal = bootstrap.Modal.getInstance(el);\n\n        modal._config.backdrop = true;\n        modal._config.keyboard = true;\n\n        el.querySelectorAll(\".btn-close, .btn-secondary\").forEach(btn => {\n            if (btn.dataset.__disabled === \"1\") {\n                btn.style.pointerEvents = \"auto\";\n                btn.style.opacity = \"1\";\n                delete btn.dataset.__disabled;\n            }\n        });\n    }\n    function renderRadioDevices(devices) {\n        const container = document.getElementById('radioDevicesContainer');\n        container.innerHTML = '';\n        devices.forEach((dev, i) => {\n            const typeText = radioTypeLabel(dev.mwd_Type);\n            container.innerHTML += `\n        <div class=\"border rounded-3 p-3 mb-4\">\n            <h6 class=\"mb-3\">\ud83d\udce1 Radio Device Info #${i+1}<\/h6>\n            <div class=\"row g-3\">\n                <div class=\"col-md-6\">\n                    <label class=\"form-label\">Brand<\/label>\n                    <input class=\"form-control\" value=\"${dev.mwd_Brand}\" readonly>\n                <\/div>\n                <div class=\"col-md-6\">\n                    <label class=\"form-label\">Model<\/label>\n                    <input class=\"form-control\" value=\"${dev.mwd_Model}\" readonly>\n                <\/div>\n                <div class=\"col-md-6\">\n                    <label class=\"form-label\">Max Output Power (W)<\/label>\n                    <input class=\"form-control\" value=\"${dev.mwd_Max_Output_Power}\" readonly>\n                <\/div>\n                <div class=\"col-md-6\">\n                    <label class=\"form-label\">Serial Number<\/label>\n                    <input class=\"form-control\" value=\"${dev.mwd_SrlNum ?? dev.mwd_Srl_Num ?? ''}\" readonly>\n                <\/div>\n                <div class=\"col-12 mt-3\">\n                    <label class=\"form-label\">Type<\/label>\n                    <input class=\"form-control\" value=\"${typeText}\" readonly>\n                <\/div>\n            <\/div>\n        <\/div>\n        `;\n        });\n    }\n    document.addEventListener(\"click\", function(e) {\n        if (e.target.classList.contains(\"result-checkbox\")) {\n            const tr = e.target.closest(\"tr\");\n            if (tr) tr.click();\n        }\n    });\n<\/script>\n<\/body>\n<\/html>\n\n   \n    \n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_kad_post_transparent":"default","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-4156","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Deniz Telsiz \u0130\u015flemleri - Bilgi Teknolojileri ve Haberle\u015fme Kurumu<\/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:\/\/www.bthk.org\/en\/deniz-telsiz-islemleri\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deniz Telsiz \u0130\u015flemleri - Bilgi Teknolojileri ve Haberle\u015fme Kurumu\" \/>\n<meta property=\"og:description\" content=\"&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bthk.org\/en\/deniz-telsiz-islemleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Bilgi Teknolojileri ve Haberle\u015fme Kurumu\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BTHKurumu\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T11:58:09+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bthk.org\\\/deniz-telsiz-islemleri\\\/\",\"url\":\"https:\\\/\\\/www.bthk.org\\\/deniz-telsiz-islemleri\\\/\",\"name\":\"Deniz Telsiz \u0130\u015flemleri - Bilgi Teknolojileri ve Haberle\u015fme Kurumu\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bthk.org\\\/#website\"},\"datePublished\":\"2025-12-01T09:38:41+00:00\",\"dateModified\":\"2025-12-01T11:58:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bthk.org\\\/deniz-telsiz-islemleri\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bthk.org\\\/deniz-telsiz-islemleri\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bthk.org\\\/deniz-telsiz-islemleri\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\\\/\\\/www.bthk.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deniz Telsiz \u0130\u015flemleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.bthk.org\\\/#website\",\"url\":\"https:\\\/\\\/www.bthk.org\\\/\",\"name\":\"Bilgi Teknolojileri ve Haberle\u015fme Kurumu\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.bthk.org\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.bthk.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.bthk.org\\\/#organization\",\"name\":\"Bilgi Teknolojileri ve Haberle\u015fme Kurumu\",\"url\":\"https:\\\/\\\/www.bthk.org\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.bthk.org\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.bthk.org\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/bthk-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.bthk.org\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/bthk-logo.png\",\"width\":278,\"height\":130,\"caption\":\"Bilgi Teknolojileri ve Haberle\u015fme Kurumu\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bthk.org\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/BTHKurumu\",\"https:\\\/\\\/www.instagram.com\\\/kktcbthk?igsh=NzMxa20zc3QydHBi\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deniz Telsiz \u0130\u015flemleri - Bilgi Teknolojileri ve Haberle\u015fme Kurumu","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:\/\/www.bthk.org\/en\/deniz-telsiz-islemleri\/","og_locale":"en_GB","og_type":"article","og_title":"Deniz Telsiz \u0130\u015flemleri - Bilgi Teknolojileri ve Haberle\u015fme Kurumu","og_description":"&nbsp;","og_url":"https:\/\/www.bthk.org\/en\/deniz-telsiz-islemleri\/","og_site_name":"Bilgi Teknolojileri ve Haberle\u015fme Kurumu","article_publisher":"https:\/\/www.facebook.com\/BTHKurumu","article_modified_time":"2025-12-01T11:58:09+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.bthk.org\/deniz-telsiz-islemleri\/","url":"https:\/\/www.bthk.org\/deniz-telsiz-islemleri\/","name":"Deniz Telsiz \u0130\u015flemleri - Bilgi Teknolojileri ve Haberle\u015fme Kurumu","isPartOf":{"@id":"https:\/\/www.bthk.org\/#website"},"datePublished":"2025-12-01T09:38:41+00:00","dateModified":"2025-12-01T11:58:09+00:00","breadcrumb":{"@id":"https:\/\/www.bthk.org\/deniz-telsiz-islemleri\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bthk.org\/deniz-telsiz-islemleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.bthk.org\/deniz-telsiz-islemleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/www.bthk.org\/"},{"@type":"ListItem","position":2,"name":"Deniz Telsiz \u0130\u015flemleri"}]},{"@type":"WebSite","@id":"https:\/\/www.bthk.org\/#website","url":"https:\/\/www.bthk.org\/","name":"Bilgi Teknolojileri ve Haberle\u015fme Kurumu","description":"","publisher":{"@id":"https:\/\/www.bthk.org\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bthk.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.bthk.org\/#organization","name":"Bilgi Teknolojileri ve Haberle\u015fme Kurumu","url":"https:\/\/www.bthk.org\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.bthk.org\/#\/schema\/logo\/image\/","url":"https:\/\/www.bthk.org\/wp-content\/uploads\/2025\/05\/bthk-logo.png","contentUrl":"https:\/\/www.bthk.org\/wp-content\/uploads\/2025\/05\/bthk-logo.png","width":278,"height":130,"caption":"Bilgi Teknolojileri ve Haberle\u015fme Kurumu"},"image":{"@id":"https:\/\/www.bthk.org\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/BTHKurumu","https:\/\/www.instagram.com\/kktcbthk?igsh=NzMxa20zc3QydHBi"]}]}},"_links":{"self":[{"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/pages\/4156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/comments?post=4156"}],"version-history":[{"count":0,"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/pages\/4156\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bthk.org\/en\/wp-json\/wp\/v2\/media?parent=4156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}