/**
 * That is the place where we initialize the extjs components
 */
/**
 * @param {Object}
 *            config
 */
Ext.app.defTabBar = function(config) {
	Ext.apply(this, config);
	this.addEvents( {
		'ready' : true,
		'beforeunload' : true
	});
	Ext.onReady(this.initBar, this);
};

Ext.extend(Ext.app.defTabBar, Ext.util.Observable, {
	isReady : false,
	startMenu : null,
	modules : null,

	getStartConfig : function() {

	},

	initBar : function() {
		this.startConfig = this.startConfig || this.getStartConfig();
		this.desktop = new Ext.Desktop(this);
		this.launcher = this.desktop.taskbar.startMenu;
		this.modules = this.getModules();
		if (this.modules) {
			this.initModules(this.modules);
		}
		this.desktop.taskbar.startMenu.add( {
			text : 'Segítség',
			iconCls : 'bogus',
			width : 150,
			handler : function() {
				window.location = 'index.php?menu=help'
			},
			scope : this
		});

		this.init();
		Ext.EventManager.on(window, 'beforeunload', this.onUnload, this);
		this.fireEvent('ready', this);
		this.isReady = true;
	},

	initModules : function(ms) {
		for ( var i = 0, len = ms.length; i < len; i++) {
			var m = ms[i];
			this.launcher.add(m.launcher);
			m.app = this;
		}
	},
	getModules : Ext.emptyFn,
	init : Ext.emptyFn,

	getModule : function(name) {
		var ms = this.modules;
		for ( var i = 0, len = ms.length; i < len; i++) {
			if (ms[i].id == name || ms[i].appType == name) {
				return ms[i];
			}
		}
		return '';
	},

	onReady : function(fn, scope) {
		if (!this.isReady) {
			this.on('ready', fn, scope);
		} else {
			fn.call(scope, this);
		}
	},

	getDesktop : function() {
		return this.desktop;
	},

	onUnload : function(e) {
		if (this.fireEvent('beforeunload', this) === false) {
			e.stopEvent();
		}
	}
});

if (screen.width == 1024 ) {
	DefaultToolbar = new Ext.app.defTabBar( {
		init : function() {
			Ext.QuickTips.init();
		},

		getModules : function() {
			return [ new DefaultToolbar.LoginForm(), ];
		},

		// config for the start menu
		getStartConfig : function() {
		}
	});
}

DefaultToolbar.LoginForm = Ext
		.extend(
				Ext.app.Module,
				{
					id : 'login_window',
					init : function() {
						this.launcher = {
							text : 'Bejelentkezés',
							iconCls : 'icon-grid',
							handler : this.createWindow,
							scope : this
						}
					},
					createWindow : function() {
						var desktop = this.app.getDesktop();
						var win = desktop.getWindow('grid-win');
						if (!win) {
							win = desktop
									.createWindow( {
										id : 'login_window',
										title : 'Bejelentkezés',
										width : 320,
										height : 300,
										iconCls : 'icon-grid',
										shim : false,
										animCollapse : false,
										constrainHeader : true,
										items : login = new Ext.FormPanel(
												{
													labelWidth : 75,
													url : 'Extensions/checkLogin.php',
													frame : true,
													title : 'Bejelentkezés',
													width : 320,
													defaultType : 'textfield',

													items : [
															{
																fieldLabel : 'Neved',
																name : 'user_name'
															},
															{
																fieldLabel : 'Jelszavad',
																inputType : 'password',
																name : 'user_pass'
															} ],
													buttons : [
															{
																text : 'Belépés',
																handler : function() {
																	login
																			.getForm()
																			.submit(
																					{
																						method : 'POST',
																						waitTitle : 'Csatlakozás',
																						waitMsg : 'Adatok küldése...',
																						success : function(
																								resp) {
																							Ext.Msg
																									.alert(
																											'Üzenet',
																											'Bejelentkezés sikeres!',
																											function(
																													btn,
																													text) {
																												if (btn == 'ok') {
																													var redirect = 'index.php?menu=InformationPult';
																													window.location = redirect;
																												}
																											});
																						},
																						failure : function(
																								form,
																								action) {
																							if (action.failureType == 'server') {
																								obj = Ext.util.JSON
																										.decode(action.response.responseText);
																								Ext.Msg
																										.alert(
																												'Bejelentkezés sikertelen!',
																												obj.errors.reason);
																							}
																							login
																									.getForm()
																									.reset();
																						}

																					});
																}
															},
															{
																text : 'Mégsem',
																handler : function() {
																	win.hide();
																}
															} ]

												})
									});
						}
						win.show();
					}
				});

/*
 * Example windows
 */
DefaultToolbar.GridWindow = Ext.extend(Ext.app.Module, {
	id : 'grid-win',
	init : function() {
		this.launcher = {
			text : 'Grid Window',
			iconCls : 'icon-grid',
			handler : this.createWindow,
			scope : this
		}
	},

	createWindow : function() {
		var desktop = this.app.getDesktop();
		var win = desktop.getWindow('grid-win');
		if (!win) {
			win = desktop.createWindow( {
				id : 'grid-win',
				title : 'Grid Window',
				width : 740,
				height : 480,
				iconCls : 'icon-grid',
				shim : false,
				animCollapse : false,
				constrainHeader : true,

				layout : 'fit',
				items : new Ext.grid.GridPanel( {
					border : false,
					ds : new Ext.data.Store( {
						reader : new Ext.data.ArrayReader( {}, [ {
							name : 'company'
						}, {
							name : 'price',
							type : 'float'
						}, {
							name : 'change',
							type : 'float'
						}, {
							name : 'pctChange',
							type : 'float'
						} ]),
						data : Ext.grid.dummyData
					}),
					cm : new Ext.grid.ColumnModel( [
							new Ext.grid.RowNumberer(), {
								header : "Company",
								width : 120,
								sortable : true,
								dataIndex : 'company'
							}, {
								header : "Price",
								width : 70,
								sortable : true,
								renderer : Ext.util.Format.usMoney,
								dataIndex : 'price'
							}, {
								header : "Change",
								width : 70,
								sortable : true,
								dataIndex : 'change'
							}, {
								header : "% Change",
								width : 70,
								sortable : true,
								dataIndex : 'pctChange'
							} ]),

					viewConfig : {
						forceFit : true
					},
					// autoExpandColumn:'company',

					tbar : [ {
						text : 'Add Something',
						tooltip : 'Add a new row',
						iconCls : 'add'
					}, '-', {
						text : 'Options',
						tooltip : 'Blah blah blah blaht',
						iconCls : 'option'
					}, '-', {
						text : 'Remove Something',
						tooltip : 'Remove the selected item',
						iconCls : 'remove'
					} ]
				})
			});
		}
		win.show();
	}
});

DefaultToolbar.TabWindow = Ext.extend(Ext.app.Module, {
	id : 'tab-win',
	init : function() {
		this.launcher = {
			text : 'Tab Window',
			iconCls : 'tabs',
			handler : this.createWindow,
			scope : this
		}
	},

	createWindow : function() {
		var desktop = this.app.getDesktop();
		var win = desktop.getWindow('tab-win');
		if (!win) {
			win = desktop.createWindow( {
				id : 'tab-win',
				title : 'Tab Window',
				width : 740,
				height : 480,
				iconCls : 'tabs',
				shim : false,
				animCollapse : false,
				border : false,
				constrainHeader : true,

				layout : 'fit',
				items : new Ext.TabPanel( {
					activeTab : 0,

					items : [ {
						title : 'Tab Text 1',
						header : false,
						html : '<p>Something useful would be in here.</p>',
						border : false
					}, {
						title : 'Tab Text 2',
						header : false,
						html : '<p>Something useful would be in here.</p>',
						border : false
					}, {
						title : 'Tab Text 3',
						header : false,
						html : '<p>Something useful would be in here.</p>',
						border : false
					}, {
						title : 'Tab Text 4',
						header : false,
						html : '<p>Something useful would be in here.</p>',
						border : false
					} ]
				})
			});
		}
		win.show();
	}
});

DefaultToolbar.AccordionWindow = Ext.extend(Ext.app.Module, {
	id : 'acc-win',
	init : function() {
		this.launcher = {
			text : 'Accordion Window',
			iconCls : 'accordion',
			handler : this.createWindow,
			scope : this
		}
	},

	createWindow : function() {
		var desktop = this.app.getDesktop();
		var win = desktop.getWindow('acc-win');
		if (!win) {
			win = desktop.createWindow( {
				id : 'acc-win',
				title : 'Accordion Window',
				width : 250,
				height : 400,
				iconCls : 'accordion',
				shim : false,
				animCollapse : false,
				constrainHeader : true,

				tbar : [ {
					tooltip : {
						title : 'Rich Tooltips',
						text : 'Let your users know what they can do!'
					},
					iconCls : 'connect'
				}, '-', {
					tooltip : 'Add a new user',
					iconCls : 'user-add'
				}, ' ', {
					tooltip : 'Remove the selected user',
					iconCls : 'user-delete'
				} ],

				layout : 'accordion',
				border : false,
				layoutConfig : {
					animate : false
				},

				items : [ new Ext.tree.TreePanel( {
					id : 'im-tree',
					title : 'Online Users',
					loader : new Ext.tree.TreeLoader(),
					rootVisible : false,
					lines : false,
					autoScroll : true,
					tools : [ {
						id : 'refresh',
						on : {
							click : function() {
								var tree = Ext.getCmp('im-tree');
								tree.body.mask('Loading', 'x-mask-loading');
								tree.root.reload();
								tree.root.collapse(true, false);
								setTimeout(function() { // mimic a server call
											tree.body.unmask();
											tree.root.expand(true, true);
										}, 1000);
							}
						}
					} ],
					root : new Ext.tree.AsyncTreeNode( {
						text : 'Online',
						children : [ {
							text : 'Friends',
							expanded : true,
							children : [ {
								text : 'Jack',
								iconCls : 'user',
								leaf : true
							}, {
								text : 'Brian',
								iconCls : 'user',
								leaf : true
							}, {
								text : 'Jon',
								iconCls : 'user',
								leaf : true
							}, {
								text : 'Tim',
								iconCls : 'user',
								leaf : true
							}, {
								text : 'Nige',
								iconCls : 'user',
								leaf : true
							}, {
								text : 'Fred',
								iconCls : 'user',
								leaf : true
							}, {
								text : 'Bob',
								iconCls : 'user',
								leaf : true
							} ]
						}, {
							text : 'Family',
							expanded : true,
							children : [ {
								text : 'Kelly',
								iconCls : 'user-girl',
								leaf : true
							}, {
								text : 'Sara',
								iconCls : 'user-girl',
								leaf : true
							}, {
								text : 'Zack',
								iconCls : 'user-kid',
								leaf : true
							}, {
								text : 'John',
								iconCls : 'user-kid',
								leaf : true
							} ]
						} ]
					})
				}), {
					title : 'Settings',
					html : '<p>Something useful would be in here.</p>',
					autoScroll : true
				}, {
					title : 'Even More Stuff',
					html : '<p>Something useful would be in here.</p>'
				}, {
					title : 'My Stuff',
					html : '<p>Something useful would be in here.</p>'
				} ]
			});
		}
		win.show();
	}
});

// for example purposes
var windowIndex = 0;

DefaultToolbar.BogusModule = Ext.extend(Ext.app.Module, {
	init : function() {
		this.launcher = {
			text : 'Window ' + (++windowIndex),
			iconCls : 'bogus',
			handler : this.createWindow,
			scope : this,
			windowId : windowIndex
		}
	},

	createWindow : function(src) {
		var desktop = this.app.getDesktop();
		var win = desktop.getWindow('bogus' + src.windowId);
		if (!win) {
			win = desktop.createWindow( {
				id : 'bogus' + src.windowId,
				title : src.text,
				width : 640,
				height : 480,
				html : '<p>Something useful would be in here.</p>',
				iconCls : 'bogus',
				shim : false,
				animCollapse : false,
				constrainHeader : true
			});
		}
		win.show();
	}
});

DefaultToolbar.BogusMenuModule = Ext.extend(DefaultToolbar.BogusModule, {
	init : function() {
		this.launcher = {
			text : 'Bogus Submenu',
			iconCls : 'bogus',
			handler : function() {
				return false;
			},
			menu : {
				items : [ {
					text : 'Bogus Window ' + (++windowIndex),
					iconCls : 'bogus',
					handler : this.createWindow,
					scope : this,
					windowId : windowIndex
				}, {
					text : 'Bogus Window ' + (++windowIndex),
					iconCls : 'bogus',
					handler : this.createWindow,
					scope : this,
					windowId : windowIndex
				}, {
					text : 'Bogus Window ' + (++windowIndex),
					iconCls : 'bogus',
					handler : this.createWindow,
					scope : this,
					windowId : windowIndex
				}, {
					text : 'Bogus Window ' + (++windowIndex),
					iconCls : 'bogus',
					handler : this.createWindow,
					scope : this,
					windowId : windowIndex
				}, {
					text : 'Bogus Window ' + (++windowIndex),
					iconCls : 'bogus',
					handler : this.createWindow,
					scope : this,
					windowId : windowIndex
				} ]
			}
		}
	}
});

// Array data for the grid
Ext.grid.dummyData = [
		[ '3m Co', 71.72, 0.02, 0.03, '9/1 12:00am' ],
		[ 'Alcoa Inc', 29.01, 0.42, 1.47, '9/1 12:00am' ],
		[ 'American Express Company', 52.55, 0.01, 0.02, '9/1 12:00am' ],
		[ 'American International Group, Inc.', 64.13, 0.31, 0.49,
				'9/1 12:00am' ],
		[ 'AT&T Inc.', 31.61, -0.48, -1.54, '9/1 12:00am' ],
		[ 'Caterpillar Inc.', 67.27, 0.92, 1.39, '9/1 12:00am' ],
		[ 'Citigroup, Inc.', 49.37, 0.02, 0.04, '9/1 12:00am' ],
		[ 'Exxon Mobil Corp', 68.1, -0.43, -0.64, '9/1 12:00am' ],
		[ 'General Electric Company', 34.14, -0.08, -0.23, '9/1 12:00am' ],
		[ 'General Motors Corporation', 30.27, 1.09, 3.74, '9/1 12:00am' ],
		[ 'Hewlett-Packard Co.', 36.53, -0.03, -0.08, '9/1 12:00am' ],
		[ 'Honeywell Intl Inc', 38.77, 0.05, 0.13, '9/1 12:00am' ],
		[ 'Intel Corporation', 19.88, 0.31, 1.58, '9/1 12:00am' ],
		[ 'Johnson & Johnson', 64.72, 0.06, 0.09, '9/1 12:00am' ],
		[ 'Merck & Co., Inc.', 40.96, 0.41, 1.01, '9/1 12:00am' ],
		[ 'Microsoft Corporation', 25.84, 0.14, 0.54, '9/1 12:00am' ],
		[ 'The Coca-Cola Company', 45.07, 0.26, 0.58, '9/1 12:00am' ],
		[ 'The Procter & Gamble Company', 61.91, 0.01, 0.02, '9/1 12:00am' ],
		[ 'Wal-Mart Stores, Inc.', 45.45, 0.73, 1.63, '9/1 12:00am' ],
		[ 'Walt Disney Company (The) (Holding Company)', 29.89, 0.24, 0.81,
				'9/1 12:00am' ] ];

