class EbayDisclosure {

	constructor( UI = null ) {

		this.isDisclosurePrint = false;
		this.UI = null;

		this.disclaimer_div = `
			<div class="disclaimer_ebay">
				Questo articolo contiene link di affiliazione: acquisti o ordini effettuati tramite tali link permetteranno al nostro sito di ricevere una commissione nel rispetto del <a href="/codice-etico-della-affiliazione/">codice etico</a>.
			</div>
		`;

		this.aff_disclaimer = document.querySelector('.blz_affiliation_disclaimer');

		this.printDisclaimer();

		this.printInfiniteDisclaimer();

	}


	printInfiniteDisclaimer() {

		if( this.UI.infinite ) {

			if( typeof this.UI.infinite.loadCallbackStack !== 'undefined' ) {

				this.UI.infinite.loadCallbackStack.push( this.printDisclaimer.bind( this ) );			
			}
			
			if( typeof this.UI.infinite.loader !== 'undefined' && typeof this.UI.infinite.loader.loadCallbackStack !== 'undefined' ) {
				
				this.UI.infinite.loader.loadCallbackStack.push( this.printDisclaimer.bind( this ) );			
			}
			
		}
	}

	/**
 	 * Deve verificare se esiste eBay nei filoni (data-themes)
     * in caso affermativo 
     * - stampa il disclaimer sticky concordato con eBay
     */
	printDisclaimer() {

		if( !this.isDisclosurePrint && this.isEbay() ) {

			this.aff_disclaimer.insertAdjacentHTML('afterend', this.disclaimer_div);
		
			// rimuove il vecchio disclaimer una volta inserito il nuovo
			this.aff_disclaimer.remove();
			
			this.isDisclosurePrint = true;
		}
	}

	
	/**
	 * @returns boolean - true if there is an ebay tag
	 */
	isEbay() {

		const targets = document.querySelectorAll('.post-content-single');

		let ebayTargets = [].filter.call( targets, target => target.querySelector('[data-themes*="eBay"]') !== null  );

		return ebayTargets.length > 0;
	}


}


addEventListener("DOMContentLoaded", evt => {

	let currentUI = typeof UI !== 'undefined' ? UI : null;

	new EbayDisclosure( currentUI );
	
});


