$(document).ready(function() {
 
    function generateExhibitHTML(callback) {
        
         var canvas = $.freemix.config.canvases[$.freemix.profile.canvas];         
         $("head").append('<link href="'+ canvas.style +'" rel="Stylesheet" type="text/css" />');
         
         $.freemix.template(canvas.template, 
 			function (data, textStatus) {

 				var root = $(data);
 				if ($.freemix.profile.text) {

     				$.each($.freemix.profile.text, function(key, value) {
     				    var id = $(this).attr("id");
     				    root.find("#" + key).text(value);
     				});
     				if ($.freemix.profile.text.title) {
 				        document.title = $.freemix.profile.text.title;
 				    }
 			    }
 			    root.find(".view-container").each(function() {
 			        var id = $(this).attr("id");
 			        var container = $("<div class='view-panel' ex:role='viewPanel'></div>");
 			        $.each($.freemix.profile.views[id], function() {
 			            var view = $.freemix.view.createView(this);
                        container.append(view.generateExhibitHTML());
 			        });
 			        
     			    root.find(".view-container#" + id).append(container);
 			    });
 			    
                $.each($.freemix.profile.facets, function(container, facets) {
                    $.each(facets, function() {                             
                        var facet = $.freemix.facet.createFacet(this);                        
                        root.find(".facet-container#" +container).append(facet.generateExhibitHTML());
                    });
                });                 

                callback(root);
 		  },  "canvas-template");
     }
    
     function createExhibit() {
         var data = $.freemix.profile;
         var dataURLs = [];
         var dataProfile = data.dataProfile;

         $.each(data.dataProfiles, function(inx, source) {
             if (source.url) {
                 dataURLs.push(source.url);
             }
         });
         
         $.exhibit.initializeDatabase(dataURLs, function() {           
             generateExhibitHTML(function(root) {
     		    $("#canvas").append(root).createExhibit();										
             });
 	    });
     }

    $.freemix.property.initializeFreemix();
    // Setup Themeing
    var theme = $.freemix.config.themes[$.freemix.profile.theme];
    $('head').append('<link href="'+ theme.url +'" rel="Stylesheet" type="text/css" />');


    createExhibit();

});