// enhanced-metadata.js
// Adds more metadata to the Item rendering

(function($) {
    var filters;

    var plugin = Echo.createPlugin({
        "name": "EnhancedMetadata",
        "applications": ["Stream"],
        "init": function(plugin, application) {
            plugin.extendTemplate("Stream", '<div class="echo-stream-query"></div>', 'insertAsFirstChild', 'echo-stream-header', "EnhancedMetadata");
            plugin.extendRenderer("Stream", "query", plugin.renderers.query, "EnhancedMetadata");
            plugin.extendRenderer("Item", "metadata", plugin.renderers.metadata, "EnhancedMetadata");
        }
    });

    plugin.addCss(".echo-stream-query { display: none; }" +
        ".echo-item-metadata div.echo-item-metadata-userID { border: 0 }" +
        ".echo-item-metadata { border-bottom: 1px solid #E1E1E1; border-top: 1px solid #E1E1E1; }"
    );
    
    plugin.renderers = {};

    plugin.renderers.query = function(element, dom) {
        return this.config.get("query");
    }

    plugin.renderers.metadata = function(element, dom) {
        var item = this;
        item.parentRenderer("metadata", arguments);

        $(element).append(metadataElement("target", "Target:", item.data.target.id))
            .append(metadataElement("source", "Source:", item.data.source.name))
            .append(metadataElement("ID", "ID:", item.data.object.id));
    };

    function metadataElement(cssClass, label, data) {
        var retVal = $('<div class="echo-item-metadata-' + cssClass + '"></div>');
        $('<span class="echo-item-metadata-title"></span>').text(label).appendTo(retVal);
        $('<span class="echo-item-metadata-value"></span>').text(data).appendTo(retVal);
        return retVal;
    }

    function strip(html) {
        return $('<div></div>').html(html).text();
    }
}(jQuery));
