var app = new Ox.App({
  apiURL: '/api/',
  init: 'init',
  config: 'site.json' //FIXME: shouldn't need this, get data with 'hello' or 'init'.
});

app.launch(function(data) {
  Ox.theme("classic");
  Ox.print(data);
  
/*
  app.user = data.user;
  app.config = data.config;
*/

/*
  //FIXME: should this be a nested structure as their representation on the page?
  app.constructors = ['wrapper', 'headerPanel', 'mainPanel', 'leftPanel', 'cityPicker', 'calendarBox', 'currentEventsList', 'middlePanel', 'middleTopPanel', 'newsfeedBox', 'aboutBox', 'itfBox', 'middleBottomPanel', 'erangBox', 'scriptArchiveBox', 'bestPracticesBox', 'biblioBox', 'offersNeedsBox', 'surveysBox', 'rightPanel', 'searchBox', 'loginBox', 'previewBox', 'footerPanel']
*/


  app.$ui = {};
  app.$body = $('body');
  app.$document = $(document);
  app.$window = $(window);  
/*
  Ox.each(app.constructors, function(i, v) {
    app.$ui[v] = app.construct[v]();
  });
*/
//  Ox.print("BOO", data);
  app.api.getPage({}, function(data) {
    var wrapper = app.construct.wrapper(data.data);
    app.$body.css({'opacity': 0});
    //FIXME: user handling should be cleaner?

    wrapper.appendTo(app.$body);
/*
    if (data.user.level != 'guest') {
      ITF.login(data);
    }
*/
/*
    app.$window.resize(function() {
      ITF.setSizes();
    });
    ITF.setSizes();
*/
    app.$body.animate({
      'opacity': 1
    }, 2000);
  });
});
