// Daniel Mota - Conexion AJAX / http://icebeat.bitacoras.com
var ajax = {

	XMLHttpRequest: function() {		
  		try { return new XMLHttpRequest(); }
 		catch (e) { try { return new ActiveXObject('Msxml2.XMLHTTP'); }
  		catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); }
  		catch (e) { return false; }}}
  		return false;
	},


	target: function(div_nombre) {
	document.getElementById(div_nombre).innerHTML = "<br><br><table width='250' height='100' border='1' cellpadding='1' cellspacing='1'><tr><td bgcolor='#F5F5F5'><div align='center'><span style='font-size: 11px;font-family: Arial, Helvetica, sans-serif;font-weight: bold;color:#000000;'>Por favor espere un momento<br>Procesando los datos...</span></div></td></tr></table>"
	},



	get: function(sFile,oParams,fnDone) {

		return this.request('GET',sFile,oParams,fnDone);

	},
	post: function(sFile,oParams,fnDone) {
		return this.request('POST',sFile,oParams,fnDone);
	},
	request: function(sMethod,sFileName,oParams,fnDone) {
		var oRequest = this.XMLHttpRequest();
		if (!oRequest) return true;
		var sParams = '';
		var sFile = sFileName.split('#');
		if(sMethod == 'GET') {
			oRequest.open('GET', sFile[0]+this.params(oParams,'?'), true);
		} else {
			sParams = this.params(oParams,'');
			oRequest.open('POST', sFile[0], true);
        	oRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		}
        oRequest.setRequestHeader('Referer',window.location);
		//alert(oRequest.readyState);
        oRequest.onreadystatechange = function() {
        	if (oRequest.readyState == 4 && oRequest.status == 200) {
        		if(fnDone)
					fnDone(oRequest);
        		if(sFile[1])
        			ajax.action(oRequest,sFile[1]);
			}
        };
		//alert(sParams);
        oRequest.send(sParams);
		return false;
	},

	params: function(oParams,before) {
		var sParams = '';
		for(i in oParams) {
			if(sParams.length>0) sParams += '&';
			sParams += encodeURIComponent(i)+'='+encodeURIComponent(oParams[i]);
		}
		return before+sParams;
	},
	action: function(oRequest,container) {
        switch(container[0]) {
        	case '^': 
        		container = container.replace(/^\^/,'');
        		if(!document.getElementById(container)) return false;
        		var update = document.getElementById(container).innerHTML;
        		document.getElementById(container).innerHTML = oRequest.responseText + update;
        		break;
        	case '+': 
        		container = container.replace(/^\+/,'');
        		if(!document.getElementById(container)) return false;
        		document.getElementById(container).innerHTML += oRequest.responseText;
        		break;
        	default: 
	        	if(!document.getElementById(container)) return false;
				document.getElementById(container).innerHTML = oRequest.responseText;
        }
	}
};

//	ajax.get o ajax.post

//ejemplo 1: ajax.get('ajax.php#update');
//	carga los datos en el contenedor con id update

//ejemplo 2: ajax.get('ajax.php#^update');
// 	carga los datos y lo añade justo delante del contenido

//ejemplo 3: ajax.get('ajax.php#+update');
//	carga los datos y lo concatena con el contenido

//ejemplo 4: ajax.get('ajax.php#update',{"id":125,"action":"ajax"});
//	pasa los parametros en forma de objeto

//ejemplo 5: ajax.get('ajax.php',{"id":125,"action":"ajax"},function(oRequest) { alert(oRequest.responseText); } );
//	pasa parametros y llama a una funcion

//ejemplo 6: ajax.get('ajax.php#updare',{"id":125,"action":"ajax"}, function(oRequest) { alert(oRequest.responseText); } );
//	pasa parametros y actualiza, luego llama a una funcion
