Skip to content

Instantly share code, notes, and snippets.

@stripedpurple
Created November 14, 2019 17:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stripedpurple/80393f405d33c1921ca867ef2244f2cd to your computer and use it in GitHub Desktop.
Save stripedpurple/80393f405d33c1921ca867ef2244f2cd to your computer and use it in GitHub Desktop.
if(!document.querySelectorAll){document.querySelectorAll=function(selector){var doc=document,head=doc.documentElement.firstChild,styleTag=doc.createElement("STYLE");head.appendChild(styleTag);doc.__qsaels=[];styleTag.styleSheet.cssText=selector+"{x:expression(document.__qsaels.push(this))}";window.scrollBy(0,0);return doc.__qsaels}}if(window.NodeList&&!NodeList.prototype.forEach){NodeList.prototype.forEach=Array.prototype.forEach}if(!window.Element||!window.Element.prototype||!window.Element.prototype.hasAttribute){(function(){function hasAttribute(attrName){return typeof this[attrName]!=="undefined"}var forms=document.getElementsByTagName("form");for(var i=0;i<forms.length;i++){forms[i].hasAttribute=hasAttribute}})()}if(!Function.prototype.bind){Function.prototype.bind=function(oThis){if(typeof this!=="function"){throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable")}var aArgs=Array.prototype.slice.call(arguments,1),fToBind=this,fNOP=function(){},fBound=function(){return fToBind.apply(this instanceof fNOP?this:oThis,aArgs.concat(Array.prototype.slice.call(arguments)))};if(this.prototype){fNOP.prototype=this.prototype}fBound.prototype=new fNOP;return fBound}}if(!Array.prototype.find){Object.defineProperty(Array.prototype,"find",{value:function(predicate){if(this===null){throw new TypeError("Array.prototype.find called on null or undefined")}if(typeof predicate!=="function"){throw new TypeError("predicate must be a function")}var list=Object(this);var length=list.length>>>0;var thisArg=arguments[1];var value;for(var i=0;i<length;i++){value=list[i];if(predicate.call(thisArg,value,i,list)){return value}}return undefined}})}if(!Object.keys){Object.keys=function(){"use strict";var hasOwnProperty=Object.prototype.hasOwnProperty,hasDontEnumBug=!{toString:null}.propertyIsEnumerable("toString"),dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;return function(obj){if(typeof obj!=="function"&&(typeof obj!=="object"||obj===null)){throw new TypeError("Object.keys called on non-object")}var result=[],prop,i;for(prop in obj){if(hasOwnProperty.call(obj,prop)){result.push(prop)}}if(hasDontEnumBug){for(i=0;i<dontEnumsLength;i++){if(hasOwnProperty.call(obj,dontEnums[i])){result.push(dontEnums[i])}}}return result}}()}(function(root,factory){if(typeof define==="function"&&define.amd){define(["domReady"],function(domReady){return root.MCFX=factory(domReady)})}else{root.MCFX=factory(root.domReady)}})(typeof self!=="undefined"?self:this,function(domReady){if(typeof domReady!=="function"){domReady=function(){var fns=[],listener,doc=typeof document==="object"&&document,hack=doc&&doc.documentElement.doScroll,domContentLoaded="DOMContentLoaded",loaded=doc&&(hack?/^loaded|^c/:/^loaded|^i|^c/).test(doc.readyState);if(!loaded&&doc)doc.addEventListener(domContentLoaded,listener=function(){doc.removeEventListener(domContentLoaded,listener);loaded=1;while(listener=fns.shift())listener()});return function(fn){loaded?setTimeout(fn,0):fns.push(fn)}}()}function LMFX(settings){var defaults={id:0,lateInit:false,formMappings:[]};this.settings=Support.merge(defaults,settings);this.forms=[]}LMFX.prototype.setupForms=function(formMappings){if(typeof formMappings!=="undefined"){this.settings.formMappings=formMappings}for(var i=0;i<this.settings.formMappings.length;i++){var settings=this.settings.formMappings[i],form=this.getForm(settings);if(!form)continue;this.setupForm(form,settings);if(Client.features.lmfx){Support.addEvent(form,"submit",this.onFormSubmit.bind(this))}this.forms.push(form)}};LMFX.prototype.setupForm=function(form,formSettings){if(typeof formSettings.id!=="undefined"){form.appendChild(Support.createInput("mcfx_form_id",function(){return formSettings.id}))}if(typeof formSettings.leadType!=="undefined"){form.appendChild(Support.createInput("fx_type",function(){return formSettings.leadType}))}form.appendChild(Support.createInput("lmfx_submit_uuid",Support.uuid4));form.appendChild(Support.createInput("ga_count",Support.get_count));form.appendChild(Support.createInput("ga_id",Support.get_uid))};LMFX.prototype.onFormSubmit=function(event){this.sendFormData(event.currentTarget)};LMFX.prototype.getForm=function(mapping){var form=false,matches="";switch(mapping.selectBy){case"attribute":matches=document.querySelectorAll('[name="'+mapping.selector+'"]');if(matches.length){form=matches[0].form}break;default:form=document.getElementById(mapping.selector);if(!form){form=false;break}if(form.tagName.toLowerCase()!=="form"){matches=document.querySelectorAll("#"+mapping.selector+" form");form=matches.length?matches[0]:false}break}return form};LMFX.prototype.sendFormData=function(form){var data;try{var url=("https:"==document.location.protocol?"https://":"http://")+"t.leadmanagerfx.com/lead/add/";if(this.settings.id!==undefined)url+=this.settings.id;if(navigator.sendBeacon){data=this.collectFormData(form);navigator.sendBeacon(url,data)}else{data=this.collectFormData(form,true);Support.ajax({url:url,type:"POST",data:data,async:false})}}catch(e){}};LMFX.prototype.collectFormData=function(form,asString){asString=typeof asString!=="undefined"?asString:false;if(typeof window.FormData==="undefined")asString=true;var data=!asString?Support.formData(form):Support.serialize(form),utmOverrides=Support.get_utm_overrides();if(asString)data+="&fx_referrer="+encodeURIComponent(Support.get_referrer());else data.append("fx_referrer",Support.get_referrer());if(asString)data+="&fx_document_title="+encodeURIComponent(Support.getCookie("fx_document_title"));else data.append("fx_document_title",Support.getCookie("fx_document_title"));if(asString)data+="&fx_mcfxvsid="+encodeURIComponent(Support.getUserSession());else data.append("fx_mcfxvsid",Support.getUserSession());if(asString&&Support.getCookie("fx_matchtype"))data+="&fx_matchtype="+encodeURIComponent(Support.getCookie("fx_matchtype"));else if(Support.getCookie("fx_matchtype"))data.append("fx_matchtype",Support.getCookie("fx_matchtype"));if(asString&&Support.getCookie("fx_network"))data+="&fx_network="+encodeURIComponent(Support.getCookie("fx_network"));else if(Support.getCookie("fx_network"))data.append("fx_network",Support.getCookie("fx_network"));if(asString&&Support.getCookie("fx_creative"))data+="&fx_creative="+encodeURIComponent(Support.getCookie("fx_creative"));else if(Support.getCookie("fx_creative"))data.append("fx_creative",Support.getCookie("fx_creative"));if(asString&&Support.getCookie("fx_keyword"))data+="&fx_keyword="+encodeURIComponent(Support.getCookie("fx_keyword"));else if(Support.getCookie("fx_keyword"))data.append("fx_keyword",Support.getCookie("fx_keyword"));if(asString&&Support.getCookie("fx_placement"))data+="&fx_placement="+encodeURIComponent(Support.getCookie("fx_placement"));else if(Support.getCookie("fx_placement"))data.append("fx_placement",Support.getCookie("fx_placement"));if(asString&&Support.getCookie("fx_aceid"))data+="&fx_aceid="+encodeURIComponent(Support.getCookie("fx_aceid"));else if(Support.getCookie("fx_aceid"))data.append("fx_aceid",Support.getCookie("fx_aceid"));if(asString&&Support.getCookie("fx_adposition"))data+="&fx_adposition="+encodeURIComponent(Support.getCookie("fx_adposition"));else if(Support.getCookie("fx_adposition"))data.append("fx_adposition",Support.getCookie("fx_adposition"));if(asString&&Support.getCookie("mcfxPGID"))data+="&fx_mcfxpgid="+encodeURIComponent(Support.getCookie("mcfxPGID"));else if(Support.getCookie("mcfxPGID"))data.append("fx_mcfxpgid",Support.getCookie("fx_mcfxpgid"));if(asString&&Support.getCookie("gclid"))data+="&gclid="+encodeURIComponent(Support.getCookie("gclid"));else if(Support.getCookie("gclid"))data.append("gclid",Support.getCookie("gclid"));var utmKeys=Object.keys(utmOverrides);for(var i=0;i<utmKeys.length;i++){var key=utmKeys[i];if(asString)data+="&"+key+"="+encodeURIComponent(utmOverrides[key]);else data.append(key,utmOverrides[key])}return data};function CTFX(settings){var defaults={id:0,CTXname:false};this.settings=Support.merge(defaults,settings);this.startTime=(new Date).getTime();this.visitID=Support.uuid4();this.visits=Support.get_count();this.gaID=Support.get_uid();this.unloading=false;Support.saveQueryStringParams();this.addVisit();if("onpagehide"in window){Support.addEvent(window,"pagehide",function(event){Support.renewUserSession()})}if("onbeforeunload"in window){Support.addEvent(window,"beforeunload",function(event){Support.renewUserSession()})}}CTFX.prototype.addVisit=function(){var data=this.collectData(true);try{var url=("https:"==document.location.protocol?"https://":"http://")+"t.leadmanagerfx.com/visit/add";url+="/"+this.settings.id;if(this.settings.CTXname)url+="?company="+this.settings.CTXname;Support.ajax({url:url,type:"POST",data:data,async:true});Events.last={type:"pageenter"}}catch(e){}};CTFX.prototype.collectData=function(asString){asString=typeof asString!=="undefined"?asString:false;if(typeof window.FormData==="undefined")asString=true;var data=!asString?new FormData:"",utmOverrides=Support.get_utm_overrides();if(asString){data+="ga_count="+this.visits;data+="&ga_id="+this.gaID;data+="&page="+encodeURIComponent(window.location.href.replace(/^(?:\/\/|[^\/]+)*/,""));data+="&time_on_page="+this.startTime;data+="&time_left_page="+(new Date).getTime();data+="&fx_document_title="+encodeURIComponent(Support.getCookie("fx_document_title"));data+="&fx_referrer="+encodeURIComponent(Support.get_referrer());data+="&visitid="+this.visitID;data+="&origin="+window.location.host;data+="&fx_mcfxvsid="+encodeURIComponent(Support.getUserSession())}else{data.append("ga_count",this.visits);data.append("ga_id",this.gaID);data.append("page",encodeURIComponent(window.location.href.replace(/^(?:\/\/|[^\/]+)*/,"")));data.append("time_on_page",this.startTime);data.append("time_left_page",(new Date).getTime());data.append("fx_document_title",Support.getCookie("fx_document_title"));data.append("fx_referrer",Support.get_referrer());data.append("visitid",this.visitID);data.append("origin",window.location.host);data.append("fx_mcfxvsid",Support.getUserSession())}if(asString&&Support.getCookie("fx_matchtype"))data+="&fx_matchtype="+encodeURIComponent(Support.getCookie("fx_matchtype"));else if(Support.getCookie("fx_matchtype"))data.append("fx_matchtype",Support.getCookie("fx_matchtype"));if(asString&&Support.getCookie("fx_network"))data+="&fx_network="+encodeURIComponent(Support.getCookie("fx_network"));else if(Support.getCookie("fx_network"))data.append("fx_network",Support.getCookie("fx_network"));if(asString&&Support.getCookie("fx_creative"))data+="&fx_creative="+encodeURIComponent(Support.getCookie("fx_creative"));else if(Support.getCookie("fx_creative"))data.append("fx_creative",Support.getCookie("fx_creative"));if(Support.getCookie("fx_keyword"))data+="&fx_keyword="+encodeURIComponent(Support.getCookie("fx_keyword"));else if(Support.getCookie("fx_keyword"))data.append("fx_keyword",Support.getCookie("fx_keyword"));if(asString&&Support.getCookie("fx_placement"))data+="&fx_placement="+encodeURIComponent(Support.getCookie("fx_placement"));else if(Support.getCookie("fx_placement"))data.append("fx_placement",Support.getCookie("fx_placement"));if(asString&&Support.getCookie("fx_aceid"))data+="&fx_aceid="+encodeURIComponent(Support.getCookie("fx_aceid"));else if(Support.getCookie("fx_aceid"))data.append("fx_aceid",Support.getCookie("fx_aceid"));if(asString&&Support.getCookie("fx_adposition"))data+="&fx_adposition="+encodeURIComponent(Support.getCookie("fx_adposition"));else if(Support.getCookie("fx_adposition"))data.append("fx_adposition",Support.getCookie("fx_adposition"));if(asString&&Support.getCookie("mcfxPGID"))data+="&fx_mcfxpgid="+encodeURIComponent(Support.getCookie("mcfxPGID"));else if(Support.getCookie("mcfxPGID"))data.append("fx_mcfxpgid",Support.getCookie("fx_mcfxpgid"));if(asString&&Support.getCookie("gclid"))data+="&gclid="+encodeURIComponent(Support.getCookie("gclid"));else if(Support.getCookie("gclid"))data.append("gclid",Support.getCookie("gclid"));var utmKeys=Object.keys(utmOverrides);for(var i=0;i<utmKeys.length;i++){var key=utmKeys[i];if(asString)data+="&"+key+"="+encodeURIComponent(utmOverrides[key]);else data.append(key,utmOverrides[key])}return data};var Recorder=function(settings){var defaults={enabled:false,captureInputs:false};this.settings=Support.merge(defaults,settings);this.userSession=Support.getUserSession();this.capturing=false;this.paused=true;this.frameTimer=false;this.pingTimer=false;this.frameData=[];this.frames=[];this.frameEvents=[];this.mousePosition={x:0,y:0};if(!this.settings.enabled){return}this.onMouseMove=this.onMouseMove.bind(this);this.onMouseOver=this.onMouseOver.bind(this);this.onMouseOut=this.onMouseOut.bind(this);this.onClick=this.onClick.bind(this);this.onScroll=this.onScroll.bind(this);this.onVisibilityChange=this.onVisibilityChange.bind(this);this.onBeforeUnload=this.onBeforeUnload.bind(this);this.onInputChange=this.onInputChange.bind(this);this.onFocus=this.onFocus.bind(this);this.onBlur=this.onBlur.bind(this);this.captureFrame=this.captureFrame.bind(this);this.captureEvent=this.captureEvent.bind(this);this.sendCapturedFrames=this.sendCapturedFrames.bind(this);this.maybePauseCapture=this.maybePauseCapture.bind(this);if(typeof Storage!=="undefined"&&localStorage.mcfxRecorderFrames){Support.ajax({url:("https:"==document.location.protocol?"https://":"http://")+"recorder.marketingcloudfx.com",type:"POST",dataType:"json",data:localStorage.mcfxRecorderFrames,async:true});localStorage.removeItem("mcfxRecorderFrames")}};Recorder.prototype.start=function(){if(!this.settings.enabled){return}Support.addEvent(document,"mousemove",this.onMouseMove);Support.addEvent(document,"mouseover",this.onMouseOver);Support.addEvent(document,"mouseout",this.onMouseOut);Support.addEvent(document,"focusin",this.onFocus);Support.addEvent(document,"focusout",this.onBlur);Support.addEvent(document,"click",this.onClick);Support.addEvent(document,"scroll",this.onScroll);if(this.settings.captureInputs){if("oninput"in document.createElement("input")){Support.addEvent(document,"input",this.onInputChange)}else{Support.addEvent(document,"keyup",this.onInputChange)}Support.addEvent(document,"change",this.onInputChange)}if(typeof document.addEventListener!=="undefined"&&Support.getVisibilityProp()!==false){Support.addEvent(document,Support.getVisibilityEvent(),this.onVisibilityChange)}if("onpagehide"in window){Support.addEvent(window,"pagehide",this.onBeforeUnload)}else{Support.addEvent(window,"beforeunload",this.onBeforeUnload)}this.capturing=true;this.paused=false;this.lastEventTime=Math.floor(new Date/1e3);this.frameTimer=setInterval(this.captureFrame,50);this.pingTimer=setInterval(this.sendCapturedFrames,6e4);this.pauseTimer=setInterval(this.maybePauseCapture,1e3)};Recorder.prototype.stop=function(){Support.removeEvent(document,"mouseover",this.onMouseOver);Support.removeEvent(document,"mouseout",this.onMouseOut);Support.removeEvent(document,"focusin",this.onFocus);Support.removeEvent(document,"focusout",this.onBlur);Support.removeEvent(document,"click",this.onClick);Support.removeEvent(document,"scroll",this.onScroll);if(this.settings.captureInputs){if("oninput"in document.createElement("input")){Support.removeEvent(document,"input",this.onInputChange)}else{Support.removeEvent(document,"keyup",this.onInputChange)}Support.removeEvent(document,"change",this.onInputChange)}if(typeof document.addEventListener!=="undefined"&&Support.getVisibilityProp()!==false){Support.removeEvent(document,Support.getVisibilityEvent(),this.onVisibilityChange)}if("onpagehide"in window){Support.removeEvent(window,"pagehide",this.onBeforeUnload)}else{Support.removeEvent(window,"beforeunload",this.onBeforeUnload)}this.capturing=false;this.paused=true;clearInterval(this.frameTimer);clearInterval(this.pingTimer);clearInterval(this.pauseTimer)};Recorder.prototype.pause=function(){if(true===this.paused)return;this.paused=true;this.sendCapturedFrames();clearInterval(this.frameTimer);clearInterval(this.pingTimer);clearInterval(this.pauseTimer)};Recorder.prototype.unpause=function(){if(false===this.paused)return;this.paused=false;this.frameTimer=setInterval(this.captureFrame,50);this.pingTimer=setInterval(this.sendCapturedFrames,6e4);this.pauseTimer=setInterval(this.maybePauseCapture,1e3)};Recorder.prototype.maybePauseCapture=function(){if(Math.floor(new Date/1e3)-this.lastEventTime>10){this.pause()}};Recorder.prototype.captureEvent=function(event){this.lastEventTime=Math.floor(new Date/1e3);this.unpause();if(typeof event!=="undefined"){this.frameEvents.push(event)}};Recorder.prototype.getAttributesPairs=function(attributes){if("undefined"===typeof attributes)return{};var pairs={},props=["id","class","name"];for(var i in props){var propName=props[i],prop=attributes.getNamedItem(propName);if(null===prop)continue;pairs[propName]=prop.value}return pairs};Recorder.prototype.captureFrame=function(){if(!this.capturing)return;var frame={session:Support.getUserSession(),time:Date.now(),scroll:this.captureScroll(),mouse:this.captureMouse(),events:this.frameEvents,page:window.location.href,size:Support.viewport()};this.frameData.push(frame);this.frameEvents=[]};Recorder.prototype.onInputChange=function(event){var el=event.srcElement||event.target,capture={};capture={type:"input",el:this.getAttributesPairs(el.attributes),form:typeof el.form!=="undefined"&&el.form!==null&&typeof el.form.attributes!=="undefined"?this.getAttributesPairs(el.form.attributes):""};if(typeof el.attributes["name"]==="undefined")return;if(Support.isAllowedField(el.attributes["name"].name,el.value,el)){capture.value=el.value}else{capture.value="********"}this.captureEvent(capture)};Recorder.prototype.onClick=function(event){var t=event.srcElement||event.target;var capture={type:"click",el:this.getAttributesPairs(t.attributes),form:"",value:""};this.captureEvent(capture)};Recorder.prototype.onMouseOver=function(event){event=event||window.event;var t=event.srcElement||event.target;var capture={type:"mouseover",el:this.getAttributesPairs(t.attributes),form:"",value:""};this.captureEvent(capture)};Recorder.prototype.onMouseOut=function(event){event=event||window.event;var t=event.srcElement||event.target;var capture={type:"mouseout",el:this.getAttributesPairs(t.attributes),form:"",value:""};this.captureEvent(capture)};Recorder.prototype.onFocus=function(event){var t=event.srcElement||event.target;if(t)var capture={type:"focus",el:this.getAttributesPairs(t.attributes),form:typeof t.form!=="undefined"&&t.form!==null&&typeof t.form.attributes!=="undefined"?this.getAttributesPairs(t.form.attributes):""};this.captureEvent(capture)};Recorder.prototype.onBlur=function(event){var t=event.srcElement||event.target;var capture={type:"blur",el:this.getAttributesPairs(t.attributes),form:typeof t.form!=="undefined"&&t.form!==null&&typeof t.form.attributes!=="undefined"?this.getAttributesPairs(t.form.attributes):""};this.captureEvent(capture)};Recorder.prototype.onMouseMove=function(event){this.mousePosition={x:event.pageX,y:event.pageY};this.captureEvent()};Recorder.prototype.onVisibilityChange=function(){switch(document[Support.getVisibilityState()]){case"visible":this.captureEvent();break;case"hidden":this.pause();break}};Recorder.prototype.onBeforeUnload=function(event){if(!this.settings.enabled){return}this.sendCapturedFrames(true)};Recorder.prototype.captureScroll=function(){return{x:Support.pageOffset?window.pageXOffset:Support.isCSS1Compat?document.documentElement.scrollLeft:document.body.scrollLeft,y:Support.pageOffset?window.pageYOffset:Support.isCSS1Compat?document.documentElement.scrollTop:document.body.scrollTop}};Recorder.prototype.onScroll=function(event){this.captureEvent()};Recorder.prototype.captureMouse=function(){return this.mousePosition};Recorder.prototype.sendCapturedFrames=function(onUnload){if(this.frameData.length===0)return;onUnload=typeof onUnload!=="undefined"?onUnload:false;if(true===onUnload){if(typeof Storage!=="undefined"){localStorage.mcfxRecorderFrames=JSON.stringify(this.frameData)}return}Support.ajax({url:("https:"==document.location.protocol?"https://":"http://")+"recorder.marketingcloudfx.com",type:"POST",dataType:"json",data:JSON.stringify(this.frameData),async:true});this.frameData=[]};var Reviews=function(Client){this.el=null;this.url=("https:"==document.location.protocol?"https://":"http://")+"cdn.leadmanagerfx.com/reviews/"+Client.id+"/";this.reviews=[];this.ready=false};Reviews.prototype.fetch=function(){var that=this;Support.ajax({type:"GET",url:that.url,async:true,onComplete:function(response){response=JSON.parse(response);that.el=response.selector;that.reviews=response.reviews;that.ready=true}})};Reviews.prototype.render=function(){if(!this.ready){var that=this;setTimeout(function(){that.render()},2e3);return}var $el=document.getElementById(this.el);if(!$el)return;var count=this.reviews.length,i=0;var html='<div class="mcfx-reviews">';while(i<count){html+=this.renderOne(this.reviews[i]);i++}html+="</div>";$el.innerHTML=html};Reviews.prototype.renderOne=function(review){var html='<div class="mcfx-review" itemprop="review" itemscope itemtype="http://schema.org/Review">';html+='<span class="mcfx-review-author" itemprop="author">'+review.author_name+"</span> ";html+='<span class="mcfx-review-date" itemprop="datePublished">'+review.date+"</span>";html+='<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">';html+='<meta itemprop="worstRating" content = "1"/>';html+='<span class="mcfx-review-number-rating">';html+='<span class="mcfx-review-rating" itemprop="ratingValue">'+review.rating+"</span>/";html+='<span class="mcfx-review-max" itemprop="bestRating">5</span> stars';html+="</span>";html+='<span class="mcfx-review-stars">';var i;for(i=1;i<=5;i++){if(review.rating>=i){html+='<span class="mcfx-star mcfx-star-active"></span>'}}html+="</span>";html+="</div>";html+='<span class="mcfx-review-description" itemprop="reviewBody">'+review.text+"</span>";html+="</div>";return html};var Events={isIdle:false,isIdleTrack:null,idleInterval:6e4,last:null,send:function(type,data){payload={type:type,date:(new Date).getTime(),visitId:ctfx.visitID,visitorId:Support.get_uid(),sessionId:Support.getUserSession(),meta:typeof data!==undefined?data:null};if(Events.last&&payload.type===Events.last.type&&payload.date-Events.last.date<101){Events.last=payload;return}if(Events.last&&payload.type==="pageactive"&&Events.last.type==="pageenter"){Events.last=payload;return}if(Events.last&&payload.type==="pageactive"&&Events.last.type==="pageactive"){Events.last=payload;return}if(Events.last&&payload.type==="pageinactive"&&Events.last.type==="pageinactive"){Events.last=payload;return}if(Events.last&&Events.last.type==="pageleave"){Events.last=payload;return}var url=("https:"==document.location.protocol?"https://":"http://")+"t.leadmanagerfx.com";if(navigator.sendBeacon){navigator.sendBeacon(url,new Blob([JSON.stringify(payload)],{type:"text/plain; charset=UTF-8"}))}else{Support.ajax({url:url,type:"POST",data:JSON.stringify(payload),async:false})}Events.last=payload},track:function(){Events.isIdleTrack=setTimeout(Events.onIdle,Events.idleInterval);Support.addEvent(document,"mousemove",Events.wakeup);if(typeof document.addEventListener!=="undefined"&&Support.getVisibilityProp()!==false){Support.addEvent(document,Support.getVisibilityEvent(),function(event){if(document[Support.getVisibilityProp()]&&false===Events.isIdle){Events.isIdle=true;Events.send("pageinactive");clearTimeout(Events.isIdleTrack)}else if(!document[Support.getVisibilityProp]&&true===Events.isIdle){Events.send("pageactive");Events.isIdle=false;Events.isIdleTrack=setTimeout(Events.onIdle,Events.idleInterval)}})}if("onpagehide"in window){Support.addEvent(window,"pagehide",function(){Events.send("pageleave")})}else{Events.send("pageleave");Support.addEvent(window,"beforeunload",function(){Events.send("pageleave")})}},onIdle:function(){Events.send("pageinactive");Events.isIdle=true},wakeup:function(event){var dot,eventDoc,doc,body,pageX,pageY;event=event||window.event;if(event.pageX==null&&event.clientX!=null){eventDoc=event.target&&event.target.ownerDocument||document;doc=eventDoc.documentElement;body=eventDoc.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0)}if(Events.isIdle){Events.isIdle=false;Events.send("pageactive")}clearTimeout(Events.isIdleTrack);Events.isIdleTrack=setTimeout(Events.onIdle,Events.idleInterval);if(recorder.settings.enabled&&!recorder.paused)recorder.onMouseMove(event)}};var Support={pageOffset:window.pageXOffset!==undefined,isCSS1Compat:(document.compatMode||"")==="CSS1Compat",getUserSession:function(){if(!!Support.userSession){return Support.userSession}if(Support.getCookie("mcfxVSID")){Support.userSession=Support.getCookie("mcfxVSID");return Support.userSession}Support.generateUserSession();return Support.userSession},generateUserSession:function(){Support.userSession=Support.uuid4();Support.renewUserSession();return Support.userSession},renewUserSession:function(){var now=new Date;Support.setCookie("mcfxVSID",Support.getUserSession(),Support.dateModify(now,10,"minute"));if(Support.getCookie("gclid")){Support.setCookie("gclid",Support.getCookie("gclid"),Support.dateModify(now,10,"minute"))}},getDomainName:function(){if(typeof Support.domain!=="undefined"&&Support.domain!=="")return Support.domain;var i=0,domain=document.domain,p=domain.split("."),s="_gd"+(new Date).getTime();while(i<p.length-1&&document.cookie.indexOf(s+"="+s)==-1){domain=p.slice(-1-++i).join(".");document.cookie=s+"="+s+";domain="+domain+";"}document.cookie=s+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain="+domain+";";Support.domain=domain;return Support.domain},merge:function(){var obj={},i=0,il=arguments.length,key;for(;i<il;i++){for(key in arguments[i]){if(arguments[i].hasOwnProperty(key)){obj[key]=arguments[i][key]}}}return obj},createInput:function(field,valueFn){var newElement=document.createElement("input");newElement.type="hidden";newElement.name=field;newElement.value=valueFn();return newElement},ajax:function(params){var AJAX,isXDR;if(window.XDomainRequest){AJAX=new XDomainRequest;isXDR=true}else{AJAX=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");isXDR=false}var defaults={url:"",type:"GET",data:"",dataType:"",async:true,timeout:3e3,onComplete:function(response){},onError:function(response){}};params=typeof params!=="undefined"?params:{};params=Support.merge(defaults,params);if(!isXDR){AJAX.onreadystatechange=function(){if(AJAX.readyState==4){if(AJAX.status==200){params.onComplete(AJAX.responseText)}else if(AJAX.status==400){params.onError(AJAX.responseText)}}};AJAX.open(params.type,params.url,params.async);if(params.type==="POST"&&params.dataType!=="json"){AJAX.setRequestHeader("Content-type","application/x-www-form-urlencoded")}}else{AJAX.timeout=params.timeout;AJAX.onload=function(){params.onComplete(AJAX.responseText)};AJAX.onerror=function(){params.onError(AJAX.responseText)};AJAX.ontimeout=function(){};AJAX.onprogress=function(){};AJAX.open(params.type,params.url)}AJAX.send(params.data)},addEvent:function(obj,type,fn){if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event)};obj.attachEvent("on"+type,obj[type+fn])}else obj.addEventListener(type,fn,false)},removeEvent:function(obj,type,fn){try{obj.removeEventListener(type,fn,false)}catch(e){obj.detachEvent("on"+type,fn)}},getCookie:function(c_name){var i,x,y,ARRcookies=document.cookie.split(";");for(i=0;i<ARRcookies.length;i++){x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);x=x.replace(/^\s+|\s+$/g,"");if(x==c_name){return unescape(y)}}},setCookie:function(c_name,value,expire){var cookieExpires="";if(expire instanceof Date){cookieExpires=" expires="+expire.toUTCString()}else if(expire>0){var exdate=new Date;exdate.setDate(exdate.getDate()+expire);cookieExpires=" expires="+exdate.toUTCString()}var c_value=escape(value)+"; path=/; domain="+this.getDomainName()+"; "+cookieExpires;document.cookie=c_name+"="+c_value},deleteCookie:function(c_name){Support.setCookie(c_name,null,-1)},get_uid:function(){if(Support.getCookie("fx_uuid")!=undefined){return Support.getCookie("fx_uuid")}else{var uuid=Support.uuid4();Support.setCookie("fx_uuid",uuid,365*2);return uuid}},get_count:function(){var count=Support.getCookie("fx_count");if(count==undefined){count=0}return parseInt(count)},get_referrer:function(){var referrer=Support.getCookie("fx_referrer");if(referrer==undefined){return undefined}return referrer.substr(0,referrer.length-1)},set_referrer:function(referrer){if(referrer)Support.setCookie("fx_referrer",referrer,7);else Support.setCookie("fx_referrer",document.referrer,7)},get_utm_overrides:function(){var data={};if(Support.getQueryStringParams("utm_source")){data.utm_source=Support.getQueryStringParams("utm_source");Support.setCookie("utm_source",Support.getQueryStringParams("utm_source"),1)}else if(Support.getCookie("utm_source")!==undefined){data.utm_source=Support.getCookie("utm_source")}if(Support.getQueryStringParams("utm_medium")){data.utm_medium=Support.getQueryStringParams("utm_medium");Support.setCookie("utm_medium",Support.getQueryStringParams("utm_medium"),1)}else if(Support.getCookie("utm_medium")!==undefined){data.utm_medium=Support.getCookie("utm_medium")}if(Support.getQueryStringParams("utm_segment")){data.utm_segment=Support.getQueryStringParams("utm_segment");Support.setCookie("utm_segment",Support.getQueryStringParams("utm_segment"),1)}else if(Support.getCookie("utm_segment")!==undefined){data.utm_segment=Support.getCookie("utm_segment")}if(Support.getQueryStringParams("utm_campaign")){data.utm_campaign=Support.getQueryStringParams("utm_campaign");Support.setCookie("utm_campaign",Support.getQueryStringParams("utm_campaign"),1)}else if(Support.getCookie("utm_campaign")!==undefined){data.utm_campaign=Support.getCookie("utm_campaign")}return data},register_load:function(){var referrer=Support.get_referrer();if(referrer==undefined){Support.set_referrer()}if(Support.getCookie("fx_document_title")==undefined){Support.setCookie("fx_document_title",document.title,0)}var count=Support.get_count();count+=1;Support.setCookie("fx_count",count,365*2);if(Support.getCookie("utm_source")!==undefined){Support.setCookie("utm_source",Support.getCookie("utm_source"),1)}if(Support.getCookie("utm_medium")!==undefined){Support.setCookie("utm_medium",Support.getCookie("utm_medium"),1)}if(Support.getCookie("utm_segment")!==undefined){Support.setCookie("utm_segment",Support.getCookie("utm_segment"),1)}if(Support.getCookie("utm_campaign")!==undefined){Support.setCookie("utm_campaign",Support.getCookie("utm_campaign"),1)}},formData:function(form){if(!form||form.nodeName!=="FORM"){return}var i=form.elements.length-1,fd=new FormData,j;for(i;i>=0;i=i-1){if(form.elements[i].name===""||form.elements[i].name=="company_name"||form.elements[i].name=="imahuman"||form.elements[i].name=="captcha"){continue}if(!Support.isAllowedField(form.elements[i].name,form.elements[i].value)){fd.append(form.elements[i].name,"********");continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"checkbox":case"radio":if(form.elements[i].checked){fd.append(form.elements[i].name,form.elements[i].value)}break;case"file":break;case"password":fd.append(form.elements[i].name,"********");break;default:fd.append(form.elements[i].name,form.elements[i].value);break}break;case"TEXTAREA":fd.append(form.elements[i].name,form.elements[i].value);break;case"SELECT":switch(form.elements[i].type){case"select-one":fd.append(form.elements[i].name,form.elements[i].value);break;case"select-multiple":var bracketAppend=/([a-zA-Z0-9]+\[\]$)/.test(form.elements[i].name)?"":"[]";
for(j=form.elements[i].options.length-1;j>=0;j=j-1){if(form.elements[i].options[j].selected){fd.append(form.elements[i].name+bracketAppend,form.elements[i].options[j].value)}}break}break}}return fd},serialize:function(form){if(!form||form.nodeName!=="FORM"){return}var i,j,q=[];for(i=form.elements.length-1;i>=0;i=i-1){if(form.elements[i].name===""||form.elements[i].name=="company_name"||form.elements[i].name=="imahuman"||form.elements[i].name=="captcha"){continue}if(!Support.isAllowedField(form.elements[i].name,form.elements[i].value)){q.push(form.elements[i].name+"="+encodeURIComponent("********"));continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"checkbox":case"radio":if(form.elements[i].checked){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value))}break;case"file":break;case"password":q.push(form.elements[i].name+"="+encodeURIComponent("********"));break;default:q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"select-multiple":for(j=form.elements[i].options.length-1;j>=0;j=j-1){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break}}return q.join("&")},uuid4:function(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options==="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||Support.rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||Support.bytesToUuid(rnds)},bytesToUuid:function(buf,offset){if(!this.byteToHex){this.byteToHex=[];for(var i=0;i<256;++i){this.byteToHex[i]=(i+256).toString(16).substr(1)}}var i=offset||0;var bth=this.byteToHex;return[bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]]].join("")},rng:function(){var getRandomValues=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof window.msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto);if(getRandomValues){var rnds8=new Uint8Array(16);getRandomValues(rnds8);return rnds8}else{var rnds=new Array(16);for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}},randomInt:function(){return Math.floor(4294967296*Math.random())},getQueryStringParams:function(name){return decodeURIComponent((new RegExp("[?|&]"+name+"="+"([^&;]+?)(&|#|;|$)").exec(location.search)||[null,""])[1].replace(/\+/g,"%20"))||null},saveQueryStringParams:function(){var vars=[],hash;var supportedNames={fx_matchtype:true,fx_network:true,fx_creative:true,fx_keyword:true,fx_placement:true,fx_aceid:true,fx_adposition:true,utm_campaign:true,utm_source:true,utm_medium:true,gclid:true};var utm=[];var hashes=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(var i=0;i<hashes.length;i++){hash=hashes[i].split("=");if(hash[0].toLowerCase().substr(0,4)==="utm_"){utm.push({key:hash[0],value:hash[1]})}if(supportedNames[hash[0]]){if(Support.getCookie(hash[0])==undefined){Support.setCookie(hash[0],hash[1],0)}}}if(Support.getCookie("mcfxUTM")!==undefined){Support.setCookie("mcfxUTM",Support.getCookie("mcfxUTM"),1)}else if(utm.length){Support.setCookie("mcfxUTM",JSON.stringify(utm),1)}return vars},getUTMParams:function(){var utm=Support.getCookie("mcfxUTM");if(utm===undefined)return[];return JSON.parse(utm)},isNodeList:function(nodes){var stringRepr=Object.prototype.toString.call(nodes);return typeof nodes==="object"&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr)&&typeof nodes.length==="number"&&(nodes.length===0||typeof nodes[0]==="object"&&nodes[0].nodeType>0)},viewport:function(){var w=0;var h=0;if(!window.innerWidth){if(!(document.documentElement.clientWidth==0)){w=document.documentElement.clientWidth;h=document.documentElement.clientHeight}else{w=document.body.clientWidth;h=document.body.clientHeight}}else{w=window.innerWidth;h=window.innerHeight}return{width:w,height:h}},dateModify:function(date,modifier,units){var ret=new Date(date);switch(units.toLowerCase()){case"year":ret.setFullYear(ret.getFullYear()+modifier);break;case"quarter":ret.setMonth(ret.getMonth()+3*modifier);break;case"month":ret.setMonth(ret.getMonth()+modifier);break;case"week":ret.setDate(ret.getDate()+7*modifier);break;case"day":ret.setDate(ret.getDate()+modifier);break;case"hour":ret.setTime(ret.getTime()+modifier*36e5);break;case"minute":ret.setTime(ret.getTime()+modifier*6e4);break;case"second":ret.setTime(ret.getTime()+modifier*1e3);break;default:ret=undefined;break}return ret},getVisibilityProp:function(){if(typeof document.hidden!=="undefined"){return"hidden"}else if(typeof document.mozHidden!=="undefined"){return"mozHidden"}else if(typeof document.msHidden!=="undefined"){return"msHidden"}else if(typeof document.webkitHidden!=="undefined"){return"webkitHidden"}return false},getVisibilityEvent:function(){if(typeof document.hidden!=="undefined"){return"visibilitychange"}else if(typeof document.mozHidden!=="undefined"){return"mozvisibilitychange"}else if(typeof document.msHidden!=="undefined"){return"msvisibilitychange"}else if(typeof document.webkitHidden!=="undefined"){return"webkitvisibilitychange"}return false},getVisibilityState:function(){if(typeof document.hidden!=="undefined"){return"visibilityState"}else if(typeof document.mozHidden!=="undefined"){return"mozVisibilityState"}else if(typeof document.msHidden!=="undefined"){return"msVisibilityState"}else if(typeof document.webkitHidden!=="undefined"){return"webkitVisibilityState"}return false},isAllowedField:function(fName,fValue,element){if(typeof fName==="undefined"||fName==="")return true;if(typeof fValue==="undefined"||fValue==="")return true;fValue=fValue.trim();if(typeof element!=="undefined"&&typeof element.attributes["type"]!=="undefined"&&element.attributes["type"].name.toLowerCase()==="password"){return false}fName=fName.toLowerCase();if(/password/.test(fName)||/pin[_-]?(num(ber)?)?/.test(fName)||/credit[_-]?card/.test(fName)||/card[_-]?number/.test(fName)||/cc[_-]?num(ber)?/.test(fName)||/cvv/.test(fName)||Support.valid_cc(fValue)||/^\d{3}-\d{2}-\d{4}$/.test(fValue)||/social[_-]?(security)?[_-]?(num(ber)?)?/.test(fName)){return false}return true},valid_cc:function(value){if(/[^0-9-\s]+/.test(value))return false;if(String(value).length<12||String(value).length>19)return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(var n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9}nCheck+=nDigit;bEven=!bEven}return nCheck%10==0},upgradeCookies:function(){var cookies=[{name:"fx_matchtype",expire:1},{name:"fx_network",expire:1},{name:"fx_creative",expire:1},{name:"fx_keyword",expire:1},{name:"fx_placement",expire:1},{name:"fx_aceid",expire:1},{name:"fx_adposition",expire:1},{name:"mcfxVSID",expire:this.dateModify(new Date,10,"minute")},{name:"utm_source",expire:1},{name:"utm_medium",expire:1},{name:"utm_segment",expire:1},{name:"utm_campaign",expire:1},{name:"fx_referrer",expire:7},{name:"fx_document_title",expire:0},{name:"fx_uuid",expire:730},{name:"fx_count",expire:730}],count=cookies.length;if(this.getCookie("mcfxCookiesVersion")==2)return;for(var i=0;i<count;i++){if(this.getCookie(cookies[i].name)){value=this.getCookie(cookies[i].name);document.cookie=cookies[i].name+"="+value+"; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;";this.setCookie(cookies[i].name,value,cookies[i].expire)}}this.setCookie("mcfxCookiesVersion",2,730)}};Support.upgradeCookies();Support.register_load();var Client={id:1933,originalId:1933,lateInit:false,url:"biohitech.com/",formMappings:[{"id":"5dcd8c93571a0f3571eb3657","selectBy":"id","selector":"contact-form","leadType":"Contact Us"}],features:{lmfx:true,ctfx:true,recorder:false,reviews:false},Recorder:{enabled:false,captureInputs:false}},lmfx=new LMFX(Client),ctfx=new CTFX(Client),recorder=new Recorder(Client.Recorder),reviews=new Reviews(Client);if(Client.features.reviews){reviews.fetch()}domReady(function(){if(parseInt(Support.getQueryStringParams("mcfxdebug"))===1){Support.ajax({type:"GET",url:("https:"==document.location.protocol?"https://":"http://")+"api.leadmanagerfx.com/js/mcfx/options/"+Client.id,onComplete:function(response){formMappings=JSON.parse(response);lmfx.setupForms(formMappings)}})}else{if(Client.lateInit){setTimeout(function(){lmfx.setupForms()},5e3)}else{lmfx.setupForms()}}if(Client.features.recorder){recorder.start()}if(Client.features.reviews){reviews.render()}Events.track();if(window==top){setTimeout(function(){var frames=document.querySelectorAll("iframe");var params=Support.getUTMParams();var vals={};params.forEach(function(p){vals[p.key]=p.value});vals.referrer=Support.get_referrer();vals=JSON.stringify(vals);frames.forEach(function(frame){frame.contentWindow.postMessage(vals,"*")})},6e3)}else{window.addEventListener("message",function(event){var origin=event.origin.replace(/https?:\/\//,"");if(origin!=Client.url){return}var data=JSON.parse(event.data);if(typeof data.referrer!=="undefined"){Support.set_referrer(data.referrer)}if(typeof data.utm_source!=="undefined"){Support.setCookie("utm_source",data.utm_source,1)}if(typeof data.utm_medium!=="undefined"){Support.setCookie("utm_medium",data.utm_medium,1)}if(typeof data.utm_segment!=="undefined"){Support.setCookie("utm_segment",data.utm_segment,1)}if(typeof data.utm_campaign!=="undefined"){Support.setCookie("utm_campaign",data.utm_campaign,1)}},false)}});return{setClientId:function(clientID){Client.id=clientID;lmfx.settings.id=clientID;ctfx.settings.id=clientID},restoreOriginalId:function(){Client.id=Client.originalId;lmfx.settings.id=Client.originalId;ctfx.settings.id=Client.originalId},getSessionId:function(){return Support.getUserSession()},getUTMParams:function(){return Support.getUTMParams()},Form:{getConfig:function(selector){if(typeof selector==="undefined")return lmfx.settings.formMappings;return lmfx.settings.formMappings.find(function(element,index,array){return element.selector===selector})},setup:function(form,formSettings){lmfx.setupForm(form,formSettings)},submit:function(form){lmfx.sendFormData(form)},rebindForm:function(selector){var config=MCFX.Form.getConfig(selector),form=lmfx.getForm(config);if(!form)return;lmfx.setupForm(form,config);Support.addEvent(form,"submit",lmfx.onFormSubmit.bind(lmfx));lmfx.forms.push(form)},rebindAll:function(){lmfx.setupForms(MCFX.Form.getConfig())}},Recorder:{start:function(){recorder.start()},stop:function(){recorder.stop()},status:function(){return{capturing:recorder.capturing,paused:recorder.paused}}},Cookie:{get:function(c_name){return Support.getCookie(c_name)},set:function(c_name,value,exdays){return Support.setCookie(c_name,value,exdays)},delete:function(c_name){return Support.deleteCookie(c_name)}},Settings:{get:function(){return Client}},uuid:function(){return Support.uuid4()},getFormConfig:function(selector){if(typeof selector==="undefined")return lmfx.settings.formMappings;return lmfx.settings.formMappings.find(function(element,index,array){return element.selector===selector})},setupFormData:function(form,formSettings){lmfx.setupForm(form,formSettings)},submitForm:function(form){lmfx.sendFormData(form)},getCookie:function(c_name){return Support.getCookie(c_name)},setCookie:function(c_name,value,exdays){return Support.setCookie(c_name,value,exdays)},deleteCookie:function(c_name){return Support.deleteCookie(c_name)}}});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment