var EnrolData = function() {
	var _state = 'startup';
	var _listeners = [];

	var self = {
		data: null,
		filterHtml: null,

		/**
		 * Load enrolment data
		 * @param {function} onLoad
		 */
		load: function(onLoad) {
			// already loaded
			if (_state == 'loaded') {
				onLoad();
				return;
			}

			_listeners.push(onLoad);

			// currently loading, will execute listener when ready
			if (_state == 'loading') {
				return;
			}

			// read JSON file
			_state = 'loading';
			new Ajax.Request('/index.php?/enrol/programs', {
								 method:'get',
								 onSuccess: function(transport){
									 self.data = transport.responseText.evalJSON();

									 // load new html content
									 new Ajax.Request('/index.php?/enrol/programs-filter', {
														  method:'get',
														  onSuccess: function(transport) {
															  self.filterHtml = transport.responseText;
															  _state = 'loaded';
															  self.notifyListeners();
														  }
									 });
								 }});
		},

		/**
		 * Notify all listeners that data is ready
		 */
		notifyListeners: function() {
			for(var i=0, len=_listeners.length; i<len; i++) {
				_listeners[i]();
			}
		}
	};

	return self;
 }();

