// Biblioteca de CLASES javascript del AZweb-PHP.
	
	var win_busqueda;
	
	
<!------------------------------------------------------------------------------------------------------------------------------------------------
<!--											CLASE: BUSQUEDA
	
// Clase que se utiliza para mostrar una busqueda en un iFrame.
// Permite el paso de variales  por Get a traves del array 'parametrosGet'
// y la creacion de variables de sesion a traves del array 'parametros'.

// Ejemplo:
//			busquedaPais = new busqueda();  		          	   -creacion del objeto.         
//			busquedaPais.url = 'CIP2010W4.PHP';			           -url de la busqueda.
//			busquedaPais.parametrosGet = Array('id_1','codcue'     -parametros a pasar por get con la forma ( nombre_var_1, valor_var_1,
//											   'id_2','descue'										          nombre_var_2, valor_var_2,
//											   'id_3','abcdef');	   										  nombre_var_3, valor_var_3 )
//			busquedaPais.mostrar();                                -metodo que muestra la busqueda.



	function mostrar_busqueda(){						   	     // Metodo que muetra la busqueda ( metodo mostrar() ).
			var var_get="";			
			for(var i=0;i<this.parametros.length;i++){																			
				CargarVarSesion("idObjeto"+(i+1),this.parametros[i]);
			}
			for(i=0;i<this.parametrosGet.length;i=i+2){				    
				var_get = var_get+"&"+this.parametrosGet[i]+"="+this.parametrosGet[i+1];  				
			}
			//	alert(this.url+"?"+var_get);
			win_busqueda = new Window({
							  url:				 this.url+"?&"+var_get,
							  className:	     "alphacube",  
							  top:				 this.top, 	     // Parametros de la ventana que contiene al iFrame,
							  left:				 this.left,      
							  width:   			 this.width, 
							  height:			 this.height, 							  
							  overflow:			 this.overflow, 							  
							  minimizable:		 this.minimizable, 
							  maximizable:		 this.maximizable,
							  closable:			 this.closable,
							  resizable:		 this.resizable, 
							  draggable:		 this.draggable,
							  title:             this.title,
							  onClose:			 this.onClose,
	 						  showEffectOptions: {duration:1.0}
							  });
			//win_busqueda.setDestroyOnClose();
			win_busqueda.show(false);
			
			
			//-------------------
			//  VENTANA DE HERNAN			
			
			//win_busqueda = dhtmlwindow.open(this.url.substring(4,11), "iframe", this.url+"?&"+var_get, this.title, "width=" + this.width +",height="+this.height+",left="+this.left+",top="+this.top+",resize=1,scrolling=1")
			//------------------
	}
	

	
	function busqueda(){				       // Declaracion de la clase Busqueda
		this.url=			 "";
		this.top=			 50;
		this.left=			 99;
		this.width=		     500; 
		this.height= 		 300;
		this.overflow=	     "hidden";
		this.minimizable=	 false;
		this.maximizable=	 false;
		this.closable=		 false;
		this.resizable= 	 false;
		this.draggable=	  	 false;						
		this.parametros= 	 new Array();
		this.parametrosGet=	 new Array();
		this.title=          " ";		
		this.mostrar=		 mostrar_busqueda;	// metodo mostar()
		this.onClose =		 null
	}
	
		
<!------------------------------------------------------------------------------------------------------------------------------------------------>
<!--											CLASE: CONSULTA_AJAX
 
// Clase que se utiliza para llamar a procedimientos en background (AJAX).
// Permite el paso de variables por Get.
		
// Ejemplo:		
//		   consultaCues = new consultaAjax();   			        -creacion del objeto.         
//		   consultaCues.url = 'CIP2010WBG.PHP';  					-url del procedimiento
//		   consultaCues.parametros = Array('case' , 'descueso',     -parametros a pasar por get con la forma ( nombre_var_1, valor_var_1,
//										   'idCue',  4       );                                                nombre_var_2, valor_var_2 )
//		   consultaCues.enviar();                                   - metodo que realiza la llamada al procedimiento
//         alert(consultaCues.responseText);

   
	function replaceAZ(string,str_buscar,str_reemplazo){
		var str_return = new String();
		for(var i=0; i< string.length; i++){
			var aux = string.substr(i,1)
			if(aux == str_buscar){
				str_return += str_reemplazo;
			}
			else{
				str_return += aux;
			}
		}
		return str_return;
	}

   function enviar_ajax(){
		try {																
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");					
		} 
		catch (e){
			try {
				this.xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");	// Se crea el objeto segun si el navegador es IE, 
			}															// u otro. Si es IE se atiende a que version es.
			catch (E){
				this.xmlhttp= false;
			}
		}
		if (!this.xmlhttp && typeof XMLHttpRequest!='undefined'){
			  this.xmlhttp = new XMLHttpRequest();
	    }
	    
		var var_enviar ='';
		for(i=0;i<this.parametros.length;i=i+2){					
				//var_enviar = var_enviar+"&"+this.parametros[i]+"="+this.parametros[i+1];  				
				var_enviar = var_enviar+"&"+this.parametros[i]+"="+replaceAZ(this.parametros[i+1],'%','%25');  				
	    } 
		
		url=this.url;
		//alert(url+"?"+var_enviar);
		this.xmlhttp.open("GET",url+"?"+var_enviar,this.asincronico); 
		if(this.asincronico)	//	si esta usando el modo asincrónico recibe y ejecuta la funcion 
		{
			//	funcion del modo asincrónico
			//this.xmlhttp.onreadystatechange = this.statechange;
			var obj = this;			
			this.xmlhttp.onreadystatechange = function()
			{
				if( obj.xmlhttp.readyState == 4 )
				{
					if( obj.xmlhttp.status == 200 )
					{
						obj.responseText 		= obj.xmlhttp.responseText;
						obj.responseXML  = obj.xmlhttp.responseXML;
                        obj.statechange();
						delete obj.xmlhttp;
					}
				}
			}
		}
		this.xmlhttp.send(null);
		if( !this.asincronico )
		{
			this.responseText = this.xmlhttp.responseText;     		 
			this.responseXML  = this.xmlhttp.responseXML;
			//delete this.xmlhttp;
		}
   }
   
   function consultaAjax(){
		this.xmlhttp      =	"";
		this.url          =	"";				// Direccion del archivo que va a correr en background
		this.parametros   = new Array();	// Parametros que se la pasan al proceso por GET
		this.asincronico  =	false;			// Especifica si la llamada es asincronica o no.
		this.responseText =	"";				// String que captura la respuesta en modo texto
		this.responseXML  =	"";				// String que captura la respuesta en modo XML
		this.enviar       =	enviar_ajax;    // Metodo que realiza la llamada al procedimiento background.
		this.statechange  = "";				// Método asignado al evento statechange de ajax, solo para el modo asincrónico
   }
         
<!---------------------------------------------------------------------------------------------------------------------------------------------->	
    
	function ventana(){				       // ALIAS DE LA CLASE BUSQUEDA
		this.url=			 "";
		this.top=			 50;
		this.left=			 99;
		this.width=		     500; 
		this.height= 		 300;
		this.overflow=	     "hidden";
		this.minimizable=	 false;
		this.maximizable=	 false;
		this.closable=		 false;
		this.resizable= 	 false;
		this.draggable=	  	 false;						
		this.parametros= 	 new Array();
		this.parametrosGet = new Array();
		this.title         = "&nbsp;";
		this.mostrar =		 mostrar_busqueda;	// metodo mostar()
		this.onClose =		 null;
	}
	
	function nada(){
		alert('lein');
		var i;
		i=0;
	}
//------------------------------------------------------------------------------------------------------------------------------------------		
	function procesoAjax(){  // ALIAS DE LA CLASE CONSULTA_AJAX   
		this.xmlhttp      =	"";
		this.url          =	"";				// Direccion del archivo que va a correr en background
		this.parametros   = new Array();	// Parametros que se la pasan al proceso por GET
		this.asincronico  =	false;			// Especifica si la llamada es asincronica o no.
		this.responseText =	"";				// String que captura la respuesta en modo texto
		this.responseXML  =	"";				// String que captura la respuesta en modo XML
		this.ejecutar     =	enviar_ajax;    // Metodo que realiza la llamada al procedimiento background.
		this.statechange  = "";				// Método asignado al evento statechange de ajax, solo para el modo asincrónico
    }

//------------------------------------------------------------------------------------------------------------------------------------------		
	function mostrarVentanaCalendario()
	{
		if ( this.url =="" )
		{		
		//	**************************************************************************
		//	ESTA PROPERTY LA AGREGUE PORQUE CUANDO EL CALENDARIO ES LLAMADO DESDE LAS 
		//	BUSQUEDAS, EL MISMO NO ABRE PORQUE LA RUTA ES DIFERENTE...
		//	**************************************************************************
			this.url = "../biblioteca_php/calendario.PHP?pIdObjeto";
			CargarVarSesion( "pIdObjeto", this.idObjeto );
		}	//	if ( this.url =="" )
		else
		{
			cargarVariableSesionXUrl( "pIdObjeto", this.idObjeto, "../../biblioteca_php/background.PHP?" );
		}
		win = new Window({className: "alphacube", /*title: "prueba",*/ top:this.top, left:this.left, width:190, height:195 , url:this.url,overflow:"hidden", showEffectOptions: {duration:0.5},minimizable:false, maximizable:false,closable:true, onClose:this.onClose /*,resizable:false, draggable:false*/}) 
		win.show(false);
	}

	function calendario()
	{
		//	**************************************************************************
		//	ESTA PROPERTY LA AGREGUE PORQUE CUANDO EL CALENDARIO ES LLAMADO DESDE LAS 
		//	BUSQUEDAS, EL MISMO NO ABRE PORQUE LA RUTA ES DIFERENTE...
		this.url      = "";
		//	**************************************************************************
		this.idObjeto = "";
		this.onClose  = "";
		this.top	  = "";
		this.left	  = "";
		this.mostrar  = mostrarVentanaCalendario; 	
	}
	
	function barra_menu(){
		this.salir = function(){parent.ajaxwin.hide();};
		this.limpiarFormulario = null;
		this.guardar = null;
		this.crearRegistro = null;
		this.borrarRegistro = null;
		this.estadoAnterior = null;
		this.editar = null;
		this.entrarConsulta = null;
		this.ejecutarConsulta =null;
		this.ultimoCriterio = null;
		this.listtadoTeclaFunciones = null;
		this.ayuda = null;
		this.imprimirPantalla= null;			
	}
	
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

	var popupAbierto = false;
	
	function ejecutar(){			
		var ajax = new procesoAjax();
		ajax.url =  this.urlBackground;
		ajax.parametros = this.parametros;
		ajax.ejecutar();			
		var aux = new Array();
		aux = separarCampos(ajax.responseText,this.separadorCampos);
		if(aux.length > 0){			
			for(var i=0 ; i<aux.length; i++){								
				document.getElementById(this.idObjetosCargar[i]).value = aux[i]; 				
			}
			//document.getElementsById(aux.length-1).select();
			this.validar();
		}
		else{				
 			var auxValidar = this.validar;
			if(popupAbierto == false){
				popupAbierto = true;
				this.ventana.url = this.urlBusqueda
				this.ventana.parametrosGet = this.parametros;
				if(this.onClose == null){
					this.ventana.onClose = function(){auxValidar();popupAbierto=false};				
				}
				else{
					var auxOnClose = this.onClose;
					this.ventana.onClose = function(){auxOnClose();auxValidar();popupAbierto=false};				
				}
				this.ventana.mostrar();
			}
		}
	}
	
	function busquedaAZ(){
		this.urlBackground = null;
		this.urlBusqueda  = null;
		this.parametros   = null;
		this.onClose      = null;
		this.ventana      = new ventana();		
		this.validar      = null;
		this.separadorCampos = "|";
		this.idObjetosCargar = null;
		this.abrir = ejecutar;
	}

//------------------------------------------------------------------------------------------------------------------------------------------------------

	function validarObjeto(){
		    if(document.getElementById(this.idTxtDescripcion).value != ''){				
					var ajax = new procesoAjax();
					ajax.url = this.urlBackground;
					ajax.parametros = this.parametros;
					ajax.ejecutar();														
					if(ajax.responseText != 'NO VALIDO'){													
						document.getElementById(this.idTxtDescripcion).estado = 'VALIDO';
						document.getElementById(this.idImagen).style.visibility ='hidden';	
						document.getElementById(this.idTxtCodigo).value = ajax.responseText;							
						if(popupAbierto == false){			
							if(this.esValido != null){
							  	this.esValido();
							}							
						}
					}
					else{						
						document.getElementById(this.idTxtDescripcion).estado = 'NO VALIDO';
						document.getElementById(this.idImagen).style.visibility ='inherit';
						document.getElementById(this.idTxtCodigo).value = '';			
						if(popupAbierto == false){			
							if(this.esNoValido != null){
							  	this.esNoValido();
							}							
						}
					}				
			}
			else{
				document.getElementById(this.idTxtDescripcion).estado = 'INCOMPLETO';
				document.getElementById(this.idImagen).style.visibility ='hidden';
				document.getElementById(this.idTxtCodigo).value = '';																		
				if(popupAbierto == false){			
						if(this.esIncompleto != null){
							this.esIncompleto();
						}							
				}
			}								
	}
	
	function validarAZ(){
		this.idTxtId          = null;
		this.idTxtCodigo      = null;
		this.idTxtDescripcion = null;
		this.idImagen         = null;
		this.urlBackground    = null;
		this.parametros       = null;
		this.esValido         = null;
	    this.esNoValido       = null;
		this.esIncompleto     = null;
		this.validar = validarObjeto;
	}
	
	

//------------------------------------------------------------------------------------------------------------------------------------------------------
