/**
 * System-Model, das ein System mit seinen Eigenschaften (Konfiguration) repräsentiert.
 * 
 */
var SearchalyzrSystem = Class.create({	
	/**
	 * Erzeugt ein neues System-Model.
	 * 
	 * @param id [string]
	 * ID des Systems.
	 * 
	 * @param tabid [string]
	 * Karteireiter-id des Systems.
	 * 
	 * @param label [string]
	 * Bezeichner des Systems.
	 * 
	 * @param url [string]
	 * URL des Systems.
	 * 
	 * @param columns [Array]
	 * Angeforderte Spalten.
	 * 
	 * @param title [Object]
	 * Tab-Title des Systems, wird mit Hilfe von SearchalyzrBuilder.createTabTitle erzeugt. 
	 * 
	 * @param container [Object]
	 * Tab-Container des Systems, wird mit Hilfe von SearchalyzrBuilder.createTabContent erzeugt. 
	 */
	initialize: function(id, tabid, label, header, url, parameters, columns, title, container, emptyIndicator, errorMessage, linkTarget, urlOverwrite, newUrl, oldUrl) {
		/**
		 * ID des Systems.
		 * 
		 * @type string
		 */
		this.id = id;
		this.tabid = tabid;
		/**
		 * Bezeichner des Systems.
		 * 
		 * @type string
		 */
		this.label = label;
		/**
		 * Optionaler HTML Code, der über den Suchergebnissen angezeigt wird.
		 * @type string
		 */
		this.header = header;
		/**
		 * URL des Systems. (kann auch null sein)
		 * 
		 * @type string
		 */
		this.url = url;
		
		this.parameters = parameters;
		/**
		 * Angeforderte Spalten.
		 * 
		 * @type Array
		 */
		this.columns = (columns ? columns : []);
		/**
		 * Tab-Title, der diesem System zugeordnet ist.
		 * 
		 * @type Object
		 */
		this.title = title;
		/**
		 * Tab-Container, der diesem System zugeordnet ist.
		 * 
		 * @type Object
		 */
		this.container = container;
		/**
		 * Der 'System hat keine Treffer'-Indicator.
		 * 
		 * @type Object
		 */
		this.emptyIndicator = emptyIndicator;
		/**
		 * Wird im Fehlerfall mit einer Fehlermeldung belegt
		 * 
		 * @type Object
		 */
		this.errorMessage = errorMessage;
		/**
		 * Manager-Objekt, dass diesem System zugeordnet ist.
		 * 
		 * @type SearchalyzrSystemManager
		 */
		this.manager = null;

		searchResultFilter = null;
		
		/**
		 * für Url-Ersetzen und anchor target Ersetzen
		 */
		this.linkTarget = linkTarget;
			
		this.urlOverwrite =  urlOverwrite;
		
		this.newUrl = newUrl;
		
		this.oldUrl = oldUrl;
	},
	
	
	getLinkTarget: function() {
		return this.linkTarget;
	},
	
	isUrlOverwrite: function() {
		if(this.urlOverwrite==true)
			return true;
		else
			return false;
	},
	
	getNewUrl: function() {
		return this.newUrl;
	},
	
	getOldUrl: function() {
		return this.oldUrl;
	},
	
	/**
	 * Gibt die ID zurück.
	 * 
	 * @return string
	 */
	getId: function() {
		return this.id;
	},
	
	getTabid: function(){
		return this.tabid;
	},
	
	/**
	 * Gibt den Bezeichner zurück.
	 * 
	 * @return string
	 */
	getLabel: function() {
		return this.label;
	},
	
	/**
	 * Gibt die URL zurück.
	 * 
	 * @return string
	 */
	getURL: function() {
		return this.hasURL() ? this.url : '';
	},
	
	getParameters: function() {
		if (this.parameters)
			return this.parameters;
		else
			return [];
	},
	
	/**
	 * Prüft, ob das System eine URL besitzt.
	 * 
	 * @return boolean
	 */
	hasURL: function() {
		return !!this.url;
	},
	
	/**
	 * Gibt die angeforderten Spalten zurück.
	 * 
	 * @return Array
	 */
	getColumns: function() {
		return this.columns;
	},
	
	/**
	 * Gibt den Tab-Title zurück.
	 * 
	 * @return Object
	 */
	getTitle: function() {
		return this.title;
	},
	
	/**
	 * Gibt den Tab-Container zurück.
	 * 
	 * @return Object
	 */
	getContainer: function() {
		return this.container;
	},
	
	/**
	 * Gibt den Manager zurück.
	 * 
	 * @return SearchalyzrSystemManager
	 */
	getManager: function() {
		return this.manager;
	},
	
	/**
	 * Setzt den Manager für dieses System.
	 * 
	 * @param manager [SearchalyzrSystemManager]
	 * Der neue Manager.
	 * 
	 * @return void
	 */
	setManager: function(manager) {
		this.manager = manager;
	},
	
	setSearchResultFilter: function(searchResultFilter) {
		this.searchResultFilter = searchResultFilter;
	}
	
});

