var Numero = 0; //Se usa global porque Javascript no acepta parametros por referencia.
var vDescSalida = '';
var vTipoDocumento = '';
var vTipoDescriptor = '';
var vAccesoEntrada = '';
var vAccesoSalida = '';

function Unidad() {
	if (Numero == 1)
		return "uno";
	if (Numero == 2)
		return "dos";
	if (Numero == 3)
		return "tres";
	if (Numero == 4)
		return "cuatro";
	if (Numero == 5)
		return "cinco";
	if (Numero == 6)
		return "seis";
	if (Numero == 7)
		return "siete";
	if (Numero == 8)
		return "ocho";
	if (Numero == 9)
		return "nueve";
	if (Numero == 10)
		return "diez";
	if (Numero == 11)
		return "once";
	if (Numero == 12)
		return "doce";
	if (Numero == 13)
		return "trece";
	if (Numero == 14)
		return "catorce";
	if (Numero == 15)
		return "quince";
	return "";
}

function Decena() {
	var Cadena = '';
	if (Numero >= 90) {
		Cadena = 'Noventa';
		Numero-= 90;
	} else if (Numero >= 80) {
		Cadena = 'Ochenta';
		Numero-= 80;
	} else if (Numero >= 70) {
		Cadena = 'Setenta';
		Numero-= 70;
	} else if (Numero >= 60) {
		Cadena = 'Sesenta';
		Numero-= 60;
	} else if (Numero >= 50) {
		Cadena = 'Cincuenta';
		Numero-= 50;
	} else if (Numero >= 40) {
		Cadena = 'Cuarenta';
		Numero-= 40;
	} else if (Numero >= 30) {
		Cadena = 'Treinta';
		Numero-= 30;
	} else if (Numero > 20) {
		Cadena = 'Veinti';
		Numero-= 20;
	} else if (Numero == 20) {
		Cadena = 'Veinte';
		Numero-= 20;
	} else if (Numero > 15) {
		Cadena = 'Dieci';
		Numero-= 10;
	}
	
	return Cadena;
}

function Centena() {
	var Cadena = '';
	if (Numero >= 900) {
		Cadena = 'Novecientos';
		Numero-= 900;
	} else if (Numero >= 800) {
		Cadena = 'Ochocientos';
		Numero-= 800;
	} else if (Numero >= 700) {
		Cadena = 'Setecientos';
		Numero-= 700;
	} else if (Numero >= 600) {
		Cadena = 'Seiscientos';
		Numero-= 600;
	} else if (Numero >= 500) {
		Cadena = 'Quinientos';
		Numero-= 500;
	} else if (Numero >= 400) {
		Cadena = 'Cuatrocientos';
		Numero-= 400;
	} else if (Numero >= 300) {
		Cadena = 'Trescientos';
		Numero-= 300;
	} else if (Numero >= 200) {
		Cadena = 'Doscientos';
		Numero-= 200;
	} else if (Numero >= 100) {
		Cadena = 'Ciento';
		Numero-= 100;
	}
	return Cadena;
}

function UnidadDeMil() {
	var Cadena = '';
	var Mil = '';
	
	if (Numero >= 1000)
		Mil = 'mil';
	if (Numero >= 9000) {
		Cadena = 'Nueve ';
		Numero-= 9000;
	} else if (Numero >= 8000) {
		Cadena = 'Ocho ';
		Numero-= 8000;
	} else if (Numero >= 7000) {
		Cadena = 'Siete ';
		Numero-= 7000;
	} else if (Numero >= 6000) {
		Cadena = 'Seis ';
		Numero-= 6000;
	} else if (Numero >= 5000) {
		Cadena = 'Cinco ';
		Numero-= 5000;
	} else if (Numero >= 4000) {
		Cadena = 'Cuatro ';
		Numero-= 4000;
	} else if (Numero >= 3000) {
		Cadena = 'Tres ';
		Numero-= 3000;
	} else if (Numero >= 2000) {
		Cadena = 'Dos ';
		Numero-= 2000;
	} else if (Numero >= 1000) {
		Numero-= 1000;
	}
	Cadena += Mil;
	
	return Cadena;
}

function ConvertirMesALetras(Mes) {
	iMes = parseInt(Mes,10);
	switch(iMes) {
		case 1:return "Enero";
		case 2:return "Febrero";
		case 3:return "Marzo";
		case 4:return "Abril";
		case 5:return "Mayo";
		case 6:return "Junio";
		case 7:return "Julio";
		case 8:return "Agosto";
		case 9:return "Septiembre";
		case 10:return "Octubre";
		case 11:return "Noviembre";
		case 12:return "Diciembre";
	}
}

function ConvertirNumeroLetras(iNumero) {
	
	var Cadena;
	Numero = iNumero;
	
	Cadena = UnidadDeMil();
	if (Cadena.length > 0)
		Cadena = Cadena + ' ';
	Cadena += Centena();
	if (Cadena.length > 0)
		Cadena = Cadena + ' ';
		
	szDecena = Decena();
	
	if (szDecena.length > 0) {
		Cadena += szDecena;
		if (szDecena != 'Veinti' && szDecena != 'Dieci' && Numero > 0)
			Cadena = Cadena + ' y ';
	}
		
	Cadena += Unidad();
		
	return Cadena;
}

function edad(FechaIni, FechaFin){
	var Dia, Mes, Aso;
	var sFechaIni = '';
	var sFechaFin =	'';

	Dia = FechaIni.substring( 0, 2 );
	Mes = FechaIni.substring( 3, 5 );
	Aso = FechaIni.substring( 6, FechaIni.length );
	
	sFechaIni = Mes + '/' + Dia + '/' + Aso;
		
	FecIni = new Date(sFechaIni);
	
	Dia = FechaFin.substring( 0, 2 );
	Mes = FechaFin.substring( 3, 5 );
	Aso = FechaFin.substring( 6, FechaFin.length );
	
	sFechaFin = Mes + '/' + Dia + '/' + Aso;

	FecFin = new Date(sFechaFin);
	
	iEdad = parseInt(((FecFin - FecIni)/365/24/60/60/1000),10);
	
	//Cadena = ConvertirNumeroLetras(iEdad);
	
	return iEdad;
}

function ValidaDatosForma(forma) {
	return true;
}

function LimpiaDatosForma(forma) {
	return true;
}

function AyudaForma(forma) {
	var Forma = new Object()
	var url;
	
	Forma = forma;
	url = '/cgi-win/be_asf.exe?forma=FAyudaAsf&nombrebd='+Forma.Nombrebd.value+'&servicio='+Forma.Servicio.value
	openDlgNoModal(url,700,600,true,true);
}

function CampoNumerico(campo,caracter,dec)
{
	var decimales = false;
	if (dec != 0)
		{decimales = true}

	pat = /[\*,\+,\(,\),\?,\\,\$,\[,\],\^]/
	valor = campo.value
	largo = valor.length
	crtr = true
	if(isNaN(caracter) || pat.test(caracter) == true)
	{
		if (pat.test(caracter)==true) 
			{caracter = "\\" + caracter}
		carcter = new RegExp(caracter,"g")
		valor = valor.replace(carcter,"")
		campo.value = valor
		crtr = false
	}
	else
	{
	var nums = new Array()
	cont = 0
	for(m=0;m<largo;m++)
		{
		if(valor.charAt(m) == "." || valor.charAt(m) == " " || valor.charAt(m) == ",")
			{continue;}
		else{
			nums[cont] = valor.charAt(m)
			cont++
			}
		
		}
	}

	if(decimales == true) {
		ctdd = eval(1 + dec);
		nmrs = 1
	}
	else {
		ctdd = 1; nmrs = 3
	}
	var cad1="",cad2="",cad3="",tres=0
	if(largo > nmrs && crtr == true)
	{
		for (k=nums.length-ctdd;k>=0;k--){
			cad1 = nums[k]
			cad2 = cad1 + cad2
			tres++
			if((tres%3) == 0){
				if(k!=0){
					cad2 = "." + cad2
				}
			}
	}
	
	if (nums.length < dec)
		dec = nums.length;
		
	for (dd = dec; dd > 0; dd--){
		cad3 += nums[nums.length-dd]
	}
	if(decimales == true)
	{
		cad2 += "," + cad3}
		campo.value = cad2
	}
	campo.focus()
}

function AgregarOpcionSelect(tag,value) {
	Variable = new Option(value,value);
	tagobj = document.getElementById(tag);
	
	if (tagobj) {
		tagobj.options[tagobj.options.length] = Variable;
	}
}



function ObtenerNumRegistrosXML(xmlobj) {
	return ObtenerNumeroElementrosXML(xmlobj,'Registro');
}


function MascaraHora(field, event) {
	
    var sMask = "1#:5#";

    var KeyTyped = String.fromCharCode(getKeyCode(event));
    var targ = getTarget(event);
    keyCount = targ.value.length;
	
	if (KeyTyped.charCodeAt(0) < 32) return true;
	
	if(keyCount == sMask.length)
		return false;

	if (keyCount == 0) {
		if (!(KeyTyped == '0' || KeyTyped == '1'))
			return false;
	}

	if (keyCount == 1) {

		if ((KeyTyped > '2' && field.value.charAt(0) == '1') || (KeyTyped.charCodeAt(0) > 32 && !(isNumeric(KeyTyped))))
			return false;
	}


	  cMask = sMask.charAt(keyCount+1);

      if ((sMask.charAt(keyCount+1) != '#') && (sMask.charAt(keyCount+1) != 'A' ) && (keyCount+1 < sMask.length) && 
		   !(isNumeric(cMask)))
      {
         field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
         return false;
      }

        if (sMask.charAt(keyCount) == '*')
                return true;

		if ((KeyTyped < sMask.charAt(keyCount)) && (isNumeric(sMask.charAt(keyCount))) && (isNumeric(KeyTyped))) {
			return true;
		}

		if (sMask.charAt(keyCount) == KeyTyped)
        {
                return true;
        }
        if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
           return true;

        if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
         return true;

      if ((sMask.charAt(keyCount+1) == '?') )
      {
         field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
         return true;
      }
      return false;
}

function MascaraFecha(field, event) {
        var sMask = "3#-1#-####";

        var KeyTyped = String.fromCharCode(getKeyCode(event));
        var targ = getTarget(event);
        keyCount = targ.value.length;
        
        if (KeyTyped.charCodeAt(0) < 32) return true;

	if(keyCount == sMask.length)
	{
		return false;
	}

	if (keyCount == 0) {
		if (KeyTyped < '0' || KeyTyped > '3')
			return false;
	}

	if (keyCount == 1) {
		if ((field.value.charAt(0) == '3' && KeyTyped > '1') || (field.value.charAt(0) == '0' && KeyTyped == '0') || !isNumeric(KeyTyped))
			return false;
	}
		
	if (keyCount == 3) {
		if (KeyTyped < '0' || KeyTyped > '1')
			return false;
	}
	
	if (keyCount > 3) {
		iDia = field.value.charAt(0) + field.value.charAt(1);
		if (keyCount > 8)
			iMes = field.value.charAt(3) + field.value.charAt(4);
	}
	
	if (keyCount == 4) {
		if (!isNumeric(KeyTyped))
			return false;
		iPosibleMes = field.value.charAt(3) + KeyTyped;
		if (iDia >= 30 && iPosibleMes == 2)
			return false;
		if ((iDia == 31) && (iPosibleMes == 4 || iPosibleMes == 6 || iPosibleMes == 9 || iPosibleMes == 11))
			return false;
		if (iPosibleMes > 12 || iPosibleMes < 1)
			return false;
	}
	
	if (keyCount == 9) {
		iPosibleAso = field.value.charAt(6) + field.value.charAt(7) + field.value.charAt(8) + KeyTyped;
		if (iMes == 2 && iDia == 29) {
			if ((iPosibleAso%4) || !(iPosibleAso%100)) 
				return false;
		}
	}
	
	  cMask = sMask.charAt(keyCount+1);

      if ((sMask.charAt(keyCount+1) != '#') && (keyCount+1 < sMask.length) && 
		   !(isNumeric(cMask)))
      {
         field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
         return false;
      }

		if ((KeyTyped < sMask.charAt(keyCount)) && (isNumeric(sMask.charAt(keyCount))) && (isNumeric(KeyTyped))) {
			return true;
		}

		if (sMask.charAt(keyCount) == KeyTyped)
        {
                return true;
        }
        if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
           return true;

      if (KeyTyped.charCodeAt(0) < 32) return true;
    return false;
}

//ejemplo de llamado para mascara: mascara(this,'Separador q se usara','Formato del campo a mascarar',true si es solo numero false si es alfa)
//onkeyup="if (window.mascara) return mascara(this,'-','fecha',true)"
//onkeyup="if (window.mascara) return mascara(this,':','hora',true)"
/*function mascara(d,sep,patron,nums){
if(d.valant != d.value){
	if (patron == 'fecha')
		var pat = new Array(2,2,4)
	if (patron == 'hora')
		var pat = new Array(2,2)
	
	val = d.value
	largo = val.length
	val = val.split(sep)
	val2 = ''
	for(r=0;r<val.length;r++){
		val2 += val[r]	
	}
	if(nums){
		for(z=0;z<val2.length;z++){
			if(isNaN(val2.charAt(z))){
				letra = new RegExp(val2.charAt(z),"g")
				val2 = val2.replace(letra,"")
			}
		}
	}
	val = ''
	val3 = new Array()
	for(s=0; s<pat.length; s++){
		val3[s] = val2.substring(0,pat[s])
		val2 = val2.substr(pat[s])
	}
	for(q=0;q<val3.length; q++){
		if(q ==0){
			val = val3[q]
		}
		else{
			if(val3[q] != ""){
				val += sep + val3[q]
				}
		}
	}
	d.value = val
	d.valant = val
	}
}*/

 function getTarget(e) {
  // IE5
   if (e.srcElement) {
        return e.srcElement;
   }
    if (e.target) {
        return e.target;
   }
 }

  function getKeyCode(e) {
 //IE5
 if (e.srcElement) {
        return e.keyCode
 }
  // NC5
  if (e.target) {
   return e.which
  }
 }

 function isNumeric(c)
{
        var sNumbers = "01234567890";
        if (sNumbers.indexOf(c) == -1)
                return false;
        else return true;

}

function isAlpha(c)
{
        var lCode = c.charCodeAt(0);
        if (lCode == 65 || lCode == 80 || lCode == 97 || lCode == 112)
          {
                return true;
         }
        else
        return false;
}

function isPunct(c)
{
        var lCode = c.charCodeAt(0);
        if (lCode >= 32 && lCode <= 47 )
          {
                return true;
         }
        else
        return false;

}

function FechasLetras(Fecha) {
	if (!Fecha)
		return;
	CadenaFecha = '';
	sFecha = Fecha;
	PartesFecha = sFecha.split("-");
	Dia = PartesFecha[0];
	Mes = PartesFecha[1];
	Aso = PartesFecha[2];
	CadenaFecha += ConvertirNumeroLetras(Dia);
	CadenaFecha += ' de ';
	CadenaFecha += ConvertirMesALetras(Mes);
	CadenaFecha += ' de ';
	CadenaFecha += ConvertirNumeroLetras(Aso);
	return CadenaFecha.toLowerCase();
}

function HoraEnLetras(Hora) {
	Cadena = '';
	
	Turno = Hora.charAt(5);
	Hora = Hora.replace(Turno,'');
	
	PartesHora = Hora.split(":");
	Horas = PartesHora[0];
	Minutos = PartesHora[1];
	
	Cadena+= ConvertirNumeroLetras(Horas);
	Cadena = Cadena.replace('uno','una');
	if (Minutos != '00') {
		Cadena+= ' y ';
		Cadena+= ConvertirNumeroLetras(Minutos);
		Cadena+= ' minutos';
	}
		Cadena+= ' de la ';
	
	if ((Turno == 'p') || (Turno == 'P')) {
		if ((Horas >= 1 ) && (Horas < 7) || (Horas == 12))
			Cadena+= 'tarde';
		else
			Cadena+= 'noche';
	} else
		Cadena+= 'mañana';
		
	return Cadena.toLowerCase();
}

//ejemplo de llamado para validar una fecha: validar(this,'Formato', 'Texto para el alert opcional')
//onblur="if (window.validar) return validar(this,'fecha', 'fecha del evento')"
//onblur="if (window.validar) return validar(this,'hora', 'hora de presentación')"
function validar(campo,formato,sTexto) {
	sError = false;
	if (formato == 'fecha') {
		sTextoFormato = 'DD-MM-AAAA';
		sTexto2 = 'fecha';
		Fecha = campo.value;
		if (!sTexto)
			sTexto = 'fecha';
		if (!Fecha)
			return false;
		
		if (Fecha.length != 10)
			sError = true;
		PartesFecha = Fecha.split('-');
		iDia = PartesFecha[0];
		iMes = PartesFecha[1];
		iAso = PartesFecha[2];
		if (!iDia || (iDia.length != 2 || iDia > 31 || iDia < 1))
			sError = true;
		if (!iMes || (iMes.length != 2 || iMes > 12 || iMes < 1))
			sError = true;
		if (!iAso || iAso.length != 4 || isNaN(iAso))
			sError = true;
		if (iMes == 1 || iMes == 3 || iMes == 5 || iMes == 7 || iMes == 8 || iMes == 10 || iMes == 12) {
			if (iDia < 1 || iDia > 31)
				sError = true;
		} else if (iMes == 4 || iMes == 6 || iMes == 9 || iMes == 11) {
			if (iDia < 1 || iDia > 30) sError = true;
		} else if (iMes == 2) { // dias de febrero en caso de biciestos
			if (!(iAso%4) && (iAso%100)) {
				if (iDia < 1 || iDia > 29) sError = true;
			} else {
				if (iDia < 1 || iDia > 28) sError = true;
			}
		}
	} else if (formato == 'hora') {
		sTextoFormato = 'hh-mm';
		sTexto2 = 'hora';
		Hora = campo.value;
		if (!sTexto)
			sTexto = 'hora';
		if (!Hora)
			return false;
		
		if (Hora.length != 5)
			sError = true;
		PartesHora = Hora.split(':');
		iHora = PartesHora[0];
		iMin = PartesHora[1];
		if (!iHora || iHora.length != 2 || iHora < 1 || iHora > 12)
			sError = true;
		if (!iMin || iMin.length != 2 || iMin < 0 || iMin > 59)
			sError = true;
	}
	if (sError) {
		alert('Error en la ' + sTexto + '\n\n- El formato es '+sTextoFormato+'\n- La '+sTexto2+' debe ser válida');
		return false;
	}
	return true;
}


function ActualizarCeros(szCampoTipo,szCampoTexto) {
	var vCeros = '';
	var vCampoTipo = document.getElementById(szCampoTipo);
	var vCampoTexto = document.getElementById(szCampoTexto);
	
	if (vCampoTipo) {
		if (vCampoTipo.value == 'V' || vCampoTipo.value == 'E') {
			for(iNum0=0;iNum0<(9-vCampoTexto.value.length);iNum0++){
				vCeros += '0';
			}

			vCampoTexto.value = vCeros+vCampoTexto.value;
		}
	}
}

// ------------------------------------------------------------------ PostAjaxProveedores
function PostAjaxProveedores()
{
	var myajax=ajaxpack.ajaxobj;
	var myfiletype=ajaxpack.filetype;
	var myParamatersEx=ajaxpack.parameters_callbackfunc;
	
	if (myajax.readyState == 4){ //if request of file completed
		if (myajax.status==200 || window.location.href.indexOf("http")==-1){ //if request was successful or running script locally
			if (myfiletype=="txt")
				alert(myajax.responseText);
			else {
				iNumRegistros = ObtenerNumeroElementrosXML(myajax.responseXML,'Registro');
				
				if (iNumRegistros) {
					lstAccesos = ' ';
					lstProveedor = '--Seleccione--';
					for (ik=0;ik < iNumRegistros;ik++) {
						vAcceso = ObtenerValorTagXML(myajax.responseXML,'Acce','',ik,0);
						vProveedor = ObtenerValorTagXML(myajax.responseXML,'Titu','',ik,0);
					
						if (lstAccesos != '')
							lstAccesos+= ";";
						if (lstProveedor != '')
							lstProveedor+= ";";
								
						lstAccesos+= vAcceso;
						lstProveedor+= vProveedor;
					}
					
					AsignaValorCampoLista('NroProveedor',lstAccesos,lstProveedor);
					
					AsignarValorTagHTML('NroProveedor',vAccesoEntrada);
				}
				
				ConsultarProveedoresSalida(vTipoDoc,vTipoDesc,vDescSal);
			}
		}
	}
}
//fin PostAjaxProveedores

// ------------------------------------------------------------------ PostAjaxProveedoresSalida
function PostAjaxProveedoresSalida()
{
	var myajax=ajaxpack.ajaxobj;
	var myfiletype=ajaxpack.filetype;
	var myParamatersEx=ajaxpack.parameters_callbackfunc;
	
	if (myajax.readyState == 4){ //if request of file completed
		if (myajax.status==200 || window.location.href.indexOf("http")==-1){ //if request was successful or running script locally
			if (myfiletype=="txt")
				alert(myajax.responseText);
			else {
				iNumRegistros = ObtenerNumeroElementrosXML(myajax.responseXML,'Registro');
				
				if (iNumRegistros) {
					lstAccesos = ' ';
					lstProveedor = '--Seleccione--';
					for (ik=0;ik < iNumRegistros;ik++) {
						vAcceso = ObtenerValorTagXML(myajax.responseXML,'Acce','',ik,0);
						vProveedor = ObtenerValorTagXML(myajax.responseXML,'Titu','',ik,0);
					
						if (lstAccesos != '')
							lstAccesos+= ";";
						if (lstProveedor != '')
							lstProveedor+= ";";
								
						lstAccesos+= vAcceso;
						lstProveedor+= vProveedor;
					}
					
					AsignaValorCampoLista('NroProveedorSalida',lstAccesos,lstProveedor);
					
					AsignarValorTagHTML('NroProveedorSalida',vAccesoSalida);
				}
			}
		}
	}
}
//fin PostAjaxProveedoresSalida

//------------------------------------------------ ConsultarProveedores
function ConsultarProveedores(pTipoDoc,pTipoDesc,pDescEnt,pDescSal,pAccesoEntrada,pAccesoSalida) {

	vTipoDoc = pTipoDoc;
	vTipoDesc = pTipoDesc;
	vDescEnt = pDescEnt;
	vDescSal = pDescSal;
	vAccesoEntrada = pAccesoEntrada;
	vAccesoSalida = pAccesoSalida;
	
	sConsulta = 'Forma=FGENERAL&c01=Titulo&t01=%%%%%&m01=Palabras&c02=Descriptor_'+vTipoDesc+'&t02='+vDescEnt+'&m02==&Nombrebd='+document.getElementById('Nombrebd').value+'&Sesion='+document.getElementById('Sesion').value+'&BRefAnal=N&TipoDoc='+vTipoDoc+'&TSalida=X&Orden=TA';

	ajaxpack.postAjaxRequest('/cgi-win/be_alex.exe',sConsulta,PostAjaxProveedores,'xml','');
}
//fin ConsultarProveedores

//------------------------------------------------ ConsultarProveedores
function ConsultarProveedoresSalida(pTipoDoc,pTipoDesc,pDescSal) {

	sConsulta = 'Forma=FGENERAL&c01=Titulo&t01=%%%%%&m01=Palabras&c02=Descriptor_'+pTipoDesc+'&t02='+pDescSal+'&m01==&Nombrebd='+document.getElementById('Nombrebd').value+'&Sesion='+document.getElementById('Sesion').value+'&BRefAnal=N&TipoDoc='+pTipoDoc+'&TSalida=X&Orden=TA';

	ajaxpack.postAjaxRequest('/cgi-win/be_alex.exe',sConsulta,PostAjaxProveedoresSalida,'xml','');
}
//fin ConsultarProveedores
