/*
 * (c) 2011 David Krause, Interaktive Gestaltung
 * http://www.interaktive-gestaltung.de
 */

/**
 * Starts the application.
 * Main is instantiated from a snippet created by InitController.
 *
 * @param {Array} naviIds Contains the ids of the category, section, title
 */
function Main(naviIds)
{
    /**
     * Navigation
     */
    var model = new Model();
    var naviController = new NaviController(model);

    var animItems = new Array('.firstname', '.lastname', 'ul.categories li');
    var naviView = new NaviView(naviController, '#containerNaviMain', '#containerNaviMeta', animItems);


    /**
     * Content
     */
    var contentController = new ContentController(model);
    var contentView = new ContentView(model, contentController);

    /*
        Bind the views to the model.
     */
    $(model).bind('naviChanged', function(obj)
    {
        naviView.onNaviChanged(obj);
    });

    $(model).bind('reset', function(obj)
    {
        naviView.onReset();
    });

    $(model).bind('temporaryActiveTitleChanged', function(obj)
    {
        naviView.onTemporaryActiveTitleChanged(obj);
    });

    $(model).bind('infoTextChanged', function(obj)
    {
        contentView.onInfoTextChanged(obj);
    });

    $(model).bind('changeContent', function(obj)
    {
        contentView.onChangeContent();
    });

    $(model).bind('contentLoaded', function(obj)
    {
        contentView.onContentLoaded(obj);
    });

    /*
        Start the application.
     */
    model.init(naviIds);
    naviView.init();
    contentView.init();
}

