diff --git a/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.css b/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.css
index b4a6c0823c5f87bad03777b314e1cbd2511a7c2f..b030be4b1377e895d164168ba3cb95844a35e6fc 100644
--- a/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.css
+++ b/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.css
@@ -154,7 +154,7 @@
     display: none;
 }
 
-.vtkweb-catalyst-analysis .view.search {
+.vtkweb-catalyst-analysis .view.cost {
     display: none;
 }
 
@@ -163,3 +163,47 @@
     left: 10px;
     top: 3px;
 }
+
+.vtkweb-catalyst-analysis table.catalyst-bill  {
+    width: 98%;
+    border-collapse:collapse;
+    margin: 20px auto;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill td {
+    vertical-align: middle;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill td.title {
+    text-align: left;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill td.value {
+    width: 150px;
+    text-align: center;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill tr.head {
+    background: #ddd;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill tr.head td {
+    text-align: center;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill tr.head td.empty {
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill tr td {
+    border: solid 1px #ccc;
+    padding: 5px;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill tr.sum {
+    background: #ddd;
+}
+
+.vtkweb-catalyst-analysis .catalyst-bill tr.sum td {
+    text-align: center;
+    font-weight: bold;
+}
diff --git a/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.js b/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.js
index cc52a8bfc06d623292b13b6daca0247c837c9677..9a57d12588b2e45d63e169f2a65f5d7e5a749cba 100644
--- a/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.js
+++ b/Web/JavaScript/Widgets/CatalystBrowser/vtkweb-widget-catalyst-analysis.js
@@ -4,7 +4,7 @@
     TOOLBAR_PROJECT_TEMPLATE = '<li class="action"><span class="vtk-icon-info-1" data-path="PATH">TITLE<i><table class="description">TABLE_CONTENT</table></i></span></li>',
     TABLE_LINE_TEMPLATE = '<tr><td class="key">KEY</td><td class="value">VALUE</td></tr>',
     TOOLBAR_LAYOUT = '<ul class="left">LIST</ul>',
-    STATIC_TOOLS = '<ul class="right"><li class="action vtk-icon-th active toggle-view" title="Exploration view" data-view="content"/><li class="action vtk-icon-beaker search toggle-view" data-view="search" title="Search"/><li class="action vtk-icon-magic control"/><li class="action vtk-icon-trash clear-workspace"/></ul>',
+    STATIC_TOOLS = '<ul class="right"><li class="action vtk-icon-th active toggle-view" title="Exploration view" data-view="content"/><li class="action vtk-icon-beaker search toggle-view" data-view="search" title="Search"/><li class="action vtk-icon-dollar toggle-view" data-view="cost" title="Search" /><li class="action vtk-icon-magic control"/><li class="action vtk-icon-trash clear-workspace"/></ul>',
     VIEWER_FACTORY = {
         "catalyst-viewer": {
             class: "vtk-icon-loop-alt",
@@ -32,6 +32,70 @@
         }
     };
 
+    // ========================================================================
+
+    function formula(cost) {
+        var dollarsAmount = 0;
+        if(cost) {
+            if(cost["time"]) {
+                dollarsAmount += 0.001 * cost["time"];
+            }
+            if(cost["space"]) {
+                dollarsAmount += 0.000000002 * cost["space"];
+            }
+            if(cost["images"]) {
+                dollarsAmount += 0.001 * cost["images"];
+            }
+        }
+        return dollarsAmount;
+    }
+
+    // ========================================================================
+
+    function formatTime(t) {
+        var seconds = Number(t),
+        minutes = Math.floor(seconds / 60),
+        hours = Math.floor(minutes / 60),
+        buffer = [];
+
+        seconds %= 60;
+        minutes %= 60;
+
+        if(hours > 0) {
+           buffer.push(hours);
+        }
+        if(minutes > 0 || hours > 0) {
+           buffer.push(("00" + minutes).slice (-2));
+        }
+        if(seconds > 0 || minutes > 0 || hours > 0) {
+            buffer.push(("00" + seconds).slice (-2));
+        }
+
+        return buffer.join(':');
+    }
+
+    // ========================================================================
+
+    function formatSpace(t) {
+        var space = Number(t), unit = [ ' B', ' K', ' M', ' G', ' T'], currentUnit = 0;
+        while(space > 1000) {
+            space /= 1000;
+            currentUnit++;
+        }
+        return space.toFixed(2) + unit[currentUnit];
+    }
+
+    // ========================================================================
+
+    function formatDollars(v) {
+        x = v.toFixed(2).toString();
+        var pattern = /(-?\d+)(\d{3})/;
+        while (pattern.test(x)) {
+            x = x.replace(pattern, "$1,$2");
+        }
+        return x;
+    }
+
     // ========================================================================
     // Helper
     // ========================================================================
@@ -62,13 +126,56 @@
         // Add static tools
         items.push("</ul>");
         items.push(STATIC_TOOLS);
-        items.push("</div><div class='view content'></div><div class='view search'><select name='exploration'>OPTIONS</select><div class='search-results'></div></div>".replace(/OPTIONS/g, optionsList.join('')));
+        items.push("</div><div class='view content'></div>");
+        items.push("<div class='view search'><select name='exploration'>OPTIONS</select><div class='search-results'></div></div>".replace(/OPTIONS/g, optionsList.join('')));
+        items.push(buildBillingPage(info, path, formula));
 
         return items.join('');
     }
 
     // ------------------------------------------------------------------------
 
+    function buildBillingPage(info, path, formula) {
+        var content = [ "<table class='catalyst-bill'><tr class='head'></td><td class='empty title'></td><td><span class='vtk-icon-clock'/></td><td><span class='vtk-icon-database'/></td><td><span class='vtk-icon-picture-1'/></td><td><span class='vtk-icon-dollar'/></td></tr>" ],
+        total = { "space": 0, "images": 0, "time": 0 , "dollars": 0},
+        analysisCount = info['analysis'].length;
+
+        // Add each analysis
+        while(analysisCount--) {
+            var item = info['analysis'][analysisCount],
+            cost = item['cost'],
+            dollars = formula(cost);
+
+            total['space'] += cost['space'];
+            total['images'] += cost['images'];
+            total['time'] += cost['time'];
+            total['dollars'] += dollars;
+
+            content.push(buildBillEntry(item, cost, dollars));
+        }
+
+        // Add total
+        content.push("<tr class='sum'><td>Total</td><td>"+ formatTime(total["time"]) +"</td><td>"+ formatSpace(total["space"]) +"</td><td>"+ total["images"] +"</td><td>"+ formatDollars(total["dollars"]) +"</td></tr></table>")
+
+        return "<div class='view cost'>" + content.join('') + "</div>";
+    }
+
+    // ------------------------------------------------------------------------
+
+    function buildBillEntry(item, cost, dollars) {
+        console.log(item);
+        console.log(cost);
+        var classType = VIEWER_FACTORY[item["type"]]["class"],
+        title = item["title"],
+        time = cost["time"],
+        space = cost["space"],
+        images = cost["images"];
+
+        return "<tr><td class='title'><span class='" + classType + "'/>" + title + "</td><td class='time value'>" + formatTime(time) + "</td><td class='space value'>" + formatSpace(space) + "</td><td class='images value'>" + images + "</td><td class='dollars value'>" + formatDollars(dollars) + "</td></tr>";
+    }
+
+    // ------------------------------------------------------------------------
+
     function analysisItemToHTML(basePath, item) {
         return TOOLBAR_ANALYSIS_ITEM_TEMPLATE
             .replace(/TYPE/g, item.type)