Ext.namespace('CC');
Ext.namespace('CC.b');
Ext.namespace('CC.b.mod');

CC.b.mod.partner = function(){

	return{
	
		config : {},
	
		init : function(){
			 CC.f.mod.partner.init();
		}
	}

}();

Ext.namespace('CC.f');
Ext.namespace('CC.f.mod');

CC.f.mod.partner = function(){
	
	return{
		
		ajaxUrl : CC_baseURL +'partner/',
		
		grids : {},
		formItems : [],
		windows: [],
		
		
		
		init : function(){
			eval( 'this.'+ CC.b.mod.partner.config.start_event +'();' );
		},
		
		base : function () {
			var tbarConfig = [ 
	        		{
	        			text : CC.b.enter.config.gridNewRecord,
	        			handler : CC.f.mod.partner.showAddForm
	        		},
	        		{ xtype : 'tbfill' },
					{
						xtype : 'label',
						text : CC.b.mod.partner.config.textType,
						style : 'padding:0 2px;'
					},
	        		{
	        			xtype : 'combo',
	        			id : 'FUNC_filter',
	        			dataIndex : 'FUNC_filter',
	        			displayField : 'text',
	            		valueField : 'value',
	        			mode : 'remote',
	        			triggerAction : 'all',
	        			store : new Ext.data.JsonStore(
	        				{
	        					autoLoad: true,
		        				url : this.ajaxUrl + 'extComboFilterFunc',
		              			fields : ['value', 'text'],
		              			root: 'result'
		        			}
	        			),
	               		autoLoad : true,
	               		typeAhead : true,
	               		forceSelection : true,
	        			allowBlank : false
	        		},
					{ xtype : 'tbseparator' },
					{
						xtype : 'label',
	        			text : CC.b.mod.partner.config.textState,
						style : 'padding:0 2px;'
					},
	        		{
	        			xtype : 'combo',
	        			id : 'STATE_filter',
	        			dataIndex : 'STATE_filter',
	        			displayField : 'text',
	            		valueField : 'value',
	        			mode : 'remote',
	        			triggerAction : 'all',
	        			store : new Ext.data.JsonStore(
	        				{
	        					autoLoad: true,
		        				url : this.ajaxUrl + 'extComboFilterState',
		              			fields : ['value', 'text'],
		              			root: 'result'
		        			}
	        			),
	               		autoLoad : true,
	               		typeAhead : true,
	               		forceSelection : true,
	        			allowBlank : false
	        		}
        		];
        	
        	//						modulNameParam, gridName, ajaxUrl, primaryField, tbarConfig
			CC.help.grid.initGrid(
				'partner', 
				{
					dataIndex : 'Base',
					ajaxUrl : 'extBase',
					primaryField: 'ID'
				}, 
				tbarConfig
			);
			CC.main.layout.center.add(this.grids.Base.grid);
			CC.main.layout.center.doLayout();
			this.grids.Base.grid.on('rowdblclick', this.displayEditorWindowByDblClick );
			
			
			var funcFilterCombo = CC.help.form.setComboDefaultValue( 'FUNC_filter', CC.b.mod.partner.config.defaultFunc.name, CC.b.mod.partner.config.defaultFunc.text );
			funcFilterCombo.on( 'select', CC.f.mod.partner.filterToFunc );
			
			var stateFilterCombo = CC.help.form.setComboDefaultValue( 'STATE_filter', CC.b.mod.partner.config.defaultState.name, CC.b.mod.partner.config.defaultState.text );
			stateFilterCombo.on( 'select', CC.f.mod.partner.filterToState );
		},
		
		filterToFunc : function () {
			if ( this.isValid() ) {
				CC.f.mod.partner.grids.Base.gridStore.baseParams = { FUNC : this.getValue() };
				CC.f.mod.partner.grids.Base.gridStore.reload();
			}
		},

		filterToState : function () {
			if ( this.isValid() ) {
				CC.f.mod.partner.grids.Base.gridStore.baseParams = { STATE : this.getValue() };
				CC.f.mod.partner.grids.Base.gridStore.reload();
			}
		},
		
		displayEditorWindow : function( dbId ){
			
			var request_params = null;
			if ( dbId != null ) {
				request_params = { 'ID': dbId };
			} else {
				request_params = {};
			}
			
			var param ={
				singleInstance : true,
				url: CC.f.mod.partner.ajaxUrl +'extBaseform',
				params: request_params,
				success: function(result){
					CC.b.mod.partner.config.formData.editForm = result;
					//makeitems(formleiro adatok, modul neve, formon beluli index, gridconfig helye helye)
					CC.help.form.makeItems( CC.b.mod.partner.config.formData.editForm.items, 'partner', 'edit', CC.b.mod.partner.config.grids.Base);
					CC.help.form.showWindow( CC.b.mod.partner.config.formData.editForm.items, 'partner', 'edit', 'doSaveRecord', CC.b.mod.partner.config.formData.editForm.window.edit);
					CC.f.mod.partner.windows.edit.dbId = dbId;
					
					Ext.getCmp('COPY_BUTTON$Base').handler=function(){
						CC.f.mod.partner.copyAdress();
					};
					
					
					Ext.getCmp('user$PASS2$Base').on('change', function(){
						if (Ext.getCmp('user$PASS2$Base').getValue() != Ext.getCmp('user$PASS1$Base').getValue()){
							alert(CC.b.mod.partner.config.passwordMatch);
							Ext.getCmp('user$PASS2$Base').setValue('');
						}
					});		
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		displayEditorWindowByDblClick : function( gridObject, rowIndex ){
			var key = null;
			var gridObject = CC.f.mod.partner.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.partner.displayEditorWindow( key );
		},
		
		showAddForm : function(){
			CC.f.mod.partner.displayEditorWindow( null )
		},
		
		doSaveRecord : function(){
			var validateTemp = {};
			var validateObject =  Ext.getCmp(CC.f.mod.partner.formItems.edit[4].id).getValue();
			validateObject.push('default');
			validateObject.push('billing');
			validateObject.push('residence');
			validateObject.push('carry');
			for (i in validateObject){
				validateTemp[validateObject[i]] = true;
				
			}
			var ok = CC.help.form.validateForm(CC.f.mod.partner.formItems.edit, validateTemp);
			if ( ok ) {
				var data = CC.help.form.getFormData(CC.f.mod.partner.formItems.edit, validateTemp);
				data['default']['ID'] = CC.f.mod.partner.windows.edit.dbId;			
				var param ={
					url: CC.f.mod.partner.ajaxUrl +'extBasesave',
					params: {
						formdata: Ext.encode( data )
					},
					success: function(result){
						if ( result.success ) {
							//CC.f.mod.partner.windows.edit.close();
						} else {
							Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
						}
						CC.f.mod.partner.grids.Base.gridStore.reload();
					}
				};	
				CC.help.ajax.doAjax(param);
			} 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.partner.config.deleteQuestion, 
				function( btn )
				{
					if (btn == 'yes')
					{
						CC.f.mod.partner.deleteFromDatabase( key );
					}
				}
			);
		},
		
		deleteFromDatabase : function( pDbId ) {
			var param ={
				url: CC.f.mod.partner.ajaxUrl +'extBasedelete',
				params: {
					ID: pDbId
				},
				success: function(result){
					if ( !result.success ) {
						Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
					}
					CC.f.mod.partner.grids.Base.gridStore.reload();
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		tabTypeHandling : function(boxId, checked){
			var temp =Ext.getCmp('tab'+boxId);
			if(typeof temp == 'object'){
				if(checked){
					Ext.getCmp(temp.ownerCt.id).unhideTabStripItem('tab'+boxId);
				}else{
					Ext.getCmp(temp.ownerCt.id).hideTabStripItem('tab'+boxId);
				}
			}
		},
		
		showAddContactForm : function(){
			CC.f.mod.partner.displayContactEditorWindow(null);
		}, 
		
		displayContactEditorWindow : function( dbId ){
			
			var request_params = null;
			if ( dbId != null ) {
				request_params = { 'ID': dbId };
			} else {
				request_params = {};
			}
			
			var param ={
				singleInstance : true,
				url: CC.f.mod.partner.ajaxUrl +'extContactform',
				params: request_params,
				success: function(result){
					CC.b.mod.partner.config.formData.editContact = result;
					//makeitems(formle�r� adatok, modul neve, formon bel�li index, gridconfig helye helye)
					CC.help.form.makeItems( CC.b.mod.partner.config.formData.editContact.items, 'partner', 'contact', CC.b.mod.partner.config.grids.Contact);
					CC.help.form.showWindow( CC.b.mod.partner.config.formData.editContact.items, 'partner', 'contact', 'doSaveContactRecord', CC.b.mod.partner.config.formData.editContact.window.editContact);
					CC.f.mod.partner.windows.contact.dbId = dbId;				
				}
			};	
			CC.help.ajax.doAjax(param);
		},
		
		doSaveContactRecord : function(){

			var ok = CC.help.form.validateForm(CC.f.mod.partner.formItems.contact);
			if ( ok ) {
				var data = CC.help.form.getFormData(CC.f.mod.partner.formItems.contact);
				data['default']['ID'] = CC.f.mod.partner.windows.contact.dbId;			
				var param ={
					url: CC.f.mod.partner.ajaxUrl +'extContactsave',
					params: {
						formdata: Ext.encode( data )
					},
					success: function(result){
						if ( result.success ) {
							//CC.f.mod.partner.windows.edit.close();
						} else {
							Ext.MessageBox.alert( CC.b.enter.config.msgError, result.message );
						}
						CC.f.mod.partner.grids.Contact.gridStore.reload();
					}
				};	
				CC.help.ajax.doAjax(param);
			} else {
				Ext.MessageBox.alert( CC.b.enter.config.msgError, CC.b.enter.config.msgCheckField );
			}
			
			return ok;
		},
		
		convertToMail : function(value){
			alert(value);
		},
		
		copyAdress : function(){
			Ext.getCmp('residence$COUNTRY$Base').setValue(
					Ext.getCmp('billing$COUNTRY$Base').getValue()
			);
			Ext.getCmp('residence$ZIP$Base').setValue(
					Ext.getCmp('billing$ZIP$Base').getValue()
			);
			Ext.getCmp('residence$CITY$Base').setValue(
					Ext.getCmp('billing$CITY$Base').getValue()
			);
			Ext.getCmp('residence$ADDRESS$Base').setValue(
					Ext.getCmp('billing$ADDRESS$Base').getValue()
			);
			Ext.getCmp('residence$CARRY_MODE$Base').setValue(
					Ext.getCmp('billing$CARRY_MODE$Base').getValue()
			);
			//carry
			Ext.getCmp('carry$COUNTRY$Base').setValue(
					Ext.getCmp('billing$COUNTRY$Base').getValue()
				);
			Ext.getCmp('carry$ZIP$Base').setValue(
					Ext.getCmp('billing$ZIP$Base').getValue()
			);
			Ext.getCmp('carry$CITY$Base').setValue(
					Ext.getCmp('billing$CITY$Base').getValue()
			);
			Ext.getCmp('carry$ADDRESS$Base').setValue(
					Ext.getCmp('billing$ADDRESS$Base').getValue()
			);
			Ext.getCmp('carry$CARRY_MODE$Base').setValue(
					Ext.getCmp('billing$CARRY_MODE$Base').getValue()
			);
		}
	}
	
}();