Ext.onReady(function()
{
	Ext.BLANK_IMAGE_URL = window.Ext_BLANK_IMAGE_URL;  // Ext 2.0

	var oSfkbproExtjs = Ext.getDom('sfkbpro-extjs');
	if (oSfkbproExtjs)
	{
		oSfkbproExtjs.innerHTML='';
	
		if (!window.sfkbpro)
		{
			window.sfkbpro = new cSfkbpro;
		}
	
		if (document.cookie.indexOf('fe_typo_user')==-1)
		{
			if (window.sfkbpro.reloaded)
			{
				Ext.Msg.alert('Cookie kann nicht gespeichert werden','F\xFCr die Verwendung der KnowledgeBase werden Cookies ben\xF6tigt. Lassen Sie in Ihrem Browser Cookies zu um die KnowledgeBase verwenden zu k\xF6nnen.');		
			}
			else
			{
				location.reload();
				window.sfkbpro.reloaded = true;
			}
		}
		
		if (Ext.isGecko)
		{
			var x = new Ext.util.DelayedTask;
			x.delay(1000,sfkbpro.columnResize);
	//		Ext.Msg.alert('M\xF6gliche Anzeigeprobleme im Firefox','Bei Ihrem Browser ist es m\xF6glich, dass direkt nach dem Aufruf der KnowledgeBase die rechte Spalte aufgrund eines Darstellungsfehlers des Browsers nicht angezeigt wird.<br/><br/><b>Abhilfe:</b><br/>Ver\xE4ndern Sie am linken Rand des rechten, blauen Bereichs die Breite der Spalten.');
		}
		
		var sfkbproPanel = new Ext.Panel
		(
			{
				layout:'border',
				renderTo: 'sfkbpro-extjs',
				height: 600,
				id: 'sfkbpro-panel',
		        tbar:
		        [
					{
						xtype: 'tbtext',
			            text: 'Suche:&nbsp;'
					},
					{
						xtype: 'trigger',
						id: 'sfkbpro-searchfield',
						emptyText: 'Geben Sie hier die gesuchten Begriffe ein',
						width: 250,
						enableKeyEvents: true,
						onTriggerClick : sfkbpro.onSearchTriggerClick,
						triggerClass: 'x-form-search-trigger',
						listeners:
						{
							'keydown': sfkbpro.onSearchKey
						}
					},
					{
						xtype: 'tbtext',
						text: '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
					},
					{
						xtype: 'tbseparator'
					},
					{
						xtype: 'tbtext',
			            text: 'Suchmodus:&nbsp;'
					},
					{
						xtype: 'radio',
						name: 'sfkbpro',
						boxLabel: 'Und',
						id: 'sfkbpro-searchmode-and',
						inputValue: 'und',
						checked: true
					},
					{
						xtype: 'tbspacer'
					},
					{
						xtype: 'radio',
						name: 'sfkbpro',
						boxLabel: 'Oder',
						id: 'sfkbpro-searchmode-or',
						inputValue: 'oder'
					},
					{
						xtype: 'tbseparator'
					},
					{
						xtype: 'tbbutton',
						text: 'Druckerfreundliche Version',
						id: 'sfkbpro_printerFriendly',
						listeners:
						{
							click:
							{
								fn: function (oButton, eEvent)
								{
									var oTabPanel = Ext.getCmp('sfkbpro_content');
									var oActiveTab = oTabPanel.getActiveTab();
									var strTabTitle = oActiveTab.initialConfig.title;
									var strHref = location.href.replace(/[?&]{1}(KId=[^?&]+[?&]{0,1})/,'');
									open (strHref+'?printerFriendly=1&KId='+strTabTitle);
								},
								scope: this
							}
						}
					}
		        ],
				items:
				[
					{
						region:'west',
						id:'west-panel',
						split:true,
						width: '50%',
	//					collapsible: true,
						margins:'5 0 5 5',
						cmargins:'5 5 5 5',
						layout:'accordion',
						items:
						[
							{
								xtype:'treepanel',
						        animate:false,
								animCollapse:false,
						        autoScroll:true,
								loader:
								{
									baseParams:
									{
										'user_sfkbpro[strAction]': 'Toc'
									},
									dataUrl: 'index.php?eID=user_sfkbpro_ajax'
								},
						        useArrows:true,
						        root:
								{
						            nodeType: 'async',
						            text: 'SFirm KnowledgeBase',
						            draggable:false,
						            id:'sfkbpro-toc-0-0-0'
					        	},
								title:'Inhalt',
								id: 'sfkbproToc',
								autoScroll:true,
								border:false,
								iconCls:'toc'
							},
							{
								xtype:'panel',
								title:'Index',
								html: '<p>Index noch nicht geladen.</p>',
								id: 'sfkbproIndex',
								border:false,
								autoScroll:true,
								iconCls:'index',
								listeners:
								{
									beforeexpand: sfkbpro.getIndex
								}
							},
							{
								xtype:'panel',
								title:'Aktuelle \xC4nderungen',
								id: 'sfkbproLast',
								html: '<p>Aktuelle \xC4nderungen noch nicht geladen.</p>',
								border:false,
								autoScroll:true,
								iconCls:'last',
								listeners:
								{
									beforeexpand: sfkbpro.getLast
								}
							},
							{
								xtype:'panel',
								title:'Suchergebnis',
								id: 'sfkbpro-searchresult',
								html: '<p class="bodytext">Bisher wurde keine Suche durchgef\xFChrt!</p>',
								border:false,
								autoScroll:true,
								iconCls:'search'
							}
						]
					},
					{
						xtype:'tabpanel',
						region:'center',
						margins:'5 5 5 0',
	//					autoScroll:true,
						activeTab: 0,
						enableTabScroll:true,
						listeners:
						{
							'add': sfkbpro.onTabAdd,
							'remove': sfkbpro.onTabRemove,
							'tabchange': sfkbpro.onTabChange
						},
						items:
						{
							title: 'Kein KnowledgeBase Eintrag geladen',
							html: '<p>Bisher wurde noch kein KnowledgeBase Eintrag zum Laden ausgew\xE4hlt.</p>',
							id: 'sfkbpro_tabNothing'
						},
						id: 'sfkbpro_content'
					}
				]
			}
		);
		
		if (location.search.indexOf('KId')!=-1)
		{
			var iPos=location.search.indexOf('KId');
			var strKId=location.search.substr(iPos+4,6);
			if (strKId) 
			{
				window.sfkbpro.getKId(strKId);
			}
		}
	}
});

//Klasse sfkbpro
function cSfkbpro ()
{
	this.getIndex = function (oPanel,bAnimate)
	{
		if (!sfkbpro.bIndexLoaded)
		{
			sfkbpro.bIndexLoaded = true;
			oPanel.body.load({
			    url: 'index.php?eID=user_sfkbpro_ajax',
			    params: {'user_sfkbpro[strAction]': 'Index'}, // or a URL encoded string
			    callback: sfkbpro.processResponse,
			    discardUrl: false,
			    nocache: false,
			    text: "Index wird geladen...",
			    timeout: 30,
			    scripts: false
			});
		}
	}
	this.getLast = function (oPanel,bAnimate)
	{
		if (!this.bLastLoaded)
		{
			this.bLastLoaded = true;
			oPanel.load({
			    url: 'index.php?eID=user_sfkbpro_ajax',
			    params: {'user_sfkbpro[strAction]': 'Last'}, // or a URL encoded string
			    callback: sfkbpro.processResponse,
			    discardUrl: false,
			    nocache: false,
			    text: "Aktuelle \xC4nderungen werden geladen...",
			    timeout: 30,
			    scripts: false
			});
		}
	}
	this.getKId = function (strKId)
	{
		var strId = 'sfkbpro-'+strKId;
		var epKId = Ext.getCmp(strId);
		if (epKId) 
		{
			epKId.show();
		}
		else 
		{
			var elSfkbproContent = Ext.getCmp('sfkbpro_content');
			var tabNew = new Ext.Panel(
			{
				title: strKId,
				closable: true,
				autoScroll: true,
				id: strId
			});
			tabNew = elSfkbproContent.add(tabNew);
			tabNew.show();
			//		tabNew.child('.x-panel-header-text').dom.firstChild.nodeValue = "\xA0";
			tabNew.load(
			{
				url: 'index.php?eID=user_sfkbpro_ajax',
				params: 
				{
					'user_sfkbpro[strAction]': 'KId',
					'user_sfkbpro[strKId]': strKId
				},
				callback: sfkbpro.processResponse,
				scope: sfkbpro, // optional scope for the callback
				discardUrl: false,
				nocache: false,
				text: "KnowledgeBase ID " + strKId + " wird geladen...",
				timeout: 30,
				scripts: false
			});
		}
	}
	this.processResponse = function (el, success, response, options)
	{
		//* el : Ext.Element
		//  The Element being updated.
		//* success : Boolean
		//  True for success, false for failure.
		//* response : XMLHttpRequest
		//  The XMLHttpRequest which processed the update.
		//* options : Object
		//  The config object passed to the update call.
		if (success && options.params && options.params['user_sfkbpro[strAction]'] == 'KId' && options.params['user_sfkbpro[strKId]'])
		{
			var strKId = options.params['user_sfkbpro[strKId]'];
			var epTab = Ext.getCmp('sfkbpro-'+strKId);
			if (epTab) 
			{
				var eeTab = epTab.getEl();
				var elKIdTitle = eeTab.child('.sfkbproentry-titel-hidden');
				if (elKIdTitle) 
				{
					var strKIdTitle = elKIdTitle.dom.innerHTML;
					epTab.setTitle('<span title="' + strKIdTitle + '">' + strKId + '</span>');
				}
			}
		}
		else if (!success)
		{
			var strTitle = 'Fehler bei der Ajax-Anfrage!';
			var strMsg = '';
			if (response.responseText) 
			{
				strMsg += 'responseText: \'' + response.responseText + '\'<br/>';
			}
			if (response.status)
			{
				strMsg += 'status: \''+response.status+'\'<br/>';
			}
			if (response.statusText)
			{
				strMsg += 'statusText: \''+response.statusText+'\'<br/>';				
			}
			el.dom.innerHTML = '<div class="sfkbpro-error"><h1>' + strTitle + '</h1>' + strMsg + '</div>';
			Ext.Msg.alert(strTitle, strMsg);
		}
	}
	this.onClickTocKid = function (heNode, evEvent)
	{
		var strKId = heNode.id.substr(12);
		window.sfkbpro.getKId(strKId);
	}
	this.onSearchKey = function (effField, evEvent)
	{
		if (evEvent.type=='keydown' && evEvent.getKey()==13)
		{
			sfkbpro.getSearch();
		}
	}
	this.onSearchTriggerClick = function (oInitialConfig)
	{
		sfkbpro.getSearch();
	}
	this.getSearch = function ()
	{
		var strSearchword = Ext.getCmp('sfkbpro-searchfield').getValue();
		if (strSearchword.length == 0) 
		{
			Ext.Msg.alert('Kein Suchbegriff', 'Bitte geben Sie mindestens einen Suchbegriff ein.');
		}
		else 
		{
			var strSearchmode = Ext.getCmp('sfkbpro-searchmode-and').getGroupValue();
			var eeSearchResult = Ext.getCmp('sfkbpro-searchresult');
			eeSearchResult.expand();
			eeSearchResult.load(
			{
				url: 'index.php?eID=user_sfkbpro_ajax',
				params: 
				{
					'user_sfkbpro[strAction]': 'Search',
					'user_sfkbpro[strSearchTerm]': strSearchword,
					'user_sfkbpro[strSearchCombination]': strSearchmode == 'oder' ? 'or' : 'and'
				}, // or a URL encoded string
				callback: sfkbpro.processResponse,
				discardUrl: false,
				nocache: false,
				text: "Suche nach '" + strSearchword + "' wird durchgef\xFChrt...",
				timeout: 30,
				scripts: false
			});
		}
	}
	this.onTabAdd = function (tabPanel, addedTab, count)
	{
		sfkbpro.tabCount = count;
		if (count > 0) 
		{
			tabPanel.hideTabStripItem('sfkbpro_tabNothing');
		}
	}
	this.onTabRemove = function (tabPanel, tab)
	{
		sfkbpro.tabCount--;
		if (sfkbpro.tabCount == 0)
		{
			tabPanel.unhideTabStripItem('sfkbpro_tabNothing');			
		}
	}
	this.onTabChange = function (oTabPanel, oTab)
	{
		var oButtonPrinterFriendly = Ext.getCmp('sfkbpro_printerFriendly');
		if (oTab.getId()=='sfkbpro_tabNothing')
		{
			oButtonPrinterFriendly.disable();
		}
		else
		{
			oButtonPrinterFriendly.enable();
		}
	}
	this.columnResize = function ()
	{
		Ext.getCmp('sfkbpro-panel').render();
	}
}

