// Handlers Globales
onCompleteFunction = function(t) {
	if (MostrarEtiquetaProcesando != undefined) {
	    OcultarEtiquetaProcesando();
	}
}
onCompleteFunctionBlock = function(t) {
        document.getElementById('divDeshabilitadorForm').style.display = 'none';
}

// Funciones
function PrepararParametrosParaPost(sParametros,sIdForm){
	var oArrParametros;
	var sPostBody = '';
	if (sIdForm != ''){
		sPostBody = $("#" + sIdForm).serialize() + '&EsAjax=true';	
	}else{
		sPostBody = 'PostBackAction=' + document.getElementById('PostBackAction').value + '&EsAjax=true';
		if (sParametros != ''){
			oArrParametros = sParametros.split(';');
			for (var i = 0; i < oArrParametros.length; i++){
				if(document.getElementById(oArrParametros[i]).type == "checkbox"){
					sPostBody += '&' + oArrParametros[i] + '=' + document.getElementById(oArrParametros[i]).checked;
				}else{
					sPostBody += '&' + oArrParametros[i] + '=' + document.getElementById(oArrParametros[i]).value;
				}
			}
		}
	}
	return sPostBody;	
}
function ActualizarElementosHTML(sIdsLabels,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 (sIdsLabels != '') {
		    var oArrIdsLabels = sIdsLabels.split(';');
		    for (var i = 0; i < oArrIdsLabels.length; i++){
			    document.getElementById(oArrIdsLabels[i]).className = 'warning';
        }
		}
	}else{
		if (sIdsLabels != '') {
		    var sCssClass = '';
			if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'ok') {
				sCssClass = 'warning';
			} else if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'error') {
				sCssClass = 'warning';
			} else if (TraerValorNodoDeDocumentoXml(oXmlDom,'status') == 'info') {
				sCssClass = 'warning';
			}
			var oArrIdsLabels = sIdsLabels.split(';');
		    for (var i = 0; i < oArrIdsLabels.length; i++){
			    document.getElementById(oArrIdsLabels[i]).className = sCssClass;
            }
		}
		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 if (TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) != undefined) {
					eval('document.getElementById("' + TraerNombreNodo(oXmlNodeListControlesWeb[i]) + '").' + TraerNombreNodo(oXmlNodeListAtributosControlWeb[j]) + ' = "' + TraerValorNodo(oXmlNodeListAtributosControlWeb[j]).replace(/\r/g, '\\r').replace(/\n/g, '\\n') + '";');
				}
			}
    }
		
		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 (sIdsLabels != '') {
	    var oArrIdsLabels = sIdsLabels.split(';');
	    for (var i = 0; i < oArrIdsLabels.length; i++){
		    document.getElementById(oArrIdsLabels[i]).innerHTML = TraerValorNodoDeDocumentoXml(oXmlDom,'description');
		    if (document.getElementById(oArrIdsLabels[i]).innerHTML != '') {
			    document.getElementById(oArrIdsLabels[i]).style.display = '';
		    }
        }
	} else {
		if (TraerValorNodoDeDocumentoXml(oXmlDom,'description') != '') {
			alert(TraerValorNodoDeDocumentoXml(oXmlDom,'description'));
		}
	}
}
function AjaxRequest(sParametros,sUrlPagina,sIdForm,sIdsLabels,bBloquearForm) {
    if (sIdsLabels != '') {
	    var oArrIdsLabels = sIdsLabels.split(';');
	    for (var i = 0; i < oArrIdsLabels.length; i++){
            $("#" + oArrIdsLabels[i]).hide();
        }
    }
	if (sUrlPagina == '') {
		sUrlPagina = window.location.pathname + window.location.search;
	}
	if (bBloquearForm){
    document.getElementById('divDeshabilitadorForm').style.display = 'block';
    onCompleteFunctionHandler = onCompleteFunctionBlock;
	}else{
		if (MostrarEtiquetaProcesando != undefined) {
		    MostrarEtiquetaProcesando();
	  }
	  onCompleteFunctionHandler = onCompleteFunction;
	}

	$.ajax({
	   async: true,
	   type: "POST",
	   url: sUrlPagina,
	   data: PrepararParametrosParaPost(sParametros,sIdForm),
		 success: function(t, textStatus) {	ActualizarElementosHTML(sIdsLabels,t);},
	   complete: onCompleteFunctionHandler,
		 error: function(XMLHttpRequest, textStatus, errorThrown) {
				if (sIdsLabels != '') {
				    var oArrIdsLabels = sIdsLabels.split(';');
				    for (var i = 0; i < oArrIdsLabels.length; i++){
					    $("#" + oArrIdsLabels[i]).html('Error -- ' + textStatus);
					    $("#" + oArrIdsLabels[i]).show();
	          }
				} else {
					alert('Error -- ' + textStatus);
				}
			}
	 });
}
