/**
 * @author michal.blaha@syntacticsugar.com
 */
function Layout(){
	var tool_bar = new Ext.Toolbar({
		monitorResize: true
	});
	var cont_bar = new Ext.Toolbar({
		// layout: 'float',
		monitorResize: true
	});
	
	var tabs_bar = new Ext.Toolbar({
		// layout: 'float',
		monitorResize: true
	});
	
	var desktop;
	
	var book_bar = new Ext.ux.Portal();
	book_bar.on('afterlayout', function(){
		if (this.dd) {
			if (this.dd.lastPos) {
				containerCollection.save(false);
			}
		}
	});

	/**
	 * tlacitko pro ulozeni
	 */
	var save_btn = new Ext.Button({
		text: 'save',
		iconCls: 'ico-none',
		handler: function(){
			containerCollection.save(true);
		},
		hidden: true
	});

	var sign_btn = new Ext.Button({
		text: msg.signIn,
		iconCls: 'ico-key',
		handler: function(){
			top.location = HOME_URL + 'account';
		},
		pulsed: false
	})
	
	this.tool_bar = tool_bar;
	this.cont_bar = cont_bar;
	this.tabs_bar = tabs_bar;
	this.book_bar = book_bar;
	this.save_btn = save_btn;
	this.sign_btn = sign_btn;
	
	Ext.onReady(function(){
		activate();
	});
	
	function activate(){
		createToolBar();
		createContBar();
		createTabsBar();
		createDesktop();
		Ext.EventManager.onWindowResize(desktopResize);
	}
	
	/**
	 * vytvoreni a naplneni panelu s informaci o uzivateli
	 */
	function createToolBar(){
	
		tool_bar.render('user_bar');
		
		/**
		 * pole pro adresu noveho okna
		 */
		var urlField = new Ext.form.TextField({
			mode: 'local',
			// emptyText: msg.urlAddress + '...',
			width: 300,
			enableKeyEvents: true
		});
		
		/**
		 * enter v poli pro adresu noveho okna
		 * @param {Object} obj
		 * @param {Object} key
		 */
		urlField.on('specialkey', function(obj, key){
			if (key.getKey() == 13) {
				onNewFrameClick();
			}
		});
		
		/**
		 * tlacitko pro vytvoreni noveho okna
		 */
		var urlButton = new Ext.Button({
			text: msg.newWindow,
			iconCls: 'ico-add',
			handler: onNewFrameClick
		});
		
		/**
		 * pole pro hledani
		 */
		var searchField = new Ext.form.TextField({
			id: 'cse-search-box',
			mode: 'local',
			// emptyText: msg.search + '...',
			width: 136,
			enableKeyEvents: true
		});
		
		/**
		 * enter v poly pro hledani
		 * @param {Object} obj
		 * @param {Object} key
		 */
		searchField.on('specialkey', function(obj, key){
			if (key.getKey() == 13) {
				onSearchClick();
			}
		});
		
		/**
		 * tlacitko pro hledani
		 */
		var searchButton = new Ext.Button({
			text: msg.search,
			iconCls: 'ico-search',
			handler: onSearchClick
		});
		
		tool_bar.add(urlField, urlButton, '-', save_btn, '->');
		
		if (USER_NAME != "quest") {
			tool_bar.add({
				text: '<strong>' + USER_NAME + '</strong>',
				iconCls: 'ico-user',
				handler: function(){
					top.location = HOME_URL + 'account/settings';
				}
			});
			if (IS_ADMIN) {
				tool_bar.addSeparator();
				tool_bar.add({
					text: msg.administration,
					handler: function(){
						top.location = HOME_URL + 'account/administration';
					}
				});
			}
			tool_bar.addSeparator();
			tool_bar.add({
				text: msg.signOut,
				handler: function(){
					top.location = HOME_URL + 'account/logout';
				}
			});
		}
		else {
			tool_bar.add({
				text: '<strong>' + msg.newAccount + '</strong>',
				handler: function(){
					top.location = HOME_URL + 'account/new';
				}
			});
			tool_bar.addSeparator();
			tool_bar.add(sign_btn);
		}
		
		tool_bar.add(searchField, searchButton);
		tool_bar.doLayout();
		
		function onNewFrameClick(){
			var url = urlField.getValue();
			if (url.search(/\S+/) > -1) {
				containerCollection.addFrame(url);
				if (layout.sign_btn.isVisible()) {
					layout.signPulse();
				}
			}
			urlField.setValue();
		}

		function onSearchClick(){
			search.params.q = searchField.getValue();
			
			if (search.params.q.search(/\S+/) > -1) {
				var url = search.location + '?';
				for (var i in search.params) {
					url += i + '=' + encodeURIComponent(search.params[i]) + '&';
				}
				url = url.replace(/&$/, '');
				containerCollection.addFrame(url, true);
			}
			searchField.setValue();
		}

		// search box -> google background		
		var q = document.getElementById('cse-search-box');
		q.style.background = '#FFFFFF url(http:\x2F\x2Fwww.google.com\x2Fcse\x2Fintl\x2Fen\x2Fimages\x2Fgoogle_custom_search_watermark.gif) left no-repeat';
		q.onfocus = function(){
			var q = document.getElementById('cse-search-box');
			q.style.background = '#ffffff';
		};
		q.onblur = function(){
			var q = document.getElementById('cse-search-box');
			if (q.value == '') {
				q.style.background = '#FFFFFF url(http:\x2F\x2Fwww.google.com\x2Fcse\x2Fintl\x2Fen\x2Fimages\x2Fgoogle_custom_search_watermark.gif) left no-repeat';
			}
		};
	}
	
	function createContBar(){
		cont_bar.render('cont_bar');
	}
	
	function createTabsBar(){
		tabs_bar.render('tabs_bar');
		tabs_bar.hide();
	}
	
	function createDesktop(){
		book_bar.render('desktop');
		
		desktop = Ext.get('desktop');
		
		desktopResize();
	}
	
	function desktopResize(){
	
		var width = Ext.lib.Dom.getViewWidth();
		// var position = desktop.getPosition();
		// var top = position[1];
		var top = desktop.getTop();
		
		book_bar.setWidth(width - 20).doLayout();
		
		var height = Ext.lib.Dom.getViewHeight() - top;
		if (height < 100) {
			height = 100;
		}
		desktop.setHeight(height);
	}
	
	
	this.desktopResize = desktopResize;

	this.signPulse = function() {
		if (!sign_btn.pulsed && USER_NAME == "quest" && USER_ID > 1) {
			sign_btn.pulsed = true;
			signPulseAction();
		}
	}
}

function signPulseAction() {
	Ext.get(layout.sign_btn.el).fadeOut().fadeIn();
	setTimeout('signPulseAction()', 2000);
}

