(function() {

var templateMaster = ' <div class="BN-root BN-trigger BN-shadow BN-radius BN-half BN-thumb" style="border-style: none; border-width: 0px; border-color: rgb(34, 31, 31); background-image: url(&quot;https://s3.amazonaws.com/cdn.beacon.by/images/8290-149-1544123075.jpg&quot;); background-color: rgb(255, 255, 255); background-repeat: no-repeat; background-size: cover; background-position: 0% 0%;" data-bg="url(https://s3.amazonaws.com/cdn.beacon.by/images/8290-149-1544123075.jpg)">  <div class="BN-tint">    <div class="BN-image" style="background-image: url(&quot;https://s3.amazonaws.com/cdn.beacon.by/images/8290-149-1544123075.jpg&quot;); background-repeat: no-repeat; background-size: cover; background-position: 0% 0%;">      <img src="https://s3.amazonaws.com/beacon.cnd/f7daef1ae750067e_thumb.png" class="BN-shadow" style="display: block;">    </div>    <div class="BN-text">      <div class="BN-text-contents">        <h3 style="display: block; color: rgb(75, 0, 130); font-size: 26px;"><b>Get this checklist of key questions for your doctor.</b></h3>        <p style="font-size: 18px; color: rgb(33, 27, 27);">People often forget important questions until 30 minutes after leaving the doctor. That&nbsp;doesn&#39;t have to be you.</p>				        <button style="background-color: rgb(75, 0, 130); color: rgb(255, 255, 255);">Download Now</button>      </div>    </div>				  </div>				</div> ';
var popupMaster = ' <div class="BN-popup BN-root BN-popup-body BN-radius BN-half BN-thumb" style="border-style: solid; border-width: 0px; border-color: rgb(236, 236, 236); background-color: rgb(255, 255, 255); background-image: url(&quot;https://s3.amazonaws.com/cdn.beacon.by/images/8290-149-1544124522.jpg&quot;);" data-bg="url(https://s3.amazonaws.com/cdn.beacon.by/images/8290-149-1544124522.jpg)">		<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: url(&quot;https://s3.amazonaws.com/cdn.beacon.by/images/8290-149-1544124522.jpg&quot;);">				<img src="https://s3.amazonaws.com/beacon.cnd/f7daef1ae750067e_thumb.png" style="display: block;">			</div>							<div class="BN-text">				<div class="BN-text-contents">					<h3 style="font-size: 35px; color: rgb(75, 0, 130);">Get Your Checklist</h3>					<p style="font-size: 19px; color: rgb(30, 24, 24);">Just enter your details below for the checklist!</p>												<div class="BN-form-wrap">						<form>						<div class="form-contents">							<div class="BN-form-row">								<label data-name="BN-label-name">Your first name</label>								<input type="text" name="erq1" required="true">							</div>														<div class="BN-form-row">								<label data-name="BN-label-email">Your email</label>								<input type="email" name="erq2" required="true">							</div>														<div class="BN-form-row BN-checkbox" style="display: block;">								<input type="checkbox" required="true">								<span data-name="BN-label-consent">Send me your helpful follow-up emails</span>							</div>						</div><!--/form-contents-->															<div class="BN-form-row">								<button type="submit" style="background-color: rgb(75, 0, 130);">Yep!</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 = '9839d74c77dba08c';
var IID = 'f7daef1ae750067e';
var UID = 'BN-' + Math.random().toString(16).slice(2);
var TYPE = '';
var RULES = '';
var UPLOAD = '';
var SCROLLPOS = 0;
var HIDE = false;
var SHOWBADGE = 0;
var BADGEHTML = ``;

UID = 'BN-' + ID;

var thumbUrl = 'https://s3.amazonaws.com/beacon.cnd/f7daef1ae750067e_thumb.png';

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', '9839d74c77dba08c');
		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);
}


})();
