
(function () {

    try {

        var isPublicPage = (window.location.host.indexOf('www') === 0);
        if (isPublicPage) {

            var psMlsUrlParam = getUrlParameter('ps_mls');
            if (psMlsUrlParam !== null) {
                setPsMlsToLocalStorage();
            }

            var psMlsParam = getPsMlsFromLocalStorage();
            var autologinToken = findAutoLoginToken();

            var encodedDomain = encodeURIComponent(window.location.host);
            var encodedPathInfo = encodeURIComponent(window.location.pathname);

            var requestUrl = secureAdminContextUrl + '/api/v1/public-page-redirect?domain=' + encodedDomain + '&pathInfo=' + encodedPathInfo;

            if (psMlsParam === true) {
                requestUrl += '&ps_mls=true';
            }

            if (autologinToken !== undefined) {
                if (window.location.href.includes('?dal=true')) {
                    removeAutoLoginToken();
                } else {
                    requestUrl += ('&autologinToken=' + autologinToken);
                }
            }

            var xhr = new XMLHttpRequest();

            window.xhr = xhr;
            xhr.open('GET', requestUrl, true);
            xhr.onload = function () {

                if (xhr.status === 200 && xhr.response) {

                    var jsonResponse = JSON.parse(xhr.response);
                    if (jsonResponse.hasOwnProperty('redirectUrl')) {
                        var newLocation = jsonResponse.redirectUrl;
                        window.location.replace(newLocation);
                        return;
                    }

                } else {
                    removeAutoLoginToken();
                }

                removeBodyStyle();
            };

            xhr.onerror = function () {
                removeBodyStyle();
            }

            xhr.send();

        } else {
            removeBodyStyle();
        }

    } catch (e) {
        removeBodyStyle();
        throw e;
    }
})()

function getUrlParameter(paramName) {

    paramName = paramName.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');

    var paramRegex = new RegExp('[\\?&]' + paramName + '=([^&#]*)');
    var paramRegexResults = paramRegex.exec(location.search);

    return (paramRegexResults === null ? null : decodeURIComponent(paramRegexResults[1].replace(/\+/g, ' ')));
}

function setPsMlsToLocalStorage() {
    window.localStorage.setItem('psMls', new Date().getTime());
}

function getPsMlsFromLocalStorage() {

    var psMlsCreatedMillis = window.localStorage.getItem('psMls');

    if (!psMlsCreatedMillis) {
        return false;
    }

    var nowMillis = new Date().getTime();
    if (nowMillis - psMlsCreatedMillis > 94672800000) { // 3 months
        window.localStorage.removeItem('psMls');
        return false;
    } else {
        return true;
    }
}

function findAutoLoginToken() {
    return psCookie.get('providesupport-auto-login');
}

function removeAutoLoginToken() {
    var domainArray = window.location.host.split(".");
    domainArray.shift();
    psCookie.remove('providesupport-auto-login', "." + domainArray.join("."), false);
}

function removeBodyStyle() {
    document.getElementById('body-root').removeAttribute('style');
}