
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

var ShowTimeReturnUrl = {
    TargetDomain: '.showtime.jp',
    CookieName: 'SRU',
    MaxLength: 256,
    getDefaultReturnUrl: function() {
        return 'http://' + document.domain.toLowerCase() + '/';
    },
    ValidDomainRegExp: [
        "\\.showtime\\.jp$",
        "\\.nl\\.fujitvondemand\\.jp$",
        "(tod|bbbox)\\.tbs\\.co\\.jp$",
        "\\.gyao\\.ne\\.jp$",
        "^todtest\\.webproduce\\.net$"
    ],
    StripParamRegExp: [
        "\\.rec=[^&]*&?",
        "[\\?&]$" // always last
    ],
    stripParams: function(url) {
        for (var i = 0; i < this.StripParamRegExp.length; i++) {
            url = url.replace(new RegExp(this.StripParamRegExp[i], "g"), "");
        }
        return url;
    }
}

function setReturnUrl(relativePath)
{
    var returnUrl = null;
    if (!relativePath) {
        returnUrl = document.location;
    } else {
        var currentLocation = document.location.toString().toLowerCase();
        var pos = currentLocation.indexOf(ShowTimeReturnUrl.TargetDomain);
        if (pos > 0) {
            returnUrl = currentLocation.substr(0, pos + ShowTimeReturnUrl.TargetDomain.length);
            returnUrl += relativePath;
        }
    }
    if (returnUrl != null) {
        var shortReturnString = returnUrl.toString().substring(0, ShowTimeReturnUrl.MaxLength);
        document.cookie = ShowTimeReturnUrl.CookieName + '=' + escape(shortReturnString) + '; ' +
                          'path=/; ' +
                          'domain=' + ShowTimeReturnUrl.TargetDomain;
        return true;
    } else {
        return false;
    }
}

function setExReturnUrl(relativePath)
{
    var returnUrl = null;
    if (!relativePath) {
        returnUrl = document.location;
    } else {
        returnUrl = relativePath;
    }
    if (returnUrl != null) {
        var shortReturnString = returnUrl.toString().substring(0, ShowTimeReturnUrl.MaxLength);
        document.cookie = ShowTimeReturnUrl.CookieName + '=' + escape(shortReturnString) + '; ' +
                          'path=/; ' +
                          'domain=' + ShowTimeReturnUrl.TargetDomain;
        return true;
    } else {
        return false;
    }
}

function getReturnUrlCookieValue()
{
    var cookieValues = document.cookie.split(/;\s?/);
    var returnUrl = null;
    var keyValuePare;
    for (var i = 0; i < cookieValues.length; i++) {
        keyValuePare = cookieValues[i].split('=');
        if (keyValuePare[0] == ShowTimeReturnUrl.CookieName) {
            returnUrl = unescape(keyValuePare[1]);
            break;
        }
    }
    return returnUrl;
}

function getReturnUrl()
{
    var returnUrl = getReturnUrlCookieValue();
    if (returnUrl != null) {
        if (returnUrl.match(/^http(?:s)?:\/\/([a-zA-Z0-9.-]+)\//)) {
            var returnUrlDomain = RegExp.$1;
            for (var i = 0; i < ShowTimeReturnUrl.ValidDomainRegExp.length; i++) {
                var vdRegExp = new RegExp(ShowTimeReturnUrl.ValidDomainRegExp[i]);
                if (returnUrlDomain.match(vdRegExp)) {
                    return ShowTimeReturnUrl.stripParams(returnUrl);
                }
            }
        }
    }
    return ShowTimeReturnUrl.getDefaultReturnUrl();
}

function removeReturnUrl()
{
    document.cookie = ShowTimeReturnUrl.CookieName + '=; ' +
        'path=/; ' +
        'domain=' + ShowTimeReturnUrl.TargetDomain + '; ' +
        'expires=Wed, 1-Sep-1976 12:00:00 GMT;';
    return true;
}

function isSetReturnUrl()
{
    return (getReturnUrlCookieValue() != null);
}