
function OAjax(nombreformulario , nombreTarget ) {
	
	this.nombreformulario = nombreformulario;
	this.nombreTarget  = nombreTarget; // Es el div donde se va mostrar el resultado
	this.target  = null; 
	this.objAjax = null;   // Es el objeto XMLHttpRequest
	this.pagina  = null; // Es la direccion url de la pagina que se debe invocar
	this.obj     = null;   // Es el objeto que realizo el evento
	this.metodo  = null;   // Es el metodo por el que se debe invocar el xmlht..
	this.url     = null;
	this.messageLoad = "Cargando...";
	
	
	this.crearObjeto = 
	function() {
		
		try{
			this.objAjax = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e) {
	        try{
	            this.objAjax = new ActiveXObject("Microsoft.XMLHTTP");
	        }catch(e) {
	            this.objAjax = false;
	        }
    	}
    
	    if(!this.objAjax && typeof XMLHttpRequest!='undefined') {
	        this.objAjax = new XMLHttpRequest();
	    }	
	}
	
	
	this.setTarget  = 
	   function(tar){
	   		this.nombreTarget = tar;
	   }
	
	this.setMessageLoad =
	   function(message) {
	   	
	   	 this.messageLoad = message;
	   }
	
	this.setUrl = 
	 function(url) {
		this.url = url;
	}
	
	this.setFormName =
	  function(name) {
	  	this.nombreformulario = name;
	  }
	
     
	 	
	
	
  /**
   * Depreciado Lo remplazo submit()
   */	
  this.formulario = 
	 function(obj) {
	 	
	 	var parent = this;
	 	
	 	
	 	
	 	this.obj    = obj;
		
	 	
	 	if(this.nombreformulario == "") {
	 		alert("El formulario no tiene nombre");
	 		return;
	 	}
	 	
	 	var form = $(this.nombreformulario);
	 	
	 	this.crearObjeto();
		
		
		
		
		var datos = obtenerDatosFormulario(form);
		
		
		this.url = form.action;
		
		
		
		this.metodo = form.method;
		
		datos +="eventoX=" + obj.name;
		
		
		
		
		if(this.metodo.toUpperCase()=='GET') {
			if(this.url.indexOf('?') == 0) {
				this.url += "?";
			}else{
				this.url += "&";
			}
			this.url += datos;
			post = null;
		}else{
			post = datos;
		}
		
		
		var target = $(this.nombreTarget);
	 	//alert(target);
	 	if(target != null) {
	 		//alert('entro');
	 		target.innerHTML = "<img src='includes/js/loading_16.gif'><font style='color:black'>Cargando ...</font>";
	 	}
		
		
		this.objAjax.open(this.metodo, this.url ,true);
		
		this.objAjax.onreadystatechange = 
		  function () {
				var target = $(parent.nombreTarget);
				
		        if(parent.objAjax.readyState == 1) {
                    //target.innerHTML = parent.messageLoad;
                }else if(parent.objAjax.readyState == 4) {
                	if(parent.objAjax.status == 200) {
                		
                        target.innerHTML = parent.objAjax.responseText;
                    } else {
                        target.innerHTML = "Error: " + parent.objAjax.status;
                	}
				}
		 };
		 
		 if(this.metodo.toUpperCase()== 'POST') {
		 	
		 	try{
				this.objAjax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'); // POST
			}catch(e) {
				alert(e);
			}
		 }
		
		
		this.objAjax.send(post);
		
		
	}
	
	/**
	 * con esta funcino es que se somete un formulario por ajax,
	 * 
	 * @param Object obj es cualquier elementeo html
	 * @param Object funcion este parametro es opcional, es por si quieres que el resultado de ajax lo procese una funcion personalizada 
	 */
	
	this.submit = 
	 function(obj , funcion) {

	 	var parent = this;
	 	
	 	
	 	
	 	this.obj    = obj;
		
	 	
	 	if(this.nombreformulario == "") {
	 		alert("El formulario no tiene nombre");
	 		return;
	 	}
	 	
	 	
	 	var form = $(this.nombreformulario);
	 	
	 	if(form.method == "" || form.method == null) {
	 		alert("Debe especificar el metodo del formulario");
	 		return;
	 	}
	 	
	 	this.crearObjeto();
		
		
			 	
		
		var datos = obtenerDatosFormulario(form);
		
		
		this.url = form.action;
		if(this.url == "") {
			alert('El formulario no tiene action');
			return;
		}
		
		
		
		this.metodo = form.method;
		
		
		
		
		datos +="eventoX=" + obj.name;
		
		
		
		if(this.metodo.toUpperCase()=='GET') {
			if(this.url.indexOf('?') == 0) {
				this.url += "?";
			}else{
				this.url += "&";
			}
			this.url += datos;
			post = null;
		}else{
			post = datos;
		}
		
		
		
		this.objAjax.open(this.metodo, this.url ,true);
		
		if(funcion == null) {
			
			this.objAjax.onreadystatechange = 
			  function () {
					var target = $(parent.nombreTarget);
					
			        if(parent.objAjax.readyState == 1) {
	                    target.innerHTML = parent.messageLoad;
	                }else if(parent.objAjax.readyState == 4) {
	                	if(parent.objAjax.status == 200) {
	                		
	                        target.innerHTML = parent.objAjax.responseText;
	                    } else {
	                        target.innerHTML = "Error: " + parent.objAjax.status;
	                	}
					}
			 };
		}else{
			  this.objAjax.onreadystatechange = 
			  function () {
			  	 if(parent.objAjax.readyState == 1) {
			  	 	//target.innerHTML = parent.messageLoad;
		         }else if(parent.objAjax.readyState == 4) {
			  		if(parent.objAjax.status == 200) {
					   eval(funcion + "(parent.objAjax)");
	                } else {
	                   alert("Error: 346" + parent.objAjax.status);
	                }
		          }
					
			 };
		}
		 
		 if(this.metodo.toUpperCase()== 'POST') {
		 	
		 	try{
				this.objAjax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'); // POST
			}catch(e) {
				alert(e);
			}
		 }
		
		
		this.objAjax.send(post);
		
		
	}
	
	
	/***************************************************************************
    
	***************
	*   Ejemplo   *
	***************
	
	oajax = new OAjax();
    oajax.setMessageLoad(\"<font style='color:white'>Cargando...</font>\");
    oajax.setFormName('form1');
	oajax.setTarget('contenido')
	
	Ya en el onclick del boton o hip se pone la siguiente instruccion
	oajax.abrirUrl(\"index.php\" , \"modulo=sopCli&file=consultarConsumos&centro=\" + $(\"MO_CentroOperativo\").value + \"&tipoDoc=\" + $(\"MO_TipoDocumento\").value + \"&numero=\" + $(\"MO_NumeroDocumento\").value , "\divContenido"\)
	
	*****************************************************************************/
	
	this.abrirUrl = 
	 function(url , datos , target) {
	 	
	 	//document.location.href = url + "?" + datos;
	 	
	 	
	 	var parent = this;
	 	
	 	this.nombreTarget = target;
	 	
	 	this.crearObjeto();
		
		this.url = url;
		
		this.metodo = "POST";
		
		post = datos;
		
		
			
		this.objAjax.open(this.metodo, this.url ,true);
		
		
		this.objAjax.onreadystatechange = 
		  function () {
				var target = $(parent.nombreTarget);
				
		        if(parent.objAjax.readyState == 1) {
                    target.innerHTML = parent.messageLoad;
                    
                    
                }else if(parent.objAjax.readyState == 4) {
                	if(parent.objAjax.status == 200) {
                		target.innerHTML = parent.objAjax.responseText;
                    } else {
                        target.innerHTML = "Error: " + parent.objAjax.status;
                	}
				}
		 };
		 
		 
		this.objAjax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'); // POST
		
		this.objAjax.send(post);
		
	}
	
	
	
	/**
	 * Esta funcion lo que hace es abrir una pagian por ajax recibiendo la url, y los parametros necesarios (no pasa todos los del formulario)
	 * y ejecuta una funcion personalizada por el usuario 
	 */
	this.abrirUrl_Funcion = 
	 function(url , datos , nombrefuncion) {
	 	//alert('entro');
	 	var parent = this;
	 	
	 	this.crearObjeto();
		
		this.url = url;
		
		this.metodo = "POST";
		
		post = datos;
		
		
			
		this.objAjax.open(this.metodo, this.url ,true);
		
		this.objAjax.onreadystatechange = 
		  function () {
		  	 if(parent.objAjax.readyState == 1) {
		  	 	//target.innerHTML = parent.messageLoad;
	         }else if(parent.objAjax.readyState == 4) {
		  		if(parent.objAjax.status == 200) {
				   eval(nombrefuncion + "(parent.objAjax)");
                } else {
                   alert("Error: 346" + parent.objAjax.status);
                }
	          }
				
		 };
		
		//this.objAjax.onreadystatechange = funcion;		 
		 
		this.objAjax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'); // POST
		
		this.objAjax.send(post);
		
	}
   
	 
	
	 
}


