document.addEventListener("DOMContentLoaded", function() { // Select the latest-post container const latestPosts = document.querySelector('.latest-post'); if (latestPosts) { // Find the grid container inside const postsContainer = latestPosts.querySelector('.elementor-posts-container'); if (postsContainer) { // Set role="list" on the container postsContainer.setAttribute('role', 'list'); // Fix each article inside const articles = postsContainer.querySelectorAll('article.elementor-post'); articles.forEach(article => { // Ensure role="listitem" article.setAttribute('role', 'listitem'); // Fix thumbnail links tabindex const thumbLink = article.querySelector('.elementor-post__thumbnail__link'); if (thumbLink) { thumbLink.setAttribute('tabindex', '0'); } }); } } }); (function () { function cleanAltText(raw) { if (!raw) return ''; // Remove all # characters completely let cleaned = raw.replace(/#/g, ''); // collapse excessive whitespace cleaned = cleaned.replace(/\s{2,}/g, ' ').trim(); // remove leading/trailing punctuation or separators cleaned = cleaned.replace(/^[\s\-\:\|]+|[\s\-\:\|]+$/g, ''); // if nothing meaningful remains if (!cleaned || cleaned.length < 3) return ''; // keep under 125 chars return cleaned.slice(0, 125).trim(); } function processImg(img) { if (!img || !(img instanceof Element)) return; const feedRoot = document.getElementById('sb-tiktok-feeds-container-3'); if (!feedRoot || !feedRoot.contains(img)) return; const existingAria = img.getAttribute('aria-label'); if (existingAria && existingAria.trim().length) return; const alt = (img.getAttribute('alt') || '').trim(); const cleaned = cleanAltText(alt); if (cleaned) { img.setAttribute('aria-label', cleaned); } else if (alt && alt.length) { img.setAttribute('aria-label', 'TikTok post thumbnail'); } else { img.setAttribute('aria-label', 'TikTok post thumbnail'); } } function processAll() { const feedRoot = document.getElementById('sb-tiktok-feeds-container-3'); if (!feedRoot) return; feedRoot.querySelectorAll('img.sb-post-item-image').forEach(processImg); } document.addEventListener('DOMContentLoaded', processAll); window.addEventListener('load', processAll); const root = document.getElementById('sb-tiktok-feeds-container-3'); if (root) { const mo = new MutationObserver((mutations) => { for (const m of mutations) { m.addedNodes.forEach(node => { if (node.nodeType !== 1) return; if (node.matches?.('img.sb-post-item-image')) { processImg(node); } else { node.querySelectorAll?.('img.sb-post-item-image').forEach(processImg); } }); } }); mo.observe(root, { childList: true, subtree: true }); } })(); document.addEventListener("DOMContentLoaded", function () { // Find all links with "Learn more" const learnMoreLinks = document.querySelectorAll('a[href*="/practice-areas/"]:not([aria-label])'); learnMoreLinks.forEach(link => { // Find the closest parent container (loop item) const loopItem = link.closest('.e-loop-item'); if (loopItem) { // Find the heading (h3) inside that loop item const heading = loopItem.querySelector('h3.elementor-heading-title'); if (heading) { // Set aria-label based on the heading text link.setAttribute('aria-label', `Learn more about ${heading.textContent.trim()}`); } } }); }); // document.addEventListener('DOMContentLoaded', function() { // const owlDots = document.querySelectorAll('.owl-carousel .owl-dot'); // owlDots.forEach((dot, index) => { // // Add aria-label for accessibility // dot.setAttribute('aria-label', `Go to slide ${index + 1}`); // dot.setAttribute('role', 'button'); // // Set aria-current for active slide // if (dot.classList.contains('active')) { // dot.setAttribute('aria-current', 'true'); // } else { // dot.setAttribute('aria-current', 'false'); // } // // Optional: update aria-current dynamically on click // dot.addEventListener('click', () => { // owlDots.forEach(d => d.setAttribute('aria-current', 'false')); // dot.setAttribute('aria-current', 'true'); // }); // }); // }); // document.addEventListener("DOMContentLoaded", function() { // const owlDotsContainers = document.querySelectorAll('.sb-feed-posts .owl-dots'); // owlDotsContainers.forEach(container => { // const buttons = container.querySelectorAll('button.owl-dot'); // buttons.forEach((btn, index) => { // // Ensure aria-label exists // if (!btn.hasAttribute('aria-label') || btn.getAttribute('aria-label') === '') { // btn.setAttribute('aria-label', `Go to slide ${index + 1}`); // } // // Ensure role="button" // btn.setAttribute('role', 'button'); // // Set aria-current based on active class // btn.setAttribute('aria-current', btn.classList.contains('active') ? 'true' : 'false'); // }); // }); // }); // document.addEventListener("DOMContentLoaded", function() { function updateOwlDots(containerSelector = '.owl-dots') { const owlDotsContainers = document.querySelectorAll(containerSelector); owlDotsContainers.forEach(container => { const buttons = container.querySelectorAll('button.owl-dot'); buttons.forEach((btn, index) => { // Ensure aria-label exists if (!btn.hasAttribute('aria-label') || btn.getAttribute('aria-label') === '') { btn.setAttribute('aria-label', `Go to slide ${index + 1}`); } // Ensure role="button" btn.setAttribute('role', 'button'); // Set aria-current based on active class btn.setAttribute('aria-current', btn.classList.contains('active') ? 'true' : 'false'); }); }); } // Initial run updateOwlDots(); // Optional: observe dynamically added carousels const observer = new MutationObserver(() => updateOwlDots()); observer.observe(document.body, { childList: true, subtree: true }); }); // Add aria-labels to specific links document.addEventListener("DOMContentLoaded", function() { // For the "back to top" link const topLink = document.querySelector('a.elementor-icon[href="#top"]'); if (topLink) { topLink.setAttribute('aria-label', 'Back to top'); } // For the cancel link const cancelLink = document.querySelector('a.sbr_lb-cancel'); if (cancelLink) { cancelLink.setAttribute('aria-label', 'Cancel'); } // For the close link const closeLink = document.querySelector('a.sbr_lb-close'); if (closeLink) { closeLink.setAttribute('aria-label', 'Close'); } }); document.addEventListener("DOMContentLoaded", function() { // Find all dialogs const dialogs = document.querySelectorAll('div[role="dialog"]'); dialogs.forEach((dialog, index) => { // Skip if already has aria-label or aria-labelledby if (!dialog.hasAttribute('aria-label') && !dialog.hasAttribute('aria-labelledby')) { // Create a unique label const labelText = "Dialog window " + (index + 1); // Option 1: Use aria-label dialog.setAttribute('aria-label', labelText); // Optional: Log for debugging console.log(`Added aria-label="${labelText}" to dialog:`, dialog); } }); }); document.addEventListener("DOMContentLoaded", function() { // Select all loop items with our-team-loop class const teamItems = document.querySelectorAll('.our-team-loop'); teamItems.forEach(item => { // Find the heading link inside the item const headingLink = item.querySelector('.elementor-widget-heading h3 a'); if (!headingLink) return; // Skip if no heading link const personName = headingLink.textContent.trim(); if (!personName) return; // Skip if heading has no text // Find the "Read more" button inside this item const readMoreButton = item.querySelector('.elementor-button-link'); if (readMoreButton) { // Set the aria-label readMoreButton.setAttribute('aria-label', `Read more about ${personName}`); } }); }); document.addEventListener("DOMContentLoaded", function () { // Find all immigration loop items const items = document.querySelectorAll(".immigration-loop"); items.forEach(item => { // Get title from .elementor-icon-list-text const titleEl = item.querySelector(".elementor-icon-list-text"); if (!titleEl) return; const title = titleEl.textContent.trim(); if (!title) return; // Get the Read More button const readMore = item.querySelector("a.elementor-button.elementor-button-link"); if (!readMore) return; // Add aria-label readMore.setAttribute("aria-label", `Read more about ${title}`); }); }); (function () { // Run after DOM ready function initSkipLink() { // Find any skip link that looks like "skip to content" const skip = document.querySelector('a.skip-link[href^="#"], a[href^="#content"].skip-link, a.skip-link.screen-reader-text[href^="#"]'); if (!skip) return; // Ensure it's the very first focusable thing for keyboard users: // move it to be the first child of if it's not already first if (document.body.firstElementChild !== skip) { document.body.insertBefore(skip, document.body.firstElementChild); } // Get target id from href (strip leading '#') const targetId = (skip.getAttribute('href') || '').replace(/^#/, ''); if (!targetId) return; // Ensure the target exists; if not, try to find a good main candidate and give it the id let target = document.getElementById(targetId); if (!target) { target = document.querySelector('main, [role="main"], #primary, #content, .site-main'); if (target) { target.id = targetId; } else { // As a last resort create a focus target at top of body so link doesn't break const fallback = document.createElement('div'); fallback.id = targetId; document.body.appendChild(fallback); target = fallback; } } // Make sure target is programmatically focusable if (!target.hasAttribute('tabindex')) { target.setAttribute('tabindex', '-1'); } // Ensure activation moves keyboard focus into the target skip.addEventListener('click', function (e) { // Allow default anchor behavior, but also ensure focus lands on target // Use setTimeout to let the browser perform the fragment jump first setTimeout(function () { const t = document.getElementById(targetId); if (t) { try { t.focus({ preventScroll: false }); } catch (ex) { // fallback for older browsers t.focus(); } } }, 0); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initSkipLink); } else { initSkipLink(); } })(); (function () { const tabSelector = '.e-n-tabs-heading'; const accordionSelector = '.e-n-accordion'; function fixTabindexes(container) { if (!container) return; container.querySelectorAll('[tabindex="-1"]').forEach(el => { el.setAttribute('tabindex', '0'); }); } function initWatcher(container) { if (!container || container.__fixed) return; // Initial fix fixTabindexes(container); // Fix again on click (Elementor updates attrs on click) container.addEventListener('click', () => fixTabindexes(container)); // Watch DOM changes inside container const observer = new MutationObserver((mutations) => { for (const m of mutations) { if ( m.type === 'childList' || (m.type === 'attributes' && m.attributeName === 'tabindex') ) { fixTabindexes(container); break; } } }); observer.observe(container, { childList: true, subtree: true, attributes: true, attributeFilter: ['tabindex'] }); container.__fixed = true; } function initAll() { document.querySelectorAll(tabSelector).forEach(initWatcher); document.querySelectorAll(accordionSelector).forEach(initWatcher); } // Run immediately initAll(); // Also watch entire page if tabs/accordions load later const rootObserver = new MutationObserver(initAll); rootObserver.observe(document.documentElement, { childList: true, subtree: true }); // Extra: run after page fully loads if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } })(); // Function to fix ARIA role function fixSwiperRoles() { const slides = document.querySelectorAll('.swiper-slide[role="group"]'); slides.forEach(slide => { slide.setAttribute('role', 'listitem'); }); } // Fix existing slides on page load document.addEventListener('DOMContentLoaded', () => { fixSwiperRoles(); }); // Optional: Observe for new slides added dynamically (like in Swiper) const swiperContainer = document.querySelector('.swiper-wrapper'); if (swiperContainer) { const observer = new MutationObserver(() => { fixSwiperRoles(); }); observer.observe(swiperContainer, { childList: true, subtree: true }); } document.addEventListener("DOMContentLoaded", function() { const iconLinks = document.querySelectorAll('a.elementor-icon'); iconLinks.forEach(link => { // Check if link has no text content and no aria-label if (!link.textContent.trim() && !link.hasAttribute('aria-label')) { // Set a descriptive label, e.g., based on href or context if (link.getAttribute('href') === '#top') { link.setAttribute('aria-label', 'Back to top'); } else { link.setAttribute('aria-label', 'Icon link'); } } }); });
US-ILC REPRESENTS IN ALL 50 STATES

Can Unpaid Child Support Affect Your Ability to Naturalize?

At US-ILC, we listen, we care, we deliver: Let our 89 years of combined experience help you to navigate the complexities of immigration law!

When it comes to acquiring U.S. citizenship, most people understand that certain issues, such as criminal convictions, immigration fraud, and violating voting laws, can lead to the denial of their application. But many are unaware that unpaid child support can also significantly impact their ability to naturalize in the U.S.

How Can Unpaid Child Support Payments Affect Your Naturalization Process?

When parents are no longer together, U.S. federal laws require the noncustodial parent to pay a reasonable amount of child support to the parent primarily responsible for raising the children. This requirement is based on the principle that parents are both morally and legally obligated to financially support their children until they reach the age of 18. The amount of financial support is typically determined by the noncustodial parentโ€™s income, among other factors.

The court systems and agencies that monitor child support payments may penalize non-compliant parents by withholding tax refunds or garnishing wages, among other measures. In severe cases of child support violations, a parent may even face jail time.

If you are a noncustodial parent seeking to become a U.S. citizen but have failed to pay child support in the past or present, it can derail the naturalization process. The N-400, Application for Naturalization, includes a question asking parents if they are providing support for their child. If you have a court order to pay child support and are not complying with it, you must disclose this information on the form, even if it may lead the U.S. Citizenship and Immigration Services to deny your application.

Why Does Unpaid Child Support Affect the Naturalization Process?

Along with certain offenses, crimes, and immigration-related fraud, unpaid child support can be considered a good moral character issue. If you are a noncustodial parent and not making the required child support payments, USCIS may view you as lacking good moral character. Even paying less than the required amount can delay your application process or bar you from naturalization.

What Evidence Can You Provide As Proof of Child Support Payments?

If you are a noncustodial parent applying for naturalization, you must provide evidence to USCIS that you are making the required child support payments. Be sure to gather the necessary documents before your naturalization interview, as being unprepared can delay your ability to naturalize or even lead to a denial.

Evidence can include a combination of the following:

  • Payment receipts โ€“ showing regular and ongoing payouts clearly noted as child support payments
  • Bank statements โ€“ showing the custodial parentโ€™s name and the regular child support transactions
  • Court orders โ€“ showing the amount you are legally required to pay
  • Statements or payment history from child support enforcement agency โ€“ if you are making payments through an agency
  • Affidavit from custodial parent โ€“ attesting to the fact that the noncustodial parent is making child support payments

 

Facing a job loss or serious illness, among other issues, can leave a parent without the ability to pay child support. If this is your situation, you must prove to USCIS that there were extenuating circumstances impacting your ability to make these payments. This will mean providing evidence to support your claim.

If you are wondering how your history of child support payments may affect your naturalization process, or you have questions about another immigration legal matter, contact U.S. Immigration Law Counsel for a strategy session to discuss your case.