// Nombre de espacio : YAHOO.gestorAST 
YAHOO.namespace('gestorAST');
YAHOO.gestorAST.nombre = 'Analisis Seguro de Trabajo.';
YAHOO.gestorAST.loginUsuario = document.getCookie('login');
// objeto serializado o pasaporte que permite al sistema arrancar logeado y con un objeto que es deserializado .
// condicion que el pasaporte muera al final o sea destruir la cookie
YAHOO.gestorAST.pasaporte = document.getCookie('pasaporte');

// indicador si el edita el servicio de edicion de ayuda
YAHOO.gestorAST.editaAyuda = false;
Ext.BLANK_IMAGE_URL = 'images/s.gif';

// indicador si el visualiza el servicio de ayuda
YAHOO.gestorAST.verAyuda = true;

// indicador si el visualiza el servicio de ayuda
// YAHOO.gestorAST.modoDesarrollo = true;

// indicador del evento colapsador
YAHOO.gestorAST.collapsedEvent = 'click';  

// agrega el toolbar la posibilidad de 
Ext.Toolbar.prototype.addTr = function(){
		var tbody =  this.el.child('tbody', true);
	    this.tr = document.createElement('tr');
	    tbody.appendChild(this.tr);
 };



//=======
// agrega el evento destroy al Ext.ContentPanel
Ext.ContentPanel.prototype.addEvents({'destroy' : true});

// reescribe el metodo destroy del ContentPanel para reportar el evento
Ext.ContentPanel.prototype.destroy = function(){
		this.fireEvent('destroy', this);
        this.el.removeAllListeners();
        var tempEl = document.createElement('span');
        tempEl.appendChild(this.el.dom);
        tempEl.innerHTML = '';
        this.el.remove();
        this.el = null;
};
//=========




var gestorAST = function(){

		// colector de objetos		
		var objetos = new Ext.util.MixedCollection();
		this.objetos = objetos;
		// deja el visible en el nombre de espacio la coleccion de objetos.
		YAHOO.gestorAST.objetos = objetos.map;
		YAHOO.gestorAST.colectorObjetos = objetos;
		
		// funcion click del menu
		var menuClick = function(clickUsuario){			
			 var opcion = clickUsuario.getTarget('a');
			 if(opcion){
				 clickUsuario.preventDefault();
				 this.menu.valoresEnCero();
				 this.menu.seleccionar(opcion.id);
				 // Crea un objeto en el documento principal
				 var itemMenu = this.menu.seleccionado();
				 
				 // areglar * pudiera definir una seccion de ventana que informe el aspecto de la ventana a crear
				 // y el objeto ventanaDatos acepte un config
				 if (itemMenu.objeto.config.area) {
					 	gestorAST.creaObjeto(this.menu, new ventanaDatos(itemMenu.objeto.config.region, itemMenu.objeto.config.area));		
				 }else{
				 		gestorAST.creaObjeto(this.menu, new ventanaDatos(itemMenu.objeto.config.region));		
				 }
				 // Si existe animacion en la opcion delmenu la ejecuta
				 if (itemMenu.animacion){
					 eval(itemMenu.animacion);
				 }				 
				 
			 }
		};
					
		var menuMouseover = function(mouseOverUsuario){
			 var opcion = mouseOverUsuario.getTarget(null, 'a');
			 if(opcion){
				 gestorAST.ventanaSistema.sur().setContent(this.descripcion);
			 }
		};

 return {
		
		o				: function(){
			return objetos;			
		},
		
        init 									: function(){
			
			// activa el el almacenamiento de configuraciones via cookie			
			Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
			this.creaBanner();
			
			
			// habilita el despliegue de los ayuda de botones
			Ext.QuickTips.init();
			// Crea la botonea principal 
			this.botonera = new Ext.Toolbar('botonera');
			if (!YAHOO.gestorAST.loginUsuario) {
					this.iniciarSesionBtn = this.botonera.add({
									 id:'login-btn', 
									 text: 'Iniciar sesión', 
									 cls: 'x-btn-text-icon login',
									 tooltip: {text:'Autentificación de usuario para el ingreso al sistema.', title:'Iniciar sesión', autoHide:true},
									 handler: this.login.createDelegate(this)
									});	

					if (!this.contactoBtn){
						this.botonera.addTr();
						this.homeBtn = this.botonera.add({
												 id:'contacto-btn', 
												 text: 'Registrese', 
												 cls: 'x-btn-text-icon registrese', 
												 tooltip: {text:'Registrar nueva empresa para solicitud de cuenta Ingreso sistema Gestor AST .', title:'Registrar', autoHide:true},
												 handler: this.formularioContacto.createDelegate(this)
												 });					
					}
//-----------------------------------------------------------------------------																						
			}else{
				if(this.iniciarSesionBtn) {
					this.iniciarSesionBtn.hide();
				}
				if (!this.cerrarSesionBtn){
					this.botonera.addTr();
					this.cerrarSesionBtn = this.botonera.add({
										 id:'logout-btn', 
										 text: 'Cerrar sesión.', 
										 cls: 'x-btn-text-icon logout', 
										 tooltip: {text:'Sale del sistema permitiendo ingresar otro usuario.', title:'Cerrar sesión.', autoHide:true},
										 handler: this.logout.createDelegate(this)
										});
				}
			}
															
			// Boton muestra portada
			if (!this.homeBtn){
				this.botonera.addTr();
				this.homeBtn = this.botonera.add({
										 id:'portada-btn', 
										 text: 'Home', 
										 cls: 'x-btn-text-icon portada', 
										 tooltip: {text:'Despliega la portada del sistema.', title:'Home', autoHide:true},
										 handler: this.muestraPortada.createDelegate(this)
										 });	
				
			}
			 // agrega el boton de ayuda si esta definida en el espacio global
			 if (YAHOO.gestorAST.editaAyuda){	
					// Boton ayuda
					if (!this.editaAyuda){
						this.botonera.addTr();
						this.editaAyuda = this.botonera.add({
												 id:'editaAyuda-btn', 
												 text:  '&nbsp;&nbsp;&nbsp;&nbsp Editar ayuda', 
												 cls: 'x-btn-text-icon editarAyuda', 
												 tooltip: {text:'Ayuda general del sistema.', title:'Ayuda', autoHide:true},
												 handler: this.editarAyuda.createDelegate(this),
												 objeto : {config : {descripcion :'Ayuda general del sistema', id : 'ayudaGeneral' }}
												 });	
						
					}			
			 }
			 // agrega el boton de ayuda si esta definida en el espacio global
			 if (YAHOO.gestorAST.verAyuda){	
					// Boton ayuda
					if (!this.ayudaBtn){
						this.botonera.addTr();
						this.ayudaBtn = this.botonera.add({
												 id:'verAyuda-btn', 
												 text: 'Ayuda', 
												 cls: 'x-btn-text-icon ayuda', 
												 tooltip: {text:'Ayuda general del sistema.', title:'Ayuda', autoHide:true},
												 handler: this.verAyuda.createDelegate(this),
												 objeto : {config : {descripcion :'Ayuda general del sistema', id : 'ayudaGeneral' }}
												 });	
						
					}			
			 }			 

            this.ventanaSistema = new ventanaSistema();
			this.creaPortada();
			//this.cargaTutor('bitacoraDesarrolo', 'Desarrollador!!', 'bitacora.html');
			//this.cargaNovedades()
			
			//if (YAHOO.gestorAST.loginUsuario)
				this.cargaPerfilUsuario();												

			
        },

		login 									: function(){
			this.sesion = new asistente({	titulo : 'Inicio de sesión',
						  					subTitulo :'Autentificación',
						  					numPasos : 2,
											form : { 	action : 'modulos/login/login.html',
												   		name : 'loginForm',
														id : 'loginForm'
												   },
							  				modal:true,
							  				autoTabs:true,
							  				width:290,
							  				height:180,
							  				shadow:true
						  				});
			this.sesion.btnSiguiente.setText('<b>Ingresar</b>');
			this.sesion.show('login-btn');	
	},
	
        logout 									: function(){
			var cerrarSesion = function(){
				document.setCookie('login','',-1);
				window.location.reload();
			};
			new transaccion({nombre : 'cambiar estado logueado', 
							 metodo : 'cambiar estado logueado',
							 transaccionOk : cerrarSesion,
							 url : 'modulos/login/cambiarEstadoLogueado.asp',
							 parametros : {login : YAHOO.gestorAST.loginUsuario}
							 });
		},	
		
		creaPortada								: function(){
		
			var config = {
						  region : 'center',
						  url:'home.html',
						  layout :  {
									title : 'Inicio.',
									closable : false					 		
							 	   },
						  panel :  {
								   fitToFrame:true,
								   title: 'Bienvenido al sistema ' + YAHOO.gestorAST.nombre.toLowerCase()
						 		  }
					    };
			objetos.add('portada', new visorHtml(this.ventanaSistema, new ventanaDatos('center',{}), config ));   
		},
		
		cargaTutor								: function(idTutor, titleTutor, srcTutor){						
			var config = {
						  region : 'center',
						  url:srcTutor,
						 layout :  {
									title : titleTutor,
									closable : true					 		
							 	   },
						 panel :  {
								   fitToFrame:true,
								   title: titleTutor
						 		  }
					   };
			objetos.add(idTutor, new visorHtml(this.ventanaSistema, new ventanaDatos('center',{}), config ));   
		},
		
		muestraPortada							: function(){
			objetos.item('portada').activar();		

		},

		creaBanner								: function(){
			// Carga el banner		
			var umBanner = Ext.get('north').getUpdateManager();
			umBanner.disableCaching = true;
			umBanner.showLoadIndicator = false;
			umBanner.update('plantillas/Inicio/banner.html');
		},		
		
		cargaNovedades							: function(){			
			//  Desrrollador : Erwin Glade
			var umBanner = Ext.get('east').getUpdateManager();
			umBanner.disableCaching = true;
			umBanner.showLoadIndicator = false;
			umBanner.update('webservices/bitacora/bitacorDiaria.asp');
		},
			
		creaMenu								: function(urlJSON){
			if (urlJSON !=''){	
				this.menu = new menu('menuUsuario'
									 ,urlJSON
									 ,{ 
										grupoExpandido  : 'Mis ideas'
									   ,click 			: menuClick.createDelegate(this)
									   ,mouseover		: menuMouseover
									   ,navRapida   	: YAHOO.gestorAST.collapsedEvent === 'mouseover' ? true : false
									   ,creaDom			: true
									 });
			}
			
		},
		
		creaBotonera							: function(urlBotonera){
			if (urlBotonera !=''){	
				// crea la botonera del usuario
				var botoneraUsuarioOk = function (o){
	
					var botonera = Ext.util.JSON.decode(o.responseText.htmlDecode());
					 for(var boton in botonera.botones){
						if  (!isNaN(boton)) {
							this.botonera.addTr();
							this.botonera.add(botonera.botones[boton]);
						}
					 }
				
				};		
				var config = { metodo : 'gestorAst.creaBotonera',
							   nombre: 'cargar la botonera de sistema.',
							   url: urlBotonera,
							   transaccionOk: botoneraUsuarioOk.createDelegate(this),
							   inicioAnimacion: 'botonera'
							 };
				new transaccion(config);
			}
			
		},	
		
		cargaPasaporte							: function(o){
			
			// para mayor seguridad se puede considerar pedir login y password.
			var pasaporte = Ext.util.JSON.decode(o.responseText.htmlDecode());
			var config = pasaporte.objeto.config;
			var vPadre = gestorAST.ventanaSistema;
			var ventanaObjeto;
			
			 if (pasaporte.objeto.config.area) {
					 ventanaObjeto = new ventanaDatos(pasaporte.objeto.config.region, pasaporte.objeto.config.area);
			 }else{
					ventanaObjeto = new ventanaDatos(pasaporte.objeto.config.region);
			 }
			
			var vObjeto = ventanaObjeto;
			objeto  = eval( 'new ' + pasaporte.objeto.clase + '( vPadre, vObjeto, config )' ); 
			objetos.replace(objeto.id, objeto);	
			YAHOO.gestorAST.pasaporte = null;
			YAHOO.gestorAST.loginUsuario = pasaporte.login.usuario;
			gestorAST.cargaPerfilUsuario();
		},
		
		cargaUsuario							: function(usuario){

			// captura el usuario conextado
			YAHOO.gestorAST.usuario = usuario;
			
			// Mensaje de bienvenida			
			this.barraMensajes = this.ventanaSistema.sur();
			this.barraMensajes.getEl().addClass('done');
			
			var nombreUsuario 
			var srOSra = "Sr.";
			
			//Construye el nombre de usuario
			if (usuario.campos['USU_GENERO'].valor == 'F'){				
				srOSra = "Sra. "
			}
			nombreUsuario = srOSra + 
							usuario.campos['USU_NOMBRES'].valor + ' ' + 
							usuario.campos['USU_APELLIDO_PATERNO'].valor + ' ' + 
							usuario.campos['USU_APELLIDO_MATERNO'].valor 
							
			// crea el menu del usuario
			this.creaMenu(usuario.campos['PFL_MENU'].valor);					
			// crea la botonera del usuario
			this.creaBotonera(usuario.campos['PFL_BOTONERA'].valor);
		   // Mensaje de bienvenida
			if (YAHOO.gestorAST.loginUsuario) {
				this.barraMensajes.setContent(':: ' + nombreUsuario +' bienvenido a ' +
										 YAHOO.gestorAST.nombre.toLowerCase());
			}else{
				this.barraMensajes.setContent(':: Favor inicie sesión ::');
			}			
		},

		editarAyuda								: function(o){
			var titulo 		= 'Editor de ayuda para ' + o.objeto.config.descripcion;
			var subTitulo 	= o.objeto.config.descripcion;
			var objId		= o.objeto.config.id;
			
			// extrae acentos y ñ del nombre del contexto de la ayuda
			objId = objId.quitarAcentos();
			objId = objId.replace(/ñ/g,'n');
			config = {
				titulo    : titulo,
				subTitulo : subTitulo,
				dialog    : {
								 autoTabs	: true,
								 width		: 585,
								 height		: 500,
								 shadow		: true,
								 closable	: true,
								 collapsible: false,
								 modal		: true,
								 minWidth	: 150,
								 minHeight	: 80						 
							},
				objId	  : objId,
				tarjetEl  : o.el.id
			};
			m = new MantenedorAyudas(config);
			m.verMantenedor();

		},
		
		verAyuda								: function(o){
			var titulo 		= 'Ayuda';
			var subTitulo 	= o.objeto.config.descripcion;
			var objId		= o.objeto.config.id;
			// extrae acentos y ñ del nombre del contexto de la ayuda
			objId = objId.quitarAcentos();
			objId = objId.replace(/ñ/g,'n');					

			config = {
				titulo    : titulo,
				subTitulo : subTitulo,
				dialog    : {
								 autoTabs	: true,
								 width		: 400,
								 height		: 350,
								 shadow		: true,
								 closable	: true,
								 collapsible: false,
								 modal		: true,
								 minWidth	: 150,
								 minHeight	: 80						 
							},
				objId	  : objId,
				tarjetEl  : o.el.id
			};
			m = new MantenedorAyudas(config);
			m.verAyuda();

		},


		cargaExportExcel						: function(){
/*			
			var config = {	id		:	"objeto104",
						nombre		:	"AST por aprobar",
						descripcion	:	"AST en estado por aprobar.",
						region		:	"center",
						layout		:	{
											title	 :	"AST Por Aprobar",
											closable :	"true",
											style	 :	"width:682px; border:1px; solid #99bbe8;overflow: hidden"
										},
						proxy		:	{	
											name	:	"HttpProxy",
											url	:	"webServices/ast/astEstadoAprobado.asp",
											params	:	{	
														start	:	0,
														limit	:	6																						
													}	
										},
						baseParams:	{	estado	:	4},
						reader	  :	{	name	:	"XmlReader",
									meta	:	{	record 		: "ast",
												totalRecords	:	"Contador",
												id		: "AST_ID"
											},
									recordType:	[	
												{name:"AST_ID",mapping:"AST_ID"}
											]																				  													 
								},
						remoteSort:true,
						defaultSort:{field:"AST_ID",direction:"desc"},	
						columnModel:{model:[{id	:"id",header:"ID",dataIndex:"AST_ID",width:30,sortable:false}												
								],
								defaultSortable:false	 
								},
						formulario	: {
											webservice : "modulos/exportExcel/formulario.asp"
										}
				};
				
				objetos.add(config.id,  new exportExcel(gestorAST.ventanaSistema, new ventanaDatos('center'), config ));*/
						
		},
		
		cargaPerfilUsuario						: function(){
			var perfilUsuarioOk = function (o){
				var usuario = Ext.util.JSON.decode(o.responseText.htmlDecode());
				gestorAST.cargaUsuario(usuario);
			};			
			var transaccionOk = perfilUsuarioOk.createDelegate(this);
			var	webServiceLogeo = 'modulos/login/usuarioJson.asp';
			var parametros = YAHOO.gestorAST.loginUsuario
			//alert(parametros)
			
			// si está definido un pasaporte
			if (YAHOO.gestorAST.pasaporte) {
				// borra el pasaporte
				document.setCookie('pasaporte','',-1);	
				webServiceLogeo = 'modulos/login/leePasaporte.asp'
				transaccionOk 	= this.cargaPasaporte;
				parametros 		= YAHOO.gestorAST.pasaporte;
			}
		
			var config = { metodo : 'gestorAst.cargaPerfilUsuario',
						   nombre: 'cargar la funcionalidad del sistema.',
			   			   url: webServiceLogeo,
			   			   transaccionOk: transaccionOk,
						   inicioAnimacion: 'menuUsuario',
						   parametros: {
										 parametros : parametros
									   }
			 			 };
			new transaccion(config);
		},
		
		
		creaObjeto								: function(menu, vObjeto){
			// verifica que no este creaa la solicitud	
			var itemMenu = menu.seleccionado();
			var objetoEl;
			// obtiene el objeto de la coleccion de objetos
			var objeto = objetos.item(itemMenu.id);
			if (!objeto){
				// Si no existe 
				objeto = itemMenu.objeto.instancia;
			}
			// si existe 
			if (objeto){
				// obtiene el elemento para saber si no fue destruido
				objetoEl = objeto.getEl();
			}
			// si no existe 
			if (!objetoEl){ 
				// crea el objeto
				//if (itemMenu.objeto){
					var config = itemMenu.objeto.config;
					var vPadre = this.ventanaSistema;
					objeto  = eval( 'new ' + itemMenu.objeto.clase + '( vPadre, vObjeto, config )' ); 
					objetos.replace(itemMenu.id, objeto);
			//	}
			}
			itemMenu.objeto.instancia = objeto;
			objeto.activar();
		},
		
		transaccionOk 							: function(o){
			var respuesta = Ext.util.JSON.decode(o.responseText.htmlDecode());
			
			new mensaje(  respuesta.titulo
						 ,respuesta.mensaje
						 ,{ modal:true
						   ,width:380
						   ,height:100
						   ,shadow:true
						   ,closable:true 
						  }
						).show(gestorAST.animacion);
		},			
				
		registrar								: function(o){
			// el o se automapea para registrarse
			var contexto = o.objeto;
			if (o.ref){
				contexto = eval(o.ref);
			}
			var callback = { 
				success: function(o){
								var contenido = o.responseText.htmlDecode();								
								if(contenido){
									new mensaje('Error al registrar.',
											contenido,
											{ modal:true,
											  width:500,
											  height:500,
											  shadow:true,
											  closable:true 
											}
								 			).show(gestorAST.animacion);
								}else{
									new mensaje('Guardar.',
												'Documento guardado exitosamente.',
												{ modal:true,
												  width:380,
												  height:80,
												  shadow:true,
												  closable:true 
												}
												).show(gestorAST.animacion);
									this.objeto.postRegistrar();
								}
									return;
							}, 
				failure: function(o){
								new mensaje('Error al registrar.',
											o.responseText,
											{ modal:true,
											  width:500,
											  height:500,
											  shadow:true,
											  closable:true 
											}
								 			).show(gestorAST.animacion);	
								return; 
							},
				 timeout: 5000,
				 objeto : contexto
	       };
			
			gestorAST.animacion = o.el.id;
			// IMPORTANTE :
			// se cae  en estas dos lineas al guardar  
			YAHOO.util.Connect.setForm(contexto.form().name, false);
			YAHOO.util.Connect.asyncRequest('POST', contexto.form().action, callback );
		},
		
		creaNuevoAst 							: function(){
			var config = {
						  id     : YAHOO.util.Dom.generateId().replace(/yui-gen/g,'nuevoAst'),
						  region : 'center',
						  objeto : {
							  			clase  : 'capsadorForm', 
										id	   : 'nuevoAst',
										descripcion : 'Crear nuevo Ast.',
										config : {
													id	   				: 'nuevoAst',
													descripcion 		: 'Crear nuevo Ast.',											
													webservice	   		: 'modulos/ast/ingresar/ingresar.asp',
													grupoExpandido 		: '1',
													navRapida  	   		: false,
													form   		   		: { id		: 'form1',
																			name 	: 'form1',
																			action 	: 'modulos/ast/ingresar/guardar.asp',
																			method	: 'POST'
																		 },
													urlPostRegistrar	: 'modulos/ast/ingresar/actualizarSeccionesGuardar.asp?AST_ID=',				 
													botones		   		:[{
																			id:'guardarAst-btn', 
																			text: 'Guardar', 
																			cls:'x-btn-text-icon guardar',																			
																			tooltip: {text:'Guarda los datos en la base de datos.', title:'Guardar.', autoHide:true},
																			handler: gestorAST.registrar
																		  }]
												 }
						  		   },
						  layout : {
									 title    : 'Nuevo AST',
									 closable : true					 		
							 	   },
						  panel  : {
								     fitToFrame : true,
								     title      : 'Ingreso de AST.'
						 		   }
					    };
			objetos.add(config.id,  new visorHtml(this.ventanaSistema, new ventanaDatos('center', {}), config ));   
		},

		solicitarAprobacion						: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			YAHOO.gestorAST.ultimoRegistro = this.objeto.ultimoRegistro();
			YAHOO.gestorAST.objeto = this.objeto
																	
			fncOK = function(p){
				if(p.responseText == 'true'){
					
						var config = { metodo : 'gestorAst.cambioEstadoAST',
						   nombre: 'cambiar el estado del Ast.',
						   url: 'modulos/ast/cambioEstado.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.id,
						   parametros: {
										 'AST_ID': YAHOO.gestorAST.ultimoRegistro.id		
									   }			 
						};							
					new transaccion(config);			
					var retardaRecuperar = new Ext.util.DelayedTask(YAHOO.gestorAST.objeto.recuperar, YAHOO.gestorAST);
					retardaRecuperar.delay(2000);

				}else{
					new mensaje('Error.',
								'Debe firmar el AST para solicitar aprobación.',
									{ modal:true,
									  width:380,
									  height:80,
									  shadow:true,
									  closable:true 
									}
								 ).show(gestorAST.animacion);	
					return;
				}
			};
			
			var config = { metodo : 'gestorAst.anexarPTS',
						   nombre: 'validar el ingreso de PTS.',
						   url: 'modulos/participantes/validarAprobacion.asp',
						   transaccionOk: fncOK,
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										'AST_ID' : YAHOO.gestorAST.ultimoRegistro.id
										}
			};
			new transaccion(config);
		}, 
		anexarPTS								: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			YAHOO.gestorAST.ultimoRegistro = this.objeto.ultimoRegistro();
			 
														
			fncOK = function(p){
				if(p.responseText == 'false'){
					gestorAST.nuevoPTS()
				}else{
					new mensaje('Error.',
								'Ya existe un PTS asociado al AST seleccionado.',
									{ modal:true,
									  width:380,
									  height:80,
									  shadow:true,
									  closable:true 
									}
								 ).show(gestorAST.animacion);	
					return;
				}
			};
			
			var config = { metodo : 'gestorAst.anexarPTS',
						   nombre: 'validar el ingreso de PTS.',
						   url: 'modulos/pts/existePts.asp',
						   transaccionOk: fncOK,
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										'AST_ID' : YAHOO.gestorAST.ultimoRegistro.id
										}
			};
			new transaccion(config);
		},	

		nuevoPTS								: function(){
			var ast = YAHOO.gestorAST.ultimoRegistro;			
			
			var config = {
						  id     : YAHOO.util.Dom.generateId().replace(/yui-gen/g,'nuevoPts'),
						  region : 'center',
						  objeto : {
							  			clase  : 'capsadorForm', 
										config : {
													id	   			: 'nuevoPts',
													descripcion 	: 'Crear nuevo Pts.',												
													webservice	   : 'modulos/pts/ingresar/ingresar.asp?AST_ID=' + ast.id,
													grupoExpandido : '1',
													navRapida  	   : false,
													form   		   : {  id 	 	: 'form1',
																		name 	: 'form1',
																		action 	: 'modulos/pts/ptsInsertar.asp',
																		method	: 'POST'
																	 },
													botones		   		:[{
																			id:'guardarAst-btn', 
																			text: 'Guardar',
																			cls:'x-btn-text-icon guardar',																			
																			tooltip: {text:'Guarda los datos en la base de datos.', title:'Guardar.', autoHide:true},
																			handler: gestorAST.registrar
																		  }]
												 }
						  		   },
						  layout : {
									 title    : 'Nuevo PTS',
									 closable : true					 		
							 	   },
						  panel  : {
								     fitToFrame : true,
								     title      : 'Nuevo PTS.'
						 		   }
					    };
			objetos.add(config.id,  new visorHtml(gestorAST.ventanaSistema, new ventanaDatos('center', {}), config ));
		},

		firmarAST								: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			var ast = this.objeto.ultimoRegistro();

			
			firmaOK = function(){
				new mensaje('Firma AST.',
							'El AST Nº ' + ast.id + ', ha sido firmado.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);
			inicioAnimacion.objeto.objeto.instancia.um.actualiza(9);	
			};
								
			var config = { metodo : 'gestorAst.firmarAST',
						   nombre: 'aprobar el AST.',
						   url: 'modulos/participantes/firmarAST.asp',
						   transaccionOk: firmaOK,
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'AST_ID': ast.id,
										 'loginUsuario': YAHOO.gestorAST.loginUsuario
									   }
						};
			new transaccion(config);				
		},
		
		aprobarAST								: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			var ast = this.objeto.ultimoRegistro();
			
			aprobarOK = function(){
				new mensaje('Aprobar AST.',
							'El AST Nº ' + ast.id + ', ha sido Aprobado.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);
			};
								
			var config = { metodo : 'gestorAst.aprobarAST',
						   nombre: 'aprobar el AST.',
						   url: 'modulos/participantes/aprobarAST.asp',
						   transaccionOk: aprobarOK,
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'AST_ID': ast.id,
										 'loginUsuario': YAHOO.gestorAST.loginUsuario
									   }
						};
			new transaccion(config);	
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);												
		},

		modificarAST							: function(o){
			var ast = this.objeto.ultimoRegistro();			
			
			var config = {
						  id     : YAHOO.util.Dom.generateId().replace(/yui-gen/g,'modificaAst'),
						  region : 'center',
						  objeto : {
							  			clase  : 'capsadorForm', 
										config : {
													id	   			: 'nuevoAst',
													descripcion 	: 'Crear nuevo Ast.',												
													webservice	   : 'modulos/ast/ingresar/ingresar.asp?AST_ID=' + ast.id,
													grupoExpandido : '1',
													navRapida  	   : false,
													form   		   : {  id 	 	: 'form1',
																		name 	: 'form1',
																		action 	: 'modulos/ast/ingresar/guardar.asp',
																		method	: 'POST'
																	 },
													urlPostRegistrar	: 'modulos/ast/ingresar/actualizarSeccionesGuardar.asp?AST_ID=',				 
													botones		   		:[{
																			id:'guardarAst-btn', 
																			text: 'Guardar',
																			cls:'x-btn-text-icon guardar',																			
																			tooltip: {text:'Guarda los datos en la base de datos.', title:'Guardar.', autoHide:true},
																			handler: gestorAST.registrar
																		  }]
												 }
						  		   },
						  layout : {
									 title    : 'Modificar AST',
									 closable : true					 		
							 	   },
						  panel  : {
								     fitToFrame : true,
								     title      : 'Ingreso de AST.'
						 		   }
					    };
			objetos.add(config.id,  new visorHtml(gestorAST.ventanaSistema, new ventanaDatos('center', {}), config )); 
		},

		cambioEstadoAST	  						: function (o){			
			gestorAST.animacion = o.el.id;			
			var ast = this.objeto.ultimoRegistro();
																			
			var config = { metodo : 'gestorAst.cambioEstadoAST',
						   nombre: 'cambiar el estado del Ast.',
						   url: 'modulos/ast/cambioEstado.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: o.el.id,
						   parametros: {
										 'AST_ID': ast.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},
		
		
		cambioEstadoASTObservacion 						: function (o){			
			gestorAST.animacion = o.el.id;			
			var ast = this.objeto.ultimoRegistro();
																			
			var config = { metodo : 'gestorAst.cambioEstadoAST',
						   nombre: 'cambiar el estado del Ast.',
						   url: 'modulos/ast/enviaraObservacion.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: o.el.id,
						   parametros: {
										 'AST_ID': ast.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},
		
		
		
		
		
		
		
				
		anularAST	  							: function (o){	
			//cancelar un AST
			gestorAST.animacion = o.el.id;			
			var ast 	= this.objeto.ultimoRegistro();
			
			var cancelaASTsi = function (){	
				valida.hide();
				var config = { metodo : 'gestorAst.anularAST',
							   nombre: 'anular el AST.',
							   url: 'modulos/ast/anular.asp',
							   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
							   inicioAnimacion: o.el.id,
							   parametros: {
											 'AST_ID': ast.id				
										   }			 
							};							
				new transaccion(config);			
				var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
				retardaRecuperar.delay(2000);
				
			};
			var cancelaASTno = function (){	
				valida.hide();			
			};
			
			//confima si quiere eliminar
		 	var valida = new mensaje('Cancelación de AST.',
									' ¿ Esta seguro que desea cancelar el AST seleccionado ? ',
									{ modal:true,
									  width:300,
									  height:120,
									  shadow:true,
									  closable:true });
			
			valida.addButton('Sí', cancelaASTsi.createDelegate(this), this);
			valida.addButton('No', cancelaASTno.createDelegate(this), this);						  
			valida.show(gestorAST.animacion);
		},

		creaNuevaObservacion		 			: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			var ast = this.objeto.ultimoRegistro();
			
			if (gestorAST.asNuevaObservacion) {
				gestorAST.asNuevaObservacion.destroy(true);
			}
			
			// invoca al visorGrid.Colapsador.instancia.updateManager.seccion(10).actualizar()
			
			//var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.um.datosForm[10].actualiza.createDelegate(inicioAnimacion.objeto.objeto.instancia.um);
			
			// actualiza seccion observaciones
			var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.um.actualiza.createDelegate(inicioAnimacion.objeto.objeto.instancia, [10]);
			
			gestorAST.asNuevaObservacion = new asistente({	titulo :'Nueva Observación',
															subTitulo : 'Ingreso de Nueva Observación',
															numPasos : 2,
															form : {	action : 'modulos/bitacora/ingresarObservacionPaso1.asp?AST_ID=' + ast.id,
																	name : 'frmBitacora',
																	id : 'frmBitacora'
																},
															  modal   : true,
															  autoTabs: true,
															  width   : 470,
															  height  : 230,
															  shadow  : false,
															  delegado: delegadoAsistente
															 });
			gestorAST.asNuevaObservacion.show(inicioAnimacion.el.id);
		},



		actualizaObservaciones		: function(inicioAnimacion){			
			gestorAST.animacion = inicioAnimacion.el.id;			
			var ast = this.objeto.ultimoRegistro();				
			var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.um.actualiza.createDelegate(inicioAnimacion.objeto.objeto.instancia, [10]);	
			delegadoAsistente();
		},
		
				
		creaNuevaBitacora		 	  			: function(inicioAnimacion){
			
			//Funcion que crea una nueva Bitacora 
			gestorAST.animacion = inicioAnimacion.el.id;			
			var ast = this.objeto.ultimoRegistro();
			
			if (gestorAST.asNuevaNovedad) {
				gestorAST.asNuevaNovedad.destroy(true);
			}
					
//			var parametrosDelegado = ['modulos/ast/recuperar/actualizaBitacora.asp?AST_ID=' + ast.id];
//			var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.actualizar.createDelegate(inicioAnimacion.objeto.objeto.instancia, parametrosDelegado);

			// actualizacion de seccion bitacora
			var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.um.actualiza.createDelegate(inicioAnimacion.objeto.objeto.instancia, [11]);

			gestorAST.asNuevaNovedad = new asistente({	titulo : 'Bitácora',
														subTitulo : 'Ingreso de Bitácora',
														numPasos : 2,
														form : {action : 'modulos/bitacora/ingresarBitacoraPaso1.asp?AST_ID=' + ast.id,
																name : 'frmBitacora',
																id : 'frmBitacora'
															 },
														modal   : true,
														autoTabs: true,
														width   : 480,
														height  : 230,
														shadow  : false,
														delegado: delegadoAsistente
													   });				
			gestorAST.asNuevaNovedad.show(inicioAnimacion.el.id);																																											
		},
	

		eliminarObservacion		 	  			: function(obj, astId, bitId, targetEl){

			eliminaOK = function(p){
				// obtiene panel activo y actualiza contenido de secciones
				for(var oName in YAHOO.gestorAST.objetos){
					if (YAHOO.gestorAST.objetos[oName].layout.active){
						var oo = YAHOO.gestorAST.objetos[oName];
						oo.objeto.instancia.actualizar('modulos/ast/recuperar/actualizaObservaciones.asp?AST_ID=' + astId);
					}
				}
				
			};
			
			var cancelaASTsi = function (){	
				valida.hide();
				var config = { metodo : 'gestorAst.eliminarObservacion',
							   nombre: 'eliminar la observación.',
							   url: 'modulos/bitacora/eliminar.asp',
							   transaccionOk: eliminaOK,
							   inicioAnimacion: targetEl.id,
							   parametros: {
											 'BIT_ID': bitId				
										   }			 
							};							
				new transaccion(config);			
//				var retardaRecuperar = new Ext.util.DelayedTask(gobj.recuperar, this);
//				retardaRecuperar.delay(2000);
				
			};
			var cancelaASTno = function (){	
				valida.hide();			
			};
			
			//confima si quiere eliminar
		 	var valida = new mensaje('Eliminar Observación.',
									' ¿ Esta seguro que desea eliminar la observación seleccionada ? ',
									{ modal:true,
									  width:300,
									  height:120,
									  shadow:true,
									  closable:true });
			
			valida.addButton('Sí', cancelaASTsi.createDelegate(this), this);
			valida.addButton('No', cancelaASTno.createDelegate(this), this);						  
			valida.show(targetEl.id);
		},
		
		extenderCierreAST						: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			var ast = this.objeto.ultimoRegistro();			
			if (gestorAST.asExtenderFechaCierre) {
				gestorAST.asExtenderFechaCierre.destroy(true);
			}
			
			// var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.um.datosForm[1].actualiza.createDelegate(inicioAnimacion.objeto.objeto.instancia.um);			
			// actualizacion de seccion encabezado
			var delegadoAsistente = inicioAnimacion.objeto.objeto.instancia.um.actualiza.createDelegate(inicioAnimacion.objeto.objeto.instancia, [1]);
			
			gestorAST.asExtenderFechaCierre = new asistente({	titulo : 'Extender fecha cierre',
																subTitulo : 'Extender fecha cierre',
																numPasos : 2,
																form : { action : 'modulos/ast/extenderFechaCierrePaso1.asp?AST_ID=' + ast.id,
																		 name : 'frmExtenderFechaAst',
																		 id : 'frmExtenderFechaAst'
																	   },
																modal   : true,
																autoTabs: true,
																width   : 350,
																height  : 220,
																shadow  : false,
																delegado: delegadoAsistente
															  });				
			gestorAST.asExtenderFechaCierre.show(inicioAnimacion.el.id);
		},
						
		existeASTasociado						: function(inicioAnimacion){
			// verifica si la solicitud tiene un ast asignado para visualizar
			gestorAST.animacion = inicioAnimacion.el.id;			
			YAHOO.gestorAST.ultimoRegistro = this.objeto.ultimoRegistro();
			
			if (!YAHOO.gestorAST.ultimoRegistro){
				new mensaje('faltó un click.',
							'Seleccione una solicitud para ver su AST.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}																	
			fncOK = function(p){				
				o = Ext.util.JSON.decode(p.responseText)
				if(o.respuesta == true){
					gestorAST.verAST(o.valor)
				}else{
					new mensaje('Error.',
								'La solicitud seleccionada no tiene un AST en Obserbación para ser visualizado.',
									{ modal:true,
									  width:380,
									  height:80,
									  shadow:true,
									  closable:true 
									}
								 ).show(gestorAST.animacion);	
					return;
				}
			};
			
			var config = { metodo : 'gestorAst.existeASTasociado',
						   nombre: 'validar la existencia de un AST asociado a una solicitud.',
						   url: 'modulos/ast/existeAst.asp',
						   transaccionOk: fncOK,
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										'SO_ID' : YAHOO.gestorAST.ultimoRegistro.id
										}
						};
			new transaccion(config);										
		},

		verAST									: function(astId){
			var solicitud = YAHOO.gestorAST.ultimoRegistro;
	
			if (!solicitud){
				new mensaje('faltó un click.',
							'Seleccione una solicitud antes para ver el AST.',
							{ modal:true,
							  width:380,
							  height:80,
							  shadow:true,
							  closable:true }).show(gestorAST.animacion);	
				return;
			}	
			
			var config = {
						  id     : YAHOO.util.Dom.generateId().replace(/yui-gen/g,'verAst'),
						  region : 'center',
						  objeto : {
							  			clase  : 'capsadorForm', 
										config : {
													id	   			: 'mostrarAst',
													descripcion 	: 'Despliegue de Ast.',												
													webservice	   : 'modulos/ast/recuperar/mostrar.asp?AST_ID=' + astId,
													grupoExpandido : '1',
													navRapida  	   : false,
													form   		   : {  action 	: '',
																		method	: 'POST'
																	 },
													botones		   	:[{
																			id:'imprimirAst-btn', 
																			text: 'Imprimir',
																			cls:'x-btn-text-icon imprimir',																			
																			tooltip: {text:'Imprime el formulario.', title:'Imprimir.', autoHide:true},
																			handler: gestorAST.imprimirFormularioAST
																	  }]
												 }
						  		   },
						  layout : {
									 title    : 'Ver AST',
									 closable : true					 		
							 	   },
						  panel  : {
								     fitToFrame : true,
								     title      : 'Ver AST.'
						 		   }
					    };
			objetos.add(config.id,  new visorHtml(gestorAST.ventanaSistema, new ventanaDatos('center', {}), config ));
		},
		
		imprimirFormularioAST						: function(o){
			// el o se automapea para registrarse
			var contexto = o.objeto;
			if (o.ref){
				contexto = eval(o.ref);
			}
			if (contexto){
				var config	= {
					colapsador  : contexto,
					params	  	: {
									AST_ID 		 : contexto.key,  
									encabezado	 :{
													mostrar: true,
													seccion: 1
												  },
									seccionInicio : 2
								  },
					altoPagina  : 1100,
					numSecciones: 12,
					webservice	: 'modulos/imprimir/ast/imprimir.asp'
				};				
				var imp = new Imprimir(config);
			}			
		},

		generarAst								: function(inicioAnimacion){
			gestorAST.animacion = inicioAnimacion.el.id;			
			YAHOO.gestorAST.ultimoRegistro = this.objeto.ultimoRegistro();
			
			if (!YAHOO.gestorAST.ultimoRegistro){
				new mensaje('faltó un click.',
							'Seleccione una solicitud para anexarle un AST.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}											

						
			fncOK = function(p){
				o = Ext.util.JSON.decode(p.responseText);
				if(o.respuesta == false){
					gestorAST.nuevoAST();
				}else{
					new mensaje('Error.',
								'Ya existe un AST asociado a la solicitud seleccionada.',
									{ modal:true,
									  width:380,
									  height:80,
									  shadow:true,
									  closable:true 
									}
								 ).show(gestorAST.animacion);	
					return;
				}
			};
			
			var config = { metodo : 'gestorAst.generarAst',
						   nombre: 'validar la existencia de un AST asociado una solicitud.',
						   url: 'modulos/ast/existeAst.asp',
						   transaccionOk: fncOK,
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										'SO_ID' : YAHOO.gestorAST.ultimoRegistro.id
										}
						};
			new transaccion(config);										
		},
		
		nuevoAST								: function(){
			var solicitud = YAHOO.gestorAST.ultimoRegistro;							
			var config = {
						  id     : YAHOO.util.Dom.generateId().replace(/yui-gen/g,'nuevoAst'),
						  region : 'center',
						  objeto : {
							  			clase  : 'capsadorForm', 
										config : { 
													id	   			: 'nuevaSolicitud',
													descripcion 	: 'Crear nueva solicitud.',											
													webservice	   : 'modulos/ast/ingresar/ingresar.asp?SO_ID=' + solicitud.id,
													grupoExpandido : '1',
													navRapida  	   : false,
													form   		   : {  id 	 	: 'form1',
																		name 	: 'form1',
																		action 	: 'modulos/ast/ingresar/guardar.asp',
																		method	: 'POST'
																	 },				 
													urlPostRegistrar	: 'modulos/ast/ingresar/actualizarSeccionesGuardar.asp?AST_ID=',
													botones		   	:[{
																		id:'guardarAst-btn', 
																		text: 'Guardar', 
																		cls:'x-btn-text-icon guardar',																		
																		tooltip: {text:'Guarda los datos en la base de datos.', title:'Guardar.', autoHide:true},
																		handler: gestorAST.registrar
																	 }]
												 }
						  		   },
						  layout : {
									 title    : 'Nuevo AST',
									 closable : true					 		
							 	   },
						  panel  : {
								     fitToFrame : true,
								     title      : 'Nuevo AST.'
						 		   }
					    };
			objetos.add(config.id,  new visorHtml(gestorAST.ventanaSistema, new ventanaDatos('center', {}), config ));
		},
		
		creaNuevoPts							: function(){
			var config = {
						  id     : YAHOO.util.Dom.generateId().replace(/yui-gen/g,'nuevoPts'),
						  region : 'center',
						  objeto : {
							  			clase  : 'capsadorForm', 
										config : {
													id	   			: 'nuevoPts',
													descripcion 	: 'Crear nuevo Pts.',											
													webservice	   : 'modulos/pts/ingresar/ingresar.asp',
													grupoExpandido : '1',
													navRapida  	   : false,
													form   		   : {  action 	: 'modulos/pts/ptsInsertar.asp',
																		method	: 'POST'
																	 },
													botones		   :[
																	 {
																	 	id:'guardar-btn', 
																	 	text: 'Guardar', 
																		cls:'x-btn-text-icon guardar',																		
																		tooltip: {text:'Guarda los datos en la base de datos.', title:'Guardar.', autoHide:true},
																	 	handler: gestorAST.registrar
																	  }
																	 ]
												 }
						  		   },
						  layout : {
									 title    : 'Nuevo PTS',
									 closable : true					 		
							 	   },
						  panel  : {
								     fitToFrame : true,
								     title      : 'Ingreso de PTS.'
						 		   }
					    };
			objetos.add(config.id,  new visorHtml(this.ventanaSistema, new ventanaDatos('center', {}), config ));   			
     	},
		
		
		
		verPts								: function(){			
			var ultimoRegistro = this.objeto.ultimoRegistro();			
			if (ultimoRegistro){					
				var config = { 		id 			: 'detalleAST',
									nombre 		: 'Pts AST: ' + ultimoRegistro.id,
									descripcion : 'PTS asociados a  un AST',
									region 		: 'center',
									layout 		: {
													title 		: 'Pts AST: ' + ultimoRegistro.id,
													closable 	: true,
													style		: 'width:880px; border:1px; solid #99bbe8;overflow: hidden'
									},
									proxy		: { 
													name 		: 'HttpProxy',
													url  		: 'webServices/pts/cargaListaPts.asp?ptsAstId='+ultimoRegistro.id,
													params 		: { start	: 0,
																	limit	: 8																						
													}	
									},
									baseParams	: { ptsAstId : ultimoRegistro.id},
									reader		: { name   : 'XmlReader',
													meta	: {
																record 		: 'pts',
															   totalRecords : 'Contador',
															   id		 	: 'PTS_ID'
													},
													recordType  : [
																	 {name : 'PTS_ID', 							mapping :  'PTS_ID'},
																	 {name : 'PTS_TIPO_PERMISO', 				mapping :  'PTS_TIPO_PERMISO'},	
																	 {name : 'PTS_NIVEL_RIESGO', 				mapping :  'PTS_NIVEL_RIESGO'},
																	 {name : 'PTS_APROB_FECHA_COMIENZO', 		mapping :  'PTS_APROB_FECHA_COMIENZO'},																	  																	  																	  																	  
																	 {name : 'PTS_APROB_EMPRESA_RESPONSABLE', 	mapping :  'PTS_APROB_EMPRESA_RESPONSABLE'},
																	 {name : 'KEY',  							mapping :  'KEY'}
																 ]																				  													 
									},																																
									remoteSort	: true,
									defaultSort	: {
														field		: 'PTS_ID',
														direction 	: 'desc'
									},	
									columnModel	: {  model: [   
																	{id : 'id',				    header : 'ID', 					  dataIndex : 'PTS_ID',							width :  50, sortable : false},
																	{id : 'tipoPermiso',		header : 'Tipo de Permiso',		  dataIndex : 'PTS_TIPO_PERMISO',				width : 200,  sortable : false},
																	{id : 'nivelRiesgo',		header : 'Nivel Riesgo',		  dataIndex : 'PTS_NIVEL_RIESGO',				width : 200, sortable : false},
																	{id : 'fechaComienzo',	    header : 'Fecha Comienzo', 	      dataIndex : 'PTS_APROB_FECHA_COMIENZO',		width : 200, sortable : false},
																	{id : 'empresaResponsable', header : 'Empresa Responsable',   dataIndex : 'PTS_APROB_EMPRESA_RESPONSABLE',	width : 200, sortable : false},
																	{id : 'key',                header : 'key', 			      dataIndex : 'KEY',						hidden: true}																		
															 ],
													defaultSortable : false		 
									},
									objeto 	: { clase  :   'capsadorForm', 
												config : { 
															webservice		: 'modulos/pts/recuperar/mostrarPtsAst.asp',
															grupoExpandido	: '1',
															navRapida   	:  false,
															descripcion		: 'Visualizar detalle de PTS.'
												}	  
									},
									botones 		: [	
													   	{ref: 'o.objeto.objeto.instancia', text	:	'&nbsp;&nbsp;&nbsp;&nbsp;Imprimir',	cls	:	'x-btn-text-icon imprimir',	handler	: gestorAST.imprimirFormularioAST,	tooltip: {text:'Imprime el formulario.', title:'Imprimir.', autoHide:true}}
													  ]																											
				 };						
				YAHOO.gestorAST.colectorObjetos.add(config.id,  new visorGrid(gestorAST.ventanaSistema, new ventanaDatos('center'), config ));																											  
			}
		},
		
		
		
		imprimirFormularioPTS					: function(o){
			// el o se automapea para registrarse
			var contexto = o.objeto;
			if (o.ref){
				contexto = eval(o.ref);
			}
			if (contexto){
				var config	= {
					colapsador  : contexto,
					params	  	: {
									PTS_ID 		 : contexto.key,  
									seccionInicio : 1
								  },
					altoPagina  : 1100,
					numSecciones: 4,
					webservice	: 'modulos/imprimir/pts/imprimir.asp'
				};				
				var imp = new Imprimir(config);
			}			
		},		
		
		
		
		
		
		
		cambioEstadoPtsAprobados				: function (inicioAnimacion){					
			gestorAST.animacion = inicioAnimacion.el.id;			
			var pts = this.objeto.ultimoRegistro();																			
			var config = { metodo : 'gestorAst.cambioEstadoPtsAprobados',
						   nombre: 'cambiar el estado del PTS.',
						   url: 'modulos/pts/ptsCambioEstadoAprobados.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'ptsId': pts.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},
		
		cambioEstadoPtsRechazados				: function (inicioAnimacion){					
			gestorAST.animacion = inicioAnimacion.el.id;			
			var pts = this.objeto.ultimoRegistro();																			
			var config = { metodo : 'gestorAst.cambioEstadoPtsRechazados',
						   nombre: 'cambiar el estado del PTS.',
						   url: 'modulos/pts/ptsCambioEstadoRechazados.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'ptsId': pts.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},

		creaNuevaSolicitud			 			: function(o){
			if (this.asNuevaSolicitud) {
				this.asNuevaSolicitud.destroy(true);
			}
			this.asNuevaSolicitud = new asistente({	titulo : 'Crea nueva solicitud',
													subTitulo :'Asistente para ingreso de nueva solicitud',
													numPasos : 2,
													form : {action : 'modulos/solicitudes/ingresaTusolicitudesPaso1.asp',
															name : 'frmIngresaTuSolicitud',
															id : 'frmIngresaTuSolicitud'
															},
													modal:true,
													autoTabs:true,
													width:550,
													height:480,
													shadow:true,
													closable:true 											 
												  });
			this.asNuevaSolicitud.show('nuevaSolicitud-btn');																																											
		},
								
		formularioContacto			 			: function(o){
			if (this.nuevoContacto) {
				this.nuevoContacto.destroy(true);
			}
			this.nuevoContacto = new asistente({	titulo : 'Formulario Contacto',
													subTitulo :'Asistente ingreso sistema Gestor AST ',
													numPasos : 2,
													form : {action : 'modulos/formularioContacto/formularioContactoIngresaSolicitudPaso1.asp',
															name : 'frmContacto',
															id : 'frmContacto'
															},
													modal:true,
													autoTabs:true,
													width:470,
													height:380,
													shadow:false,
													closable:true 											 
												  });			
			this.nuevoContacto.show('contacto-btn');																																											
		},
														
		cambioEstadoSolicitudesFaltaInformacion	: function (inicioAnimacion){					

			gestorAST.animacion = inicioAnimacion.el.id;			
			var solicitudes = this.objeto.ultimoRegistro();
			if (!solicitudes){
				new mensaje('faltó un click.',
							'Seleccione una solicitud antes de enviarla.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}											
								
			var config = { metodo : 'gestorAst.cambioEstadoSolicitudesFaltaInformacion',
						   nombre: 'cambiar el estado de la solicitud.',
						   url: 'modulos/solicitudes/solicitudesCambioEstadoFaltaInformacion.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'solicitudId': solicitudes.id				
									   }			 
						};				
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},
		
		cambioEstadoSolicitudesNuevas 			: function (inicioAnimacion){					

			gestorAST.animacion = inicioAnimacion.el.id;			
			var solicitudes = this.objeto.ultimoRegistro();
			if (!solicitudes){
				new mensaje('faltó un click.',
							'Seleccione una solicitud antes de enviarla.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}											
								
			var config = { metodo : 'gestorAst.cambioEstadoSolicitudesNuevas',
						   nombre: 'cambiar el estado de la solicitud.',
						   url: 'modulos/solicitudes/solicitudesCambioEstadoNuevas.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'solicitudId': solicitudes.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},						
				
		metodoVacio								: function(o){
			new mensaje('hacer algo.',
						'hacer algo.',
						{ modal:true,
						  width:380,
						  height:80,
						  shadow:true,
						  closable:true }).show(o.id);	
		},
		
		cambioEstadoFormularioContactoAprobadas	: function (inicioAnimacion){					
			gestorAST.animacion = inicioAnimacion.el.id;			
			var formularioContacto = this.objeto.ultimoRegistro();
			if (!formularioContacto){
				new mensaje('faltó un click.',
							'Seleccione una solicitud antes de Aprobar.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}											
								
			var config = { metodo : 'gestorAst.cambioEstadoFormularioContactoAprobadas',
						   nombre: 'cambiar el estado de la toma de contacto.',
						   url: 'modulos/formularioContacto/formularioContactoCambioEstadoAprobadas.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'FC_ID': formularioContacto.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},	
				
		cambioEstadoFormularioContactoRechazadas: function (inicioAnimacion){					
			gestorAST.animacion = inicioAnimacion.el.id;			
			var formularioContacto = this.objeto.ultimoRegistro();
			if (!formularioContacto){
				new mensaje('faltó un click.',
							'Seleccione una solicitud antes de Rechazar.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}											
								
			var config = { metodo : 'gestorAst.cambioEstadoFormularioContactoRechazadas',
						    nombre: 'cambiar el estado de la toma de contacto.',
						   url: 'modulos/formularioContacto/formularioContactoCambioEstadoRechazadas.asp',
						   transaccionOk: gestorAST.transaccionOk.createDelegate(this),
						   inicioAnimacion: inicioAnimacion.el.id,
						   parametros: {
										 'FC_ID': formularioContacto.id				
									   }			 
						};							
			new transaccion(config);			
			var retardaRecuperar = new Ext.util.DelayedTask(this.objeto.recuperar, this);
			retardaRecuperar.delay(2000);
		},	
						
		modificarSolicitud						: function(inicioAnimacion){	
			gestorAST.animacion = inicioAnimacion.el.id;			
			var solicitudes = this.objeto.ultimoRegistro();
			if (!solicitudes){
				new mensaje('faltó un click.',
							'Seleccione una solicitud antes de  modificar.',
								{ modal:true,
								  width:380,
								  height:80,
								  shadow:true,
								  closable:true 
								}
							 ).show(gestorAST.animacion);	
				return;
			}		
			
			
			gestorAST.editarSolicitud = new asistente({	titulo : 'Asistente para sus modificar solicitud.',
													  	subTitulo : 'Inicio',
														numPasos : 4,
														form : {	action :'modulos/solicitudes/solicitudModificaTuSolicitud.asp?SO_ID=' + solicitudes.id,
																	name : 'frmModificarSolicitud',
																	id :  'frmModificarSolicitud'
															   },
	
												 		modal:true,
														autoTabs:true,
														width:550,
														height:400,
														shadow:false,
														closable:true,
														delegado: this.objeto.recuperar.createDelegate(this)
													   });
			
			gestorAST.editarSolicitud.show(inicioAnimacion.el.id);								
		}
		
    };
}();
Ext.onReady(gestorAST.init, gestorAST);

