escuelas = function(parametros){
	
	Ext.apply(this, parametros);
	
	var el = Ext.DomHelper.append(document.body, {tag: "div"}, true);
	
	var store = new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({
			url: "modulos/escuela/listar.php"
		}),
		reader: new Ext.data.JsonReader({  
			root: "resultado", 
			successProperty: "exito",
			totalProperty: "total", 
			id: "ESC_ID" 
		}, [
		   {name: "ESC_ID", type: "int"},
		   {name: "ESC_NOMBRE", type: "string"}
		])
	});
	
	var cm = new Ext.grid.ColumnModel([
		{header: "Nombre", width: 200, dataIndex: "ESC_NOMBRE"}
	]);
	
	var selModel = new Ext.grid.RowSelectionModel({
		singleSelect: true
	});
	
	var grid = new Ext.grid.Grid(el, {
		ds: store,
		cm: cm,
		selModel: selModel,
		loadMask: {
			msg: "Cargado..."
		}
	});
	
	grid.render();
	
	var elM = grid.getView().getHeaderPanel(true);
	
	var menu = new botonera({
		el: elM,
		ambito: this,
		parametros: {
			APL_PADRE_ID: this.APL_ID
		}
	});
	
	menu.on("crear", this.refrescar, this);
	
	var elP = grid.getView().getFooterPanel(true);
	
	var paginador = new Ext.PagingToolbar(elP, store, {
        pageSize: this.limite,
        displayInfo: true,
        displayMsg: "Displaying topics {0} - {1} of {2}",
        emptyMsg: "No topics to display"
    });
	
	escuelas.superclass.constructor.call(this, grid);
	
	this.grid = grid;
	this.store = store;
	this.selModel = selModel;
	this.cnn = new Ext.data.Connection();
	
};

Ext.extend(escuelas, Ext.GridPanel, {

	limite: 25,
	ventanas: [],
	
	listar: function(){
	
		this.store.load({
			params: {
				start: 0, 
				limit: this.limite
			}
		});
		
	},
	
	refrescar: function(){
		
		this.grid.autoSize();
		
	},
	
	agregar: function(boton){
	
		if(!this.ventanas["agregar"]){
			
			var el = Ext.DomHelper.append(document.body, {tag: "div"}, true);
			
			var ventana = new Ext.LayoutDialog(el, {
				modal: true,
				width: 260,
				height: 150,
				shadow: true,
				collapsible: false,
				autoTabs: true,
				resizable: false,
				title: "Agregar",
				center: {
					autoCreate: true
				}
			});
			
			var layout = ventana.getLayout();
			
			var panelCentro = layout.add("center", new Ext.ContentPanel({
				autoCreate: true										  
			}));
			
			var formulario = new Ext.form.Form({
				style: "padding:10px",
				labelWidth: 75,
				waitTitle: "Espere por favor",
				method: "GET",
				errorReader: new Ext.data.JsonReader({
					root: "resultado", 
					successProperty: "exito"
				}, ["id", "msg"])
			});
			
			formulario.fieldset({legend:"Datos de la Escuela"}, 
				new Ext.form.TextField({
					fieldLabel: "Nombre",
					name: "ESC_NOMBRE",
					selectOnFocus: true,
					width: 100
				})
			);
			
		    formulario.render(panelCentro.getEl());
			
			formulario.on("actioncomplete", function(form, action){
	
				if(action.type == "submit"){
					
					ventana.hide();
					this.listar();
					
				};
					
			}, this);
			
			ventana.addButton("Cerrar", ventana.hide, ventana);
			
			ventana.addButton("Aceptar", function(){
			
				formulario.submit({
					url: "modulos/escuela/insertar.php",
					waitMsg: "Grabando..."
				});
													 
			});
			
			ventana.on("show", formulario.reset, formulario);
			
			this.ventanas["agregar"] = ventana;
			
		};
		
		this.ventanas["agregar"].show(boton.id);
		
	},
	
	editar: function(boton){
		
		var registro = this.selModel.getSelected();
		
		if(registro){
	
			if(!this.ventanas["editar"]){
				
				var el = Ext.DomHelper.append(document.body, {tag: "div"}, true);
				
				var ventana = new Ext.LayoutDialog(el, {
					modal: true,
					width: 260,
					height: 150,
					shadow: true,
					collapsible: false,
					autoTabs: true,
					resizable: false,
					title: "Editar",
					center: {
						autoCreate: true
					}
				});
				
				var layout = ventana.getLayout();
				
				var panelCentro = layout.add("center", new Ext.ContentPanel({
					autoCreate: true										  
				}));
				
				var formulario = new Ext.form.Form({
					style: "padding:10px",
					labelWidth: 75,
					waitTitle: "Espere por favor",
					method: "GET",
					reader: new Ext.data.JsonReader({
						root: "resultado", 
						successProperty: "exito"
					}, [
						{name: "ESC_NOMBRE", type: "string"}
					]),
					errorReader: new Ext.data.JsonReader({
						root: "resultado", 
						successProperty: "exito"
					}, ["id", "msg"])
				});
				
				formulario.fieldset({legend:"Datos de la Escuela"}, 
					new Ext.form.TextField({
						fieldLabel: "Nombre",
						name: "ESC_NOMBRE",
						selectOnFocus: true,
						width: 100
					})
				);
				
				formulario.render(panelCentro.getEl());
				
				formulario.on("actioncomplete", function(form, action){
		
					if(action.type == "submit"){
						
						ventana.hide();
						this.listar();
						
					};
						
				}, this);
				
				ventana.addButton("Cerrar", ventana.hide, ventana);
				
				ventana.addButton("Aceptar", function(){
				
					formulario.submit({
						url: "modulos/escuela/editar.php",
						waitMsg: "Grabando..."
					});
														 
				});
				
				ventana.on("show", function(){
				
					formulario.load({
						url: "modulos/escuela/listar.php",
						waitMsg: "Cargando..."
					});
															   
				});
				
				ventana.formulario = formulario;
				this.ventanas["editar"] = ventana;
				
			};
			
			this.ventanas["editar"].formulario.baseParams = {
				ESC_ID: registro.get("ESC_ID")
			};
		
			this.ventanas["editar"].show(boton.id);
			
		};
		
	},
	
	eliminar: function(boton){
	
		var registro = this.selModel.getSelected();
		
		if(registro){
			
			Ext.MessageBox.wait("Eliminando...", "Espere por favor");
			
			this.cnn.request({
				url: "modulos/escuela/eliminar.php",
				params: {
					ESC_ID: registro.id	
				},
				success: function(response, options){
					
					Ext.MessageBox.updateProgress(1);
					Ext.MessageBox.hide();
					this.store.reload();
					
				},
				failure: function(response, options){
					
					Ext.MessageBox.updateProgress(1);
					Ext.MessageBox.hide();
					Ext.Msg.alert("Error", response.responseText);
					
				},
				scope: this
			});
			
		};
		
	}

});