// JavaScript Document
// 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;
	},
	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);
        oRequest.onreadystatechange = function() {
        	if (oRequest.readyState == 4 && oRequest.status == 200) {
        		if(fnDone)
					fnDone(oRequest);
        		if(sFile[1])
        			ajax.action(oRequest,sFile[1]);
			}
        };
        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

