ns('Carib.Order');

/**
 * Order application
 * 
 * @version $Id: app.js 547 2009-09-14 15:18:36Z  $
 */
Carib.Order.App = (function() {
  var countries = new Carib.Order.Data.Recordset();
  var number_categories = new Carib.Order.Data.Recordset();
  var placing_categories = new Carib.Order.Data.Recordset();
  var food_types = new Carib.Order.Data.Recordset();
  var app_controller = null;
  var tour_data = {};
  var tourists_require = [];
  var common_require = [];
  
  return {
    init: function() {
      Carib.Order.App.getAppController().start();
    },
    
    getOrder: function() {
      return order;
    },
    
    getCountries: function() {
      return countries;
    },
    
    getNumberCategories: function() {
      return number_categories;
    },
    
    getPlacingCategories: function() {
      return placing_categories;
    },
    
    getFoodTypes: function() {
      return food_types;
    },
    
    setCountries: function(data) {
      var reader = new Carib.Order.Data.ArrayReader({
        record_class: Carib.Order.Data.Country,
        id_field: 'id'
      });
      countries = reader.read(data);
    },
    
    setNumberCategories: function(data) {
      var reader = new Carib.Order.Data.ArrayReader({
        record_class: Carib.Order.Data.NumberCategory,
        id_field: 'id'
      });
      number_categories = reader.read(data);
    },
    
    setPlacingCategories: function(data) {
      var reader = new Carib.Order.Data.ArrayReader({
        record_class: Carib.Order.Data.PlacingCategory,
        id_field: 'id'
      });
      placing_categories = reader.read(data);
    },
    
    setFoodTypes: function(data) {
      var reader = new Carib.Order.Data.ArrayReader({
        record_class: Carib.Order.Data.FoodType,
        id_field: 'id'
      });
      food_types = reader.read(data);
    },
    
    setTourData: function(data) {
      tour_data = data;
    },
    
    setTouristRequire: function(require) {
      tourist_require = require;
    },
    
    getTouristRequire: function() {
      return tourist_require;
    },
    
    setCommonRequire: function(require) {
      common_require = require;
    },
    
    getCommonRequire: function() {
      return common_require;
    },
    
    getTourData: function() {
      return tour_data;
    },
    
    getAppController: function() {
      if(!app_controller) {
        app_controller = new Carib.Order.AppController();
      }
      return app_controller;
    }
  }
})();

