// Handlers Globales
var oArrAjaxResponseHandlers = {
	onCreate: function(t) {
		MostrarBarraProcesando();
	},
	onComplete: function(t) {
		OcultarBarraProcesando();
	}
}
Ajax.Responders.register(oArrAjaxResponseHandlers);
// Funciones
function PrepararParametrosParaPost(sParametros,sIdForm){
	var oArrParametros;
	var sPostBody = '';
	if (sIdForm != ''){
		sPostBody = Form.serialize(document.getElementById(sIdForm)) + '&EsAjax=true';	
	}else{
		sPostBody = 'PostBackAction=' + document.getElementById('PostBackAction').value + '&EsAjax=true';
		if (sParametros != ''){
			oArrParametros = sParametros.split(';');
			for (var i = 0; i < oArrParametros.length; i++){
				sPostBody += '&' + oArrParametros[i] + '=' + document.getElementById(oArrParametros[i]).value;
			}
		}
	}
	return sPostBody;	
}
function ActualizarElementosHTML(sIdLabel,sXml){
	var oArrIdsElementosHTML;
	var oXmlDom;
	var oXmlNodeListControlesWeb;
	var oXmlNodeControlWeb;
	var oXmlNodeListAtributosControlWeb;
	if (sXml.indexOf('<?xml') != 0){
		window.location = window.location;
		return;
	}
	oXmlDom = CargarXmlDom(sXml);
	if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'excepcion'){
/*		if (sIdLabel != '') {
			document.getElementById(sIdLabel).className = 'textoExcepcion';
		}
*/
	}else{
		if (sIdLabel != '') {
			if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'ok') {
				document.getElementById(sIdLabel).className = 'textoExito';
/*			} else if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'error') {
				document.getElementById(sIdLabel).className = 'textoError';
*/			} else if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'info') {
				document.getElementById(sIdLabel).className = 'textoAviso';
			}
		}
		oXmlNodeListControlesWeb = TraerListaNodosHijos(TraerNodo(oXmlDom,'contenidosAjax'));
		for (var i = 0; oXmlNodeListControlesWeb && i < oXmlNodeListControlesWeb.length; i++){
			oXmlNodeListAtributosControlWeb = TraerListaNodosHijos(oXmlNodeListControlesWeb[i]);
			for (var j = 0; oXmlNodeListAtributosControlWeb && j < oXmlNodeListAtributosControlWeb.length; j++){
				if (TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) == 'disabled' || TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) == 'readOnly' || TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) == 'checked'){				
					eval('document.getElementById("' + TraerNombreNodo(oXmlNodeListControlesWeb[i]) + '").' + TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) + ' = FromStringToBoolean("' + TraerValorNodo(oXmlNodeListAtributosControlWeb[j]) + '");');
				}else{
					eval('document.getElementById("' + TraerNombreNodo(oXmlNodeListControlesWeb[i]) + '").' + TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) + ' = "' + TraerValorNodo(oXmlNodeListAtributosControlWeb[j]) + '";');
				}
			}	
		}
		oXmlNodeListControlesWeb = TraerListaNodosHijos(TraerNodo(oXmlDom,'webControlsRender'));
		for (var i = 0; oXmlNodeListControlesWeb && i < oXmlNodeListControlesWeb.length; i++){
			document.getElementById(TraerNombreNodo(oXmlNodeListControlesWeb[i])).outerHTML = TraerValorNodo(oXmlNodeListControlesWeb[i]);
		}
		oXmlNodeListControlesWeb = TraerListaNodosHijos(TraerNodo(oXmlDom,'scripts'));
		for (var i = 0; oXmlNodeListControlesWeb && i < oXmlNodeListControlesWeb.length; i++){
			eval(TraerValorNodo(oXmlNodeListControlesWeb[i]));
		}
	}
//	if (sIdLabel != '') {
	if (sIdLabel != '' && ((TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'ok') || (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'info')) ) {
		document.getElementById(sIdLabel).innerHTML = TraerValorNodoDeDocumentoXml(oXmlDom,'description');
		if (document.getElementById(sIdLabel).innerHTML == '') {
			document.getElementById(sIdLabel).innerHTML = '&nbsp;';
		}
	} else {
		if (TraerValorNodoDeDocumentoXml(oXmlDom,'description') != '') {
			alert(TraerValorNodoDeDocumentoXml(oXmlDom,'description'));
		}
	}
}
function AjaxRequest(sParametros,sUrlPagina,sIdForm,sIdLabel) {
	var oArrOpciones = {
		asynchronous: true,
		// Utilizo POST
		method: 'post',
		// Datos a enviar
		postBody: PrepararParametrosParaPost(sParametros,sIdForm),
		// Manejo respuesta correcta
		onSuccess: function(t) {
			ActualizarElementosHTML(sIdLabel,t.responseText);
		},
		// Manejo respuesta 404
		on404: function(t) {
			if (sIdLabel != '') {
				document.getElementById(sIdLabel).className = 'textoError';
				document.getElementById(sIdLabel).innerHTML = 'Error 404: location "' + t.statusText + '" was not found.';
			} else {
				alert('Error 404: location "' + t.statusText + '" was not found.');
			}
		},
		// Manejo respuesta erronea
		onFailure: function(t) {
			if (sIdLabel != '') {
				document.getElementById(sIdLabel).className = 'textoError';
				document.getElementById(sIdLabel).innerHTML = 'Error ' + t.status + ' -- ' + t.statusText;
			} else {
				alert('Error ' + t.status + ' -- ' + t.statusText);
			}
		}
	}
	if (sUrlPagina == '') {
		sUrlPagina = window.location
	}
	new Ajax.Request(sUrlPagina, oArrOpciones);
}