var $Ajax={
	XMLHttp: false,
	on_finalizer: function(){},
	resultText: '',
	resultXML: '',
	
	create_instance_ajax: function(){
		this.XMLHttp=false;
		
		if( window.XMLHttpRequest ){
			return new XMLHttpRequest();
		}
		else if( window.ActiveXObject ){
			var versiones = ["Msxml2.XMLHTTP.7.0","Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
			
			for(var i=0;i<versiones.length;i++){
				try {
					XMLHttp = new ActiveXObject(versiones[i]);
					if( XMLHttp ){
						return XMLHttp;
						break;
					}
				} catch(e){}
			}
		}
	},
	
	changing_state_ajax: function(){
		if( $Ajax.XMLHttp.readyState==1 ){
			try{
				$Ajax.XMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			}
			catch(e){}
		}
		
		if( $Ajax.XMLHttp.readyState==4 ){
			if( $Ajax.XMLHttp.status==200 ){
				$Ajax.resultText = $Ajax.XMLHttp.responseText;
				$Ajax.resultXML = $Ajax.XMLHttp.responseXML;
				$Ajax.on_finalizer();
				
			}else{
				alert("Error al recibir respuesta "+$Ajax.XMLHttp.statusText);
			}
		}
	},
	
	execute: function(method, link, send){
		this.XMLHttp = this.create_instance_ajax();
		if( this.XMLHttp ){
			if( typeof(send)=="undefined" ) send=null;
			this.XMLHttp.onreadystatechange = $Ajax.changing_state_ajax;
			this.XMLHttp.open(method, link, true);
			this.XMLHttp.send(send);
			return;
		}		
	}
}