var makeRoute = function (root, args) {
    var parts = Array.prototype.slice.call(args, 0).join('/'),
        route = [root, parts].join('/');

    if (route.slice(-1) !== '/') {
        route += '/';
    }

    return route;
};


function ghostPaths() {
    var path = window.location.pathname,
        subdir = path.substr(0, path.search('/ghost/')),
        adminRoot = subdir + '/ghost',
        apiRoot = subdir + '/ghost/api/v0.1';

    function assetUrl(src) {
        return subdir + src;
    }

    return {
        subdir: subdir,
        blogRoot: subdir + '/',
        adminRoot: adminRoot,
        apiRoot: apiRoot,
        contributorsDir: assetUrl('/ghost/img/contributors'),
        errorImageSrc: assetUrl('/ghost/img/404-ghost@2x.png'),
        errorImageSrcSet: assetUrl('/ghost/img/404-ghost.png') + ' 1x, ' +
            assetUrl('/ghost/img/404-ghost@2x.png') + ' 2x',

        url: {
            admin: function () {
                return makeRoute(adminRoot, arguments);
            },

            api: function () {
                return makeRoute(apiRoot, arguments);
            },

            asset: assetUrl
        }
    };
}

export default ghostPaths;