(function() {

var templateMaster = ' <div class="BN-root BN-hbar BN-radius BN-bottom BN-full" data-links="#369">  <div class="BN-container" style="background-color: rgb(196, 91, 250); border-bottom-left-radius: 7px; border-bottom-right-radius: 7px; border-width: 1px; border-color: rgb(0, 0, 0); border-style: solid;">    <div class="BN-trigger" data-links="#369">      <div class="BN-image">	<img src="https://s3.amazonaws.com/cdn.beacon.by/images/61726-22355-1727804953.jpeg">	      </div><!--/BN-image-->			      <p>&nbsp;</p><button style="background-color: rgb(0, 0, 0); font-family: Inter, sans-serif;"> 马上获取免费《健康逆龄秘诀》电子书 </button>    </div><!--/BN-trigger-->		    <div class="BN-close">      <a href="#">	<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">	  <g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">	    <path id="BN-svg" d="M2,12 L12,2"></path>	    <path id="BN-svg" d="M12,12 L2,2"></path>	  </g>	</svg>      </a>    </div><!--/BN-close-->  </div><!--/BN-container--></div> ';
var popupMaster = ' <div class="BN-popup BN-root BN-popup-body BN-radius BN-thumb BN-simple" style="border-style: solid; border-width: 0px; border-color: rgb(236, 236, 236); background-image: none; background-repeat: no-repeat; background-size: cover;" data-bg="none">		<div class="BN-close"><a href="#"><img src="https://beacon.by/assets/leadcapture/i/icon-close.png" alt="close"></a></div>		<div class="BN-tint">			<div class="BN-image" style="background-image: none;">				<img src="https://s3.amazonaws.com/cdn.beacon.by/images/61726-22355-1727804953.jpeg" style="display: block;">			</div>							<div class="BN-text">				<div class="BN-text-contents">					<h3 style="font-size: 22px; font-family: Inter, sans-serif; color: rgb(0, 0, 0);"><b>浚馨荟: 健康逆龄秘诀</b><br></h3>					<p style="font-size: 18px; font-family: Inter, sans-serif;">免费独家电子书</p>												<div class="BN-form-wrap">						<form autocomplete="off">						<div class="form-contents">							<div class="BN-form-row BN-input-name" style="display: none;">								<label data-name="BN-label-name">Name</label>								<input type="text" name="erq1">							</div>														<div class="BN-form-row BN-input-firstname" style="display: none;">								<label data-name="BN-label-firstname">First Name</label>								<input type="text" name="firstname">							</div><div class="BN-form-row BN-input-lastname" style="display: none;">								<label data-name="BN-label-lastname">Last Name</label>								<input type="text" name="lastname" required="required">							</div><div class="BN-form-row BN-input-phone" style="display: none;">    <label data-name="BN-label-phone">Phone</label>    <input name="phone">  </div><div class="BN-form-row BN-input-email">								<label data-name="BN-label-email">我们将会把电子书发送到您填写到以下的电邮地址</label>								<input type="email" name="erq2" required="true">							</div>														<div class="BN-form-row BN-checkbox BN-input-checkbox">								<input type="checkbox" required="true">								<span data-name="BN-label-consent"> 请同意接收电子邮件</span>							</div>						</div><!--/form-contents-->															<div class="BN-form-row">								<button type="submit" style="background-color: rgb(0, 0, 0); font-family: Inter, sans-serif;">立即发送</button>							</div>						<span class="data-capture"><input name="email" type="email"><input name="name" type="text"></span></form>					</div><!--form-wrap-->													</div><!--text-contents-->			</div><!--text-->									</div>	<!--tint-->	</div> ';
var exitIntent = false;
var scrollDistance = 0;
var triggerTimer = 0;
var cachedFonts = '';
var hasFired = false;
var scrollerDiv;

var PATH = 'https://beacon.by';
// if (window.locaton.protocol = 'http:') {
//   PATH = PATH.replace('https', 'http');
// }
var HOST = 'beacon.by';
var CUSTOMDOMAIN = '';
var ID = 'dcd940b9513eeae9';
var IID = 'e31c2a91f72ca697';
var UID = 'BN-' + Math.random().toString(16).slice(2);
var TYPE = 'sticky';
var RULES = '{"show":[],"hide":[]}';
var UPLOAD = '1';
var SCROLLPOS = 0;
var HIDE = false;
var SHOWBADGE = 0;
var BADGEHTML = ``;

UID = 'BN-' + ID;

var thumbUrl = 'https://s3.amazonaws.com/cdn.beacon.by/images/61726-22355-1727804953.jpeg';

var loadCSS = function() {
	var file ='https://beacon.by/assets/leadcapture/trigger2.css',
		link = document.createElement('link');
	link.href = file;
	link.type = 'text/css';
	link.rel = 'stylesheet';
	link.media = 'screen,print';
	document.getElementsByTagName('head')[0].appendChild(link);

	gFonts = document.createElement('link');
	gFonts.href = cachedFonts !== ''
	? 'https://fonts.googleapis.com/css?family='+cachedFonts
	: 'https://s3.amazonaws.com/cdn.beacon.by/editor/a/css/gfonts.css';
	gFonts.type = 'text/css';
	gFonts.rel = 'stylesheet';
	gFonts.media = 'screen,print';
	document.getElementsByTagName('head')[0].appendChild(gFonts);

	if (window.innerWidth > 640) {
	document.body.classList.add('BN-modal-open');
	}
}

var insertAfter = function(referenceNode, newNode) {
	referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

var triggerPopup = function(trigger) {

	HIDE = checkDisplayRules(RULES);
	if (HIDE) {
	return;
	}

	// let submitted = window.sessionStorage.getItem('hide-'+ID) === 'true';
	let submitted = storageGet('hide-'+ID) === 'true';
	if (submitted && TYPE === 'scroller') return;

	SCROLLPOS = window.scrollY;
	history.pushState('', document.title,
	window.location.pathname + window.location.search);
	var div = document.createElement('div');
	div.classList.add('BN-live');
	div.setAttribute('data-id', ID);
	div.innerHTML = popupMaster;
	document.body.appendChild(div);
	document.body.classList.add('BN-modal-open');
	document.documentElement.className += ' BN-modal-open';


	window.setTimeout(function() {

	activateForm('.BN-live[data-id="'+ID+'"] form');

	document.querySelector('.BN-live')
		.addEventListener('click', (e) => {
		if (e.target.classList.contains('BN-live')) {
			closeModals();
		}
		}, false);

	var closeMaster = document.querySelector('.BN-close');
	if (closeMaster) {
		closeMaster.innerHTML = '<a href="#"><img src="https://beacon.by/assets/leadcapture/i/icon-close.png" alt="close"></a>';
	}

	var closeButtons = Array.from(document.querySelectorAll('.BN-live .BN-close'));
	for (var i = 0; i < closeButtons.length; i += 1) {
		var button = closeButtons[i];

		var root = button.parentNode.parentNode;
		if (root && root.classList.contains('BN-hbar')) {
		button.addEventListener('click', function(e) {
			e.preventDefault();
			document.querySelector('#BN-' + id).style.display = 'none';
			return false;
		}, false);
		} else {
		button.addEventListener('click', function(e) {
			e.preventDefault();
			closeModals();
			return false;
		}, false);
		}
	}
	}, 500);
}


var activateForm = function(targetSelector) {

	insertBadge();
	// let submitted = window.sessionStorage.getItem('hide-'+ID) === 'true';
	let submitted = storageGet('hide-'+ID);
	if (TYPE === 'scroller' && submitted) {
		document.querySelector('.BN-live').style.display = 'none';
		return;
	}

	// var form = document.querySelector('.BN-live form');
	var forms = document.querySelectorAll(targetSelector);
	if (!forms) return;
	var target = (CUSTOMDOMAIN !== false && CUSTOMDOMAIN.length > 6)
		? CUSTOMDOMAIN : HOST;

	forms.forEach((form, index) => {
		form.setAttribute('method', 'post');
		form.setAttribute('action', 'https://' + target + '/landing-ebook');
		form.removeAttribute('autocomplete');

		form.addEventListener('submit', (e) => {
		// e.preventDefault();
		let form = e.target;
		let id = form.querySelector('input[name="eBook"]').value;
		let rawVals = {};
		form.querySelectorAll('.BN-form-row').forEach((el) => {
			let label = el.querySelector('label');
			if (label) {
			rawVals[label.innerText] = el.querySelector('input').value;
			}
		});
		rawVals = JSON.stringify(rawVals);
		form.querySelector('input[name="raw"]').value = rawVals;
		storageSet('hide-id'+id, true);
		//window.sessionStorage.setItem('hide-'+id, true);
		return true;
		});

		var eBook = document.createElement('input');
		eBook.setAttribute('type', 'hidden');
		eBook.setAttribute('name', 'eBook');
		eBook.setAttribute('value', 'dcd940b9513eeae9');
		form.appendChild(eBook);
		form.querySelector('.BN-checkbox input[type=checkbox]')
		.setAttribute('name', 'consent'); 

		var ref = document.createElement('input');
		ref.setAttribute('type', 'hidden');
		ref.setAttribute('name', 'ref');
		ref.setAttribute('value', window.location.href +  '#' + UID);
		form.appendChild(ref);

		var version = document.createElement('input');
		version.setAttribute('type', 'hidden');
		version.setAttribute('name', 'version');
		version.setAttribute('value', 2);
		form.appendChild(version);

		var raw = document.createElement('input');
		raw.setAttribute('type', 'hidden');
		raw.setAttribute('name', 'raw');
		raw.setAttribute('value', '');
		form.appendChild(raw);

		window.setTimeout(() => {
		var consent = document.createElement('input');
		var consentText = form.querySelector('.BN-label-consent-text')
							.innerText;
		consent.setAttribute('type', 'hidden');
		consent.setAttribute('name', 'consent_text');
		consent.setAttribute('value', consentText);
		form.appendChild(consent);
		}, 1000);

		form.querySelectorAll('.BN-form-row').forEach((row) => {
		let input = row.querySelector('input');
		let label = input ? input.previousElementSibling : false;
		if (input && input.getAttribute('type') === 'checkbox') {
			label = input.nextElementSibling;
			var newLabel = document.createElement('label');
			newLabel.innerHTML = label.innerHTML;
			newLabel.dataSet = label.dataSet;
			newLabel.className = 'BN-label-consent-text'
			newLabel.style.fontWeight = 'normal';
			newLabel.style.marginBottom = '0';
			label.parentNode.replaceChild(newLabel, label);
			label = newLabel;
		}
		if (label) {
			let labelId = input.name + '-' + UID + '-' + index;
			label.htmlFor = labelId;
			input.id = labelId;
		}
		if (input && row.style.display === 'none') {
			input.removeAttribute('required');
		}
		if (input && input.offsetParent === null) {
			input.removeAttribute('required');
		} else {
			if (input) {
			input.setAttribute('required', 'required');
			}
		}
		});

		document.querySelectorAll('.BN-form-row input').forEach((el) => {
		el.disabled = false;
		el.removeAttribute('disabled');
		if (el.parentNode && el.parentNode.style.display === 'none') {
			el.removeAttribute('required');
		}
		});
	});


	// window.setTimeout(() => {
	//
	//   // target = HOST;
	//   console.log(form, target, targetSelector);
	//   let forms = document.querySelectorAll(targetSelector);
	//   forms.forEach((f) => {
	//     f.setAttribute('method', 'post');
	//     f.setAttribute('action', 'https://' + target + '/landing-ebook');
	//     f.removeAttribute('autocomplete');
	//   });
	//
	// }, 2000);

}

var closeModals = function() {

	if (TYPE === 'fullscreen' || TYPE === 'scroller' || TYPE === 'sticky') {
	window.setTimeout(function() {
		var returnPos = (document.body.offsetHeight / 100) * scrollDistance;
		//window.sessionStorage.setItem('hide-'+ID, true);
		storageSet('hide-'+ID, true);
		removeModalOpen();
		window.setTimeout(function() {
		console.log('Scroll to', SCROLLPOS);
		window.scrollTo(0, SCROLLPOS);
		}, 50);
	}, 100);
	} else {
	window.location.hash = UID;
	removeModalOpen();
	}

}


var removeModalOpen = function() {
	var htmlClassList = document.documentElement.className;
	htmlClassList = htmlClassList.replace(' BN-modal-open', '');
	document.documentElement.className = htmlClassList;
	document.documentElement.className.value = htmlClassList;
	document.body.classList.remove('BN-modal-open');
	var modals = Array.from(document.querySelectorAll('.BN-live'));
	modals.forEach((modal) => {
	modal.style.display = 'none';
	modal.parentNode.removeChild(modal);
	});
}


var primePopup = function(div) {
	div.id = UID;
	var src = 'https://s3.amazonaws.com/beacon.cnd/' + IID + '_thumb.png',
		img = div.querySelector('.BN-popup .BN-image img'),
		button = div.querySelector('button');
		links = div.querySelectorAll('a');

	if (div.innerHTML.indexOf('BN-thumb-3d') > 0) {
	src = src.replace('.png', '_og_cover.png');
	}
	if (div.innerHTML.indexOf('BN-thumb-sheets') > 0) {
	src = src.replace('.png', '_og_cover_large_sheets.png');
	}
	if (div.innerHTML.indexOf('BN-thumb-hardcover') > 0) {
	src = src.replace('.png', '_og_cover_large_large_hardcover.png');
	}

	if (!UPLOAD && img) {
	img.src = src;
	}

	let root = div.querySelector('.BN-root');
	let linkCol = root.dataset.links;
	if (linkCol) {
	root.querySelectorAll('.BN-text-contents p a').forEach((el) => {
		el.style.color = linkCol;
	});
	}

	document.addEventListener('mouseleave', function(e) {
	if (!exitIntent || TYPE === 'inline') {
		return;
	}
	if (document.body.dataset.bnfired 
		&& document.body.dataset.bnfired == ID) {
		return;
	}
	let hasOpen = document.querySelectorAll('.BN-live').length > 0;
	// console.log(exitIntent, TYPE, hasOpen);
	// if (document.body.classList.contains('BN-modal-open')) {
	// console.log(hasOpen);
	if (hasOpen) {
		return;
	}
	// console.log('EXIT INTENT', div, document.querySelector('#' + div.id));

	// let submitted = window.sessionStorage.getItem('hide-'+ID) === 'true';
	let submitted = storageGet('hide-'+ID) === 'true';
	if (submitted) return;

	triggerPopup(div);
	document.body.dataset.bnfired = ID;
	}, false);

	for (var i = 0; i < links.length; i += 1) {
	links[i].addEventListener('click', function(e) {
		if (e.target.tagName !== 'A' && e.target.tagName !== 'path') {
		e.preventDefault();
		triggerPopup(div);
		}
	}, false);
	}

	if (button) {
		if (TYPE === 'inline') {
		let form = div.querySelector('.BN-form-wrap');
		form.classList.add('BN-form-'+ID);
		activateForm('.BN-form-'+ID+' form');
		}
	button.addEventListener('click', function(e) {
		if (TYPE === 'inline') {
		activateForm('.BN-'+ID+' .BN-form-wrap form');
		} else {
		triggerPopup(div);
		}
	},false);
	}
}


var init = function(type) {
	var scripts = (type === 'sticky')
	? Array.from(document.querySelectorAll('head script'))
	: Array.from(document.querySelectorAll('body script'));

	if (type !== 'blog' &&
	storageGet('hide-'+ID) === 'true') {
	return;
	}

	if (type === 'scroller') {
	HIDE = checkDisplayRules(RULES);
	if (HIDE) return;
	}

	window.setTimeout(() => {
	if (window.location.hash && window.location.hash === '#' + UID) {
		document.getElementById(UID).scrollIntoView();
	}
	}, 1000);

	for (var i = 0; i < scripts.length; i+=1) {
		var script = scripts[i];
		var src = script.getAttribute('src');
		if (src) {
		var parts = src.split('/');
		if (parts[2] === HOST && parts[parts.length-1] === ID) {
		loadCSS();
		var id = parts[parts.length-1],
			div = document.createElement('div'),
			template = templateMaster;
		template = template.replace('<TITLE>', 'EMBED INSERT ID: ' + id);
		template = template.replace('img src=', 'img data-src=');
		div.innerHTML = template;


		if (type === 'sticky') {

			HIDE = checkDisplayRules(RULES);

			if (!HIDE) {
			let img = div.querySelector('.BN-image img');
			if (div.firstElementChild.classList.contains('BN-thumb')) {
				img.setAttribute('src', img.dataset.src);
			} else {
				img.parentNode.removeChild(img);
			}
			div.querySelector('.BN-root').style.opacity = 0;
			document.body.appendChild(div);

			window.setTimeout(() => {
				var div = document.querySelector('.BN-root'),
					divClass = div.classList,
					height = div.offsetHeight + 'px',
					closeButtons = div.querySelectorAll('.BN-close');

				div.style.opacity = 1;
				if (divClass.contains('BN-top')) {
				document.body.style.marginTop = height;
				} else if (divClass.contains('BN-bottom')) {
				document.body.style.marginBottom = height;
				}

			}, 1500);

			} else {
			}
		} else {
			let img = div.querySelector('.BN-image img');
			if (div.firstElementChild.classList.contains('BN-thumb')) {
				img.setAttribute('src', img.dataset.src);
			} else {
				img.parentNode.removeChild(img);
			}
		}

		if (type !== 'scroller' && type !== 'fullscreen' && type !== 'sticky') {
			insertAfter(script, div);
			removeDups(UID);
		}
		if (type == 'scroller' || type === 'fullscreen') {
			scrollerDiv = div;
		}
		if (type === 'sticky' && !HIDE) {
			let root = document.querySelector('.BN-root');
			root.querySelector('.BN-close').addEventListener('click', (e) => {
			e.preventDefault();
			root.parentNode.removeChild(root);
			storageSet('hide-'+ID, true);
			document.body.style.marginTop = 0;
			document.body.style.marginBottom = 0;
			});
		}

		if (type === 'blog') {
			let els = ['h1', 'p', 'button'];
			els.forEach((el) => {
			addImportant(document.querySelector('.BN-text-contents ' + el));
			});
		}

		primePopup(div);
		try {
			script.parentNode.removeChild(script);
		} catch (e) {
		}
		}
		}
	}
}

init(TYPE);

	function addImportant(el) {
	let elStyles = false;
	try {
		elStyles = window.getComputedStyle(el);
	} catch(e) {

	}

	if (!elStyles) {
		return;
	}

	let rules = '';
	for (var i = 0, l = el.style.length; i < l; i++){
		let rule = el.style[i],
			value = elStyles.getPropertyValue(rule) + ' !important;';
		if (rule) {
		rules += rule + ': ' + value + ' ';
		}
	}
	el.setAttribute('style', rules);
	}

	function getScrollPercentage() {
		var h = document.documentElement,
		b = document.body,
		st = 'scrollTop',
		sh = 'scrollHeight';

		var percent = Math.floor((h[st]||b[st]) / ((h[sh]||b[sh]) - h.clientHeight) * 100) || 0;

		return percent;
	}

	function checkScrollPos() {
	var percent = getScrollPercentage();

	if (scrollDistance === 0) {
		return;
	}

	if (!hasFired && percent >= scrollDistance) {
		hasFired = true;
		triggerPopup(scrollerDiv);
	}
	window.requestAnimationFrame(checkScrollPos);
	}

	if (TYPE === 'scroller' || TYPE === 'fullscreen') {
	checkScrollPos();
	}

	if (triggerTimer > 0 && (TYPE === 'scroller' || TYPE === 'fullscreen')) {
	window.setTimeout(function() {
		console.log('Timer: ', document.querySelector('.BN-live'), scrollerDiv);
		if (!document.querySelector('.BN-live')) {
		triggerPopup(scrollerDiv);
		hasFired = true;
		}
	}, triggerTimer * 1000 )
	} else {
	// console.log('No trigger timer set');
	}

	function storageSet(key, val = true) {
	window.sessionStorage.setItem(key, val);
	window.localStorage.setItem(key, val);
	}


	function storageGet(key) {
	let session = window.sessionStorage.getItem(key),
		local = window.localStorage.getItem(key);
	if (local) {
		return local;
	} else if (session) {
		return session;
	}
	}

	function wildcardFind(wildcard, str) {
	str = str.toString();
	let w = wildcard.replace(/[.+^${}()|[\]\\]/g, '\\$&');
	const re = new RegExp(`^${w.replace(/\*/g,'.*').replace(/\?/g,'.')}$`,'i');
	return re.test(str);
	}


	function checkDisplayRules(rules) {
	if (typeof rules === 'string' && rules.length) {
		try {
		rules = JSON.parse(rules);
		} catch (e) {
		console.log(e);
		}
	} else if (rules === '') {
		return false;
	}


	let hide = (rules && rules.hide) ? rules.hide : [],
		shouldHide = false;
	const path = window.location.pathname;
	const show = window.sessionStorage.getItem('hide-'+ID) === 'true' ? false : true;

	for (var i = 0; i < hide.length; i += 1) {
		if (wildcardFind(hide[i], path) === true || hide[i] === path) {
		console.log('hideform:', path);
		shouldHide = true;
		} else {
		}
	}

	return shouldHide;
	}


	function insertBadge() {
	const form = document.querySelector('.BN-form-wrap');
	let badge = document.querySelector('.BN-badge');
	if (!SHOWBADGE) {
		if (badge) {
			badge.parentNode.removeChild(badge);
		}
		return;
	}
	if (!form) {
		return;
	}

	if (badge) {
		badge.innerHTML = BADGEHTML;
	} else {
		const div = document.createElement('div');
		div.className = 'BN-badge';
		div.innerHTML = BADGEHTML;
		form.parentNode.insertBefore(div, form.nextSibling);
	}
	}


function removeDups(id, timeout = 250) {
	id = '#' + id;
	window.setTimeout(() => {
	let n = 0;
	document.querySelectorAll(id).forEach((dup) => {
		if (n > 0) {
		dup.parentNode.removeChild(dup);
		}
		n++;
	});
	}, timeout);
}


})();
