JSFiddle - React, Tailwind, and code Playground

by Vladimir Kutepov

JavaScript

// need to compress by https://closure-compiler.appspot.com
(function () {
    var global = this;
    var location = global.location;
    var document = global.document;
    var l;
    var i;

    // get url query parameters
    var path = location.search;
    if (path.indexOf('?') === 0) {
        path = path.substr(1);
    } else {
        path = '';
    }

    // parse url query parameters
    var urlQueryParams = {};
    if (path.length) {
        var pairs = path.split('&');
        var pair;
        for (i = 0, l = pairs.length; i < l; i++) {
            pair = pairs[i].split('=');
            urlQueryParams[pair[0]] = decodeURIComponent(pair[1]);
        }
    }

    // find utm markers in url query parameters
    var _landing = {};
    var hasParametersToSave = false;
    var parameterName;
    var parametersNames = [
        'utm_source',
        'utm_medium',
        'utm_term',
        'utm_content',
        'utm_campaign'
    ];
    for (i = 0, l = parametersNames.length; i < l; i++) {
        parameterName = parametersNames[i];
        if (urlQueryParams[parameterName]) {
            _landing[parameterName] = urlQueryParams[parameterName];
            hasParametersToSave = true;
        }
    }

    // save utm markers (if exists) to cookie
    if (hasParametersToSave) {
        var expires = new Date();
        expires.setTime(expires.getTime() + (365 * 24 * 60 * 60 * 1000));

        document.cookie = '_landing=' + encodeURIComponent(JSON.stringify(_landing)) +
        '; expires=' + expires.toUTCString() +
        '; path=/; domain=' + '.' + location.host.split('.').slice(-2).join('.');
    }

    // lookup partners url query parameters
    var data = [];
    if (urlQueryParams['partner_id'] !== undefined) {
        data.push('partner_id=' + urlQueryParams['partner_id']);
    }
    if (urlQueryParams['cpamit_uid'] !== undefined) {
        data.push('cpamit_uid=' + urlQueryParams['cpamit_uid']);
    }
    if (urlQueryParams['utm_kod'] !==...