(function (arr) {
    arr.forEach(function (item) {
        if (item.hasOwnProperty('prepend')) {
            return;
        }
        Object.defineProperty(item, 'prepend', {
            configurable: true,
            enumerable: true,
            writable: true,
            value: function prepend() {
                var argArr = Array.prototype.slice.call(arguments),
                    docFrag = document.createDocumentFragment();
​
                argArr.forEach(function (argItem) {
                    var isNode = argItem instanceof Node;
                    docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
                });
​
                this.insertBefore(docFrag, this.firstChild);
            }
        });
    });
})([Element.prototype, Document.prototype, DocumentFragment.prototype]);
(function () {
    "use strict";
​
    var BASEURL = "https:\/\/mlt.investorsalley.com";
    var REDIR_URL = [];
​
    var EXCLUDED_QUERY_PARAMS = ['cookieUUID'];
​
    function r(n) {
        return Math.floor(Math.random() * n);
    }
​
    function rid() {
        var s = '';
        var n = 16;
        var c = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        for (var i = 0; i < n; i += 1) {
            s += c[r(c.length)];
        }
        return s;
    }
​
    function qs() {
        return location.search.slice(1).trim();
    }
​
    function ref() {
        return document.referrer;
    }
​
    function kv_parse(kv_string) {
        var eq = kv_string.indexOf('=');
        var key = null, value = null;
        if (eq === -1) {
            key = decodeURIComponent(kv_string);
        } else {
            key = decodeURIComponent(kv_string.slice(0, eq));
            value = decodeURIComponent(kv_string.slice(eq + 1));
        }
        return [key, value];
    }
​
    function qs_parse(query_string) {
        var result = [];
        var parts = query_string.split('&');
        for (var i = 0; i < parts.length; i += 1) {
            var qp = kv_parse(parts[i]);
            if (!qp[0] || ~EXCLUDED_QUERY_PARAMS.indexOf(qp[0])) {
                continue;
            }
            result.push(qp);
        }
        return result;
    }
​
    function qs_join(query_array) {
        var count = 0;
        var result = '';
        for (var i = 0; i < query_array.length; i += 1) {
            var q = query_array[i];
            if (!q || !q.length || !q[0]) {
                continue;
            }
            if (count) {
                result += '&';
            }
            result += encodeURIComponent(q[0]);
            if (q.length > 1 && q[1] != null) {
                result += '=' + encodeURIComponent(q[1]);
            }
            count += 1;
        }
        return result;
    }
​
    function cookies() {
        var result = [];
        var cs = document.cookie.split(';');
        for (var i = 0; i < cs.length; i += 1) {
            var c = cs[i];
            if (!c || !c.trim()) {
                continue;
            }
            result.push(kv_parse(c.trim()));
        }
        return result;
    }
​
    function coll_to_array(coll) {
        return Array.prototype.slice.call(coll);
    }
​
    function all_by_tag(tagName) {
        var coll = document.getElementsByTagName(tagName);
        return coll_to_array(coll);
    }
​
    function all_by_class(className) {
        var coll = document.getElementsByClassName(className);
        return coll_to_array(coll);
    }
​
    function create_element(tagName, attrs) {
        var el = document.createElement(tagName);
        var keys = Object.keys(attrs);
        for (var i = 0; i < keys.length; i += 1) {
            var key = keys[i];
            el[key] = attrs[key];
        }
        return el;
    }
​
    function hidden_input(name, value) {
        return create_element('input', {
            type: 'hidden',
            name: name,
            value: value,
        });
    }
​
    function track() {
        var src = BASEURL + '/landing/track';
        var query_params = qs_parse(qs());
        query_params.push(['referrer', document.referrer]);
        query_params.push(['z', new Date().getTime()]);
​
        var $i = create_element('img', {
            alt: '',
            src: src + '?' + qs_join(query_params),
        });
​
        document.body.appendChild($i);
    }
​
    function fix_url(url) {
        var query_params = qs_parse(qs());
​
        var href = url;
        var match = href.match(/^http:|^https:/);
        if (!match) {
            return url;
        }
​
        var hash_index = href.indexOf('#');
        var hash_part = '';
        if (~hash_index) {
            hash_part = href.substr(hash_index);
            href = href.substr(0, hash_index);
        }
​
        var query_index = href.indexOf('?');
        var qp = [];
        if (~query_index) {
            qp = qs_parse(href.substr(query_index + 1));
            href = href.substr(0, query_index);
​
            for (var i = 0; i < query_params.length; i += 1) {
                var qk = query_params[i][0];
                var qv = query_params[i][1];
​
                var found = false;
                for (var j = 0; j < qp.length; j += 1) {
                    if (qp[j][0] === qk) {
                        found = true;
                        break;
                    }
                }
​
                if (!found) {
                    qp.push([qk, qv]);
                }
            }
​
        } else {
            qp = query_params;
        }
​
        var query_part = '';
        if (qp.length) {
            query_part = '?' + qs_join(qp);
        }
​
        return href + query_part + hash_part;
    }
​
    function fix_actions($f) {
        $f.forEach(function (f, i) {
            var action = f.action;
            var match = action.match(/^(\w+?\:\/\/|\/\/)(.+)$/);
            if (!match) {
                return;
            }
​
            var proto = match[1];
            var url = match[2];
            var keys = Object.keys(REDIR_URL);
            for (var j = 0; j < keys.length; j += 1) {
                var k = keys[j];
                var v = REDIR_URL[k];
                var base = url.substr(0, k.length);
                var rest = url.substr(k.length);
                var first = rest.substr(0, 1);
​
                if (base === k && (first === '' || first === '/')) {
                    f.action = proto + v + rest;
                    break;
                }
            }
        });
    }
​
    function fix_hrefs() {
        var $a = all_by_tag('a');
​
        $a.forEach(function (a, i) {
            if (a._mlt_fixed_href) {
                return;
            }
            a._mlt_fixed_href = true;
​
            a.href = fix_url(a.href);
        });
    }
​
    function post(url, options) {
        var req = new XMLHttpRequest();
        var opts = Object.assign({
            data: {},
            error: function () {},
            success: function () {},
        }, options);
​
        req.onreadystatechange = function() {
            if (req.readyState === XMLHttpRequest.DONE) {
                if (req.status === 200) {
                    var data;
                    var err = false;
                    try {
                        data = JSON.parse(req.responseText);
                    } catch (e) {
                        err = true;
                    }
​
                    if (err) {
                        opts.error(req);
                    } else {
                        opts.success(data);
                    }
                } else {
                    opts.error(req);
                }
            }
        };
​
        req.open('POST', url, true);
        req.setRequestHeader('Content-Type', 'application/json');
        req.send(JSON.stringify(opts.data));
    }
​
    function onEmailKeypress(e) {
        var email = e.target;
        email.style = '';
        email.removeEventListener('keypress', onEmailKeypress);
    }
​
    function onFormSubmit(e) {
        var form = e.target;
​
        if (form.action === BASEURL + '/landing') {
            e.preventDefault();
            e.stopPropagation();
​
            var $email = form.querySelector('[name=EMAIL]');
            if (!$email) {
                $email = form.querySelector('[name=Email]');
            }
            if (!$email) {
                $email = form.querySelector('[name=email]');
            }
            if (!$email) {
                $email = form.querySelector('[name=inf_field_Email]');
            }
            if (!$email) {
                $email = form.querySelector('[name=inf_field_email]');
            }
​
            var $submit = form.querySelector('[type=submit]');
            var $error = form.querySelector('.invalid-email-error');
​
            var submitButtonText = 'Submit';
            var processingText = 'Processing...';
​
            if ($submit) {
                $submit.disabled = true;
                if ($submit.tagName === 'INPUT') {
                    submitButtonText = $submit.value;
                    $submit.value = processingText;
                } else {
                    submitButtonText = $submit.innerText;
                    $submit.innerText = processingText;
                }
            }
​
            post(BASEURL + '/landing/verify-email', {
                data: {
                    email: $email.value,
                },
                success: function (data) {
                    if (data.verified) {
                        if ($error) {
                            $error.remove();
                        }
​
                        jQuery.ajax({
									url: 'https://www.investorsalley.com/wp-admin/admin-ajax.php',
									data: {
										action: 'magnifi_leadgen',
										email: $email.value
									},
									type: 'POST',
									success: function(){
										form.submit();
									}
								});
                    } else {
​
                        if ($submit) {
                            $submit.disabled = false;
                            if ($submit.tagName === 'INPUT') {
                                $submit.value = submitButtonText;
                            } else {
                                $submit.innerText = submitButtonText;
                            }
                        }
​
                        $email.style = 'outline: 1px solid red';
                        $email.addEventListener('keypress', onEmailKeypress);
​
                        if (!$error) {
                            var p_error = document.createElement('p');
                            p_error.innerText = 'The email you entered is either invalid or is missing a character. Please ensure you typed the address correctly and submit again.';
                            p_error.className = 'error invalid-email-error';
                            p_error.style = 'color: red';
​
                            $email.parentNode.insertBefore(p_error, $email.nextSibling);
                        }
                    }
                },
                error: function (req) {
                    console.error(req.status, req.responseText);
                    $submit.disabled = false;
                    form.submit();
                },
            });
        }
    }
​
    var _loaded = false;
    function onload() {
        if (_loaded) {
            return;
        }
​
        _loaded = true;
​
        track();
​
        fix_hrefs();
​
        var $f = all_by_tag('form');
        var query_string = qs();
        var query = qs_parse(query_string);
        fix_actions($f);
​
        var query_obj = {};
        for (var i = 0; i < query.length; i += 1) {
            var key = query[i][0], value = query[i][1];
            if (key.toLowerCase() === 'email') {
                key = 'Email';
            } else if (key.toLowerCase() === 'inf_field_email') {
                key = 'inf_field_Email';
            }
​
            query_obj[key] = value;
        }
​
        if (query_obj['Email']  && !query_obj['inf_field_Email']) {
            query_obj['inf_field_Email'] = query_obj['Email'];
        } else if (query_obj['inf_field_Email'] && !query_obj['Email']) {
            query_obj['Email'] = query_obj['inf_field_Email'];
        }
​
        var query_keys = Object.keys(query_obj);
        for (var i = 0; i < query_keys.length; i += 1) {
            var key = query_keys[i];
            var value = query_obj[key];
​
            for (var j = 0; j < $f.length; j += 1) {
                var form = $f[j];
                var found = false;
                var inputs = form.getElementsByTagName('input');
​
                for (var n = 0; n < inputs.length; n += 1) {
                    var input = inputs[n];
                    if (input.name.toLowerCase() === key.toLowerCase()) {
                        found = true;
                        input.value = value;
                    }
                }
​
                if (!found) {
                    form.prepend(hidden_input(key, value));
                }
            }
        }
​
        for (var i = 0; i < $f.length; i += 1) {
            var form = $f[i];
            form.addEventListener('submit', onFormSubmit);
        }
​
        var $a = all_by_class('investors-alley-offer-link');
        if ($a.length) {
            var $s = create_element('script', {
                src: BASEURL + '/landing/js/hard-offer?' + query_string,
            });
            document.body.appendChild($s);
        }
​
        setTimeout(function () {
            fix_hrefs();
        }, 5000);
    }
​
    if (document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll)) {
        setTimeout(onload, 0);
    } else {
        document.addEventListener('DOMContentLoaded', onload);
        window.addEventListener('load', onload);
    }
})();
