Skip to content

Instantly share code, notes, and snippets.

@kerstvo
Last active July 14, 2016 20:01
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 kerstvo/581e5742f594f2bd2ca1e43d8eec9a25 to your computer and use it in GitHub Desktop.
Save kerstvo/581e5742f594f2bd2ca1e43d8eec9a25 to your computer and use it in GitHub Desktop.
// source https://github.com/medius/utm_form
var UtmCookie;UtmCookie=function(){function e(e){null==e&&(e={}),this._cookieNamePrefix="_uc_",this._domain=e.domain,this._sessionLength=e.sessionLength||1,this._cookieExpiryDays=e.cookieExpiryDays||365,this._additionalParams=e.additionalParams||[],this._utmParams=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],this.writeInitialReferrer(),this.writeLastReferrer(),this.writeInitialLandingPageUrl(),this.setCurrentSession(),this.additionalParamsPresentInUrl()&&this.writeAdditionalParams(),this.utmPresentInUrl()&&this.writeUtmCookieFromParams()}return e.prototype.createCookie=function(e,t,i,r,o,a){var n,s,l,m,d,u;u=null,i&&(d=new Date,d.setTime(d.getTime()+24*i*60*60*1e3),u=d),s=null!=u?"; expires="+u.toGMTString():"",l=null!=r?"; path="+r:"; path=/",n=null!=o?"; domain="+o:"",m=null!=a?"; secure":"",document.cookie=this._cookieNamePrefix+e+"="+escape(t)+s+l+n+m},e.prototype.readCookie=function(e,t){var i,r,o,a;for(t=t||!1,a=t?e+"=":this._cookieNamePrefix+e+"=",r=document.cookie.split(";"),o=0;o<r.length;){for(i=r[o];" "===i.charAt(0);)i=i.substring(1,i.length);if(0===i.indexOf(a))return i.substring(a.length,i.length);o++}return null},e.prototype.eraseCookie=function(e){this.createCookie(e,"",-1,null,this._domain)},e.prototype.getParameterByName=function(e){var t,i,r;return e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]"),i="[\\?&]"+e+"=([^&#]*)",t=new RegExp(i),r=t.exec(window.location.search),r?decodeURIComponent(r[1].replace(/\+/g," ")):""},e.prototype.additionalParamsPresentInUrl=function(){var e,t,i,r;for(r=this._additionalParams,e=0,t=r.length;t>e;e++)if(i=r[e],this.getParameterByName(i))return!0;return!1},e.prototype.utmPresentInUrl=function(){var e,t,i,r;for(r=this._utmParams,e=0,t=r.length;t>e;e++)if(i=r[e],this.getParameterByName(i))return!0;return!1},e.prototype.writeCookie=function(e,t){this.createCookie(e,t,this._cookieExpiryDays,null,this._domain)},e.prototype.writeAdditionalParams=function(){var e,t,i,r,o;for(r=this._additionalParams,e=0,t=r.length;t>e;e++)i=r[e],o=this.getParameterByName(i),this.writeCookie(i,o)},e.prototype.writeUtmCookieFromParams=function(){var e,t,i,r,o;for(r=this._utmParams,e=0,t=r.length;t>e;e++)i=r[e],o=this.getParameterByName(i),this.writeCookie(i,o)},e.prototype.writeCookieOnce=function(e,t){var i;i=this.readCookie(e),i||this.writeCookie(e,t)},e.prototype._sameDomainReferrer=function(e){var t;return t=document.location.hostname,e.indexOf(this._domain)>-1||e.indexOf(t)>-1},e.prototype._isInvalidReferrer=function(e){return""===e||void 0===e},e.prototype.writeInitialReferrer=function(){var e;e=document.referrer,this._isInvalidReferrer(e)&&(e="direct"),this.writeCookieOnce("referrer",e)},e.prototype.writeLastReferrer=function(){var e;e=document.referrer,this._sameDomainReferrer(e)||(this._isInvalidReferrer(e)&&(e="direct"),this.writeCookie("last_referrer",e))},e.prototype.writeInitialLandingPageUrl=function(){var e;e=this.cleanUrl(),e&&this.writeCookieOnce("initial_landing_page",e)},e.prototype.initialReferrer=function(){return this.readCookie("referrer")},e.prototype.lastReferrer=function(){return this.readCookie("last_referrer")},e.prototype.initialLandingPageUrl=function(){return this.readCookie("initial_landing_page")},e.prototype.incrementVisitCount=function(){var e,t,i;e="visits",t=parseInt(this.readCookie(e),10),i=1,i=isNaN(t)?1:t+1,this.writeCookie(e,i)},e.prototype.visits=function(){return this.readCookie("visits")},e.prototype.setCurrentSession=function(){var e,t;e="current_session",t=this.readCookie(e),t||(this.createCookie(e,"true",this._sessionLength/24,null,this._domain),this.incrementVisitCount())},e.prototype.cleanUrl=function(){var e;return e=window.location.search.replace(/utm_[^&]+&?/g,"").replace(/&$/,"").replace(/^\?$/,""),window.location.origin+window.location.pathname+e+window.location.hash},e.prototype.getGaId=function(){var e=this.readCookie("_ga",!0),t="vid"+(Math.floor(899999999*Math.random())+1e8);return e&&(e=e.split("."),void 0!==e[2]&&(t="gaid"+e[2])),t},e}(),UtmForm=function(){function e(e){null==e&&(e={}),this._utmParamsMap={},this._utmParamsMap.utm_source=e.utm_source_field||"USOURCE",this._utmParamsMap.utm_medium=e.utm_medium_field||"UMEDIUM",this._utmParamsMap.utm_campaign=e.utm_campaign_field||"UCAMPAIGN",this._utmParamsMap.utm_content=e.utm_content_field||"UCONTENT",this._utmParamsMap.utm_term=e.utm_term_field||"UTERM",this._additionalParamsMap=e.additional_params_map||{},this._initialReferrerField=e.initial_referrer_field||"IREFERRER",this._lastReferrerField=e.last_referrer_field||"LREFERRER",this._initialLandingPageField=e.initial_landing_page_field||"ILANDPAGE",this._visitorIdField=e.visitor_id_field||"VISITORID",this._visitsField=e.visits_field||"VISITS",this._addToForm=e.add_to_form||"all",this._formQuerySelector=e.form_query_selector||"form",this.utmCookie=new UtmCookie({domain:e.domain,sessionLength:e.sessionLength,cookieExpiryDays:e.cookieExpiryDays,additionalParams:Object.getOwnPropertyNames(this._additionalParamsMap)}),"none"!==this._addToForm&&this.addAllFields()}return e.prototype.addAllFields=function(){var e,t,i,r;i=this._utmParamsMap;for(t in i)e=i[t],this.addFormElem(e,this.utmCookie.readCookie(t));r=this._additionalParamsMap;for(t in r)e=r[t],this.addFormElem(e,this.utmCookie.readCookie(t));this.addFormElem(this._visitorIdField,this.utmCookie.getGaId())},e.prototype.addFormElem=function(e,t){var i,r,o,a,n;if(t&&(i=document.querySelectorAll(this._formQuerySelector),i.length>0))if("first"===this._addToForm)r=i[0],r.insertBefore(this.getFieldEl(e,t),r.firstChild);else for(a=0,n=i.length;n>a;a++)o=i[a],o.insertBefore(this.getFieldEl(e,t),o.firstChild)},e.prototype.getFieldEl=function(e,t){var i;return i=document.createElement("input"),i.type="hidden",i.name=e,i.value=t,i},e}();
_uf = window._uf || {};
_uf.domain = ".ccg.la";
_uf.sessionLength = 2;
_uf.add_to_form = "all";
_uf.form_query_selector = '#form114';
_uf.additional_params_map = {
gclid: "Field235"
};
_uf.utm_source_field = "Field230";
_uf.utm_medium_field = "Field231";
_uf.utm_campaign_field = "Field232";
_uf.utm_content_field = "Field233";
_uf.utm_term_field = "Field234";
_uf.visitor_id_field = "Field236";
//_uf.initial_referrer_field = "initial_referrer_field";
//_uf.last_referrer_field = "last_referrer";
//_uf.initial_landing_page_field = "initial_landing_page";
//_uf.visits_field = "visits";
window.UtmForm = new UtmForm(_uf);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment