Ext.namespace('CC');
Ext.namespace('CC.b');
Ext.namespace('CC.b.mod');

CC.b.mod.riports = function(){

	return{
	
		config : {},
	
		init : function(){
			if ( typeof CC.b.mod.riports.config.init_params == undefined ) {
				CC.b.mod.riports.config.init_params = null;
			}
			CC.f.mod.riports.init();
		}
	};

}();

Ext.namespace('CC.f');
Ext.namespace('CC.f.mod');

CC.f.mod.riports = function(){
	
	return{
		
		ajaxUrl : CC_baseURL +'riports/',
		
		grids : {},
		formItems : [],
		windows: [],
		
		tree :{},
		
		init : function(){
			eval( 'this.'+ CC.b.mod.riports.config.start_event +'();' );
			CC.b.mod.riports.config.init_params = null;
		},
		
		list : function () {
			var module_back = CC.b.mod.riports;
			var module = CC.f.mod.riports;
			var layout = CC.main.layout;
			
			var tbarConfig = [ 
        		{
        			text : CC.b.enter.config.gridNewRecord,
        			handler : module.showAddForm
        		}
       		];
        	
        	//modulNameParam, gridName, ajaxUrl, primaryField, tbarConfig
			/*CC.help.grid.initGrid( 'riports', 
				{
					dataIndex : 'Base', 
					ajaxUrl : 'extBase',
					primaryField : 'ID'
				},
				tbarConfig );*/
			this.tree = new Ext.TreeBar({
				moduleName: 'riports',
				gridName: 'Base',
				dataIndex: 'categoryTree',
				title: 'Kimutatások',
				urlGetData : this.ajaxUrl+'extCategorytree',
				urlGetTreeFormItem : this.ajaxUrl+'extCategoryForm',
				urlTreeHandler : this.ajaxUrl+'extCategoryHandle',
				dblClickEvent : module.getParameterForm,
				urlTreeDelete : this.ajaxUrl+'extCategorytreeDelete',
				buttons : {
					create : module_back.config.buttonCreateMenu,
					edit : CC.b.mod.riports.config.buttonEditMenu,
					del : CC.b.mod.riports.config.buttonDeleteMenu,
					changeParent : CC.b.mod.riports.config.buttonAddData
				},
				changeParent : function(){
					try{
						var category = this.obj.tree.selModel.getSelectedNode().attributes[this.obj.gridPkField];
						var prevId = this.obj.previousNode;
					}catch(e){
					}
					try{
						var datas = module.grids.Base.grid.getSelectionModel().getSelections();
					}catch(e){
					}
					if (typeof category != 'undefined' && datas.length>0){
						var ids = {};
						ids['category'] = category;
						ids['riports'] = {};
						for ( i in datas){
							if (typeof datas[i] == 'object'){
								ids['riports'][i] = {ID : datas[i].id};
							}
						}
						
						var param ={
							singleInstance : true,
							url: module.ajaxUrl+'extAssignData',
							params:{ 
								formData : Ext.encode(ids) 
							},
							success: function(result){
					
								module.grids.Base.grid.getStore().reload({params: {categoryId: prevId}});
							}
						};	
						CC.help.ajax.doAjax(param);
					}
				}			
			});
			var view = Ext.getCmp('CCWiew');
			var west = layout.west;
			west.add(this.tree);
			west.setWidth(200);
			west.on('resize',
					function() {
						var h = view.getSize().height - 82;
						module.tree.setTBHeight(h);
					}
				);

			module.centerPanel = new Ext.Panel({
				layout : 'border',
				border : false,
				id : 'centerPanel',
				//height : 350,
				items :[
					{
						region : 'west',
						title : '',
						width : 300,
						collapsible : true,
						split:true
					},
					{
						region : 'center',
						title : '',
						width : 700,
						split : true,
						autoScroll : true,
						bodyStyle : 'background:#ffffff;padding:8px;'
					},
					{
						region : 'east',
						title : '',
						width : 90,
						collapsible : true,
						split:true,
						bodyStyle : 'background:#ffffff;padding:8px;'
						/*items : {
				            xtype: 'columnchart',
				            store: store,
				            yField: 'hits',
				            xField: 'month',
				            xAxis: new Ext.chart.CategoryAxis({
				                title: 'Month'
				            }),
				            yAxis: new Ext.chart.NumericAxis({
				                title: 'Hits'
				            }),
				            extraStyle: {
				               xAxis: {
				                    labelRotation: -90
				                }
				            }
				        }*/
										
					}
				]
			});

			layout.center.on('resize',
				function() {
					module.centerPanel.setHeight(view.getSize().height - (44 + 38));
					module.centerPanel.show();
				}
			);
			layout.center.add(module.centerPanel);			
			view.doLayout();
			//this.grids.Base.grid.on('rowdblclick', this.displayEditorWindowByDblClick );
		},


		displayEditorWindow : function( dbId ){
			
			if ( CC.b.mod.riports.config.init_params != null ) {
				dbId = CC.b.mod.riports.config.init_params;
				CC.b.mod.riports.config.init_params = null;
			}
			
			var request_params = null;
			if ( dbId != null ) {
				request_params = { 'ID': dbId };
			} else {
				request_params = {};
			}
			
			var param ={
				singleInstance : true,
				url: CC.f.mod.riports.ajaxUrl +'extBaseform',
				params: request_params,
				success: function(result){
					CC.b.mod.riports.config.formData.editForm = result;
					//makeitems(formleiro adatok, modul neve, formon beluli index, gridconfig helye helye)
					CC.help.form.makeItems( CC.b.mod.riports.config.formData.editForm.items, 'riports', 'edit', CC.b.mod.riports.config.grids.Base);
					CC.help.form.showWindow( CC.b.mod.riports.config.formData.editForm.items, 'riports', 'edit', 'doSaveRecord', CC.b.mod.riports.config.formData.editForm.window.edit);
					CC.f.mod.riports.windows.edit.dbId = dbId;
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		displayEditorWindowByDblClick : function( gridObject, rowIndex ){
			var key = null;
			var gridObject = CC.f.mod.riports.grids.Base.grid;
			if ( typeof gridObject.selModel.selections.keys == 'object' ) {
				key = gridObject.selModel.selections.keys[0];
			} else {
				key = gridObject.selModel.selections.keys;
			}
			CC.f.mod.riports.displayEditorWindow( key );
		},
		
		showAddForm : function(){
			CC.f.mod.riports.displayEditorWindow(null);
		},
		
		doSaveRecord : function(){
			var ok = CC.help.form.validateForm(CC.f.mod.riports.formItems.edit);
			if ( ok ) {
				if ( CC.f.mod.riports.grids.Packing.gridStore.data.length > 0 ) {
					var data = CC.help.form.getFormData(CC.f.mod.riports.formItems.edit);
					data['default']['ID'] = CC.f.mod.riports.windows.edit.dbId;
					
					//CCdebug( 'data', data );
					
					var param ={
						url: CC.f.mod.riports.ajaxUrl +'extBasesave',
						params: {
							formdata: Ext.encode( data )
						},
						success: function(result){
							if ( result.success ) {
								//CC.f.mod.riports.windows.edit.close();
							} else {
								Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
							}
							try {
								CC.f.mod.riports.grids.Base.gridStore.reload();
							} catch (e) {
								// Ha külső modul hívja, akkor nem lehet frissítenbi a gridet
							}
						}
					};	
					CC.help.ajax.doAjax(param);
				} else {
					ok = false;
					Ext.MessageBox.alert( CC.b.enter.config.msgError, CC.b.mod.riports.config.errorNoPacking );
				}
			} else {
				Ext.MessageBox.alert( CC.b.enter.config.msgError, CC.b.enter.config.msgCheckField );
			}
			
			
			return ok;
		},
		
		doDelete : function( key ) {
			Ext.MessageBox.confirm('', 
				CC.b.mod.riports.config.deleteQuestion, 
				function( btn )
				{
					if (btn == 'yes')
					{
						CC.f.mod.riports.deleteFromDatabase( key );
					}
				}
			);
		},
		
		deleteFromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extBasedelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.Base.gridStore.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		
		
		
		// ---- v v v ----- Kiszerelés innen --- v v v ----------
		
		
		displayPackingEditorWindow : function( dbId ){
			
			var request_params = null;
			if ( dbId != null ) {
				request_params = { ID: dbId };
			} else {
				request_params = {};
			}
			
			var param ={
				singleInstance : true,
				url: CC.f.mod.riports.ajaxUrl +'extPackingform',
				params: request_params,
				success: function(result){
					CC.b.mod.riports.config.formData.editPackingForm = result;
					//makeitems(formleiro adatok, modul neve, formon beluli index, gridconfig helye helye)
					CC.help.form.makeItems( CC.b.mod.riports.config.formData.editPackingForm.items, 'riports', 'editPacking', CC.b.mod.riports.config.grids.Packing);
					CC.help.form.showWindow( CC.b.mod.riports.config.formData.editPackingForm.items, 'riports', 'editPacking', 'doSavePackingRecord', CC.b.mod.riports.config.formData.editPackingForm.window.editPacking);
					CC.f.mod.riports.windows.editPacking.dbId = dbId;
				}
			};	
			CC.help.ajax.doAjax(param);
			
		},
		
		showAddPackingForm : function(){
			CC.f.mod.riports.displayPackingEditorWindow(null);
		},
		
		doSavePackingRecord : function(){
			var ok = CC.help.form.validateForm(CC.f.mod.riports.formItems.editPacking);
			if ( ok ) {
				var data = CC.help.form.getFormData(CC.f.mod.riports.formItems.editPacking);
				data['default']['ID'] = CC.f.mod.riports.windows.editPacking.dbId;
				
				//CCdebug( 'data', data );
				var temp_ = data['default']['BASE'];
				if (temp_){data['default']['BASE'] = 'Y';} else{data['default']['BASE'] = 'N';}
				temp_ = data['default']['DISPLAY'];
				if (temp_){
					data['default']['DISPLAY'] = 'Y';
				} else{
					data['default']['DISPLAY'] = 'N';
				}
				var param ={
					url: CC.f.mod.riports.ajaxUrl +'extPackingsave',
					params: {
						formdata: Ext.encode( data )
					},
					success: function(result){
						if ( result.success ) {
							//CC.f.mod.riports.windows.edit.close();
						} else {
							Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
						}
						CC.f.mod.riports.grids.Packing.gridStore.reload();
					}
				};	
				CC.help.ajax.doAjax(param);
			} else {
				Ext.MessageBox.alert( CC.b.enter.config.msgError, CC.b.enter.config.msgCheckField );
			}
			
			return ok;
		},
		
		doPackingDelete : function( key ) {
			Ext.MessageBox.confirm('', 
				CC.b.mod.riports.config.deleteQuestion, 
				function( btn )
				{
					if (btn == 'yes')
					{
						CC.f.mod.riports.deletePackingFromDatabase( key );
					}
				}
			);
		},
		
		deletePackingFromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extPackingdelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.Packing.gridStore.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		getParameterForm : function(node){
					
			var param ={
				singleInstance : true,
				url: CC.f.mod.riports.ajaxUrl +'extGetParameterForm',
				params: node,
				success: function(result){
					CC.b.mod.riports.config.formData.parameterForm = result;
					//makeitems(formleiro adatok, modul neve, formon beluli index, gridconfig helye helye)
					CC.help.form.makeItems( CC.b.mod.riports.config.formData.parameterForm.items, 'riports', 'parameterForm', CC.b.mod.riports.config.grids.Packing);
					
					var form = 	{
			            xtype:'tabpanel',
			            deferredRender:false,
			            activeTab: 0,
			            defaults:{autoHeight:true, autoWidth: true, bodyStyle:'padding:5px',hidden:false}, 
			            items: CC.b.mod.riports.config.formData.parameterForm.items
			        };
			        
			        var button = {
			      		text: 'OK',
			      		xtype:'button',
			      		handler : CC.f.mod.riports.postParameters   			
			        };
			        var button2 = {
				      		text: 'Print',
				      		xtype:'button',
				      		handler : CC.f.mod.riports.printChart  			
				    };
			        var button3 = {
				      		text: 'Excel',
				      		xtype:'button',
				      		handler : CC.f.mod.riports.createExcel			
				    };
			        CC.f.mod.riports.centerPanel.items.items[0].add(form);
			        CC.f.mod.riports.centerPanel.items.items[0].add(button);
			        CC.f.mod.riports.centerPanel.items.items[0].add(button2);
			        CC.f.mod.riports.centerPanel.items.items[0].add(button3);
			        Ext.getCmp('CCWiew').doLayout();
				}
			};	
			CC.help.ajax.doAjax(param);		
		},
		
		printChart : function(){
			window.open (CC.f.mod.riports.ajaxUrl +'extPrint',"print"); 
		},
		
		createExcel : function(){
			window.open (CC.f.mod.riports.ajaxUrl +'Excel',"excel"); 
		},
		
		
		postParameters : function(){
			var data = CC.help.form.getFormData(CC.f.mod.riports.formItems.parameterForm);

			var param ={
				singleInstance : true,
				url: CC.f.mod.riports.ajaxUrl +'extPostParameters',
				params: {
					formdata: Ext.encode( data )
				},
				success: function(result){
					CC.f.mod.riports.centerPanel.items.items[1].body.update(result.result);
			        Ext.getCmp('CCWiew').doLayout();	
				}
			};	
			CC.help.ajax.doAjax(param);	
			
			
			
			
			var conn = new Ext.data.Connection({});
				conn.request({
					url: CC.f.mod.riports.ajaxUrl +'generateChart',
					params: {
						page_name: 1
					},
					test: 'Loading...',
					callback: function(options, success, responseObj) {
						var response = responseObj.responseText;
						CC.f.mod.riports.centerPanel.items.items[2].body.update(response);
					}
				});
			
			
			
			/*var param ={
				singleInstance : true,
				url: CC.f.mod.riports.ajaxUrl +'GenerateChart',
				success: function(result){
					CC.f.mod.riports.centerPanel.items.items[2].body.update(result);
			        Ext.getCmp('CCWiew').doLayout();	
				}
			};	
			CC.help.ajax.doAjax(param);	*/
		},
		
		
		/* ----------- Média innen --------------- */

		
		showAddproduct_mediaForm : function() {
			
			CC.f.mod.riports.grids.product_media.grid.store.add( 
				new Ext.data.Record(
					{
						id : -1,
						NAME : '',
						LINK : '',
						CATEGORY_ID : 1,
						COUNTER : 0
					}
				)
			);
			
		},
		
		product_media_autosave : function( event ) {
			/**
			 * The edit event object has the following properties 
		    * grid - This grid
		    * record - The record being edited
		    * field - The field name being edited
		    * value - The value being set
		    * originalValue - The original value for the field, before the edit.
		    * row - The grid row index
		    * column - The grid column index
		    */
			if ( typeof event.record != 'undefined' ) {
				var record = event.record;
				
				if ( 
					typeof record.data.NAME != 'undefined' &&
					typeof record.data.NAME != '' &&
					typeof record.data.LINK != 'undefined'
				) {

					var formdata = {};
					formdata['default'] = record.data;
					var param ={
						url: CC.f.mod.riports.ajaxUrl +'extProductMediasave',
						params: {
							formdata: Ext.encode( formdata )
						},
						success: function(result){
							if ( result.success ) {
								if ( typeof result.newId != 'undefined' ) {
									record.set('ID', result.newId );
									record.id = result.newId;
								}
							} else {
								Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
							}
						}
					};
					CC.help.ajax.doAjax(param);
					
				}
			}
		},
		
		product_media_render_file_name : function( val ) {
			if ( val == null || val == '' ) return val;
			var parts = val.split( '/' );
			if ( parts.length > 1 )	return parts[ parts.length -1 ];
			return val;
		},
		
		do_product_media_Delete : function( key ) {
			Ext.MessageBox.confirm('', 
				CC.b.mod.riports.config.deleteQuestion, 
				function( btn )
				{
					if (btn == 'yes')
					{
						CC.f.mod.riports.delete_product_media_FromDatabase( key );
					}
				}
			);
		},
		
		delete_product_media_FromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extProductMediadelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.product_media.gridStore.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		

		
		/* ----------- Tulajdonságok innen --------------- */

		
		showAddproduct_category_propertyForm : function() {
			//CC.f.mod.delivery_notes.display_bill_item_EditorWindow( null );
			CC.f.mod.riports.grids.product_category_property.grid.store.add( new Ext.data.Record(
					{
						id : -1,
						NAME : ''
						
					}
				)
			);
		},
		
		category_property_renderer : function( value, metadata, record, colIndex, rowIndex, store ) {

			return record.data.PROPERTY_NAME;
		},
		
		doDelete_category_property : function( key ) {
			var record = CC.f.mod.riports.grids.product_category_property.grid.store.getById( key );
			if ( typeof record.data.ID == 'undefined' ) {
				CC.f.mod.riports.grids.product_category_property.grid.store.remove( record );
			} else {
				Ext.MessageBox.confirm('', 
					CC.b.mod.riports.config.deleteItemQuestion, 
					function( btn )
					{
						if (btn == 'yes')
						{
							CC.f.mod.riports.delete_product_category_property_FromDatabase( key );
						}
					}
				);
			}
		},
		
		delete_category_property_FromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extProductCategoryPropertyDelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( result.success ) {
						CC.f.mod.riports.grids.product_category_property.gridStore.reload();
					} else {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					
				}
			};
			CC.help.ajax.doAjax(param);
		},
		
		product_category_property_autosave : function(event){
			var datas = {};
			var temp = null;
			var records = CC.f.mod.riports.grids.product_category_property.grid.store.getModifiedRecords();
			
			for(var i=0; i<records.length;i++){
				if (typeof records[i] == 'object'){
					temp = {};
					temp['ID']=records[i].data.ID;
					temp['NAME']=records[i].data.PROPERTY_NAME;
					datas[i]=temp;
					
					if ( records[i].data.PROPERTY_NAME == 'undefined' ) {
						// FIXME ha tabbal, vagy enterrel lép ki a szerkesztőből (combo) az input értéke nem kerül bele a mezőbe, így üreset postol
						die_r( records[i].data, 'Hibás rekord records[i].data' );
					}
				}
			}
			
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extProductCategoryPropertySave',
				params: {
					formdata : Ext.encode(datas)
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.product_category_property.grid.store.commitChanges();
					CC.f.mod.riports.grids.product_category_property.grid.store.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
			
			
		},
		
		product_property_autosave : function(event){
			var datas = {};
			var temp = null;
			var records = CC.f.mod.riports.grids.product_property.grid.store.getModifiedRecords();
			for(var i=0; i<records.length;i++){
				if (typeof records[i] == 'object'){
					temp = {};
					temp['PRODUCT_ID']=records[i].data.PRODUCT_ID;
					temp['PROPERTY_ID']=records[i].data.PROPERTY_ID;
					temp['VALUE']=records[i].data.VALUE;
					datas[i]=temp;
				}
			}
			
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extProductPropertySave',
				params: {
					formdata : Ext.encode(datas)
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.product_property.grid.store.commitChanges();
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		
		doDelete_category_property : function(key){
			Ext.MessageBox.confirm('', 
				CC.b.mod.riports.config.deleteQuestion, 
				function( btn )
				{
					if (btn == 'yes')
					{
						CC.f.mod.riports.deleteCategoryPropertyFromDatabase( key );
					}
				}
			);
		},
		
		deleteCategoryPropertyFromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extCategoryPopertydelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.product_category_property.grid.store.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		},
	
		product_related_renderer : function( value, metadata, record, colIndex, rowIndex, store ) {

			return record.data.PRODUCT_NAME;
		},
		
		showAddproduct_relatedForm : function() {
			//CC.f.mod.delivery_notes.display_bill_item_EditorWindow( null );
			CC.f.mod.riports.grids.product_related.grid.store.add( new Ext.data.Record(
					{
						id : -1,
						NAME : ''
						
					}
				)
			);
		},
		
		product_related_autosave : function(event){
					/**
			 * The edit event object has the following properties 
		    * grid - This grid
		    * record - The record being edited
		    * field - The field name being edited
		    * value - The value being set
		    * originalValue - The original value for the field, before the edit.
		    * row - The grid row index
		    * column - The grid column index
		    */
			var datas = {};
			var temp = null;
			var records = CC.f.mod.riports.grids.product_related.grid.store.getModifiedRecords();
			if (typeof records[0] == 'object'){
				temp = {};
				temp['RELATED_PRODUCT_ID']=records[0].data.RELATED_PRODUCT_ID;
				if (typeof records[0].data.ID != 'undefined'){
					temp['ID']=records[0].data.ID;
				}
				datas['default']=temp;
			}
			
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extRelatedSave',
				params: {
					formdata : Ext.encode(datas)
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}else{
						if ( typeof result.newId != 'undefined' ) {
							event.record.set('ID', result.newId );
							event.record.id = result.newId;
						}
					}
					CC.f.mod.riports.grids.product_related.grid.store.commitChanges();
					CC.f.mod.riports.grids.product_related.grid.store.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		
		},
		
		doDelete_product_related : function(key){
			Ext.MessageBox.confirm('', 
				CC.b.mod.riports.config.deleteQuestion, 
				function( btn )
				{
					if (btn == 'yes')
					{
						CC.f.mod.riports.deleteProductRelatedFromDatabase( key );
					}
				}
			);
		},
		
		deleteProductRelatedFromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.riports.ajaxUrl +'extProductRelateddelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.riports.grids.product_related.grid.store.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		}
		
	}
	
}();