//AjaxDEC Ver.1.1
//Mar-2008
//aplicando clases como namespaces con el pattern singleton
//con este metodo las variables dentro de la clase tienen acceso total sin recurrir a this.variable.

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->//

var ajax = new Object();

ajax.clase = (function() {

//atributos privados
//hay que definir variables con var aqui de no, no seran privadas
//las funciones no deben estar dentro de variables

var datosGenerales = new Array();
datosGenerales["navegador"] = navigator.appName;

//metodos privados

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>//

function definiendoTipoDeObjetoConNavegadorEspecifico() {

			if(datosGenerales["navegador"] == "Microsoft Internet Explorer"){
			
				datosGenerales["objetoHttp"] = new ActiveXObject("Microsoft.XMLHTTP");
			
			}else{
			
				datosGenerales["objetoHttp"] = new XMLHttpRequest();
			
			}
			

}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>//

function manejandoRespuestas() {

	
	if(datosGenerales["objetoHttp"].readyState == 4){

		var response = datosGenerales["objetoHttp"].responseText;
		 document.getElementById(datosGenerales["objetoDOMCambia"]).innerHTML = response;
  
	}

    if(datosGenerales["seMuestranRespuestas"] == true) {
	
	
					if(datosGenerales["objetoHttp"].readyState == 1){
						
								 document.getElementById(datosGenerales["objetoDOMRespuestas"]).innerHTML = "Cargando";

					}


					if(datosGenerales["objetoHttp"].readyState == 2){
						
								 document.getElementById(datosGenerales["objetoDOMRespuestas"]).innerHTML = "Cargado";

					}


					if(datosGenerales["objetoHttp"].readyState == 3){
						
								 document.getElementById(datosGenerales["objetoDOMRespuestas"]).innerHTML = "Listo";

					}


					if(datosGenerales["objetoHttp"].readyState == 0){
						
								 document.getElementById(datosGenerales["objetoDOMRespuestas"]).innerHTML = "Sin iniciar";

					}

	}

}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>//


//-------------------------------------------------------------------------------------------------------------------------------------------------------------->//
return {
//-------------------------------------------------------------------------------------------------------------------------------------------------------------->//
//metodos publicos
//se pueden definir variables tipo: casa:"casa",
//para que esto quede como publico la terminacion entre funciones y variables debe ser una coma no punto y coma

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>//

 enviandoYRecibiendo : function(datos) {

	//lamando al metodo privado para cargar el objeto http dentro del array
	definiendoTipoDeObjetoConNavegadorEspecifico();
	
	datos['urlTotal'] = datos['url'] + "?" + datos['variables'];
	datosGenerales["objetoDOMCambia"] = datos['objetoDOMCambia'];
	datosGenerales["seMuestranRespuestas"] = datos['seMuestranRespuestas'];
	datosGenerales["objetoDOMRespuestas"] = datos["objetoDOMRespuestas"];

    datosGenerales["objetoHttp"].open(datos['elMetodo'], datos['urlTotal'], true);
    datosGenerales["objetoHttp"].onreadystatechange = manejandoRespuestas;
    datosGenerales["objetoHttp"].send(null);


}

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>//


//-------------------------------------------------------------------------------------------------------------------------------------------------------------->//
};
//-------------------------------------------------------------------------------------------------------------------------------------------------------------->//

//finaliza la clase como nameSpace
})();

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->//