Ext.ux.Printer=function(){return{renderers:{},registerRenderer:function(a,b){this.renderers[a]=new(b)()},getRenderer:function(a){return this.renderers[a]},print:function(a){var b=a.getXTypes().split('/');for(var i=b.length-1;i>=0;i--){var c=b[i],renderer=this.getRenderer(c);if(renderer!=undefined){renderer.print(a);break}}}}}();Ext.override(Ext.Component,{getXTypes:function(){var a=this.constructor;if(!a.xtypes){var c=[],sc=this;while(sc){var b=sc.constructor.xtype;if(b!=undefined)c.unshift(b);sc=sc.constructor.superclass}a.xtypeChain=c;a.xtypes=c.join('/')}return a.xtypes}});
Ext.ux.Printer.BaseRenderer=Ext.extend(Object,{print:function(a){
	var b=a&&a.getXType?String.format("print_{0}_{1}",a.getXType(),a.id.replace(/-/g,"_")):"print";
	var c=window.open('',b);
	c.document.write(this.generateHTML(a));
	c.document.close();
	c.print()
},generateHTML:function(a){return new Ext.XTemplate('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">','<html>','<head>','<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />','<link href="'+this.stylesheetPath+'" rel="stylesheet" type="text/css" media="screen,print" />','<title>'+this.getTitle(a)+'</title>','</head>','<body>',this.generateBody(a),'</body>','</html>').apply(this.prepareData(a))},generateBody:Ext.emptyFn,prepareData:function(a){return a},getTitle:function(a){return typeof a.getTitle=='function'?a.getTitle():(a.title||"Printing")},stylesheetPath:'fileadmin/src/lib/css/print.css'});Ext.ux.Printer.GridPanelRenderer=Ext.extend(Ext.ux.Printer.BaseRenderer,{generateBody:function(a){var b=this.getColumns(a);var c=this.headerTpl.apply(b);var d=this.bodyTpl.apply(b);return String.format('<img src="fileadmin/src/lib/images/grid/tk_gft_bautechnik_print.png" />'+'<br/><br/><table>{0}<tpl for=".">{1}</tpl></table><br/><br/>'+Ext.get('copyright').dom.innerHTML,c,d)},prepareData:function(f){var g=this.getColumns(f);var h=[];f.store.data.each(function(d){var e={};Ext.iterate(d.data,function(b,c){Ext.each(g,function(a){if(a.dataIndex==b){e[b]=a.renderer?a.renderer(c,null,d):c;return false}},this)});h.push(e)});return h},getColumns:function(b){var c=[];Ext.each(b.getColumnModel().config,function(a){if(a.hidden!=true)c.push(a)},this);return c},headerTpl:new Ext.XTemplate('<tr>','<tpl for=".">','<th>{header}</th>','</tpl>','</tr>'),bodyTpl:new Ext.XTemplate('<tr>','<tpl for=".">','<td>\{{dataIndex}\}</td>','</tpl>','</tr>')});Ext.ux.Printer.registerRenderer('grid',Ext.ux.Printer.GridPanelRenderer);
