var RESPUESTA_REQUEST_AJAX;
var INF_ADICIONAL_REQUEST_AJAX;
function invocServidor(idFun, arrParam){
	RESPUESTA_REQUEST_AJAX = 0;
	INF_ADICIONAL_REQUEST_AJAX ="";
  //var requestUrl0 = dirPaginaAjaxRequests + '?idFun=' + idFun + '&arrParam=' + encodeURIComponent(arrParam) + '&dummy=' + String(new Date());
  var requestUrl = dirPaginaAjaxRequests + '?dummy=' + String(new Date());
  var strParameters = 'idFun=' + idFun + '&arrParam=' + escape(encodeURIComponent(arrParam));
  arrParam = 'idFun=' + idFun + '&arrParam=' + arrParam;
  var http_request = CreateXmlHttp();
  // Esto de abajo (el if), es solo por si el browser no soporta ajax.
  if(http_request){
    //Cada vez que cambie el estado del objeto "XMLHttpRequest",
    http_request.onreadystatechange = function() {verRespServidor(http_request,arrParam); };
    //Solicita (Request) la URL, con el protocolo (GET o POST, pero POST permite más datos) y de una forma asincrona (true)
    //http_request.open('GET', requestUrl,  true);
    http_request.open('POST', requestUrl,  true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", strParameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(strParameters);

    //Envia el request (solicitud) al servidor
    //http_request.send(null);
  }
}

function verRespServidor(http_request, arrParam){
	// readyState = 4 implica que la respuesta esta completa.
	if(http_request.readyState == 4){
		// Codigo 200 implica que la respuesta fue OK.
		if(http_request.status == 200){
		  //ProcesarllamadaAjax(http_request.responseText);
		  procesar_RespServidor(http_request.responseXML.documentElement,arrParam);
		}else{//hubo un Error en la respuesta del servidor.
		  RESPUESTA_REQUEST_AJAX = 1;//1 significa que recibio la respuesta del servidor
			alert('Hubo un problema de comunicación con el servidor. Intente Nuevamente');
    }
	}
}

function procesar_RespServidor(nodoXML, arrParam){
  var IdFun = arrParam.split('&')[0].split('=')[1];
	switch(IdFun)
  {
  case 'guardarContenido':
  case 'eliminarContenido':
  case 'signIn':
  case 'signOut':
  case 'guardarContacto':
  case '1': //Guardar...Editar...contenido N
  case '2': //Eliminar contenido N
  case '3': //
  case '4': //
  case '5': //
  case '6': //
  case '7': //
  case '8': //
  case '9': //
  case '10': //
  case '11': //
  case '12': //
  case '13': //
  case '14': //
  case '15': //
  case '16': //
    var nqMsjError = getInnerText(nodoXML.getElementsByTagName('nqMsjError')[0]);
    if (String(nqMsjError).split('|')[1] != null){
      setObjectValue('divError', String(nqMsjError).split('|')[1], false);
    }
    if (String(nqMsjError).split('|')[0] == 'error'){
  		RESPUESTA_REQUEST_AJAX = 2;// significa que recibio la respuesta del servidor pero con un error
      agregarClase(null,"error_login","divError",true);
    } else {
  		RESPUESTA_REQUEST_AJAX = 3;// significa que recibio la respuesta del servidor sin error
      agregarClase(null,"mensaje_bueno","divError",true);
    }
    if (String(nqMsjError).split('|')[2] != null){
    	if (String(nqMsjError).split('|')[2] != ""){
    	  setObjectValue(String(nqMsjError).split('|')[2],"",true,true,true);
    	}
    }
    if (String(nqMsjError).split('|')[3] != null){
    	INF_ADICIONAL_REQUEST_AJAX = String(nqMsjError).split('|')[3];
    }
    break;
  }
}

function xmlToHtml(xmlNode, htmlNode){
//Esta funcion transforma un nodo XML en un nodo HTML
//Ejemplos de uso:
//    var nuevoNodoHTML = xmlToHtml(xmlNode,null);  (crea un nuevo nodo y lo guarda en el nuevoNodoHTML)
//    xmlToHtml(xmlNode,nodoHTML);  (inserta el nodo XML dentro del nodo HTML)

  if (xmlNode.nodeType == 3){ //texto
    var newtext = document.createTextNode(xmlNode.nodeValue);
    htmlNode.appendChild(newtext);
  }else{
    if (xmlNode.tagName != null){
      var newNode = document.createElement(xmlNode.tagName);
      if (htmlNode != null){
        htmlNode.appendChild(newNode);
      }else{
        htmlNode = newNode;
      }
      //clonando los atributos
      var i=0;
      for (i=0;i<xmlNode.attributes.length;i++) {
        var selectedAtt = xmlNode.attributes[i];
        newNode.setAttribute(selectedAtt.nodeName, selectedAtt.nodeValue);
      }
      if (xmlNode.firstChild != null){
        for (i=0;i<xmlNode.childNodes.length;i++) {
          xmlToHtml(xmlNode.childNodes[i], newNode);
        }
      }
    }
  }
  return htmlNode;
}

function ajaxActualizarDatosEnFormulario(nodoXML, arrParam){
  var itemsArray = nodoXML.getElementsByTagName('campo');
	var i;
	for (i=0; i<itemsArray.length; i++){
    var idHtml = getInnerText(itemsArray[i].getElementsByTagName('idHtml')[0]);
    var valor = getInnerText(itemsArray[i].getElementsByTagName('valor')[0]);
    setObjectValue(idHtml,valor,false);
	}
  var divContenedor = document.getElementById(getValorParametro('IdDiv', arrParam));
  divContenedor.cargaCompleta = true;
  setObjectValue(getValorParametro('idDivMensaje', arrParam), '', false);//borra el mensaje cargando datos...
}

function ajaxActualizarDdl(nodoXML, arrParam){
	var idDdl         = getValorParametro('IdDdl', arrParam);
	var textoDefecto  = getValorParametro('TextoDefecto', arrParam);
	var valorDefecto  = getValorParametro('ValorDefecto', arrParam);

	var objDdl = document.getElementById(idDdl);
	objDdl.cargaCompleta = false;
	objDdl.validarCarga = true;

	if (objDdl.length > 0){
	  vaciarDdl(objDdl);
	}
	var itemsArray = nodoXML.getElementsByTagName('item');
  ajaxLlenarDdl(objDdl, itemsArray, textoDefecto, valorDefecto);
}

function ajaxLlenarArreglo(nodoXML, arrParam){
  var i;
  var valor;
  var texto;
  var itemsArray = new Array();
	var idCaso = getValorParametro('idCaso',arrParam);
  switch(idCaso){
    case '1': //arreglo cuentas corrientes
	    itemsArray = nodoXML.getElementsByTagName('item');
	    arrCtasCtes = new Array();
	    for (i=0; i<itemsArray.length; i++){
        valor = getInnerText(itemsArray[i].getElementsByTagName('valor')[0]);
        texto = getInnerText(itemsArray[i].getElementsByTagName('texto')[0]);
        arrCtasCtes[i] = valor + '|' + texto;
	    }
    break;
  }
}

function ajaxLlenarDdl(ddl, itemsArray, textoDefecto, valorDefecto){
	//Es mejor dejar fuera del ciclo, pues si no existen registros igual mostrarÃ¡ el texto
	var newOption = document.createElement('option');
	newOption.value = valorDefecto;
	newOption.text = textoDefecto;
  try{
    ddl.add(newOption, null); // Standard
  }catch(err){
    ddl.add(newOption); // IE
  }
	var i;
	for (i=0; i<itemsArray.length; i++){
    var newOption = document.createElement('option');
    newOption.value = getInnerText(itemsArray[i].getElementsByTagName('valor')[0]);
    newOption.text = getInnerText(itemsArray[i].getElementsByTagName('texto')[0]);
    try{
      ddl.add(newOption, null); // Standard
    }catch(err){
      ddl.add(newOption); // IE
    }
	}
	ddl.cargaCompleta = true;
	//0 no esta completa la carga;1 si estÃ¡ completa la carga
}

function finalizoCargaDiv(idDiv){
	var objDiv = document.getElementById(idDiv);
	return objDiv.cargaCompleta;
//	if (objDiv.cargaCompleta == true){
//		return true;
//	}else{
//		return false;
//	}
}

function hayDdlCargandose(){
	var arrDdls = document.getElementsByTagName('select');
	for (i=0 ; i<arrDdls.length ; i++){
		var objDdl = arrDdls[i];
		if (objDdl.validarCarga == true){
			if (objDdl.cargaCompleta == false){
				return true;
			}
		}
		if (objDdl.options.length > 0){
			if (objDdl.options[0].value == -1){
				return true; //el valor -1 nunca deberia existir como opcion
			}
		}
	}
	return false;
}


