/**
 * Extends EventDispatcher
 * Event names are defined by convention: propName+Change, e.g: for the <code>appState<code> property update the event name is <code>appStateChange<code>
 */
function Model(){
	this.appState = AppStateTypes.NOT_INITIALIZED;
	this.scheduleDay = new ScheduleDay();
	this.scheduleWeek = new ScheduleWeek();
}

Model.MODE_DAY = "modeDay";
Model.MODE_WEEK = "modeWeek";

Model.prototype = new EventDispatcher();
Model.prototype.constructor = Model;

Model.prototype.getAppState = function(){
	return this.appState;
}
Model.prototype.setAppState = function(appState){
	this.appState = appState;
	this.dispatchEvent({type:"appStateChange"});
}

/**
 * @see Model.MODE_DAY
 * @see Model.MODE_WEEK
 */
Model.prototype.getMode = function(){
	return this.mode;
}
Model.prototype.setMode = function(mode){
	this.mode = mode;
	this.dispatchEvent({type:"modeChange"});
}
Model.prototype.getDictionary = function(){
	return this.dictionary;
}
Model.prototype.setDictionary = function(dictionary){
	this.dictionary = dictionary;
}
Model.prototype.getConfig = function(){
	return this.config;
}
Model.prototype.setConfig = function(config){
	this.config = config;
}
Model.prototype.getLang = function(){
	return this.lang;
}
Model.prototype.setLang = function(lang){
	this.lang = lang;
}
Model.prototype.getDate = function(){
	return this.date;
}
Model.prototype.setDate = function(date){
	this.date = date;
	this.dispatchEvent({type:"dateChange"});
}
Model.prototype.getTheme = function(){
	return this.theme;
}
Model.prototype.setTheme = function(theme){
	this.theme = theme;
}
Model.prototype.getFeed = function(){
	return this.feed;
}
Model.prototype.setFeed = function(feed){
	this.feed = feed;
}
Model.prototype.getNetworkFeeds = function(){
	return this.networkFeeds;
}
Model.prototype.setNetworkFeeds = function(networkFeeds){
	this.networkFeeds = networkFeeds;
}

Model.prototype.getSelectedShow = function(){
	return this.selectedShow;
}

Model.prototype.setSelectedShow = function(selectedShow){
	this.selectedShow = selectedShow;
}

Model.prototype.getScheduleDay = function(){
	return this.scheduleDay;
}

Model.prototype.getScheduleWeek = function(){
	return this.scheduleWeek;
}

Model.prototype.getShowDetail = function(){
	return this.showDetail;
}
Model.prototype.setShowDetail = function(showDetail){
	this.showDetail = showDetail;
	this.dispatchEvent({type:"showDetailChange"});
}
