/*-----------------------------------------------------
Desarrollado por www.SoftOverOP.com
-----------------------------------------------------*/
var isWorking	= false;
var url			= '';
var inputType	= 'SELECT';
var inputToFill	= null;
var codeId		= null;
var descId		= null;
var descId2		= null;
var	descNull	= null;
var	codeNull	= null;
var codeSelected= null;
var onCompleteRequest	= null;
var lastCall	= null;
var functionToCall = null;		// Contiene la funcion que se invoca una vez devuelta la respuesta desde el servidor
var arrayObjects = null;

//----------------------------------------------------------------------------------------------------------------
// function getXmlHttpObject()
//----------------------------------------------------------------------------------------------------------------
//	Desc.	: Instancia el objeto XmlHttpRequest que permite comunicarnos con el servidor web desde Javascript. 
//					La creacion de este objeto varia dependiendo del navegador web (IE 5.5, IE6+, Firefox, Opera, etc).
//	Autor	: W3 Schools
//	Fecha : 09-09-2008
//----------------------------------------------------------------------------------------------------------------
function getXmlHttpObject(){
	var xmlhttp;
	try{ // Intentamos crear el objeto XmlHttpRequest para Internet Explorer 6 en adelante
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e){
		try{ // Intentamos crear el objeto XmlHttpRequest para Internet Explorer 5.5 en adelante
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(e){
			xmlhttp = false;
		}
	}
	// Creamos el objeto XmlHttpRequest usando el metodo que provee Javascript. Sirve para Mozilla, Opera, etc
	if (!xmlhttp && typeof xmlhttp!='undefined'){
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

var httpNew = getXmlHttpObject()

function sendRequestToServer(urlServerScript, callBackFunction){
//----------------------------------------------------------------------------------------------------------------
// Autor: Juan Cipollone
// Fecha: 11-09-2008
// Desc.: Solicita al servidor web la ejecucion del script referenciado por la url pasada como argumento. El
//				problema es que una vez enviada la solicitud, continua la ejecucion del script del cliente que disparo
//				tal solicitud.
//----------------------------------------------------------------------------------------------------------------
	// Inicializamos el arreglo que almacena los resultados retornados desde el servidor
	arrayObjects = new Array();
	// Especificamos la funcion que se invoca tras obtener la respuesta del servidor

	functionToCall = callBackFunction;
	if (httpNew){
		httpNew.open("GET", urlServerScript + '&rnd=' + Math.random(), false);
		httpNew.send(null);
		handleHttpResponse();
	}
}


function handleHttpResponse(){	
//----------------------------------------------------------------------------------------------------------------
//	Autor	: Basilio Cafesse, Juan Cipollone
//	Fecha : 09-09-2008 (Update)
//	Desc.	: Comprueba el estado en el que se encuentra la peticion que se realizo desde el cliente web. Cuando el
//					estado es 4 significa que la peticion ha sido completada, es decir, que se ha enviado la respuesta
//					desde el servidor web. Luego, se comprueba que la respuesta sea valida y se invoca a la funcion que se
//					encarga de procesar la respuesta que viene en formato xml.
//----------------------------------------------------------------------------------------------------------------
	var xmlDocument; // Documento xml que contiene la respuesta del servidor
	// Comprobamos que la peticion enviada desde el cliente haya sido respondida por parte del servidor web
	if (httpNew.readyState == 4)
		//Comprobamos que el servidor haya respondido satisfactoriamente la peticion enviada
		if (httpNew.status == 200){
			// Cargamos la respuesta del servidor en un documento xml
			xmlDocument = httpNew.responseXML.documentElement;
			//alert(httpNew.responseText)
			arrayObjects = loadArrayFromXml(xmlDocument);
		}
}


function loadArrayFromXml(xmlDocument){
//----------------------------------------------------------------------------------------------------------------
// Autor: Juan Manuel Cipollone
// Fecha: 10-09-2008
// Desc.: Carga en memoria un arreglo que contiene objetos, donde la estructura de estos objeto queda delineada 
//				por los atributos de los nodos <z:row> que se encuentran en el documento xml.
//----------------------------------------------------------------------------------------------------------------
	var xmlNodeList; // Lista de los nodos xml que contienen la informacion relevante
	var	i;
	var objGeneric;
	// Obtenemos la lista de nodos correspondientes a los registros de un recordset
	if (xmlDocument !=null)
	{
		xmlNodeList = xmlDocument.getElementsByTagName('z:row');

		if (xmlNodeList.length == 0){
			// en navegadores como Firefox se obtienen los elementos mediante "row" sin anteponer el prefijo "z:"
			xmlNodeList = xmlDocument.getElementsByTagName('row');
		}
		// Recorremos la lista de nodos cargando el arreglo de objetos
		for (i=0; i < xmlNodeList.length; i++){
		
			objGeneric = createObjectFromXmlNode(xmlNodeList[i]);
			arrayObjects[i] = objGeneric;
		}
		functionToCall(arrayObjects);
	}
}

//----------------------------------------------------------------------------------------------------------------
// function createObjectFromXmlNode(xmlNode)
//----------------------------------------------------------------------------------------------------------------
//	Desc.	: Crea un nuevo objeto cuyas propiedades coinciden con los atributos del nodo xml.
//	Autor	: Juan Manuel Cipollone
//	Fecha : 10-09-2008
//----------------------------------------------------------------------------------------------------------------
function createObjectFromXmlNode(xmlNode){
	var	i;
	var objGeneric;
	// Instanciamos objeto generico que por el momento no tiene ni propiedades ni metodos asociados
	objGeneric = new Object();
	// Recorremos los atributos del nodo xml asignandolos como propiedades de los objetos
	for (i=0; i < xmlNode.attributes.length; i++){

		objGeneric[xmlNode.attributes[i].nodeName] = xmlNode.attributes[i].nodeValue;
	}
	return objGeneric;
}

//*************************************************************************************************************************//
//*************************************************************************************************************************//
//*************************************************************************************************************************//

function handleHttpResponse0(){
	if (http.readyState == 4){
	  if (http.responseText.indexOf('invalid') == -1)
			objXml = http.responseXML; 
			de = objXml.documentElement
			if (de != null){ //Procesamos el documento xml devuelto desde el servidor
				for (i=0; i <= de.childNodes.length - 1; i++ )
					if (de.childNodes[i].nodeName == 'rs:data')
						for (j=0; j <= de.childNodes[i].childNodes.length -1; j++)
							if (de.childNodes[i].childNodes[j].nodeName == 'z:row'){
								FillInput(de.childNodes[i].childNodes[j]);
							}	
			}
			isWorking = false;
			if (onCompleteRequest != null)
				onCompleteRequest.call();
			http.abort()
	}
}

function FillInput(xmlRowData){
	if (inputToFill != null){ //inputToFill = objeto del browser que contiene los resultados
		if (inputType	== 'SELECT'){ // El objeto del browser que contiene los datos es una lista de seleccion
			var input	= document.getElementById(inputToFill);
			if (inputToFill == 'frmCodigoSeccionalOS'){ //este codigo no deberia ir aqui
				str = xmlRowData.getAttribute( descId )+ (descId2 == null ? '' : ' |'+iNVL(xmlRowData.getAttribute( descId2 ),'-1'))
				optionItem = new Option( str , xmlRowData.getAttribute( codeId ),  false, false);
			}
			else{
				optionItem = new Option(xmlRowData.getAttribute(descId), xmlRowData.getAttribute(codeId), false, false);

			}
			input.options[input.length] = optionItem;
			if ( codeSelected !=null)
				if ( optionItem.value == codeSelected )
					input.options[input.length-1].selected=true;
		}
		if (inputType	== 'OBJECT'){
			for ( fi_i=0; fi_i<= xmlRowData.attributes.length-1; fi_i++ )	
				inputToFill[xmlRowData.attributes[fi_i].nodeName] = xmlRowData.attributes[fi_i].nodeValue
		}
	}
	isWorking =false
}


function getHTTPObject() {
  var xmlhttp;
/*@cc_on
  @if (@_jscript_version >= 5)
  try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  /*@else
    xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
var http = getHTTPObject();
var http1 = getHTTPObject();

// listener del event
function handleHttpResponse1(){
	if (http1.readyState == 4){
	  if (http1.responseText.indexOf('invalid') == -1){
			alert(http1.responseText);
		var xmlDocument = http1.responseXML; 
		de = xmlDocument.documentElement
		if (de != null)
			for (i=0; i<=de.childNodes.length-1;i++ )
				if (de.childNodes[i].nodeName == 'rs:data')
					for (j=0; j<= de.childNodes[i].childNodes.length -1; j++)
						if (de.childNodes[i].childNodes[j].nodeName=='z:row')
							FillInput( de.childNodes[i].childNodes[j] );  						
      }
     isWorking = false;
     if ( onCompleteRequest!= null )
		  onCompleteRequest.call();
	
	http1.abort()
  }

}

function DoRemote( action ){
	http.open("GET", action , false);
	isWorking = true;
	http.send(null);
	if (http.responseText.indexOf('invalid') == -1) {
		//alert( http.responseText )
		//var xmlDocument		= http.responseXML; 
		//alert( xmlDocument.documentElement )	
		//return  xmlDocument.documentElement;
		//return http.responseText;
		return  http.responseXML;
	}
	else{
		return  '<Error!>'
	}
}

function callServer(param){
	//alert(callServer.caller);
	//alert(param);
	if (parent != codeNull){
		try{
			http.open("GET", url + escape( param )+'&rnd='+Math.random(), false);
			isWorking = true;
			//http.overrideMimeType('text/xml');
			//http.onreadystatechange = handleHttpResponse;
			http.send(null);
			handleHttpResponse0();
		}
		catch (err){
			http1.open("GET", url + escape( param )+'&rnd='+Math.random(), false);
			isWorking = true;
			//http.overrideMimeType('text/xml');
			//http.onreadystatechange = handleHttpResponse;
			http1.send(null);
			handleHttpResponse1();
		}
	}
}

// trigger JS
function updateListSN(Combo, param, selectedValue) {
	
	descNull	= null	
	updateListCore(Combo, param, selectedValue);
}


// trigger JS
function updateList(Combo, param, selectedValue){
	descNull	= 'Seleccione'	
	updateListCore(Combo, param, selectedValue);
}


// trigger JS
function updateListCore(Combo, param, selectedValue){
	inputType	= 'SELECT'	
	codeNull	= -1
	inputToFill	= Combo
	codeSelected = selectedValue
	if (inputType	== 'SELECT'){
		document.getElementById( inputToFill ).options.length = 0
		if (descNull != null ){
			document.getElementById(inputToFill).options[document.getElementById(inputToFill).options.length] = new Option( descNull, codeNull,  false, false);	
		}	

	}
	callServer(param);
}

function updateObject(obj, param){
	inputType	= 'OBJECT'
	inputToFill	= obj

	callServer(param);
}

function GetRemoteInfo(objectToFill, querystring )
{
	inputType	= 'OBJECT'
	inputToFill	= objectToFill

	callServerInfo( querystring );
}

function callServerInfo ( querystring )
{
	//	alert(callServer.caller);
	//	alert(param)
	//	if (!isWorking) {
		if ( parent != codeNull )
		{
			http.open("GET", url + querystring +'&rnd='+Math.random(), false);
			isWorking = true;
			//http.overrideMimeType('text/xml');
			//http.onreadystatechange = handleHttpResponse;
			http.send(null);
			handleHttpResponse();
		}
//	}
}



/********VALIDAR NRO DOCUMENTO*********************/
/********SI EL DOCUMENTO EXSITE EN GDP CARGA LOS DATOS******/

var req = getHTTPObject()
var respuesta;
function validarDoc(url) {

	try
	{
		req.open("GET", url +'&rnd='+Math.random(), false);
		isWorking = true;
		req.send(null);
		procesarRespuesta();
		
	}
	catch (err)
	{
		// en mozilla uso otro en caso de error 
		req.open("GET", url +'&rnd='+Math.random(), false);
		isWorking = true;
		req.send(null);
		procesarRespuesta();
		
	}
 


}

function procesarRespuesta(){
	if (req.readyState == 4) {
		 respuesta = req.responseXML;
		 if (respuesta.getElementsByTagName('existe').length > 0  && respuesta.getElementsByTagName('existe')[0].childNodes.length )
		 {
			 var existe = respuesta.getElementsByTagName('existe').item(0).firstChild.data;
			  if (existe=="true"){
				document.getElementById("frmErrorDocumento").value = "false";
				alert("El número de documento ingresado ya existe, debe cambiarlo para continuar");
			  }
			   else
				{
				   document.getElementById("frmErrorDocumento").value=  "true";
				   cargarPacienteXml();
				}
			}
		
		 else {
				document.getElementById("frmErrorDocumento").value = "true";
				cargarPacienteXml();
			}
	}
	isWorking = false;
    if ( onCompleteRequest!= null )
		  onCompleteRequest.call();
	
	req.abort()
 
}


/****ACTUALIZACION DE FORMULARIO PACIENTES*******/

function cargarPacienteXml(){
	var docXml = req.responseXML.documentElement;
	if (respuesta.getElementsByTagName('Paciente').length > 0 && respuesta.getElementsByTagName('Paciente')[0].childNodes.length)
	{
		//Si hay pacientes directamente tomo el primero (que debería ser unico si no hay documentos repetidos)
		var xmlNode = respuesta.getElementsByTagName('Paciente')[0];
		//UsuarioModif en = 0 para que no setee fecha de modificacion.
		document.getElementById("frmUsuarioModif").value = 0;
		//Apellido y Nombre
		if (xmlNode.getElementsByTagName('Nombre')[0].firstChild != null){ 
			apellidoNombre = xmlNode.getElementsByTagName('Nombre')[0].firstChild.data.replace(/^\s+/, "").split(" ");
			document.getElementById("frmApellido").value = apellidoNombre[0];
			nombre = "";
			for (i=1;i<apellidoNombre.length ;i++ ){
				nombre = nombre + apellidoNombre[i] + " ";
			}
			document.getElementById("frmNombre").value = nombre;
		}
		//Tipo Documenteo
		if (xmlNode.getElementsByTagName('CodigoTipoDocumento')[0].firstChild != null) {
			switch (xmlNode.getElementsByTagName('CodigoTipoDocumento')[0].firstChild.data)
			{
			case '1': document.getElementById("frmTipoDocumento").selectedIndex = 4; break;
			case '2': document.getElementById("frmTipoDocumento").selectedIndex = 3; break;	
			case '3': document.getElementById("frmTipoDocumento").selectedIndex = 2; break;
			case '4': document.getElementById("frmTipoDocumento").selectedIndex = 1; break;
			default: document.getElementById("frmTipoDocumento").selectedIndex = 0; break;
			}
		}
		// Fecha Nacimiento
		if (xmlNode.getElementsByTagName('FechaNacimiento')[0].firstChild != null) 
			document.getElementById("frmfechaNac").value =  xmlTextToDate(xmlNode.getElementsByTagName("FechaNacimiento")[0].firstChild.data);
		// Sexo
		if (xmlNode.getElementsByTagName('Sexo')[0].firstChild != null) 
			if (xmlNode.getElementsByTagName('Sexo')[0].firstChild.data == 'M'){
				document.getElementById("frmSexoM").checked = true;
				document.getElementById("frmSexoF").checked = false;
			}
			else if (xmlNode.getElementsByTagName('Sexo')[0].firstChild.data == 'F'){
				document.getElementById("frmSexoF").checked = true;
				document.getElementById("frmSexoM").checked = false;
			}
			
		// NumeroAfiliado
		if (xmlNode.getElementsByTagName('NumeroAfiliado')[0].firstChild != null) 
			document.getElementById("frmNroAfiliado").value = xmlNode.getElementsByTagName('NumeroAfiliado')[0].firstChild.data;
		// Domicilio
		if (xmlNode.getElementsByTagName('Domicilio')[0].firstChild != null) 
			document.getElementById("frmDireccion").value = xmlNode.getElementsByTagName('Domicilio')[0].firstChild.data;
		// Localidad
		if (xmlNode.getElementsByTagName('Localidad')[0].firstChild != null) 
			document.getElementById("frmlocalidad").value = xmlNode.getElementsByTagName('Localidad')[0].firstChild.data;
		// Codigo Postal
		if (xmlNode.getElementsByTagName('CodigoPostal')[0].firstChild != null) {
			if (xmlNode.getElementsByTagName('CodigoPostal')[0].firstChild.data == -1){
				document.getElementById("frmCP").value = '';
			}
			else{
				document.getElementById("frmCP").value = xmlNode.getElementsByTagName('CodigoPostal')[0].firstChild.data;
			}
		}
		// Validacion Anses
		if (xmlNode.getElementsByTagName('ValidadoAnses')[0].firstChild != null) 
			document.getElementById("frmValidacionAnses").value = xmlTextToDate(xmlNode.getElementsByTagName('ValidadoAnses')[0].firstChild.data);
		// Seccional
		if (xmlNode.getElementsByTagName('CodigoBocaExpendio')[0].firstChild != null){ 
			codigoSeccional = xmlNode.getElementsByTagName('CodigoBocaExpendio')[0].firstChild.data;
		//Buscar seccional
			for(i=1 ; i<document.getElementById("frmCodigoSeccionalOS").options.length ; i++){
				 if(document.getElementById("frmCodigoSeccionalOS").options[i].firstChild.nodeValue.split('|')[1] == codigoSeccional){
				 document.getElementById("frmCodigoSeccionalOS").selectedIndex = i;
				}
			}
		}
		// ¨Parentesco
		if (xmlNode.getElementsByTagName('CodigoParentezco')[0].firstChild != null){ 
			codigoParentesco = xmlNode.getElementsByTagName('CodigoParentezco')[0].firstChild.data;
		//Busca parentesco
			for(i=1 ; i<document.getElementById("frmIdparentesco").options.length ; i++){
				 if(document.getElementById("frmIdparentesco").options[i].firstChild.nodeValue.split(' - ')[0] == codigoParentesco){
				 document.getElementById("frmIdparentesco").selectedIndex = i;
				}
			}
		}
		deshabilitarForm();
		alert("El paciente se encuentra en el Padrón Central");
	}
}
function xmlTextToDate(strDate){
	str = strDate.split("-",3)
	anio = str[0]
	mes = str[1]
	dia = str[2].substr(0,2)
	fechaStr = dia + "/" + mes + "/" + anio
	//fecha = StrToDate(fechaStr)
	return fechaStr
}


function iNVL(obj,dv){
if (obj==undefined)
	return dv
else
	return obj
}

function deshabilitarForm(){
		//Apellido y Nombre
		document.getElementById("frmApellido").disabled = true;
		document.getElementById("frmApellido").style.color='Black';
		document.getElementById("frmApellido2").disabled = true;
		document.getElementById("frmApellido2").style.color='Black';
		document.getElementById("frmNombre").disabled = true;
		document.getElementById("frmNombre").style.color='Black';
		//Tipo y Nro Doc
		document.getElementById("frmTipoDocumento").disabled = true;
		document.getElementById("frmTipoDocumento").style.color='Black';
		document.getElementById("frmNroDocumento").disabled = true;
		document.getElementById("frmNroDocumento").style.color='Black';
		//Sexo
		document.getElementById("frmSexoM").disabled = true;
		document.getElementById("frmSexoM").style.color='Black';
		document.getElementById("frmSexoF").disabled = true;
		document.getElementById("frmSexoF").style.color='Black';
		// Fecha Nacimiento
		document.getElementById("frmfechaNac").disabled = true;
		document.getElementById("frmfechaNac").style.color='Black';
		// NumeroAfiliado
		document.getElementById("frmNroAfiliado").disabled = true;
		document.getElementById("frmNroAfiliado").style.color='Black';
		// Localidad  Domicilio CP
		document.getElementById("frmDireccion").disabled = true;
		document.getElementById("frmDireccion").style.color='Black';
		document.getElementById("frmCP").disabled = true;	
		document.getElementById("frmCP").style.color='Black';
		document.getElementById("frmlocalidad").disabled = true;
		document.getElementById("frmlocalidad").style.color='Black';
		// Validacion Anses
		document.getElementById("frmValidadoAnses").disabled = true;
		document.getElementById("frmValidacionAnses").disabled = true;
		document.getElementById("frmValidacionAnses").style.color='Black';
		// SeccionaL
		document.getElementById("frmCodigoSeccionalOS").disabled = true;
		document.getElementById("frmCodigoSeccionalOS").style.color='Black';
		// Parentesco
		document.getElementById("frmIdparentesco").disabled = true;
		document.getElementById("frmIdparentesco").style.color='Black';
		// Obra Social
		document.getElementById("frmOSocial").disabled = true;
		document.getElementById("frmOSocial").style.color='Black';
		document.getElementById("frmCodigoPlan").disabled = true;
		document.getElementById("frmCodigoPlan").style.color='Black';
}

function habilitarForm(){
		//Apellido y Nombre
		document.getElementById("frmApellido").disabled = false;
		document.getElementById("frmApellido2").disabled = false;
		document.getElementById("frmNombre").disabled = false;
		//Tipo y Nro Doc
		document.getElementById("frmTipoDocumento").disabled = false;
		document.getElementById("frmNroDocumento").disabled = false;
		//Sexo
		document.getElementById("frmSexoM").disabled = false;
		document.getElementById("frmSexoF").disabled = false;
		// Fecha Nacimiento
		document.getElementById("frmfechaNac").disabled = false;
		// NumeroAfiliado
		document.getElementById("frmNroAfiliado").disabled = false;
		// Localidad  Domicilio CP
		document.getElementById("frmDireccion").disabled = false;
		document.getElementById("frmCP").disabled = false;		
		document.getElementById("frmlocalidad").disabled = false;
		// Validacion Anses
		document.getElementById("frmValidacionAnses").disabled = false;
		// SeccionaL
		document.getElementById("frmCodigoSeccionalOS").disabled = false;
		// Parentesco
		document.getElementById("frmIdparentesco").disabled = false;
		// Obra Social
		document.getElementById("frmOSocial").disabled = false;
		document.getElementById("frmCodigoPlan").disabled = false;
}


