Ext.namespace('CC');
Ext.namespace('CC.b');
Ext.namespace('CC.b.mod');

Ext.BLANK_IMAGE_URL = CC_webroot+'/js/ext-2.2/resources/images/default/s.gif';

var sessionTimer = false;

CC.b.mod.menu = function(){

	return{
	
		config : [],
	
		init : function(){
		}
	}

}();


CC.b.mod.layout = function(){

	return{
	
		config : [],
		
		init : function(){
		}
	}

}();


Ext.namespace('CC.main');

CC.main.layout = function(){
	return  {
		viewPort : null,
		timer : null,
		history : [],
		
		east : null,
		north : null,		
		center : {},
		west : null,				
		south : null,
		
		init : function(){
			
			//this.east = new Ext.Panel( CC.b.mod.layout.config.east );
			this.west = new Ext.Panel( CC.b.mod.layout.config.west );
			this.center = new Ext.Panel( CC.b.mod.layout.config.center );
			this.north = new Ext.Panel( CC.b.mod.layout.config.north );
			this.south = new Ext.Panel( CC.b.mod.layout.config.south );
			
			//Layout inicializalasa
			Ext.QuickTips.init();
			CC.main.layout.viewPort = new Ext.Viewport({
				title : 'UR',
				id: 'CCWiew',
				layout : 'border',
				items : 
				[ 
					this.center, this.north, this.south, this.west//,this.east,
				]
			});
			
		},
		
		addHistory : function(item){
			CC.main.layout.history.push(item);
		},


		clearLayout : function () {
			this.clearCenter();
			try {
				this.west.purgeListeners();
				while(CC.main.layout.west.items.length > 0) {
					this.west.remove(CC.main.layout.west.items.items[0].id, true);
				}
				CC.main.layout.west.setWidth(0);
			} catch(e) {}
			Ext.getCmp('CCWiew').doLayout();
		},


		clearCenter : function () {
			try {
				this.center.purgeListeners();
				while(CC.main.layout.center.items.length > 0) {
					this.center.remove(CC.main.layout.center.items.items[0].id, true);
				}
			} catch(e) {}
		},


		loadModule : function(module, event, init_params, from, requestParams) {
			if(CC.main.layout.isModuleLoaded(module)) return;
			if(requestParams == null) requestParams = {};

			var param = {
				url : CC_baseURL + module + '/extInit',
				params : requestParams,
				success : function(result) {
					result['start_event'] = event;
					if(init_params != null) {
						result['init_params'] = init_params;
						result['call_from'] = from;
					}
					CC.b.mod[module].config = result;
					Ext.apply(CC.b.mod[module].config, result);
					CC.help.garbage.addStack(module);
					CC.b.mod[module].init();
					CC.f.mod.menu.keepSessionAliveStart();
				}
			};
			CC.help.ajax.doAjax(param);
		},


		isModuleLoaded : function(module) {
			return !isEmpty(CC.b.mod[module].config);
		}

	}
} ();


Ext.namespace('CC.f');
Ext.namespace('CC.f.mod');


CC.f.mod.menu = function(){

	return{	
		
		init : function(){
			// Menu inicializalasa
			this.initMenuItems( CC.b.mod.menu.config );
		},
		
		
		createMenuItem : function( conf_item, p_submenu, parent ) {
			return new Ext.Action(
						{
							text : conf_item.text,
							parentMenuName : parent,
							menu_event : 'CC.f.mod.menu.loadPage(this, "'+ conf_item.module +'", "' + conf_item.event +'");',
							menu : p_submenu,
							handler : function() {
								eval( this.menu_event );
							}
						}
					);
		},
		
		initMenuItems : function( conf_item_list ) {
			
			for ( var i = 0; i < conf_item_list.length; i++ ) {
				var submenu = null;
				try 
				{
					// Elso szintu almenu osszeellitasa
					if ( conf_item_list[ i ].menu != null && conf_item_list[ i ].menu.length > 0 ) 
					{
						submenu = [];
						for ( i2 = 0; i2 < conf_item_list[ i ].menu.length; i2++ ) {
							submenu.push(
								this.createMenuItem( 
									conf_item_list[ i ].menu[ i2 ], 
									null,
									conf_item_list[i].text 
								)
							);
						}
					}
				}
				catch( e ) {
					
				}
				var menuitem = this.createMenuItem( conf_item_list[ i ], submenu, null );
				CC.main.layout.north.getTopToolbar().add( menuitem );
				
			}
				CC.main.layout.north.getTopToolbar().addFill();
				// TODO honnan jonnek a nyelvek
				CC.main.layout.north.getTopToolbar().addText('<span class="lang_select">[ <a href="?sf_culture=hu">Magyar</a>, <a href="?sf_culture=en_GB">English</a> ]</span> &nbsp; ');
				
				//ez egyelore maradhat itt kesobb meg esetleg hasznos lehet, ha nem akkor kuka
				/*CC.main.layout.north.getTopToolbar().items.items.push({xtype:'tbfill'});
				CC.main.layout.north.getTopToolbar().items.items.push({xtype:'action', text:'almaaaaaaaa'});
				CC.main.layout.north.getTopToolbar().render();*/
				/*var elem = CC.main.layout.north.getTopToolbar().el;
				var div = elem.createChild("<div></div>");
				var divMenu = div.createChild("<div align='left'></div>");
				var divLang = div.createChild("<div align='right'></div>");
				divMenu.appendChild(elem.child("table"));*/
				//CC.main.layout.north.getTopToolbar().add( {xtype: 'tbfill'} );
			
		},
		
		
		keepSessionAlive : function(){	
			var param ={
					url: CC.f.mod.login.ajaxUrl +'extKeepSessionAlive',
					params: {
						rand: Math.random ( )
					},
					success: function(result){
						
					},
					failureMessage : false
				};	
			sessionTimer = false;
			CC.help.ajax.doAjax(param);	
			CC.f.mod.menu.keepSessionAliveStart();
			
		},
		keepSessionAliveStart : function(){
			if (!sessionTimer){
				sessionTimer = true;
				var keepSessionAliveTimer = setTimeout("CC.f.mod.menu.keepSessionAlive()",120000);
			}
		},
		
		loadPage : function( caller, module, event, requestParams ) {
			if ( module != '' && event != '' ) {	
				//save the previous module settings
				if (typeof CC.main != 'undefined'){
					if (typeof CC.main.layout != 'undefined'){
						if (CC.main.layout.history.length > 0){
							var prevModul = CC.main.layout.history[CC.main.layout.history.length-1];
							if (prevModul != 'menu'){
								if (typeof CC.f.mod[prevModul] != 'undefined'){
									if (typeof CC.f.mod[prevModul].grids != 'undefined' && !isEmpty( CC.f.mod[prevModul].grids)){
										
										var first = getAttributeByIndex(CC.f.mod[prevModul].grids,0);
										var key = getKeyByIndex(CC.f.mod[prevModul].grids,0);
										//die_r();
										if (typeof first != 'undefined'){
											
											//create config to save use only width and hidden param
											var tempConfig = [];
											var conf = first.grid.colModel.config;
											//die_r(first.grid.colModel.config,'layout');
											for (i in conf){
												//dont need muveletek column, thats the last
												if (conf[i].dataIndex !=conf[conf.length-1].dataIndex && typeof conf[i] != 'function' ){
													var tempItem = {};
													tempItem.width =conf[i].width;
													tempItem.hidden =conf[i].hidden;
													tempItem.dataIndex =conf[i].dataIndex;
													tempConfig.push(tempItem);
												}
											}
											
											var data = {};
											data['modul'] = prevModul;
											data['config'] = Ext.encode(tempConfig);
											data['key'] = key;
											var param ={
													url: CC.f.mod.login.ajaxUrl +'extGridSave',
													params: {
														formdata: Ext.encode( data )
													},
													success: function(result){
														
													}
												};	
											CC.help.ajax.doAjax(param);			
										}
									}
								}
							}
						}
					}
				}
				
				try
				{
					// Fo tartalomresz takaritasa
					CC.main.layout.clearLayout();
									
					if ( !CC.main.layout.isModuleLoaded( module ) ) {
						CC.main.layout.loadModule( module, event, null, null, requestParams);
						this.initMenuPath( caller.parentMenuName, caller.text );
					} else {
					
						if ( typeof( eval( 'CC.f.mod.'+ module ) ) == 'undefined' ) {
							
							/**
							 * TODO Meg kell probalni betolteni a modul js-et
							 */
							
							Ext.MessageBox.alert( CC.b.enter.config.msError, 'Missing module: '+ module );
							// document.write('<script src="'+CC_webroot+'/js/modules/'+ module +'.js"></script>');
						}
					
						try
						{
							eval( 'CC.f.mod.'+ module +'.'+ event +'();');
							this.initMenuPath( caller.parentMenuName, caller.text );
						}
						catch( e ) {
							Ext.MessageBox.alert( CC.b.enter.config.msError, 'Could not load "'+ module +'" module "'+ event +'" event.<br />\n'+ e.message );
						}
					}
					CC.main.layout.addHistory(module);
				}
				catch( e ) {
					Ext.MessageBox.alert( CC.b.enter.config.msError, 'Missing "'+ module +'" module backend.<br />\n'+ e.message );
				}
			}
		},
		
		initMenuPath : function( mainMenu, subMenu ) 
		{
			CC.main.layout.north.getBottomToolbar().items.items.shift().destroy();
			if ( mainMenu == null ) {
				mainMenu = '';
			} else {
				mainMenu += ' &gt; ';
			}
			CC.main.layout.north.getBottomToolbar().add( mainMenu + subMenu);
		}
		
		
		
	}
}();
