jQuery( document ).ready(
	function () {
		// replaceLinks();
		// setTimeout( replaceLinks, 2000 )
	}
);

document.addEventListener('DOMContentLoaded', function () {
    // Sélectionner tous les liens avec l'attribut data-track-url
    const links = document.querySelectorAll('a[data-link-tracker-track-url="1"]');
    
    const webBeaconUrl = macymedLinkTrackerScriptAjax.url_record;//this.getAttribute('data-link-tracker-track-url');
            
    links.forEach(link => {
        const url = link.getAttribute('href');
        link.addEventListener('click', function (event) {
            if (webBeaconUrl && url) {
                // Ajouter l'URL du lien au paramètre de suivi
                let fetchWebBeaconUrl = webBeaconUrl + '&url=' + encodeURIComponent(url);

                // Envoyer la requête asynchrone pour le suivi
                fetch(fetchWebBeaconUrl, {
                    method: 'GET',
                    credentials: 'include',
                }).catch(error => {
                    console.error('Erreur de suivi :', error);
                });
            }
        });
    });
});


function isExcludedMacymed(link) {
	// console.log(macymedLinkTrackerScriptAjax.macymedTrackerConfig);
	const config              = macymedLinkTrackerScriptAjax.macymedTrackerConfig || {};
	const exclusionsUrls      = config.urls || [];
	const exclusionsDomains   = config.domains || [];
	const exclusionsProtocols = config.protocols || [];
	const exclusionsParamsGet = config.paramsGet || [];
	const relativePath        = config.relativePath || [];

    if (link.startsWith( '/' )) {
        return true;
    }
	
	
	// Vérifier si le lien correspond à un des domaines exclus
	for (let i = 0; i < exclusionsDomains.length; i++) {
		// console.log(link,exclusionsDomains[i])
		if (link.includes( exclusionsDomains[i] )) {
			return true;
		}
	}
	for (let i = 0; i < exclusionsParamsGet.length; i++) {
		if (link.includes( exclusionsParamsGet[i] )) {
			return true;
		}
	}

	// Vérifier si le lien commence par un protocole exclu
	for (let i = 0; i < exclusionsProtocols.length; i++) {
		if (link.startsWith( exclusionsProtocols[i] + ':' )) {
			return true;
		}
	}

	// Exclusions fixes (restent en dur)
	if (link.includes( 'redirect_external' )) {
		return true;
	}
	if (link.includes( 'macymed_tracker' )) {
		return true;
	}

	
	return false;
}

function replaceLinks(){
	
	const links  = document.querySelectorAll( 'a' );
    
	links.forEach(
		function (link) {

			// if (link.href && !isExcluded(link)) {
			if (link.href && ! isExcludedMacymed( link.href )) {

				const newLink = link;// .cloneNode(true);

				// Supprimer un attribut (par exemple, 'onclick') du lien cloné
				if (newLink.hasAttribute( 'onclick' )) {
					newLink.removeAttribute( 'onclick' );
				}

				// Supprimer une classe du parent du lien (par exemple, 'some-class')
				if (link.parentNode.classList.contains( 'lp-user-web' )) {
					link.parentNode.classList.remove( 'lp-user-web' );
					jQuery( link ).unbind( 'click' );
					jQuery( link.parentNode ).unbind( 'click' );
					// jQuery('li.lp-user-web a').off('click');
				}

				// Modifier l'attribut href pour rediriger via votre fichier PHP
				const encodedUrl = encodeURIComponent( newLink.href );
				var host         = window.location.protocol + "//" + window.location.host;

				newLink.href = host + '/redirect_external.php?macymed_tracker=1&mtl_nonce='+macymedLinkTrackerScriptAjax.nonce+'&redirect_type=js&url='+encodedUrl;

				// Ajouter target="_blank" si l'attribut n'existe pas
				if ( ! newLink.hasAttribute( 'target' )) {
					newLink.setAttribute( 'target', '_blank' );
				}
				// newLink.removeAttribute('target');
				if ( ! newLink.hasAttribute( 'data-lpID' )) {
					newLink.removeAttribute( 'data-lpID' );
				}

				

			}
		}
	);
}
