function addEvent( obj, type, fn ) {
	if ( obj.attachEvent ) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function() {	obj['e'+type+fn]( window.event ); }
		var r = obj.attachEvent( 'on'+type, obj[type+fn] );
		return r;
		
	} else if(obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		return true;
		
	} else {
		return false;	
	}
	
}

function removeEvent( obj, type, fn ) {
	if ( obj.detachEvent ) {
		obj.detachEvent( 'on'+type, obj[type+fn] );
		obj[type+fn] = null;
		return true;
		
	} else if(obj.removeEventListener) {
		obj.removeEventListener( type, fn, false );
		return true;
		
	} else {
		return false;	
	}
}


function createXMLHttp() {
	var req = false;
	//  parte para cualquier navegador
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	// parte para Internet Explorer / ActiveX
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
	return req;
}

function sendRequest ( metodo, url, param, func, async ) {
	
	if(async!=false) async = true;
	
	var xmlhttp = createXMLHttp();
	
	if(metodo.toUpperCase()=='POST') {
		xmlhttp.open('POST',url, async);
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xmlhttp.send(param);
		/* Solo para asincrono */
		if(async) {
			xmlhttp.onreadystatechange = function () {
				if (xmlhttp.readyState==4) {
					if(xmlhttp.status==200) {
						func(xmlhttp.responseText);
					} else if(xmlhttp.status==404) {
						return false;
					}
				}
				
			}
		} else {
			func(xmlhttp.responseText);
		}
	} else {
		url = url+"?"+param;
		xmlhttp.open('GET',url, async);
		if(async) {
			xmlhttp.onreadystatechange = function () {
				if (xmlhttp.readyState==1) {
					//alert("cargando");	
				}else 
				if (xmlhttp.readyState==4) {
					if(xmlhttp.status==200) {
						func(xmlhttp.responseText);
					} else if(xmlhttp.status==404) {
						res.innerHTML = "La página no existe";
					}
				}
				
			}
			xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			xmlhttp.send(null);
		} else {
			xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			xmlhttp.send(null);
			func(xmlhttp.responseText);
		}
	}
	return;
	
}