/*global jQuery */
 (function($) {
    var renderExhibitProperty = $.freemix.renderExhibitProperty;
     
    // Display the view's UI.	
    function display() {
        var content = this.getContent();
        root = $.freemix.getTemplate("list-view-template");
        content.empty();
        root.appendTo(content);
        this.findWidget().recordTitle().recordPager();
    }

    function generateExhibitHTML() {
        var view = $("<div ex:role='view' ex:viewLabel='" + this.config.name + "'></div>");

        var lens = $("<div ex:role='lens' style='display:none'></div>");
        lens.append(this.generateTitleExhibitHtml());
        
        var table = $("<table class='property-list-table exhibit-list-table'></table>");
        $.each(this.config.metadata,
        function(index, metadata) {
            var property = metadata.property;            
            var props = $.freemix.property.enabledProperties();
            var identify = props[property];
            if (!metadata.hidden && identify) {
                var label = identify.label();
                $("<tr class='exhibit-property'><td class='exhibit-label'>" + label + "</td><td class='exhibit-value'>" + $.freemix.renderExhibitProperty(metadata) + "</td></tr>").appendTo(table);
            }

        });

        lens.append(table).appendTo(view);
        return view;
    }

    $.freemix.view.addViewType({
        thumbnail: "/site_media/images/list-icon.png",
        label: "List",
        display: display,
        generateExhibitHTML: generateExhibitHTML,                
        generateTitleExhibitHtml: $.freemix.prototypes.generateTitleExhibitHtml,
        config: {
            type: "list",
            title: undefined,
            titleLink: undefined,
            metadata: []
        }
    });

})(jQuery);
